Skip to main content

Prepare LAMMPS simulation input files from RASPA3-style JSON force fields

Project description

lammps-prep

Crates.io PyPI GitHub Actions

Prepare LAMMPS simulation input files from RASPA3-style JSON force fields.

Given a force_field.json (pseudo-atom masses, charges, and LJ parameters) plus per-species <name>.json molecule files, lammps_prep packs molecules at a target mass density and writes two files:

  • data.lmp — LAMMPS data file (box dimensions, atom positions, bonds, angles, dihedrals)
  • forcefield.lmp — LAMMPS settings file (masses, pair/bond/angle/dihedral coefficients, charge assignments)

Installation

pip install lammps-prep          # pre-built wheel (Python + CLI binary bundled)

Or build from source:

pip install maturin
git clone https://github.com/JelleLagerweij/ff_creation.git
cd ff_creation
maturin develop

Packmol must be installed separately and available on PATH for the pack packmol backend. The RASPA3 Python interface (raspalib) must be installed for the pack raspa backend:

pip install raspalib

CLI reference

lammps_prep pack packmol — random geometric packing

lammps_prep pack packmol [OPTIONS]

Options:
  --force-field <FORCE_FIELD_JSON>
          Path to force_field.json  [default: force_field.json]
  --species <MOLECULE_JSON>...
          Molecule definition file paths, one per species
          (order sets LAMMPS type numbering)
  --counts <COUNT>...
          Number of molecules per species (same order as --species;
          0 skips a species but keeps its atom/bond types in output)
  --density <DENSITY>
          Target mixture mass density, kg/m³
  --out-dir <DIR>
          Directory to write data.lmp and forcefield.lmp into  [default: .]
  --pair-style <PAIR_STYLE>
          Pair style preset: tip4p | lj_cut | lj_cut_coul_long  [default: lj_cut]
  --explicit-lb
          Write every Lorentz-Berthelot cross-pair explicitly instead of
          relying on `pair_modify mix arithmetic`
  --tolerance <TOLERANCE>
          Packmol packing tolerance in Å (min distance between atoms from
          different molecules)  [default: 2.0]
  -h, --help
          Print help

Example:

lammps_prep pack packmol \
  --species CO2.json heptane.json \
  --counts 200 50 \
  --density 700 \
  --out-dir build/

lammps_prep pack raspa — NVT MC equilibration via RASPA3

lammps_prep pack raspa [OPTIONS]

Options:
  --force-field <FORCE_FIELD_JSON>
          Path to force_field.json  [default: force_field.json]
  --species <MOLECULE_JSON>...
          Molecule definition file paths, one per species
  --counts <COUNT>...
          Number of molecules per species
  --density <DENSITY>
          Target mixture mass density, kg/m³
  --out-dir <DIR>
          Directory to write data.lmp and forcefield.lmp into  [default: .]
  --pair-style <PAIR_STYLE>
          Pair style preset: tip4p | lj_cut | lj_cut_coul_long  [default: lj_cut]
  --explicit-lb
          Write every Lorentz-Berthelot cross-pair explicitly
  --temperature <TEMPERATURE>
          NVT simulation temperature in K  [default: 300.0]
  --init-cycles <INIT_CYCLES>
          Initialization cycles (random placement + overlap removal)  [default: 2000]
  --equil-cycles <EQUIL_CYCLES>
          Equilibration cycles (discarded)  [default: 2000]
  --prod-cycles <PROD_CYCLES>
          Production cycles; the final frame becomes the LAMMPS starting
          config  [default: 1000]
  --cutoff <CUTOFF>
          LJ and Coulomb cutoff radius in Å  [default: 12.0]
  -h, --help
          Print help

Example:

lammps_prep pack raspa \
  --species CO2.json heptane.json \
  --counts 200 50 \
  --density 700 \
  --temperature 300 \
  --out-dir build/

Requires raspalib and python/python3 on PATH.


lammps_prep density — mixture density estimation (stubs)

These subcommands are reserved for future releases. Each currently exits with "not yet implemented".

