jaxdem.utils.jamming#

Jamming routines. https://doi.org/10.1103/PhysRevE.68.011306.

Functions

bisection_jam(state, system[, ...])

Find the nearest jammed state for a given state and system.

jaxdem.utils.jamming.bisection_jam(state: State, system: System, n_minimization_steps: int = 1000000, pe_tol: float = 1e-16, pe_diff_tol: float = 1e-16, n_jamming_steps: int = 10000, packing_fraction_tolerance: float = 1e-10, packing_fraction_increment: float = 0.001) tuple[State, System, jax.Array, jax.Array][source]#

Find the nearest jammed state for a given state and system. Uses bisection search with state reversion.

Parameters:
  • state (State) – The state to jam.

  • system (System) – The system to jam.

  • n_minimization_steps (int, optional) – The number of steps to take in the minimization. Should be large. Typically 1e6.

  • pe_tol (float, optional) – The tolerance for the potential energy. Should be very small. Typically 1e-16.

  • pe_diff_tol (float, optional) – The tolerance for the difference in potential energy across subsequent steps. Should be very small. Typically 1e-16.

  • n_jamming_steps (int, optional) – The number of steps in the jamming loop. Typically 1e3.

  • packing_fraction_tolerance (float, optional) – The tolerance for the packing fraction to determine convergence. Typically 1e-10

  • packing_fraction_increment (float, optional) – The initial increment for the packing fraction. Typically 1e-3. Larger increments make it faster in the unjammed region, but makes minimization of the earliest detected jammed states take much longer.

Returns:

The jammed state/system plus final packing fraction and potential energy.

Return type:

Tuple[State, System, jax.Array, jax.Array]