## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Examples

We provide five examples of material models, each with its own implementation.

## Example metal plasticity

The metal material model is designed to capture the elastic-plastic behavior of metallic materials. This model is well-suited for simulating materials such as steel, aluminium, and other common metallic alloys.

##### Command structure

    *MAT_USER_1
    "IMPETUS example user material"
    mid, rho, E, nu, did, tid, eosid
    idlc, epsf

##### Source code

- `user-material/kernel_mat_metal.cu`
- `user-material/kernel_mat_metal.h`
- `user-material/mat_metal.cpp`
- `user-material/mat_metal.h`

## Example concrete compaction and damage

The concrete material model is a simplified version of the Holmquist-Johnson-Cook concrete model. The model includes a pressure dependent yield surface and inelastic compaction of the material.

##### Command structure

    *MAT_USER_2
    "IMPETUS example user material"
    mid, rho, G
    A, B, n, f_c, T, epsf_min, p_c, p_l
    epsv_c_l, D1, D2, K

##### Source code

- `user-material/kernel_mat_concrete.cu`
- `user-material/kernel_mat_concrete.h`
- `user-material/mat_concrete.cpp`
- `user-material/mat_concrete.h`

## Example Mooney-Rivlin rubber

The rubber material model is a hyperelastic implementation that describes the non-linear elastic behavior of rubber-like materials. This is essentially the classical Mooney-Rivlin model.

##### Command structure

    *MAT_USER_3
    "IMPETUS example user material"
    mid, rho, bulk
    C1, C2

##### Source code

- `user-material/kernel_mat_rubber.cu`
- `user-material/kernel_mat_rubber.h`
- `user-material/mat_rubber.cpp`
- `user-material/mat_rubber.h`

## Example orthotropic composite

The orthotropic material model is specialised for materials that have different properties in three mutually perpendicular directions. It can be used for composite materials like wood and laminated composites, where directional dependency of mechanical properties is significant.

##### Command structure

    *MAT_USER_4
    "IMPETUS example user material"
    mid, rho
    E1, E2, G12, pr12, pr23
    c, cdec, Xt, Xc, Yt, Yc, beta, S
    erode, residual

##### Source code

- `user-material/kernel_mat_orthotropic.cu`
- `user-material/kernel_mat_orthotropic.h`
- `user-material/mat_orthotropic.cpp`
- `user-material/mat_orthotropic.h`

## Example glass damage

The Glass material model simulates brittle fracture behavior using a flaw-based failure criterion. It accounts for crack propagation and progressive damage accumulation based on stress-induced flaw growth.

It implements a continuum damage mechanics approach where micro-crack density evolves with loading. The model tracks internal state variables including crack density, flaw size, and orientation to predict failure. Key features include:

- Pressure-dependent yield surface
- Progressive stiffness degradation
- Flaw-based fracture criterion
- Anisotropic damage evolution
- Optional temperature effects

##### Command structure

    *MAT_USER_5
    "IMPETUS example user material"
    mid, rho, E, nu, did, tid, eosid
    c, cdec, stress_c, k_c, t_c, a_c
    flaw_dim, surface_t1, surface_t2, surface_t3
    surface_b1, surface_b2, surface_b3

##### Source code

- `user-material/mat_glass.cpp`
- `user-material/mat_glass.h`

> Note: The glass material currently has a CPU implementation only. The GPU interface functions are present, but no CUDA kernel files are provided.