Snapping Polyacetylene Chain

This tutorial demonstrates how to set up a molecular dynamics calculation with a increasingly more stretched unit cell in order to study the mechanical properties of a small polymer chain model. During the simulation, the strain on the chain is increased slowly until the initial double bonds of the cis-Polyacetylene are successively converted into their trans configurations. Afterwards, an even larger strain causes the polymer chain to snap which immediately reduces the stress to zero. The stress tensor components computed during the MD simulation are then collected with a small Python script and plotted to demonstrate different changes in the molecular structure of chain.

Step 1: Start ReaxFFinput

Start ADFjobs
SCM → New input
Switch to ReaxFF: ADFPanel ReaxFFPanel

Step 2: Import Structure and Settings

We begin by setting the main calculation option for the molecular dynamics simulation

In the menu bar, File → Import Coordinates...
In the main panel, select Force Field: → CHO.ff
As Number of iterations, enter 850000
Select Method: → NPT Berendsen
As Temperature, enter 300.15 K
As Pressure, enter 1.01 bar
As Damping Constant, enter 1500.0 fs
Select Stress → Stress energy
../_images/ReaxFF_Poly_Snap_1.png

Next, we have to set the strain rate. To prevent the NPT thermostat to alter the strained lattice vector:

In the panel bar, select Details → Molecular Dynamics
Select Fix cell parameters (NPT only) → b (vector depends on the chosen direction of the strain)
In KF result file enter 2000 (saves disk space)
../_images/ReaxFF_Poly_Snap_2.png

Finally, we can add the volume regime set the strain rate:

In the panel bar, select Model → Volume Regime
Click on AddButton
Select Cell parameter → b
As Change, enter 0.000005
../_images/ReaxFF_Poly_Snap_3.png

Step 3: Run the Calculation

After having set all calculation options we are now ready to start the run

In the menu bar, select File → Save and enter PolyStressStrain
In the menu bar, select File → Run
Switch to ADFmovie by clicking on SCMMenu → Movie to see the polymer change under strain

Step 4: Evaluate the Results

Once the calculation has finished, the stress-strain curves can be extracted from the binary results file with the help of a Python script using the PLAMS library.

The script called stress_strain_curve.py is available from here and can be run from the command line:

$ADFBIN/startpython stress_strain_curve.py PolyStressStrain.rxkf

The stress-strain curve is written to a file called stress-strain-curve.csv:

# strain_x, strain_y, strain_z, stress_xx, stress_yy, stress_zz
-0.0002 0.0005 0.0000 0.0019 0.8405 -0.0001
-0.0001 0.0011 -0.0000 -0.0009 0.9600 0.0002
-0.0001 0.0016 ...

The resulting stress/strain curve can then be plotted as stress_yy (column 5) against strain_y (column 2) with any plotting software, e.g. gnuplot:

../_images/ReaxFF_Poly_Snap_4.png

Note the different disconnected segments in the stress/strain plot. The first three of these segments starts correspond to the polymer chain having increasingly more double bonds in trans configuration. After the last double bond has been converted the resulting trans-Polyacetylene chain exhibits different mechanical properties which results in a different slope of the stress/strain graph. At a certain strain, the chain snaps, immediately reducing the stress to zero as beyond this point the periodic polymer chain has turned into a molecular entity.