Skip to content

Materials

Material models describe how the stress in a material depends on its deformation. In a general sense, we can formulate this for an isothermal material abstractly as

\[ \mathbf{P} = \mathcal{F}(\mathbf{F}, \pmb{\alpha}) \]

with a function \(\mathcal{F}\) that maps a deformation gradient \(\mathbf{F}\) and material state vector \(\pmb{\alpha}\) to a stress.

In general, this relation is non-linear and often path-dependent. To solve the global equilibrium equations, the material model must be implemented incrementally. Instead of a total mapping, we evaluate the material response over a discrete load step from time \(t_n\) to \(t_{n+1}\).

The material model is responsible for advancing the material state. Given the state at the beginning of the step (\(\mathbf{F}_n,\mathbf{P}_n, \pmb{\alpha}_n\)) and an increment of deformation \(\Delta \mathbf{H}\), the model must determine the new stress and updated internal variables (\(\mathbf{P}_{n+1}, \pmb{\alpha}_{n+1}\)). In addition, it must provide an algorithmic tangent stiffness $$ \mathbb{C}_{n+1} = \frac{\partial \Delta \pmb{\sigma}}{\partial \Delta \mathbf{H}} $$ for convergence speed of the underlying incremental Newton-Raphson solver. In torch-fem, this logic is encapsulated in the step() method of each material inherited from the abstract Material base class:

torchfem.materials.Material.step(H_inc, F, stress, state, de0, cl, iter) abstractmethod

Performs an incremental step of the material model.

This function has to update the stress, internal state, and algorithmic tangent stiffness.

Parameters:

  • H_inc (Tensor) –

    Incremental displacement gradient \(\Delta \mathbf{H}\). Shape: (..., d, d).

  • F (Tensor) –

    Current deformation gradient \(\mathbf{F}_n\). Shape: (..., d, d).

  • stress (Tensor) –

    Current stress tensor \(\pmb{\sigma}_n\) or \(\mathbf{P}_n\). Shape: (..., d, d).

  • state (Tensor) –

    Internal state variables \(\pmb{\alpha}_n\). Shape: (..., <number of state variables>).

  • de0 (Tensor) –

    External strain increment (e.g., thermal). Shape: (..., d, d).

  • cl (Tensor) –

    Characteristic lengths for regularization. Shape: (..., 1).

  • iter (int) –

    Current iteration number.

Returns:

  • stress_new ( Tensor ) –

    Updated stress tensor \(\pmb{\sigma}_{n+1}\) or \(\mathbf{P}_{n+1}\). Shape: (..., d, d).

  • state_new ( Tensor ) –

    Updated internal state \(\pmb{\alpha}_{n+1}\). Shape: (..., n_state)

  • ddsdde ( Tensor ) –

    Algorithmic tangent stiffness tensor \(\frac{\partial \Delta \pmb{\sigma}}{\partial \Delta \mathbf{H}}\). Shape: (..., d, d, d, d).