2D graphene simulation


I am trying to simulate tensile stretching of a small graphene sheet (1000 atoms) with some dislocations generated in it. Current box size is 50 x 50 x 50 Angstroms which is enough to encompass all the atoms. Is there any way to stop the sheet from moving too much in the z-axis? I have tried many boundary styles, namely s and m, and the box always grows 10 times as large during the fix npt run i perform on the box. I do not want to restrict the sheet to a 2D simulation as this will not allow the sheet to ripple during equilibration (which i expect it to do due to the defect). I suspect that the neighbour and neigh_modify commands are the problem.

Below is part of the input file giving me these erroneous results;

units metal
dimension 3
boundary p p s
atom_style charge

# ----------------------- ATOM DEFINITION ----------------------------
read_data defect.data

# ------------------------ FORCE FIELDS ------------------------------
pair_style airebo 2.0 1 0
pair_coeff * * CH.airebo C

# ------------------------- SETTINGS ---------------------------------
neighbor 0.5 nsq
neigh_modify every 5 delay 10 check yes

If you want to allow the atoms to move in the x,y,z directions, while
keeping the Z-coordinate of the center of mass of the graphene sheet
at 0, you could try something like

group gGraphene type XXXX # replace with carbon atom type
fix fCen gGraphene recenter NULL NULL 0.0

For details, see

You might also be able to achieve the same thing using fix momentum to
zero the momentum in the z direction, however because this fix does
not operate at every timestep, you might accumulate some slow drift.
You will probably also want to zero the Z component of the velocity at
the beginning of the simulation.