| name | packmol |
| description | Generate initial configurations for molecular simulations using Packmol. Build liquid boxes, mixtures, solutions, and solvated systems by packing molecules into a defined region.
|
| compatibility | Requires Packmol installed (apt install packmol or compiled from source). Input molecules must be in PDB or XYZ format.
|
| catalog-hidden | true |
Packmol — Mixture/Solution Box Generation
When to Use
- User needs to build a liquid simulation box (water, organic solvents)
- User wants to create a mixture of different molecules
- User needs to solvate a solute in a solvent box
- User is preparing initial structures for LAMMPS ReaxFF or classical MD
- User needs to fill a region with molecules at a target density
Prerequisites
- Packmol installed (
packmol < /dev/null should print version)
- Molecule coordinate files in PDB or XYZ format
- For molecules from SMILES: first convert with Open Babel (
data/openbabel/SKILL.md)
Workflow Steps
1. Prepare molecule files
If starting from SMILES, convert to PDB first:
obabel -:"O" -O water.pdb --gen3d -h
obabel -:"CCO" -O ethanol.pdb --gen3d -h
2. Create Packmol input and run
catgo_workflow_engine(action="add_task", params={
"workflow_id": "wf_xxx",
"task_type": "shell",
"name": "packmol_mix",
"command": "packmol < mixture.inp > packmol.log 2>&1",
"input_files": {
"mixture.inp": "<packmol input>",
"water.pdb": "<water coords>",
"ethanol.pdb": "<ethanol coords>"
},
"system_name": "water_ethanol_mix"
})
Packmol Input Template — Simple Liquid Box
tolerance 2.0
filetype pdb
output mixture.pdb
structure water.pdb
number 1000
inside box 0.0 0.0 0.0 30.0 30.0 30.0
end structure
Packmol Input Template — Binary Mixture
tolerance 2.0
filetype pdb
output mixture.pdb
# Water (70% by count)
structure water.pdb
number 700
inside box 0.0 0.0 0.0 40.0 40.0 40.0
end structure
# Ethanol (30% by count)
structure ethanol.pdb
number 300
inside box 0.0 0.0 0.0 40.0 40.0 40.0
end structure
Packmol Input Template — Solvated Solute
tolerance 2.0
filetype pdb
output solvated.pdb
# Solute (fixed at center)
structure solute.pdb
number 1
center
fixed 20.0 20.0 20.0 0.0 0.0 0.0
end structure
# Solvent around solute
structure water.pdb
number 500
inside box 0.0 0.0 0.0 40.0 40.0 40.0
outside sphere 20.0 20.0 20.0 5.0
end structure
Packmol Input Template — Layered System (e.g., Interface)
tolerance 2.0
filetype pdb
output interface.pdb
# Liquid phase
structure hexane.pdb
number 200
inside box 0.0 0.0 0.0 30.0 30.0 15.0
end structure
# Gas phase
structure oxygen.pdb
number 50
inside box 0.0 0.0 15.0 30.0 30.0 30.0
end structure
Box Size Estimation
Target density determines box size. For water at 1 g/cm3:
N_molecules * M_molecule / (N_A * V_box) = density
For 1000 water molecules:
V = 1000 * 18.015 / (6.022e23 * 1.0) = 2.993e-20 cm3
L = V^(1/3) = 3.1e-7 cm = 31.0 Angstrom
Use a box slightly larger (e.g., 32 Ang) and equilibrate with NPT MD.
Parameter Guidance
| Parameter | Typical value | Notes |
|---|
| tolerance | 2.0 Ang | Minimum distance between atoms of different molecules |
| filetype | pdb or xyz | Must match input molecule files |
| number | varies | Number of molecules of each type |
| inside box | x0 y0 z0 x1 y1 z1 | Rectangular region (Angstrom) |
| inside sphere | cx cy cz r | Spherical region |
| outside sphere | cx cy cz r | Exclusion zone (for solvation) |
| fixed | x y z a b c | Fix position and orientation (angles in degrees) |
Common Pitfalls
- Tolerance too small —
tolerance 2.0 works for most cases. Smaller values cause Packmol to fail to converge.
- Box too small — if density is too high, Packmol cannot place all molecules. Increase box size.
- Wrong filetype —
filetype pdb must match the actual input file format.
- No equilibration after Packmol — Packmol output is NOT equilibrated. Always run NPT MD to relax the density.
- Missing hydrogens — ensure input molecules have correct hydrogens before packing.
- Molecule overlap with solute — use
outside sphere to prevent solvent from overlapping with a fixed solute.
- Convergence failure — if Packmol does not converge, increase
tolerance or box size, or reduce molecule count.