jaxdem.bonded_forces.plastic_deformable_particle#
Implementation of the plastic deformable particle model.
Classes
|
Deformable particle model with per-edge plasticity. |
- class jaxdem.bonded_forces.plastic_deformable_particle.PlasticDeformableParticleModel(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:
DeformableParticleModelDeformable particle model with per-edge plasticity.
Elastic forces, topology, reference configuration, and coefficient broadcasting match
DeformableParticleModel. See its docstring for the full energy definition and shape conventions. The only difference is the plastic update rule.Plasticity:
Each force calculation integrates a spring-dashpot equation for the reference length of each edge:
\[L_{e,0}(t+dt) = L_{e,0}(t) + \frac{1}{\tau_{s,e}} (L_e(t) - L_{e,0}(t)) dt\]where \(L_{e,0}\) is the initial (reference) edge length (
initial_edge_lengths), \(L_e\) is the current edge length, \(\tau_{s,e}\) is the relaxation time (tau_s), and \(dt\) is the simulation time step.Shapes (see
DeformableParticleModelfor definitions of K, M, E, A):tau_s:(E,)— one relaxation time per edge.
- tau_s: Array | None#
(E,).
- Type:
Plastic relaxation time for each edge. 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 edge length toward the current edge length.