Solution-Phase Molecular Dynamics
SkillDev toolsSet up and run molecular dynamics simulations of molecules in explicit solvent boxes using Packmol for box construction and MLIPs for dynamics.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Solution-Phase Molecular Dynamics skill
What this skill tells your AI
The instructions your AI receives, as published by learningmatter-mit/atomisticskills in .agents/skills/chem-solution-md/SKILL.md and read by ahel’s review.
Goal
Set up and run molecular dynamics (MD) simulations of molecules in explicit solvent. This skill covers three stages: (1) building a solvation box with Packmol, (2) running NPT/NVT MD using MLIPs, and (3) analyzing the trajectory for radial distribution functions (RDFs), coordination numbers, density convergence, and mean-square displacement (MSD).
[!IMPORTANT] This skill bridges gas-phase
chem-*skills and condensed-phasemat-*skills by providing workflows for solvation dynamics, liquid structure characterization, and dissolution studies.
1. Prerequisites
- Packmol binary must be installed and on
PATHin thebase-agentenvironment. - RDKit must be available in the
base-agentenvironment (for SMILES → 3D geometry). - An MLIP backend must be available via MCP tools (MACE, MatGL, or FairChem).
2. MLIP Selection
Refer to the foundation-potentials skill for model selection.
[!NOTE]
- Organic solvents: Use
MACE-MH-1withomolhead, orUMAwithomoltask.- Aqueous inorganic systems: Use
MACE-MH-1withomat_pbehead, or MatGL/CHGNet.- Mixed organic-inorganic: Use
UMAwhich handles both.
3. Workflow
Step 1: Build Solvation Box
Use the box-building script to create a solvated system with Packmol:
# Env: base-agent
# Pure solvent box (64 water molecules)
python .agents/skills/chem-solution-md/scripts/build_solvation_box.py \
--solvent water \
--num_solvent 64 \
--output_dir research/my_folder/solvation_box
# Solute in solvent (NaCl in 64 water molecules)
python .agents/skills/chem-solution-md/scripts/build_solvation_box.py \
--solute_smiles "[Na+].[Cl-]" \
--solvent water \
--num_solvent 64 \
--output_dir research/my_folder/solvation_box
Key Parameters:
| Argument | Description |
|---|---|
--solvent | Pre-defined solvent name (see available solvents below) |
--solvent_smiles | SMILES string for custom solvent |
--solvent_file | Path to solvent structure file |
--solute_smiles | SMILES string for solute (optional) |
--solute_file | Path to solute structure file (optional) |
--num_solvent | Number of solvent molecules (default: 64) |
--box_size | Cubic box side in Å (auto-calculated from density if omitted) |
--tolerance | Minimum inter-molecular distance in Å (default: 2.0) |
--output_dir | Output directory |
Available pre-defined solvents: water, methanol, ethanol, acetonitrile, dmso, dmf, thf, toluene, acetone, dichloromethane, chloroform, hexane
Output files:
solvated_box.cif— Periodic structure for MDsolvated_box.xyz— Non-periodic XYZ for visualizationbox_metadata.json— Box size, atom counts, solute indices
Step 2: Run MD with MLIP
Use MCP run_md tools for NPT equilibration followed by NVT production.
NPT Equilibration (stabilize density):
mcp_mace_load_model(
model_name="MACE-MH-1",
task_name="omol"
)
mcp_mace_run_md(
structure_data="research/my_folder/solvation_box/solvated_box.cif",
temperature=300,
ensemble="npt",
pressure=1.01325, # 1 atm in bar
steps=5000, # 2.5 ps at 0.5 fs timestep
timestep=0.5, # 0.5 fs for systems with water (fast O-H vibrations)
log_interval=10,
monitor=True,
monitor_type=["explosion", "volume"],
output_dir="research/my_folder/npt_equilibration"
)
NVT Production (use the equilibrated structure):
mcp_mace_run_md(
structure_data="research/my_folder/npt_equilibration/final_structure.cif",
temperature=300,
ensemble="nvt",
steps=20000, # 10 ps at 0.5 fs timestep
timestep=0.5,
log_interval=10,
monitor=True,
monitor_type="explosion",
output_dir="research/my_folder/nvt_production"
)
Step 3: Analyze Trajectory
Run the analysis script on the production trajectory:
# Env: base-agent
python .agents/skills/chem-solution-md/scripts/analyze_solution_md.py \
--trajectory research/my_folder/nvt_production/trajectory.traj \
--rdf_pairs "Na-O,Cl-O,O-O" \
--msd_elements "Na,Cl" \
--log_interval_fs 5.0 \
--output_dir research/my_folder/analysis
Key Parameters:
| Argument | Description |
|---|---|
--trajectory | Path to ASE .traj trajectory file |
--rdf_pairs | Comma-separated element pairs for RDF, e.g. "Na-O,Cl-O" |
--rmax | Maximum RDF distance in Å (default: 8.0) |
--start_frame | First frame to include in analysis (default: 0) |
--stride | Frame stride (default: 1) |
--log_interval_fs | Time between frames in fs (default: 10.0) |
--msd_elements | Comma-separated elements for MSD (optional) |
Output files:
solution_analysis.json— Full results (RDF data, coordination numbers, density, MSD)rdf_plots.png— RDF plots for each element pairdensity_convergence.png— Density vs. timemsd_plot.png— MSD for specified elements (if requested)
4. Examples
Pure Water Box
# Env: base-agent
python .agents/skills/chem-solution-md/scripts/build_solvation_box.py \
--solvent water --num_solvent 64 \
--output_dir .agents/skills/chem-solution-md/examples/pure_water
Expected: 192 atoms (64 × 3), box ~12.4 Å
NaCl in Water
# Env: base-agent
python .agents/skills/chem-solution-md/scripts/build_solvation_box.py \
--solute_smiles "[Na+].[Cl-]" --solvent water --num_solvent 64 \
--output_dir .agents/skills/chem-solution-md/examples/NaCl_in_water
After MD + analysis, expected RDF peak positions:
- Na–O first peak: ~2.4 Å
- Cl–O first peak: ~3.2 Å
- Na coordination number: ~5–6
5. Constraints
- Timestep: Use 0.5 fs for water and systems with O–H/N–H bonds (fast vibrations). Can use 1.0 fs for heavier solvents without H.
- Equilibration: NPT equilibration is critical. Verify density stabilization before production run.
- System size: A minimum of 64 solvent molecules is recommended for reliable RDFs. Larger boxes (128–256) reduce finite-size effects.
- PBC interactions: Ensure the box is large enough that periodic images do not interact (box side > 2 × rmax for RDF).
- Environments:
base-agentfor box building and analysis scripts- MCP tools for MD (any MLIP backend)
References
- Martínez et al., "PACKMOL: A package for building initial configurations for molecular dynamics simulations", J. Comput. Chem., 2009. DOI
- pymatgen PackmolBoxGen: pymatgen.io.packmol
Author: Bowen Deng Contact: GitHub @learningmatter-mit
Signals
- GitHub stars
- 164
- Forks
- 24
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
chem-solution-md- Source
- github.com/learningmatter-mit/atomisticskills