Thermostat Parameters

SPONGE 2.0 documentation: Thermostat Parameters.

Organized by GPT-6-Astra. SPONGE 2.0 is under active, iterative development; features, parameters, and documentation may change. Consult the GitHub repository’s docs and skills for the latest version information.

Source snapshot for this page.

Thermostat Parameters

SPONGE requires a thermostat in nvt and npt modes.

For TOML input, prefer the grouped form:

mode = "nvt"
target_temperature = 300.0

[thermostat]
mode = "middle_langevin"
tau = 0.1
seed = 2026

The parser also accepts the flat compatibility keys thermostat, thermostat_tau, and thermostat_seed, but new documentation should use the grouped TOML form above.

Thermostat Selection

ParameterScopeTypeDefaultDescription
modethermostatstringrequired for NVT/NPTThermostat algorithm

Supported values:

ValueDescription
"middle_langevin"Middle Langevin dynamics
"langevin"Deprecated alias of middle_langevin
"andersen"Andersen thermostat
"berendsen_thermostat"Berendsen thermostat
"bussi_thermostat"Bussi velocity-rescaling thermostat
"nose_hoover_chain"Nose-Hoover chain thermostat

Top-level Parameters

ParameterScopeTypeDefaultDescription
target_temperaturetop-levelfloat300.0Target temperature (K)
velocity_maxtop-levelfloatdisabledVelocity cap used by some thermostats

target_temperature is not part of [thermostat]. It stays at the top level and is also the quantity affected by temperature schedules.

Common Thermostat Parameters

ParameterScopeTypeDefaultDescription
tauthermostatfloat1.0Coupling time constant in ps
seedthermostatintrandomRandom seed for stochastic thermostats

Notes:

  • seed is used by middle_langevin, andersen, and bussi_thermostat
  • berendsen_thermostat and nose_hoover_chain do not read seed
  • middle_langevin converts tau internally to a friction coefficient gamma = 1 / tau
  • andersen converts tau to an internal collision update interval

Algorithm-specific Parameters

middle_langevin

[thermostat]
mode = "middle_langevin"
tau = 0.1
seed = 2026

Uses tau and seed in the thermostat scope, plus the top-level velocity_max.

andersen

[thermostat]
mode = "andersen"
tau = 0.1
seed = 2026

Uses tau and seed in the thermostat scope, plus the top-level velocity_max.

berendsen_thermostat

[thermostat]
mode = "berendsen_thermostat"
tau = 0.1

Uses only tau in the thermostat scope.

bussi_thermostat

[thermostat]
mode = "bussi_thermostat"
tau = 0.1
seed = 2026

Uses tau and seed in the thermostat scope. New H5 checkpoints store the Bussi random stream as typed portable Philox state; scalar standard-library engine text is accepted only when reading older checkpoints.

nose_hoover_chain

[thermostat]
mode = "nose_hoover_chain"
tau = 0.2

[nose_hoover_chain]
length = 3
restart_input = "nhc_restart.in"
restart_output = "nhc_restart.out"
crd = "nhc_crd.dat"
vel = "nhc_vel.dat"

Additional parameters:

ParameterScopeTypeDefaultDescription
lengthnose_hoover_chainint1Chain length
restart_inputnose_hoover_chainstring-Read initial chain state from file
restart_outputnose_hoover_chainstring-Write chain state to file
crdnose_hoover_chainstring-Write chain coordinate trajectory
velnose_hoover_chainstring-Write chain velocity trajectory

nose_hoover_chain also reads the top-level velocity_max.

Temperature Schedule

Temperature schedules are controlled by top-level keys, not by [thermostat]:

ParameterTypeDescription
target_temperature_schedule_modestring"step" or "linear"
target_temperature_schedule_stepsarrayInline schedule: [{ step = N, value = T }, ...]
target_temperature_schedule_filestringPath to a TOML schedule file

Inline target_temperature_schedule_steps only works when the main mdin file is TOML.

target_temperature = 300.0
target_temperature_schedule_mode = "linear"
target_temperature_schedule_steps = [
    { step = 0, value = 100.0 },
    { step = 10000, value = 300.0 },
    { step = 50000, value = 300.0 },
]