lammps_prep density pr           # Peng-Robinson EOS
lammps_prep density pc-saft      # PC-SAFT EOS
lammps_prep density epc-saft     # ePC-SAFT EOS (electrolyte)
lammps_prep density laliberte    # Laliberte volumetric correlation

Python API

from lammps_prep.pack import packmol, raspa
from lammps_prep import PairSetup

# --- Packmol packing ---
summary = packmol(
    species=["CO2.json", "heptane.json"],
    counts=[200, 50],
    density=700.0,
    out_dir="build",
    pair_style=PairSetup.LjCut,
)
print(summary)

# --- RASPA3 NVT equilibration ---
summary = raspa(
    species=["CO2.json", "heptane.json"],
    counts=[200, 50],
    density=700.0,
    out_dir="build",
    temperature=300.0,
    init_cycles=2000,
    equil_cycles=2000,
    prod_cycles=1000,
)
print(summary)

Density stubs raise NotImplementedError:

from lammps_prep.density import pr
pr(...)  # NotImplementedError: Peng-Robinson EOS is not yet implemented.

Force-field file format

lammps_prep reads RASPA3-style JSON files.

force_field.json

{
  "MixingRule": "Lorentz-Berthelot",
  "PseudoAtoms": [
    { "name": "O_h2o", "mass": 15.9994,  "charge": -1.1128 },
    { "name": "H_h2o", "mass":  1.00794, "charge":  0.5564 }
  ],
  "SelfInteractions": [
    { "name": "O_h2o", "type": "lennard-jones", "parameters": [78.0,  3.1589] },
    { "name": "H_h2o", "type": "lennard-jones", "parameters": [ 0.0,  0.0   ] }
  ],
  "BinaryInteractions": [
    { "names": ["O_h2o", "Na"], "type": "lennard-jones",
      "parameters": [140.043, 2.8904], "source": "MadridT2023" }
  ]
}

parameters for LJ are [ε/k_B (K), σ (Å)].
BinaryInteractions override the Lorentz-Berthelot mixing rule for a specific pair.

<species>.json

{
  "pseudoAtoms": [
    ["O_h2o", [0.000,  0.000, 0.0]],
    ["H_h2o", [0.757,  0.586, 0.0]],
    ["H_h2o", [-0.757, 0.586, 0.0]]
  ],
  "Connectivity": [[0,1],[0,2]],
  "Type": "rigid",
  "Bonds": [ [["O_h2o","H_h2o"], "HARMONIC", [450000.0, 0.9572]] ],
  "Bends": [ [["H_h2o","O_h2o","H_h2o"], "HARMONIC", [55000.0, 104.52]] ],
  "CriticalTemperature": 647.1,
  "CriticalPressure": 22064000.0,
  "AcentricFactor": 0.345
}
  • Bonds / Bends are optional for "Type": "rigid" molecules (LAMMPS SHAKE/RIGID placeholders are written with a warning).
  • Torsions follow the TRAPPE potential form: [c0, c1, c2, c3] in K.

Project structure

lammps_prep/
├── Cargo.toml           # Workspace root
├── pyproject.toml       # Python package configuration (maturin)
├── README.md
├── rust/
│   ├── Cargo.toml       # Rust crate (name = "lammps_prep")
│   └── src/
│       ├── lib.rs       # Library exports
│       ├── main.rs      # CLI entry point  (bin = "lammps_prep")
│       ├── cli.rs       # Subcommand parsing and dispatch
│       ├── ff.rs        # Force-field data structures
│       ├── lammps.rs    # LAMMPS file writers
│       ├── packmol.rs   # Packmol interface
│       └── python.rs    # PyO3 bindings (module = "lammps_prep._native")
└── python/
    └── lammps_prep/
        ├── __init__.py   # Package init (exports PairSetup)
        ├── pack.py       # packmol() and raspa() functions
        ├── density.py    # Density stubs (all raise NotImplementedError)
        ├── raspa_init.py # raspalib NVT MC helper
        └── _cli.py       # Console script entry point

Development

# Build Rust library, CLI binary, and Python extension in one step
maturin develop

# Run Rust tests
cd rust && cargo test

# Run Rust linter
cd rust && cargo clippy

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

lammps_prep-0.2.0-cp312-cp312-win_amd64.whl (366.9 kB view details)

