kups.application.relaxation.simulation
¶
Relaxation propagator construction and simulation runner.
IsRelaxGradients
¶
Bases: Protocol
Protocol for gradient containers returned by relaxation potentials.
Source code in src/kups/application/relaxation/simulation.py
IsRelaxState
¶
Bases: Protocol
Protocol for relaxation simulation states.
Source code in src/kups/application/relaxation/simulation.py
OptInit
¶
Bases: Protocol
Protocol for initialising an Optax optimizer state from gradients.
Source code in src/kups/application/relaxation/simulation.py
make_relax_propagator(state_lens, potential, optimizer, optimize_unitcell=False)
¶
Build a relaxation propagator with step counting and error recovery.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
state_lens
|
Lens[State, State]
|
Lens focusing on the relaxation sub-state. |
required |
potential
|
Potential[State, Gradients, EmptyType, Any]
|
Potential whose gradients drive the optimisation. |
required |
optimizer
|
GradientTransformationExtraArgs
|
Optax gradient transformation (e.g. FIRE, Adam, L-BFGS). |
required |
optimize_unitcell
|
bool
|
If True, optimise both positions and lattice vectors; otherwise optimise positions only. |
False
|
Returns:
| Type | Description |
|---|---|
Propagator[State]
|
Tuple of |
OptInit
|
optimisation step and opt_init initialises the Optax optimizer state. |
Source code in src/kups/application/relaxation/simulation.py
run_relax(key, propagator, state, config)
¶
Run structure relaxation with early stopping on force convergence.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key
|
Array
|
JAX PRNG key. |
required |
propagator
|
Propagator[State]
|
Relaxation propagator from |
required |
state
|
State
|
Initial simulation state. |
required |
config
|
RelaxRunConfig
|
Run configuration (max_steps, force_tolerance, out_file). |
required |
Returns:
| Type | Description |
|---|---|
State
|
Final relaxation state after convergence or |