Skip to main content

Molten salt simulation package employing universal machine-learned interatomic potentials (uMLIPs)

Project description

Static Badge Coverage License

MoltenSaltCalc

A Python package for running and analyzing molecular dynamics (MD) simulations of molten salts using machine-learned interatomic potentials (MLIPs) within the Atomic Simulation Environment (ASE).

Authors

Daniel Isler, Lei Zhang, Max van Brenk, Süleyman Er

Features

  • System Construction: Construct molten salt systems with customizable compositions in ASE
  • MLIP Integration: Support for FAIRCHEM, MACE, and GRACE MLIPs (other universal MLIPs can also be added by the user)
  • Molecular Dynamics: Run NPT (constant pressure-temperature) and NVT (constant volume-temperature) simulations
  • Property Analysis: Compute thermodynamic and transport properties such as density, diffusion coefficients, viscosity, and heat capacity

Installation

Create a virtual environment and install the package with the desired MLIP backend. Each MLIP backend has separate and potentially conflicting dependencies. Therefore, only one backend should be installed per environment.

Tested on Python 3.10, 3.11, 3.12. Python 3.13+ is not yet supported due to upstream dependencies (e.g. tensorflow required by the GRACE (tensorpotential) uMLIP).

GRACE

python3 -m venv .venv        # Or any other name
source .venv/bin/activate   # Linux/macOS
# or
.venv\Scripts\activate      # Windows

pip install moltensaltcalc[grace]

FAIRCHEM

pip install moltensaltcalc[fairchem]

MACE

pip install moltensaltcalc[mace]

Development

If you want to contribute or make modifications to the code, clone the repo and install in edit mode. For further details, please check our contributing guidelines.

git clone https://github.com/leiapple/moltensaltcalc.git
cd moltensaltcalc
python3 -m venv .venv        # Or any other name
source .venv/bin/activate   # Linux/macOS
# or
.venv\Scripts\activate      # Windows
pip install -e .[dev,grace]  # Installs the selected MLIP backend and all development dependencies (pytest, etc.) in editable mode

Usage

Quick start

pip install moltensaltcalc[grace]
import numpy as np

from moltensaltcalc import MoltenSaltSimulator, MoltenSaltAnalyzer

np.random.seed(42)  # Ensure reproducibility (initial random placements)

sim = MoltenSaltSimulator(model_name="GRACE", model_parameters={"model_size": "small", "num_layers": 1, "model_task": "OAM"})
atoms = sim.build_system(
    salt_anion=["F", "Cl"],
    salt_cation=["Na"],
    anion_Natoms=[10, 5],  # 10 F atoms and 5 Cl atoms
    cation_Natoms=[15],  # 15 Na atoms
    density_guess=2.0,  # g/cm³
)
sim.run_npt_simulation(
    atoms,
    T=1100,  # K
    steps=1000,  # MD steps
    timestep_fs=1.0,  # fs
    traj_file="npt_simulation.traj",  # Trajectory file
)

analyzer = MoltenSaltAnalyzer(
    traj_files_npt=["npt_simulation.traj"],  # Trajectory file(s)
    temperatures_npt=[1100],  # K
)
density = analyzer.compute_eq_density(T=1100)  # 1.31 g/cm³
C = analyzer.compute_heat_capacity(T=1100, eq_fraction=0.2)  # 0.19 J/g/K

Demo

Run the example notebooks in the demo/ directory to explore:

  • system setup
  • running MD simulations
  • post-processing and analysis

Project Structure

moltensaltcalc/
├── moltensaltcalc/         # Source code
│   ├── __init__.py         # Package exports and available models
│   ├── simulator.py        # MoltenSaltSimulator class
│   ├── analyzer.py         # MoltenSaltAnalyzer class
│   ├── model_discovery.py  # Discovery of available MLIPs
│   ├── model_errors.py     # Error formatting
│   ├── registry.py         # Model registration
|   └── models/             # Model implementations
|       ├── __init__.py
|       ├── grace.py
|       ├── fairchem.py
|       └── mace.py
├── demo/
│   ├── simulator.ipynb     # Demo notebook for the simulator
│   ├── analyzer.ipynb      # Demo notebook for the analyzer
|   └── demo_simulation_results/ # Example trajectory used by the demo
├── tests/                  # PyTests
│   ├── __init__.py
│   ├── test_simulator.py
│   └── test_analyzer.py
├── pyproject.toml          # Build configuration
├── requirements_*.txt      # These files contain exact dependency snapshots used during testing for each MLIP backend.
├── .gitattributes
├── .gitignore              # Gitignore file: Python template + some custom rules at the end
├── .pre-commit-config.yaml # Pre-commit configuration
├── CITATION.cff            # Citation file
├── CONTRIBUTING.md         # Contributing guidelines
├── LICENSE                 # License file
└── README.md               # This file

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For questions, bug reports, or feature requests, please open an issue on GitHub.

Project details


Download files

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

Source Distribution

moltensaltcalc-0.1.0.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

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

moltensaltcalc-0.1.0-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

Details for the file moltensaltcalc-0.1.0.tar.gz.

File metadata

  • Download URL: moltensaltcalc-0.1.0.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for moltensaltcalc-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0c1de64bf0222fdfe237ea12ad12ddc4d9f88d09e42133cce6cbb75c566be526
MD5 0b8caec2555272a5d4d120d8ebaa4129
BLAKE2b-256 2b3be00d0b8c732f8ef5f0d7d1a13644b884ab5a93fed018229f0b7b617eef39

See more details on using hashes here.

File details

Details for the file moltensaltcalc-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: moltensaltcalc-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for moltensaltcalc-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d70dc3a22059628c2c960d2127fcab0bfe875f6ff27a0b0064ce24fd25f751ea
MD5 aa4f8d03c4ad04c7e101e1e954c2521d
BLAKE2b-256 3bd3bebf763163d286902020e575ed148fe6a9eb1ef8ea07205ecab689d403f2

See more details on using hashes here.

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