Configuration and normalized models¶
vcsmd.config contains the unit-aware domain objects used to construct a
simulation. prepare converts them into immutable normalized objects for the
solver. Native JSON, YAML, and TOML files are parsed into these same objects by
the functions in the I/O reference.
Unit-aware configuration¶
- class vcsmd.Structure(cell, fractional_positions, masses, species)¶
Bases:
objectCell columns and fractional particle positions; masses are per particle.
- Parameters:
cell (Quantity)
fractional_positions (ndarray)
masses (Quantity)
species (tuple[str, ...])
- cell: Quantity¶
- fractional_positions: ndarray¶
- masses: Quantity¶
- species: tuple[str, ...]¶
- class vcsmd.LennardJones(sigma=<factory>, epsilon=<factory>)¶
Bases:
objectOne global Lennard–Jones interaction with dimensional sigma and epsilon.
All particles share these parameters; species labels do not select separate interactions. Use
original_argon()for the source’s numeric preset.- Parameters:
sigma (Quantity)
epsilon (Quantity)
- sigma: Quantity¶
- epsilon: Quantity¶
- classmethod original_argon()¶
The numerical parameter choices of the original active force model.
- Return type:
All particles use one global Lennard–Jones parameter pair; species labels do
not select separate interactions or mixing rules.
- class vcsmd.SimulationConfig(structure, mode, timestep, steps, cutoff, image_range, temperature=<factory>, external_pressure=<factory>, cell_inertia=None, potential=<factory>, temperature_control=<factory>, initialization=InitializationMode.THERMAL, fractional_velocities=None, cell_velocity=None, seed=119, output_interval=1, title='VCSMD simulation')¶
Bases:
objectUser-facing inputs for a complete run, independent of file format.
Dimensional fields are Pint quantities and categorical fields are enums.
preparevalidates and normalizes these inputs into aNumericalModelandInitialConditions. Step count, output cadence, title, and seed are application settings; they are not hidden mutable state of the solver.- Parameters:
structure (Structure)
mode (SimulationMode)
timestep (Quantity)
steps (int)
cutoff (Quantity)
image_range (tuple[int, int, int])
temperature (Quantity)
external_pressure (Quantity)
cell_inertia (Quantity | None)
potential (LennardJones)
temperature_control (TemperatureControl)
initialization (InitializationMode)
fractional_velocities (Quantity | None)
cell_velocity (Quantity | None)
seed (int)
output_interval (int)
title (str)
- mode: SimulationMode¶
- timestep: Quantity¶
- steps: int¶
- cutoff: Quantity¶
- image_range: tuple[int, int, int]¶
- temperature: Quantity¶
- external_pressure: Quantity¶
- cell_inertia: Quantity | None = None¶
- potential: LennardJones¶
- temperature_control: TemperatureControl¶
- initialization: InitializationMode = 'thermal'¶
- fractional_velocities: Quantity | None = None¶
- cell_velocity: Quantity | None = None¶
- seed: int = 119¶
- output_interval: int = 1¶
- title: str = 'VCSMD simulation'¶
- vcsmd.prepare(config)¶
Normalize quantities into an explicit immutable numerical model and state input.
- Parameters:
config (SimulationConfig)
- Return type:
tuple[NumericalModel, InitialConditions]
Enums and controller settings¶
These definitions are also re-exported from vcsmd:
- class vcsmd.SimulationMode(*values)¶
Bases:
Enum- FIXED_DYNAMICS = 'fixed-dyn'¶
- FIXED_MINIMIZATION = 'fixed-min'¶
- CELL_DYNAMICS = 'cell-dyn'¶
- CELL_MINIMIZATION = 'cell-min'¶
- METRIC_DYNAMICS = 'metric-dyn'¶
- METRIC_MINIMIZATION = 'metric-min'¶
- STRAIN_DYNAMICS = 'strain-dyn'¶
- STRAIN_MINIMIZATION = 'strain-min'¶
- property variable_cell: bool¶
- property minimizes: bool¶
- property metric_cell: bool¶
- property strain_cell: bool¶
- class vcsmd.EventKind(*values)¶
Bases:
Enum- TEMPERATURE_RESCALED = 'temperature-rescaled'¶
- VELOCITIES_QUENCHED = 'velocities-quenched'¶
- class vcsmd.TemperatureControl(interval: int = 100, max_rescales: int = 0, relative_tolerance: float = 0.01)¶
Bases:
object- Parameters:
interval (int)
max_rescales (int)
relative_tolerance (float)
- interval: int = 100¶
- max_rescales: int = 0¶
- relative_tolerance: float = 0.01¶
Variable-cell modes require cell_inertia. Ordinary cell modes use mass units;
modified-metric and reference-strain modes use mass/length⁴. Provided particle
velocities must satisfy the zero mass-weighted center-of-mass constraint.
Normalized model inputs¶
These immutable types are the advanced numerical boundary returned by
prepare. Their arrays use internal units and are read-only.
- class vcsmd.NumericalModel(mode: vcsmd.models.SimulationMode, masses: NDArray[numpy.float64], species: tuple[str, ...], timestep: float, cutoff: float, image_range: tuple[int, int, int], sigma: float, epsilon: float, external_pressure: float, cell_inertia: float, temperature: float, boltzmann_constant: float, temperature_control: vcsmd.models.TemperatureControl = <factory>)¶
Bases:
object- Parameters:
mode (SimulationMode)
masses (NDArray[float64])
species (tuple[str, ...])
timestep (float)
cutoff (float)
image_range (tuple[int, int, int])
sigma (float)
epsilon (float)
external_pressure (float)
cell_inertia (float)
temperature (float)
boltzmann_constant (float)
temperature_control (TemperatureControl)
- mode: SimulationMode¶
- masses: NDArray[float64]¶
- species: tuple[str, ...]¶
- timestep: float¶
- cutoff: float¶
- image_range: tuple[int, int, int]¶
- sigma: float¶
- epsilon: float¶
- external_pressure: float¶
- cell_inertia: float¶
- temperature: float¶
- boltzmann_constant: float¶
- temperature_control: TemperatureControl¶
- class vcsmd.InitialConditions(cell: NDArray[numpy.float64], fractional_positions: NDArray[numpy.float64], mode: vcsmd.models.InitializationMode = <InitializationMode.THERMAL: 'thermal'>, fractional_velocities: NDArray[numpy.float64] | None = None, cell_velocity: NDArray[numpy.float64] | None = None)¶
Bases:
object- Parameters:
cell (NDArray[float64])
fractional_positions (NDArray[float64])
mode (InitializationMode)
fractional_velocities (NDArray[float64] | None)
cell_velocity (NDArray[float64] | None)
- cell: NDArray[float64]¶
- fractional_positions: NDArray[float64]¶
- mode: InitializationMode = 'thermal'¶
- fractional_velocities: NDArray[float64] | None = None¶
- cell_velocity: NDArray[float64] | None = None¶