A polymeric chain decomposes when using nvt in a ReaxFF simulation

Hello all,

Something unusual is happening in my simulation. I’m modeling a supercell of the polymer Kapton, which I intend to bombard with oxygen atoms. The process begins by finding the equilibrium structure of Kapton, after which I extend the supercell along the z-axis. This creates a vacuum region above the Kapton layer, where I plan to introduce oxygen atoms with a defined velocity directed toward the polymer surface.

I’ve followed this same procedure with several different Kapton structures, always using the same code to generate the initial configurations. Before introducing the oxygen atoms, I apply a standard heating and quenching method to stabilize the system’s temperature — a process that has consistently worked in all previous cases.

However, with my latest supercell — the one I actually want to use — one polymer chain at the bottom of the supercell begins to decompose during the NVT ensemble phase of temperature stabilization. I suspected this might be related to changes in system density: by extending the z-dimension, Kapton might be experiencing unwanted compression in the x and y directions. To address this, I performed a few initial steps in the NPT ensemble before switching to NVT. Interestingly, no decomposition occurs during the NPT phase, but as soon as I switch to NVT, the same chain at the bottom decomposes again.
Here is my code

# Example of relaxation for the monomer

package kokkos

#-------------------------VARIABLES---------------------------#
variable dt         equal 0.1 #fs

# lower z surface (look at surface using ovito,you will understand)
variable z_surface  equal 142

# size supercell in z direction
variable z_max_supercell equal 700

# z at surface of Kapton
variable z_max equal 156

# Atoms with z between INF and z_frozen will be frozen
variable z_frozen equal 0

# Introduction AO zone :
variable zhi equal $(v_z_max + 80)
variable zlo equal $(v_z_max + 60)

# H&Q steps (increase step for better temperature stabilization or decrease T_step, check temperature constant in NVE ensemble)
variable T_heating_step   equal 30.0     # delta T increase at each cycle during heating
variable T_quenching_step equal 20.0     # delta T decrease at each cycle during quenching
variable heating_step     equal 3500     # nb steps for increasing T of T_heating_step
variable quenching_step   equal 2500     # nb steps for decreasing T of T_quenching_step

variable init_T  equal 100
variable inter_T equal 450
variable final_T equal 300
#-------------------------------------------------------------#

units           real

boundary        p p f

atom_style      charge
read_data       ./data.huge_supercell

# Define ReaxFF potential
pair_style      reaxff/kk lmp_control
pair_coeff      * * "/stck/dfernand/ATOX/2-LAMMPS/0-ReactiveForceFields/CHONSSiNaFZr_Rahnamoun_van-Duin.ff.txt" C H O N

# Neighbor list settings
neighbor        3 bin #radius cutoof interaction
neigh_modify    every 1 delay 0 check yes

timestep ${dt}

# Charge equilibration
fix             2 all qeq/reaxff/kk 1 0.0 10.0 1.0e-6 reaxff  # Charge equilibration

# Output settings
dump        myDump all custom 300 dump.stabilization id type x y zu vx vy vz
thermo          20  # Print thermodynamic data every N steps

thermo_style custom step vol temp press density etotal

fix 3 all npt/kk temp ${init_T} ${init_T} $(100*dt) x 1.0 1.0 $(500*dt) y 1.0 1.0 $(500*dt)
run 3500
unfix 3
write_data data.after_npt

# Avoid loosing atoms in z direction as no peroidic boundary conditions in z
fix      wall_zlo all wall/reflect zlo EDGE
fix      wall_zhi all wall/reflect zhi EDGE

# Avoid that the polymer translatates in z direction
region bloc block INF INF INF INF INF ${z_frozen}
group frozen dynamic all region bloc every 3000
fix freeze frozen setforce 0 0 0
velocity frozen set 0 0 0

#------------------------------ T stabilization ----------------------------------#
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° HEATING °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°#
variable T      equal $(15 + v_init_T)
thermo_style custom step vol temp press density etotal v_T
label heat_loop
fix             3 all nvt/kk temp ${T} $(v_T_heating_step + v_T) $(100*dt)
run             ${heating_step}
fix             3 all nvt/kk temp $(v_T_heating_step + v_T) $(v_T_heating_step + v_T) $(100*dt)
run             ${heating_step}

# Avoid that the polymer translatates in z direction
region bloc block INF INF INF INF INF ${z_frozen}
group frozen dynamic all region bloc every 3000
fix freeze frozen setforce 0 0 0
velocity frozen set 0 0 0

variable T equal $(v_T_heating_step + v_T)
if "$(v_T) < $(v_inter_T)" then "jump SELF heat_loop"
write_data data.after_heating
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°#


You are much more likely to obtain help, if you post in the correct forum. This is about LAMMPS and not the Materials Project.

to quote @akohlmey, the reaxff force field (FF) you’re using is “bogus” in many ways:

  • the description of your FF says “comments in the forcefield file: interactions with water and Na+ Fogarty et al. JCP-2010 ; with glycine + C/H/F parameters; Si-F bond/offdiag/angle parameters; Si-S dummy parameters + S-O-H parameters(Yun 2012 Oct8) + H-F bond/offdiag (Jan14 2013 Joon) Jan31: added Zr/O/H/C.” [Included force fields — ReaxFF 2025.1 documentation]. that sounds like a bunch of parameters copy/pasted into a bucket of bolts. i looked at the paper doi to see how they trained the parameters, no supplemental information at all which is usually common practice for reaxff papers.

  • first sentence of the abstract already sounds weird to me: isnt Low-Earth Orbit gas-phase, not solvated chemistry but this FF is “Branch: water” ?

  • ATM.O.eta / ATM.O.gamma = 6.3952/ 1.1748 = 5.44 but you need eta > 7.2 * gamma for all atoms to avoid the polarization catastrophe in QEQ. [Troubleshooting and warnings — ReaxFF 2025.1 documentation]. ACKS2 needs a similar condition eta > 8.13 * gamma. im not sure what the equivalent condition is for QTPIE maybe @stamoor knows.

  • ATM.C.r_s = 1.3817, ATM.C.r_p = 1.1341, ATM.C.r_pp = 1.2114 but you need r_s ≥ r_p ≥ r_pp to maintain relative physical behavior of sigma, pi and pi-pi interactions.

  • BND.C.O.De_s = 100.9167, BND.C.O.De_p = 136.3836, BND.C.O.De_pp = 65.3877 but you need bond energies De_s ≥ De_p ≥ De_pp otherwise the reaxff bond order terms cause unphysical artifacts.

i stopped there, i didnt even look at non-CHON atoms, other BND parameters, or any OFD / ANG / TOR / HBD parameters.

not sure what the intent of your research is. here’s something interesting you could do. since dupont has published extensive data on kapton [https://www.dupont.com/content/dam/electronics/amer/us/en/electronics/public/documents/en/EI-10142_Kapton-Summary-of-Properties.pdf] you could try to replicate as many of the experimental properties with LAMMPS trying different FFs from the literature [6. ReaxFF Models — FitSNAP documentation].

i would start with FFs with C/H/O/N that are combustion or independent branch. “There are currently two major groupings (i.e., the ReaxFF branches) of parameter sets that are intra-transferable with one another: (1) the combustion branch and (2) the aqueous (water) branch. The major difference between these two branches is in the O/H parameters, where the combustion branch focuses on accurately describing water as a gas-phase molecule, and the water branch is targeted at aqueous chemistry.” [Included force fields — ReaxFF 2025.1 documentation]