UV Curing
Quick Start
This is a rather specialist app, created partly for my own curiosity. I have always dreamed of being able to properly understand what is going on inside a UV curing system as there are trade-offs of functionality, speed, rigidity etc. This model doesn't answer all the questions, but it at least has a good go at it.
UV Cure
I have always wanted to write a model for the UV curing process, but it is so complex that I had no idea where to begin. But a paper by Gökçen A. Altun-Çiftçioğlu et al1 at Marmara U in Istanbul provided a detailed algorithm for such a model. It uses the famous Gillespie Monte Carlo SSA algorithm which is an efficient and accurate way to model stochastic processes such as polymerization. Later I found a different (complementary) model that looks at the cross-linking process in more detail.
Despite the clarity of the paper, there were some details I could not find so I have had to make a few ad hoc fixes that replicate the theoretical curves (backed up by experimental data) shown in the paper. Hopefully I will be able to improve the model as my own understanding deepens.
The calculations are not too slow, but they aren't fast enough to allow you to slide sliders and get instant feedback. So adjust any of the sliders of interest (described below) and click Calculate to see what happens.
The first two parameters are the % initiator and an indication of the UV power. The effects of both are fairly intuitively understood. The default power of 4 lets you increase (to 16) and decrease (to 1) by a factor of 4 in each direction Next comes the functionality, F, of the acrylate - from 1 to 6. In principle the user could specify a blend, but, as you will see, it would not provide much extra insight. N Molecules is your choice between speed (say 5000) and statistical accuracy (say 30000). The number of acrylates is F*N. The default of 10000 is adequate for most purposes, but if you get varying results each time you click Calculate for the same set of inputs, increase N Molecules to reduce the statistical noise. In terms of time, the default UV power consumes the initiator in 10s. The default time, tMax, of 5s is a good compromise in terms of computation time and seeing things of interest.
We now have three factors that control the process. kP is a propagation rate and kT is a termination rate. In principle these could be in real units but my uncertainties over some aspects of the paper have resulted in these being somewhat arbitrary and in any case, the calculations are carried out on a particles/second basis so the values are internally converted. Note that everyone agrees that kT should be greater than kP, though I have seen factors between 2 and 1000. Because the concentration of radicals is rather small and the chances of them meeting are low, it needs large changes in kT before you see large effects on the overall process.
cyFact is a number that describes how much easier it is for a propagating chain to react with an internal monomer (a "cycle") rather than with a fresh monomer that is not yet in a chain. It is multiplied by (F-1) where F is the functionality. So for a monofunctional acrylate, the overall factor is 0, i.e. there are no internal cycles and for a hexamer there is a strong chance (5x cyFact) of internal reactions. You can explore what happens by comparing the results when cyFact is at its default of 1 and when it is turned off by setting it to 0. Again, I don't properly understand from the paper how I should handle this effect so the results may not be entirely correct.
Internally there is one more factor. The propagation and termination rates are designed to slow down with chain length, representing how much harder it gets to find a new monomer or another terminating radical.
The graph shows the % conversion of the monomers, the number of radicals and the % of the initiator. The "staircase" effect with the initiator concentration (more visible at low concentrations) comes from the algorithm; polymerization continues while waiting for the next initiator to react, a time that gets exponentially longer as the concentration decreases.
The simulation process stops when there is no more monomer, or no more initiator and radicals. If this happens before your selected tMax, the initiator and radical graphs stop abruptly and the % conversion is simply extended from its current value to the end.
The Data field summarises the % conversion at the end of your time, the gelation time defined as being when the converted fraction, α, reaches the Flory critical value α=1/(2*F-1) which is 1, .33, .2, .14 ... for 1, 2, 3, 4-functional acrylates. The % of Propagation, Termination and Cyclisation steps is shown, plus MaxL, the longest single chain created during the polymerization. For multi-functional acrylates this number is of less significance because the actual polymer length becomes infinite via the cross-linked network. The tCalc value is how long the calculation took on your device. I find it useful for debugging and code optimization purposes.
Although my version does an adequate job of simulating most aspects of the paper, the gel time calculation is not yet reliable - small changes in the simulation can lead to large changes in tGel.
So what?
As someone who has a strong interest in UV curing systems, I had hoped that having a simulation tool would provide me with lots of fresh insights that could guide formulation optimizations for myself and for others. I have to confess that so far the app has not proved to be very helpful. When I was having great difficulty knowing how to implement the Gillespie SSA I was tempted to give up, using the excuse that the results propably would not be too helpful. As the things started to work I kept going, only to find that my initial temptation seems to be correct. I think that to make it more insightful I will have to work out the distribution of N-mer reactions. If I start with, say, a 4-mer, how do the numbers of 4-mers, 3-mers, 2-mers and 1-mers change over time. I don't think this follows naturally from the specific algorithm I've used. An alternative approach (one which inspired the Altun-Çiftçioğlu paper) is from Wen et al2 and is a lattice-based theory that can count all the individual interactions and (in the paper) produces some fascinating diagrams of the individual chains growing in the early stages of a 2D simulation. The lattic approach has its drawbacks and in real 3D simulations it might be hard to see what is happending. But I will see if there is any possibility of combining the two approaches. Watch this space. If anyone with more knowledge of such systems would like to help, I'd be happy to update the app. The code, like all my apps, is freely viewable if you click the "View Page Source" option in your browser.
1 Gökçen A. Altun-Çiftçioğlu, Ayşegül Ersoy-Meriçboyu and Clifford L. Henderson, Stochastic modeling and simulation of photopolymerization process, Polymer Engineering & Science, 51, 2011, 1710-1719
2Mei Wen, L. E. Scriven, and Alon V. McCormick, Kinetic Gelation Modeling: Structural Inhomogeneity during Cross-Linking Polymerization, Macromolecules 2003, 36, 4140-4150