jaxdem.bonded_forces.plastic_bending_deformable_particle#

Implementation of the deformable particle model with plastic bending angles.

Classes

PlasticBendingDeformableParticleModel(...[, ...])

Deformable particle model with plastic bending angles.

class jaxdem.bonded_forces.plastic_bending_deformable_particle.PlasticBendingDeformableParticleModel(elements: Array | None, edges: Array | None, element_adjacency: Array | None, element_adjacency_edges: Array | None, elements_id: Array | None, initial_body_contents: Array | None, initial_element_measures: Array | None, initial_edge_lengths: Array | None, initial_bendings: Array | None, w_b: Array | None, em: Array | None, ec: Array | None, eb: Array | None, el: Array | None, gamma: Array | None, tau_s: Array | None = None)#

Bases: DeformableParticleModel

Deformable particle model with plastic bending angles.

Elastic forces are identical to DeformableParticleModel (individual edge springs, measure, content, bending, and surface-tension terms are all preserved; see its docstring for the full energy definition and shape conventions). The only difference is in the plastic update rule for the reference bending angles.

Instead of relaxing each edge rest length (as in PlasticDeformableParticleModel), the reference bending angle of each adjacency relaxes toward the current bending angle:

\[\theta_{a,0}(t+dt) = \theta_{a,0}(t) + \frac{1}{\tau_{s,a}} (\theta_a(t) - \theta_{a,0}(t))\,dt\]

where \(\theta_{a,0}\) is the reference (rest) bending angle (initial_bendings), \(\theta_a\) is the current bending angle, \(\tau_{s,a}\) is the relaxation time (tau_s), and \(dt\) is the simulation time step.

Shapes (see DeformableParticleModel for definitions of K, M, E, A):

  • tau_s: (A,) — one relaxation time per adjacency (bending hinge).

tau_s: Array | None#

(A,).

Type:

Plastic relaxation time for each adjacency (bending hinge). Shape

classmethod Create(*, vertices: Array | ndarray | bool | number | bool | int | float | complex | None = None, elements: Array | ndarray | bool | number | bool | int | float | complex | None = None, edges: Array | ndarray | bool | number | bool | int | float | complex | None = None, element_adjacency: Array | ndarray | bool | number | bool | int | float | complex | None = None, element_adjacency_edges: Array | ndarray | bool | number | bool | int | float | complex | None = None, elements_id: Array | ndarray | bool | number | bool | int | float | complex | None = None, initial_body_contents: Array | ndarray | bool | number | bool | int | float | complex | None = None, initial_element_measures: Array | ndarray | bool | number | bool | int | float | complex | None = None, initial_edge_lengths: Array | ndarray | bool | number | bool | int | float | complex | None = None, initial_bendings: Array | ndarray | bool | number | bool | int | float | complex | None = None, em: Array | ndarray | bool | number | bool | int | float | complex | None = None, ec: Array | ndarray | bool | number | bool | int | float | complex | None = None, eb: Array | ndarray | bool | number | bool | int | float | complex | None = None, el: Array | ndarray | bool | number | bool | int | float | complex | None = None, gamma: Array | ndarray | bool | number | bool | int | float | complex | None = None, tau_s: Array | ndarray | bool | number | bool | int | float | complex | None = None, w_b: Array | ndarray | bool | number | bool | int | float | complex | None = None) Self[source]#
update_reference_state(pos: jax.Array, state: State, system: System) DeformableParticleModel[source]#

Relax each reference bending angle toward the current bending angle.