430941 Modeling of RAFT Polymerization Processes Using an Efficient Monte Carlo Algorithm in Julia

Monday, November 9, 2015
Exhibit Hall 1 (Salt Palace Convention Center)
Esteban Pintos, Claudia Sarmoria, Adriana Brandolín and Mariano Asteasuain, PLAPIQUI, Bahía Blanca, Argentina

Controlled Radical Polymerization (CRP) offers the possibility of synthesizing materials with controlled molecular structures in mild operating conditions. For example, it allows obtaining copolymers with controlled molecular weight, polydispersity, composition and chain architecture. Among the different types of CRP techniques, Reversible Addition-Fragmentation Transfer (RAFT) polymerization has become one of the most important due to its potential for the synthesis of novel materials. RAFT polymerization is compatible with a wide variety of monomers, requires moderate reaction conditions and it is effective for the synthesis of block and hyperbranched copolymers.

There has been considerable effort directed towards understanding the chemistry of the RAFT mechanism and kinetics. However, fundamental questions regarding some of the basic steps of the RAFT mechanism remain unanswered. Specifically, it is well known that the propagation rate of some RAFT systems is slowed down by increasing the concentration of the chain transfer agent (CTA). Up to now, no definite explanation of this effect has been reported. There are three main theories that try to explain this rate retardation effect: the Slow Fragmentation (SF) theory, the Intermediate Radical Termination (IRT) theory and the Intermediate Radical Termination with Oligomers (IRTO) theory.

Mathematical modeling is a valuable tool for increasing the understanding of the process and for its optimization. In general, it is possible to divide the reported modeling techniques into two main groups: stochastic and deterministic methods. Deterministic methods have the general advantage of providing reliable and reproducible results in relatively fast computing times. Their main disadvantages are: i) The amount of information that can be obtained on the microstructure of the polymer chains is limited in comparison to stochastic models, ii) the formulation of the equations can result in a very large, convoluted, stiff system, iii) the existence of numerical noise and error, and iv) the need to use simplification techniques for some systems, with the consequent loss of generalization.

Stochastic approaches are represented mainly by the Monte Carlo (MC) technique. The advantage of this approach is that it is relatively simple to implement and can provide extremely detailed information about the polymer microstructure and chain topological architecture that is generally not available with deterministic solvers. This information can be used to obtain valuable data to further understand the mechanistic details of the RAFT polymerization. However, a disadvantage of MC technique is the high computational cost that is usually required to produce accurate results. Recently, there has been some effort in developing hybrid approaches that combine the strengths of both deterministic and stochastic techniques.

The choice of a suitable programming language becomes very important when working with time-consuming algorithms. This is the case for Monte Carlo methods, which use an expensive iteration loop. Most modern scientific computing environments such as MATLAB, R, Octave, Python (with NumPy) and SciLab have gained popularity over the years and they all fall under the category of dynamic languages. This means that in these languages, programmers write simple, high-level code without the need of declaring variable types, in contrast with classic static languages such as C, C++ and Fortran. This seemingly minor difference gives dynamic languages a major advantage in programmer’s time (productivity), at the expense of longer code running times (performance).

Julia (http://julialang.org/) is a modern high-level dynamic programming language designed to achieve high-performance in numerical and scientific computing. Julia is seen as an open source high-performance alternative to languages like MATLAB, R and Python, or a high-productivity alternative to C, C++ and Fortran. Additionally, Julia is recognized as being better suited for general purpose programming tasks than traditional computing-intensive languages (C and Fortran), allowing it to be used not only for prototyping numerical algorithms but also for deploying those algorithms. The resulting code is easier to work with, modify and maintain, as well as easier to use by a team of programmers, while providing very good performance.

In this work, a kinetic MC model of a RAFT reaction was developed and implemented in Julia. This model includes the three main RAFT theories: SF, IRT and IRTO. The MC algorithm is based on the work by Gillespie (J. Phys. Chem, 1977, 81, 2340). In this algorithm, each molecule in a control volume of the reaction system is individually represented and each chemical reaction explicitly simulated.

The size of the control volume is very important for the accuracy and performance of the simulation. Therefore, the effect of this parameter on the model outputs is carefully discussed. The most convenient data structure of the chemical reactions set and of the polymer molecules is also analyzed. Finally, other minor details regarding the execution of the algorithm, which have a direct influence on the performance of the simulation, are explained.

As result of a careful optimization of the general program code in the Julia environment, the mathematical model was able to run in a very short time. At the same time, it provides detailed information about the polymer and intermediate species molecular structure. The model offers a highly efficient and facile method for predicting the average properties and the full molecular weight distribution (MWD) of the polymer species, including the bivariate MWD of the intermediate two-arm adduct, for a generalized RAFT reaction scheme.

The model is capable of producing accurate and reproducible results of the MWDs in approximately 5 to 10 minutes of computing time on a regular desktop computer equipped with an Intel® Core™ i5-3330 Processor (running at 3.20 GHz) and 8 Gb of RAM. In order to achieve these computing speeds it was necessary to pay close attention to details about the algorithmic implementation, code optimization and several speeding-up strategies. The same algorithm was also implemented in another two high-level languages, MATLAB and Python, and benchmarked against Julia, showing that the latter presents clear advantages for this particular case.

Extended Abstract: File Uploaded