用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Hello-QM/catgo-LRG --skill vasp-md命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | vasp-md |
| description | Ab initio molecular dynamics (AIMD) with VASP. NVT/NVE ensembles, temperature control, trajectory analysis. |
Run Born-Oppenheimer molecular dynamics with DFT forces at each step. Expensive but provides finite-temperature behavior, diffusion coefficients, and reaction dynamics.
from catgo.workflow import Workflow
from catgo.workflow.builtins import geo_opt, md
wf = Workflow("AIMD at 600K")
struct = wf.add_task("structure_input", structure=structure_json)
# Optional: relax first
opt = wf.add_task(geo_opt, structure=struct.output.structure,
system_name="relax")
# NVT MD at 600 K
run = wf.add_task(md, structure=opt.output.structure,
IBRION=0, # Molecular dynamics
NSW=5000, # Number of MD steps
POTIM=1.0, # Time step in fs
TEBEG=600, # Starting temperature (K)
TEEND=600, # Ending temperature (K)
SMASS=0, # Nose-Hoover thermostat (NVT)
ISIF=2, # Fix cell shape/volume
system_name="AIMD_600K")
wf.submit()
catgo_workflow_engine(action="create", params={"name": "AIMD 600K"})
catgo_workflow_engine(action="add_task", params={
"workflow_id": "wf_xxx",
"task_type": "structure_input",
"structure": "<json>"
})
catgo_workflow_engine(action="add_task", params={
"workflow_id": "wf_xxx",
"task_type": "md",
"software": "vasp",
"structure": "{{t_001.output.structure}}",
"NSW": 5000,
"POTIM": 1.0,
"TEBEG": 600,
"TEEND": 600,
"SMASS": 0,
"system_name": "AIMD_600K"
})
catgo_workflow_engine(action="submit", params={"workflow_id": "wf_xxx"})
| Parameter | Default | Purpose |
|---|---|---|
| IBRION | 0 | Molecular dynamics mode |
| NSW | 1000 | Number of MD steps |
| POTIM | 1.0 | Time step in femtoseconds |
| TEBEG | 300 | Initial temperature (K) |
| TEEND | 300 | Final temperature (K). Set equal to TEBEG for isothermal |
| SMASS | -1 | Thermostat: -1=NVE, 0=Nose-Hoover NVT, >0=Nose mass |
| ISIF | 2 | Fix cell (NVT). Use ISIF=3 for NPT (rare in AIMD) |
| NBLOCK | 1 | Write trajectory every NBLOCK steps |
| SMASS | Ensemble | Use case |
|---|---|---|
| -1 | NVE (microcanonical) | Energy conservation test, short dynamics |
| 0 | NVT Nose-Hoover | Standard production MD at fixed T |
| 1-3 | NVT with Nose mass | Larger SMASS = slower T coupling (less perturbation) |
| -3 | Langevin thermostat | Better T control for small systems |
Recommendation: Use SMASS=0 (Nose-Hoover) for most production runs. Use SMASS=-1 (NVE) for energy conservation checks and very short equilibration diagnostics.
To heat from 300 K to 1500 K (simulated annealing or melt-quench):
run = wf.add_task(md, structure=s,
NSW=10000,
POTIM=2.0,
TEBEG=300, # Start at 300 K
TEEND=1500, # Ramp to 1500 K
SMASS=0,
system_name="heating_ramp")
| System | Recommended POTIM (fs) | Reason |
|---|---|---|
| Heavy elements (Pt, Au, Ru) | 2.0 | Heavy atoms, slow dynamics |
| Oxides (TiO2, RuO2) | 1.0-1.5 | O is light, moderate step needed |
| Light elements (H, Li) | 0.5-1.0 | Fast H vibrations need small step |
| Proton transfer | 0.5 | H requires fine time resolution |
Rule of thumb: if the total energy drifts upward in NVE, reduce POTIM.
AIMD is expensive. Optimize performance:
run = wf.add_task(md, structure=s,
NSW=5000,
POTIM=1.0,
TEBEG=600,
SMASS=0,
# Performance
ALGO="VeryFast", # Fastest SCF convergence per step
NELM=60, # Limit SCF steps (MD does not need tight SCF)
EDIFF=1e-4, # Looser SCF for MD (still accurate forces)
LREAL="Auto", # Real-space projection for speed
LWAVE=False, # Do not write WAVECAR each step
NCORE=4,
system_name="AIMD")
EDIFF=1e-4 is acceptable for MD. Forces at 1e-4 SCF convergence are sufficiently accurate for MD trajectories. This saves 30-50% compute time vs 1e-5.
AIMD requires large enough supercells to avoid finite-size effects:
Build a supercell before MD:
catgo_structure(action="supercell", params={"scaling": [2, 2, 1]})
The md task produces:
output.trajectory — atomic positions at each step (XDATCAR)output.energy — energy vs timecatgo_workflow_engine(action="status", params={"workflow_id": "wf_xxx"})
# Check NSW progress, temperature stability
catgo_analyze(action="convergence", params={"task_id": "t_md"})
# Energy vs step, temperature vs step
| Problem | Fix |
|---|---|
| Temperature explodes | Reduce POTIM, check initial structure for overlapping atoms |
| Energy drift in NVE | Reduce POTIM, tighten EDIFF to 1e-5 |
| SCF not converging at each step | Use ALGO=VeryFast, increase NELM |
| Too slow | Reduce ENCUT (400 eV ok for MD), use LREAL=Auto, fewer k-points |
| Atoms evaporating from slab | Add more vacuum, or constrain bottom layers |
| Purpose | NSW | POTIM | Total time |
|---|---|---|---|
| Quick stability check | 1000 | 1.0 | 1 ps |
| Equilibration | 5000 | 1.0 | 5 ps |
| Production (diffusion) | 20000-50000 | 1.0-2.0 | 20-100 ps |
| Melt-quench | 10000+ | 2.0 | 20+ ps |