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

Uploaded CPython 3.12Windows x86-64

lammps_prep-0.2.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (503.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

lammps_prep-0.2.7-cp312-cp312-macosx_11_0_arm64.whl (436.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

lammps_prep-0.2.7-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.7-cp311-cp311-macosx_11_0_arm64.whl (445.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

lammps_prep-0.2.7-cp310-cp310-win_amd64.whl (369.5 kB view details)

Uploaded CPython 3.10Windows x86-64

lammps_prep-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (517.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

lammps_prep-0.2.7-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.7-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: lammps_prep-0.2.7-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.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9255f2d96605f5df33d8d8b75839c7da4596e83fc0a5d8f7020bb2daa7d6c3b3
MD5 464b9549ae726753f80b38946f783168
BLAKE2b-256 3ba64ed7e922abc5f3ada8671a76a8d812c2b6ac43d11699dc386ff5c6a7fa64

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lammps_prep-0.2.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e091ee826211cc0b8fc29b7020ab82cb51221058972baa55842d81fe11a9cc52
MD5 02a7a9d39c926c2440b4520d0cce4fef
BLAKE2b-256 7d64f85527c3938070ba6a107db33762935665fc011e97ebc6c8ea19b34fcef7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lammps_prep-0.2.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 165520f91cd9205067984bd4a0cc1b4880f955661adeb7d2c053ed36c7465f0b
MD5 7c17c7b85af602e7230de15e1fe30c95
BLAKE2b-256 78b0fdd70dbe17e82057a184743d8beaf8185b07336693ea1caf5b187c94b9c3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lammps_prep-0.2.7-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.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4f975cfff6daa2eb9a6150202c5570363eaacd7c072ad0ba762432d3c7e89a54
MD5 de0cad82379c79a8799fd56d628fc61d
BLAKE2b-256 87b1d4562fd1d7c540f9437028494917609ca61384db6e8454652ef91880507e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lammps_prep-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 037c396d6aebd5f4d114d3c2a6e1aa12d93a2285f92721760a904ba260a9d36d
MD5 b01bc1497dce4b2d62d6273f7e9505aa
BLAKE2b-256 91f7ce36a7c90e4eef7b6cc24ef42d74aec8aa2e14780d7a5f4cf4890fb4dfbf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lammps_prep-0.2.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e9817ac2e55ad257082a92e8892e6106c40638640e1fc68164bcdb05b840ccd
MD5 4ffe75b0ad726e134ba253f9c17260de
BLAKE2b-256 35414830e7f6cb16ab21ca6c58077f65c6dc9c806165a07f622a5e8c583d9dd7

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lammps_prep-0.2.7-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 369.5 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.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 99c44a878807dfae3ffb0e6820210084f36e772cb98e935e71e28d59ba23b80d
MD5 1ca663b423134ce9b972b06733bcdf77
BLAKE2b-256 aceb57777882441c187e5e6fee75b878770c1d9fc1d617e1f6fdb4219dd4c21b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lammps_prep-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b96cd494058e4f685f011adab097b18c83b94b1a00c4d4d3e7d4bd3dcd9c4253
MD5 82eb04ffbce4a5029c1176e1048f9028
BLAKE2b-256 4d652333705efb95c79d7b0c37913d8a43bc224b3fdec5fd629b20a6570ad02b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lammps_prep-0.2.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5bff62b15afd38bfc619261cd80dc515e678ba478f3f68ba2349258891b24776
MD5 f75ec3572720d2de0f9f46cf5ca25a04
BLAKE2b-256 9c0c59c732ecfe6548b33bd3081561fea99c90683537ffa0c5f661190394150f

See more details on using hashes here.

Provenance

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