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.8-cp312-cp312-win_amd64.whl (386.5 kB view details)

Uploaded CPython 3.12Windows x86-64

lammps_prep-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (522.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

lammps_prep-0.2.8-cp312-cp312-macosx_11_0_arm64.whl (455.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

lammps_prep-0.2.8-cp311-cp311-win_amd64.whl (389.2 kB view details)

Uploaded CPython 3.11Windows x86-64

lammps_prep-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (537.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

lammps_prep-0.2.8-cp311-cp311-macosx_11_0_arm64.whl (461.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

lammps_prep-0.2.8-cp310-cp310-win_amd64.whl (389.1 kB view details)

Uploaded CPython 3.10Windows x86-64

lammps_prep-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (537.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

lammps_prep-0.2.8-cp310-cp310-macosx_11_0_arm64.whl (461.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: lammps_prep-0.2.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 386.5 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.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 33afe22b6d65c1c6501e23986bf9ad33b23576d93e8b60264c5ed0a72df457af
MD5 5434e6b2abf4a1492923682afa137235
BLAKE2b-256 90f1c6e48e316524f5a82cc75c187627a18e6c9a3676f2cb4162cf051cead2c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.8-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.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a3064e5854ac9a222d593fb063aef84cb88c5ae0815a10a908e27a0554120bfd
MD5 fb8bdf2f2ff1adaf6046a93115bf878e
BLAKE2b-256 eb7116d3d5c9d9eadf08af67982707ddbd59d3029a75e120a5351c7522afc3f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.8-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.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 216f490a205ed27d042412b7b9cce43885bea9acf353853f3741bdefcae6bc32
MD5 8dc4993cb3d67963b0d2b3342a55c7ec
BLAKE2b-256 d6a9c55c4f4af2ee2136cdc08cbb372364bfff0a54a6cebd702c7c3153569cb1

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.8-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.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: lammps_prep-0.2.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 389.2 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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e75c4c061ac556cbf0ffa7741113b58520aec2542dcd21eaaa88e31e46c789f3
MD5 9c0d3921916c822cba9da3bef3e41c59
BLAKE2b-256 1c4d9729bdcde577769d3abc0d683e4b966cd214447ec537ec59c9c36cecb072

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.8-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.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f9ac946167a86d7dccff2054d56c79554c48bc7bbb4d7769bc99588284a6c379
MD5 dee6c32c62d6b1023866f139160d9959
BLAKE2b-256 b701203a5b2c10aee8a4d85105d4b1e2c3dafdabc1b126886f8108a3ec3ab9a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.8-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.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c546759e78a5dd474ae9d08e68430321ba3e8c2175ab28318a2e7c6d01196af
MD5 4695340f092f3456d9d78456af6759a6
BLAKE2b-256 e272508406e4cc333725a8558aaa43d418547fa0e30f912bdcf6646543c06622

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.8-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.8-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: lammps_prep-0.2.8-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 389.1 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.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1acb691692ed8d403ea39fce79e84519294065cbb37410c255dd535fdc9ba66d
MD5 66c31ee08575678d6f503c2760369d9a
BLAKE2b-256 831c222bf932d77164f0f32cfcf55288f4ecf3ce8e15a69e100a1e6a8ee526ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.8-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.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6db23b0ec5eaa3dc0047ee9b3d99b12627ab615a85e18f08505111c1f0b340c5
MD5 a0fbb5ee911385b4a7f926c00cb2e9a5
BLAKE2b-256 24697ab94908a2144f495edaccd930346b93073c23bcd2633d032dc9f5ef0f1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.8-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.8-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lammps_prep-0.2.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 940e990ce0ac8a606e0cf8c1f7d3c725f99a0e22f9bfa770a26edeb22ad536e0
MD5 f93063e9c60842c37badcc1a07e786c1
BLAKE2b-256 66811018ae27bd10d61df40161f4cdbc5b36e829e06b29dc7e7b86ecbe14c4e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for lammps_prep-0.2.8-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