Uploaded CPython 3.12Windows x86-64

lammps_prep-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (503.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

lammps_prep-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (436.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

lammps_prep-0.2.0-cp311-cp311-win_amd64.whl (369.7 kB view details)

Uploaded CPython 3.11Windows x86-64

lammps_prep-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (517.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

lammps_prep-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (445.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

lammps_prep-0.2.0-cp310-cp310-win_amd64.whl (369.4 kB view details)

Uploaded CPython 3.10Windows x86-64

lammps_prep-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (517.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

lammps_prep-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (445.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file lammps_prep-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: lammps_prep-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 366.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lammps_prep-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e8136eebb7c78d06985be98e8d53ed57db2d6429f592ee3e28053ef2bcb0a442
MD5 a943437735f9e2409fac147a0b901ba6
BLAKE2b-256 4bc6f6da5fd1affd8154dc2f7d0d2f470dd34c9d40ce9eb1caeabe9577781292

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on JelleLagerweij/ff_creation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lammps_prep-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd6a0acf52b63c496db350bb95af2facc3468c8e59e4c1bc4e3029fa2bce2ed0
MD5 ab60b1e6bdc828b2397561c9b0cc818f
BLAKE2b-256 e929d6ac229cdf088c8efc3b4a13435ae929fb146fe14342fd9fc8f82383aee9

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on JelleLagerweij/ff_creation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lammps_prep-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8755565c49f893e008fac6082fe26728f0b160df7442bb514af82968ac8aa921
MD5 1b853d8e0dcf0a62d6e356455c6d47d7
BLAKE2b-256 cb9dd49853fa055400c4533859b68b96992cc225206a730f62fa582a07c84014

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on JelleLagerweij/ff_creation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lammps_prep-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: lammps_prep-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 369.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lammps_prep-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5198e2b1b9a3d68086e147ed403810eee936aceaf65ef99897f28ac9deb42e51
MD5 b973f90c9ff8ee74d7d02de4725077dd
BLAKE2b-256 3aff3eb193c88acf99f5f1c6daab2222d48d37f296d90f98a326526a29058239

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.0-cp311-cp311-win_amd64.whl:

Publisher: release.yml on JelleLagerweij/ff_creation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lammps_prep-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6157e75ab0e49e04c8145c014970ac2f093931686a947097f80b9238a4dee9b5
MD5 2b973569053510d6753bf55886fc9957
BLAKE2b-256 55e4c1b1c05b28a0f42336378b09b2e366e039189c1ef0d60b5b9d9df1894e50

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on JelleLagerweij/ff_creation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lammps_prep-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c8d1fc6957d17b19ec23bf6cecf5da2de21951890ebe045c68a0368fc5058f97
MD5 f9945605c613a694f1277624b160bcda
BLAKE2b-256 4342b25b72d7d1d96165e3966c15c247c33fa8f0475788836a9322e8e3a07177

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on JelleLagerweij/ff_creation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lammps_prep-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: lammps_prep-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 369.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lammps_prep-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d222267771004085de9a0659de4d7f95518c0ba4336ee294feceb523e2ad8dfc
MD5 43f148eb9c147425309b7ee56d6f3fe3
BLAKE2b-256 76b7b9931ac446220a801f9c1530c565b3f2dc6af464b8b00b11d4414f64ffce

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.0-cp310-cp310-win_amd64.whl:

Publisher: release.yml on JelleLagerweij/ff_creation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lammps_prep-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 75dc9ead81714814fc11c5a73ab596089d388b01b23acd05647f772a7bb9058e
MD5 cf05e9750ee22f83579d9a49532aafc2
BLAKE2b-256 c7c2dff0b428e23326aadb11bfbcbeb968218cb072b4368dabb0fa2f8abaf5a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on JelleLagerweij/ff_creation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lammps_prep-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bae218be6cc4334b7950afbaac181904668c6ea57e183e7a2cb1af0ac3f6552f
MD5 6ab372f0ae51153d9280664d78fb2c22
BLAKE2b-256 536ce7d288cde41ef968482c2a6c7445b574fe63a126724117bc8bb478bd1c34

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on JelleLagerweij/ff_creation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page