mcpbeat

Lammps Reaxff

jinzhezenggroup/lammps-reaxff

Run reactive molecular dynamics simulations in LAMMPS with the ReaxFF potential, including preparing input scripts (pair_style reaxff + fix qeq/reaxff), mapping LAMMPS atom types to elements via pair_coeff, choosing ensembles (NVE/NVT/NPT), and adding common ReaxFF diagnostics such as species analysis. Use when the user wants LAMMPS+ReaxFF workflows or needs a working, annotated `input.lammps` template.

3k tokens
context cost
the whole folder, loaded on every use
3
files
instructions only
0
copies elsewhere
how many repositories repackaged it
118
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/jinzhezenggroup/computational-chemistry-agent-skills --skill lammps-reaxff

What comes with it

2 777 bytes besides the instruction
assets/input.reaxff.nvt.lammps
references/reaxff-workflow.md

The instruction itself

12 sections, as written by the author

LAMMPS + ReaxFF

Use this skill when the user wants to run molecular dynamics in LAMMPS with a ReaxFF force field, prepare or explain an input.lammps file, and set up charge equilibration (QEq) correctly.

Agent responsibilities

  • Confirm the ReaxFF force field file (e.g. ffield.reax.*). Do not guess which file is appropriate.
  • If the user does not have a force field yet, point them to known sources (e.g. LAMMPS potentials/ffield.reax.* at https://github.com/lammps/lammps/tree/develop/potentials).
  • Confirm the structure/data file (e.g. data.system) and the atom type → element mapping needed by pair_coeff.
  • Ensure the input includes charge handling:
  • Use a charge-capable atom style, such as atom_style charge or atom_style full, and ensure charges are initialized either from the data file (with a charge column compatible with the chosen atom_style) or via explicit commands (e.g. set or equal-style variables). Do not rely on fix property/atom q as a substitute for a real charge field used by ReaxFF/QEq.
  • Add one charge equilibration fix, typically fix qeq/reaxff, unless the user explicitly requests otherwise.
  • Write the LAMMPS input script yourself; keep examples readable and annotated.
  • When possible, validate command availability against LAMMPS docs or local lmp -h output before execution.
  • Report clearly which command was run, which files were used, and where outputs were written.

Minimum information to collect

Ask only for what is missing:

  • LAMMPS data file path (or structure + how to generate a data file)
  • ReaxFF force field file path (ffield.reax...)
  • Atom types present and their element mapping (for pair_coeff * * ffield ...)
  • Ensemble (NVE / NVT / NPT)
  • Temperature, pressure (if NPT), timestep, run length
  • Execution mode: online provisioning vs user-specified LAMMPS binary

Execution mode

Online mode (only if internet access + uv is available)

Use:

uvx --from 'lammps[mpi]' lmp -in input.lammps

Notes:

  • If you see error while loading shared libraries: libmpi.so..., you likely installed an MPI-linked lmp without MPI runtime libraries. Prefer uvx --from 'lammps[mpi]' ... (bundles MPI runtime), or load/install MPICH/OpenMPI via system packages/conda/HPC module.

Offline mode (common / HPC)

Do not invent the executable. Ask which command should be used, e.g.:

  • lmp -in input.lammps
  • mpirun -np 32 lmp_mpi -in input.lammps
  • srun lmp -in input.lammps

Example: annotated NVT input (ReaxFF + QEq)

See also assets/input.reaxff.nvt.lammps.

# --------- user knobs ---------
variable        NSTEPS      equal 200000
variable        THERMO      equal 200
variable        DUMP        equal 1000

variable        TEMP        equal 300.0
variable        TAU_T       equal 100.0

# Timestep (fs for units real). For high-T / reactive runs, 0.1 fs is often safer.
variable        DT          equal 0.25


# QEq parameters
variable        QEQ_EVERY   equal 1
variable        QEQ_TOL     equal 1.0e-6
variable        QEQ_CUTLO   equal 0.0
variable        QEQ_CUTHI   equal 10.0

units           real
boundary        p p p
atom_style      charge

read_data       data.system

neighbor        2.0 bin
neigh_modify    every 1 delay 0 check yes

# ReaxFF potential
pair_style      reaxff NULL
pair_coeff      * * ffield.reax C H O

# Charge equilibration (required for most ReaxFF parameterizations)
fix             fqeq all qeq/reaxff ${QEQ_EVERY} ${QEQ_CUTLO} ${QEQ_CUTHI} ${QEQ_TOL} reaxff
# (`reaxff` here means QEq parameters are extracted from the ReaxFF force field file.)

# Thermo and trajectory
thermo_style    custom step temp pe ke etotal press vol density
thermo          ${THERMO}

dump            1 all custom ${DUMP} traj.lammpstrj id type q x y z

# Dynamics
velocity        all create ${TEMP} 12345 mom yes rot yes dist gaussian
fix             fnvt all nvt temp ${TEMP} ${TEMP} ${TAU_T}

timestep        ${DT}
run             ${NSTEPS}

Notes on the example

  • units real is a common choice for ReaxFF (time in fs). Many published ReaxFF workflows use real, but the correct choice depends on the parameterization and your conventions.
  • Timestep: 0.25 fs may be fine for moderate temperatures, but for high-temperature ReaxFF (especially with H present) it is common to reduce to 0.1 fs (or even 0.05 fs if needed). A quick sanity check is a short NVE segment to verify total-energy drift before running long NVT/NPT.
  • atom_style charge is used because ReaxFF and QEq require per-atom charges.
  • pair_style reaxff NULL uses default ReaxFF control settings. If you have a ReaxFF control file, replace NULL with its filename.
  • pair_coeff * * ffield.reax C H O:
  • The trailing symbols define the element mapping for LAMMPS atom types (type 1->C, type 2->H, type 3->O in this example). Adjust to match your data file.
  • fix qeq/reaxff ... reaxff uses QEq parameters extracted from the ReaxFF force field file.
  • Short NVE stability check (no thermostat/barostat)
  • Run 1–5 ps NVE and check that etotal drift is reasonable (and that the run does not blow up).

Example (units real):

reset_timestep  0
unfix           fnvt
fix             fnve all nve

# high-T ReaxFF often needs a smaller timestep
# (common choices: 0.1 fs; if needed 0.05 fs)
timestep        0.1
run             2000
  • If it blows up: reduce timestep (e.g. 0.25 fs → 0.1 fs → 0.05 fs), check the initial geometry, and ensure QEq converges.
  • QEq convergence
  • If QEq hits max iterations often, consider better initial charges, looser timestep, or maxiter (see LAMMPS fix qeq/reaxff).

Optional: species analysis

If the user wants reaction product tracking, add fix reaxff/species (see references/reaxff-workflow.md). This writes time series counts of detected molecular species using bond-order cutoffs.

Output checklist

After a run, report at least:

  • executed command
  • input script path
  • data file path
  • ffield path and element mapping used
  • whether QEq was enabled and with which settings
  • main log path (log.lammps)
  • trajectory/species output paths (if any)

References

  • pair_style reaxff: https://docs.lammps.org/pair_reaxff.html
  • fix qeq/reaxff: https://docs.lammps.org/fix_qeq_reaxff.html
  • fix reaxff/species: https://docs.lammps.org/fix_reaxff_species.html

How to use it

Copy the folder

Take jinzhezenggroup/lammps-reaxff from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference uvx. Without those the skill loads but fails at the first command.