Skip to content

constraints

Pair-distance constraints for molecular dynamics.

import mlx_atomistic.constraints

class CompositeConstraints
def __init__(constraints: tuple[object, ...])

Apply multiple constraint objects through the standard constraint protocol.

Parameters

NameTypeDefaultDescription
constraintstuple[object, ...]

Methods

def apply_positions(positions, masses, cell: Cell | None = None) -> tuple[mx.array, mx.array]

Apply child position constraints in sequence.

Parameters

NameTypeDefaultDescription
positions
masses
cellCell | NoneNone

Returns

  • tuple[mx.array, mx.array]
def apply_velocities(positions, velocities, masses, cell: Cell | None = None) -> mx.array

Apply child velocity constraints in sequence.

Parameters

NameTypeDefaultDescription
positions
velocities
masses
cellCell | NoneNone

Returns

  • mx.array
def max_error(positions, cell: Cell | None = None) -> mx.array

Return the maximum absolute error across child constraints.

Parameters

NameTypeDefaultDescription
positions
cellCell | NoneNone

Returns

  • mx.array
class DistanceConstraints
def __init__(pairs: object, distances: object, tolerance: float = 1e-05, max_iterations: int = 20)

Fixed pair-distance constraints.

Parameters

NameTypeDefaultDescription
pairsobject
distancesobject
tolerancefloat1e-05
max_iterationsint20

Methods

def apply_positions(positions, masses, cell: Cell | None = None) -> tuple[mx.array, mx.array]

Project positions onto the configured pair distances.

Parameters

NameTypeDefaultDescription
positions
masses
cellCell | NoneNone

Returns

  • tuple[mx.array, mx.array]
def apply_velocities(positions, velocities, masses, cell: Cell | None = None) -> mx.array

Remove constrained relative velocity components.

Parameters

NameTypeDefaultDescription
positions
velocities
masses
cellCell | NoneNone

Returns

  • mx.array
def max_error(positions, cell: Cell | None = None) -> mx.array

Return the maximum absolute distance error.

Parameters

NameTypeDefaultDescription
positions
cellCell | NoneNone

Returns

  • mx.array
class SettleWaterConstraints
def __init__(waters: object, oh_distance: float = 1.0, hh_distance: float = 1.6329932, tolerance: float = 1e-05, max_velocity_iterations: int = 200)

Analytical rigid-water constraints for (oxygen, hydrogen, hydrogen) triplets.

Parameters

NameTypeDefaultDescription
watersobject
oh_distancefloat1.0
hh_distancefloat1.6329932
tolerancefloat1e-05
max_velocity_iterationsint200

Methods

def apply_positions(positions, masses, cell: Cell | None = None) -> tuple[mx.array, mx.array]

Project water triplets onto the configured rigid geometry.

Parameters

NameTypeDefaultDescription
positions
masses
cellCell | NoneNone

Returns

  • tuple[mx.array, mx.array]
def apply_velocities(positions, velocities, masses, cell: Cell | None = None) -> mx.array

Remove constrained relative velocity components for SETTLE pairs.

Parameters

NameTypeDefaultDescription
positions
velocities
masses
cellCell | NoneNone

Returns

  • mx.array
def max_error(positions, cell: Cell | None = None) -> mx.array

Return the maximum absolute SETTLE distance error.

Parameters

NameTypeDefaultDescription
positions
cellCell | NoneNone

Returns

  • mx.array