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:

  1. 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.

  2. Progagation

    During propagation, monomers sequentially add to active centers. Monomers with radical components react with other monomers in the same way as the intiator.

  3. 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
class xlink.Topology
__init__()

Initialize self. See help(type(self)) for accurate signature.