Run LAMMPS molecular dynamics with DeePMD-kit machine learning potentials. Use when the user wants MD simulations driven by a trained DP model.
Scanned 9/20/2026
Install to Claude Code
npx -y skills add Hello-QM/catgo-LRG --skill lammps-deepmd --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Lammps Deepmd?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hello-qm-lammps-deepmd)More formats (shields.io, HTML) on the badges page.
---
name: lammps-deepmd
description: >
Run LAMMPS molecular dynamics with DeePMD-kit machine learning potentials.
Use when the user wants MD simulations driven by a trained DP model.
compatibility: >
Requires LAMMPS compiled with the DEEPMD package. A frozen DeePMD model (.pb) is required.
catalog-hidden: true
---
# LAMMPS + DeePMD Potential
## When to Use
- User wants to run MD with a trained DeePMD model
- User needs large-scale MD (10K-1M atoms) at near-DFT accuracy
- User wants to study diffusion, phase transitions, or surface reactions with ML potential
- User has a frozen `.pb` model file
## Prerequisites
1. LAMMPS compiled with DEEPMD package (`lmp -h | grep DEEPMD`)
2. Frozen DeePMD model file (`.pb`)
3. Initial structure (LAMMPS data file or from CatGo viewer)
4. Know the `type_map` used during model training
## Workflow Steps
### 1. Verify structure
```
catgo_view(action="get_state")
```
### 2. Create workflow
```
catgo_workflow_engine(action="create", params={"name": "LAMMPS DeePMD NVT 300K"})
```
### 3. Add LAMMPS task
```
catgo_workflow_engine(action="add_task", params={
"workflow_id": "wf_xxx",
"task_type": "shell",
"name": "lmp_dpmd",
"command": "lmp -in lammps.in > lammps.log 2>&1",
"input_files": {
"lammps.in": "<input script>",
"frozen_model.pb": "{{model_path}}"
},
"system_name": "TiO2_md"
})
```
## LAMMPS Input Template — NVT
```
units metal
boundary p p p
atom_style atomic
read_data structure.lmp
pair_style deepmd frozen_model.pb
pair_coeff * *
neighbor 2.0 bin
neigh_modify every 1 delay 0 check yes
# Velocities
velocity all create 300.0 12345 dist gaussian
# NVT thermostat
fix 1 all nvt temp 300.0 300.0 0.1
# Timestep (ps in metal units)
timestep 0.001
# Output
thermo 100
thermo_style custom step temp pe ke etotal press vol
dump 1 all custom 100 traj.lammpstrj id type x y z fx fy fz
dump_modify 1 sort id
# Restart
restart 10000 restart.*.data
run 100000
```
## LAMMPS Input Template — NPT
Replace the fix line:
```
fix 1 all npt temp 300.0 300.0 0.1 iso 0.0 0.0 1.0
```
## Model Deviation (Multi-Model)
For active learning or reliability checking, use multiple models:
```
pair_style deepmd model_0.pb model_1.pb model_2.pb model_3.pb out_freq 100 out_file model_devi.out
pair_coeff * *
```
This writes `model_devi.out` with per-frame max/min/avg force deviation. Use thresholds:
- `max_devi_f < 0.05` eV/Ang: model is reliable
- `0.05 < max_devi_f < 0.15`: candidate for active learning
- `max_devi_f > 0.15`: model is unreliable, do not trust results
## Preparing LAMMPS Data File
Convert from CatGo structure to LAMMPS data format:
```python
from ase.io import read, write
# Read pymatgen dict, write LAMMPS data
atoms = read('structure.json')
write('structure.lmp', atoms, format='lammps-data')
```
Or use dpdata (see `data/dpdata/SKILL.md`).
## Parameter Guidance
| Parameter | Typical value | Notes |
|---|---|---|
| timestep | 0.001 ps (1 fs) | Metal units; can use 2 fs for stiff systems |
| NVT temp damp | 0.1 ps | Nose-Hoover damping; 100x timestep |
| NPT press damp | 1.0 ps | Pressure damping; 1000x timestep |
| dump frequency | 100-1000 | Every 100 steps = 0.1 ps |
| neighbor skin | 2.0 Ang | Rebuild neighbor list threshold |
| run | 100K-10M | Depends on property of interest |
## Common Pitfalls
1. **Wrong units** — DeePMD pair_style requires `units metal` (eV, Ang, ps). Never use `units real`.
2. **type_map mismatch** — atom types in LAMMPS data file must match the order in the DP model's type_map.
3. **Unfrozen model** — `pair_style deepmd` needs a frozen `.pb` file. Run `dp freeze` first.
4. **Too large timestep** — 1 fs is safe; 2 fs may cause energy drift for light elements (H).
5. **No equilibration** — always equilibrate for 10-50 ps before production run. Discard equilibration data.
6. **Memory for large models** — GPU memory limits apply. For 1M+ atoms, use CPU or multi-GPU.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!