Cross-linking¶
Our cross-linking algorithm is designed to simulate the result of a free radical polymerization (FRP) between vinyl group containing monomers. There are three main components to a free radical polymerization:
Initiation
In an FRP, an initiator decomposes into free radicals which readily react with one electron from the pi bond of a C=C group, creating a new bond with one of the C atoms. The extra pi-bond electron moves to the other C atom which becomes the new active radical site.
In an an effort to simplify our proces, we represent the initiator as hydrogen so that we only have to add single hydrogen atoms at initiation sites.
Atoms are added to the system during cross-linking. In order to make this work efficiently with molecular simulations, we added dummy hydrogen atoms to all sites where an initiator could potentially be added. The dummy atoms are only made real when necessary and are eliminated after cross-linking has terminated.
Progagation
During propagation, monomers sequentially add to active centers. Monomers with radical components react with other monomers in the same way as the intiator.
Termination
For the reaction to be terminated, all of the radicals must react. The two most common termination mechanisms are combination and disproportionation. Combination involves two monomers with active centers coupling together. Disproportionation involves abstraction of a hydrogen atom by one radical species from another species.
Our cross-linking algorithm happens iteratively. Each iteration, a group of potentially bonding atoms are selected based on their proximity to each other. We update the topology file with the new atom types, bonds, angles, etc, then perform an energy minimization to zip together the new bonds and finally a short NVT simulation. This process is repeated until the convergence criteria, the number of cross-links, is met.
This algorithm is meant to be used with any vinyl containing system, however the user will have to define any undefined reactions.
See Designing Cross-Linking Reactions
Crosslink LLC structure
usage: xlink.py [-h] [-i INITIAL] [-b BUILD_MON] [-c CUTOFF] [-e TERM_PROB]
[-d DUMMY_NAME] [-itp XLINK_TOP_NAME] [-top TOPNAME]
[-T TEMPERATURE] [--em_steps EM_STEPS] [-dt DT] [-L LENGTH]
[-ff FORCEFIELD] [-mdp_em MDP_EM] [-mdp_nvt MDP_NVT]
[-res RESIDUE] [-resd DUMMY_RESIDUE] [-density DENSITY]
[-p PERCENT] [-rad_percent RAD_PERCENT] [-out OUTPUT_GRO]
[-rad_frac_term RAD_FRAC_TERM] [-stagnation STAGNATION] [-mpi]
[-np NPROC] [-dd DOMAIN_DECOMPOSITION] [-s]
[-sf SAVE_FREQUENCY]
Named Arguments¶
| -i, --initial | Name of input file Default: “initial.gro” |
| -b, --build_mon | |
Monomer the system is built with Default: “NAcarb11Vd” | |
| -c, --cutoff | Cutoff percentage for cross-linking. Bottom x % of the distribution of distances will be cross-linked Default: 5 |
| -e, --term_prob | |
Termination probability (%) Default: 5 | |
| -d, --dummy_name | |
Name of initial .gro file after dummies are added Default: “dummies.gro” | |
| -itp, --xlink_top_name | |
Name of .itp topology file describingassembly of cross-linked monomers. Default: “assembly.itp” | |
| -top, --topname | |
Name of topology file Default: “topol.top” | |
| -T, --temperature | |
Temperature at which to run system (K) Default: 300 | |
| --em_steps | Maximum number of steps to run during energyminimization Default: 5000 |
| -dt, --dt | Time step for NVT simulations (ps) Default: 0.002 |
| -L, --length | Length of NVT simulation (ps) Default: 5 |
| -ff, --forcefield | |
Name of forcefield used during simulation Default: “gaff” | |
| -mdp_em, --mdp_em | |
Name of energy minimization .mdp file Default: “em.mdp” | |
| -mdp_nvt, --mdp_nvt | |
Name of energy minimization .mdp file Default: “nvt.mdp” | |
| -res, --residue | |
Name of residue to be cross-linked Default: “HII” | |
| -resd, --dummy_residue | |
Name of residue to be cross-linked with dummy atoms included in the topology Default: “HIId” | |
| -density, --density | |
Cross-link density (percent of x-linksthat need to be cross-linked for procedure to terminate Default: 95 | |
| -p, --percent | Percent of eligible carbons that will bond Default: 1 |
| -rad_percent | Percent of radicals that react each iteration.Not stable above 50 % (?) Default: 20 |
| -out, --output_gro | |
Name of final cross-linked structure Default: “xlinked.gro” | |
| -rad_frac_term | Out of 100, how many radicals that will be terminated on each iteration. Numbers greater than zero will decrease cross-link density Default: 20 |
| -stagnation | The number of iterations without generating a newcross-link before the algorithm forces termination Default: 5 |
| -mpi, --parallelize | |
specify true if running with MPI or GPU Default: False | |
| -np, --nproc | Number of processess to run in parallel (numberof GPUs on Bridges and Summit) Default: 4 |
| -dd, --domain_decomposition | |
xyz dimensions of domain decomposition grid. This may need to be adjusted if there are issues with mdrun. The productof these values should equal the number of processes (np) Default: [2, 2, 1] | |
| -s, --save_intermediates | |
Save intermediate topology and energyminimized structures in a folder called intermediates. Default: False | |
| -sf, --save_frequency | |
Number of iterations between saves Default: 1 | |
Classes¶
-
class
xlink.System(initial_configuration, residue, dummy_residue, dummy_name='dummies.gro', reaction_percentage=1, cutoff=0.6, radical_reaction_percentage=20, radical_termination_fraction=50)¶ Bases:
xlink.Topology-
__init__(initial_configuration, residue, dummy_residue, dummy_name='dummies.gro', reaction_percentage=1, cutoff=0.6, radical_reaction_percentage=20, radical_termination_fraction=50)¶ Initialize system for cross-linking and create a configuration with dummy atoms in appropriate locations
Parameters: - initial_configuration (str) – coordinate file to be cross-linked (.gro)
- residue (str) – name of residue involved in cross-linking
- dummy_residue (str) – file with same topology as residue in addition to dummy atoms
- dummy_name (str) – name of coordinate file with dummy atoms
- reaction_percentage (float) – percentage of atom pairs within the cutoff distance that will be chosen to bond
- cutoff (float) – max distance two atoms can be away from each in order to still be considered from bonding
- radical_reaction_percentage (float) – percentage of radicals that react on each iteration
- radical_termination_fraction (float) – percentage of radicals that terminate each iteration
-