MaterialModelsBase

For constitutive mechanical behavior following the MaterialModelsBase.jl interface, element_routine!, element_residual!, create_cell_state, and allocate_cell_cache are implemented in FerriteAssembly.jl.

FerriteAssembly.element_routine!Method
FerriteAssembly.element_routine!(
    Ke, re, state::Vector{<:MMB.AbstractMaterialState}, ae, 
    m::MMB.AbstractMaterial, cv::AbstractCellValues, buffer)

Solve the weak form

\[ \int_\Omega [\boldsymbol{\delta u}\otimes\nabla]^\mathrm{sym} : \boldsymbol{\sigma}\ \mathrm{d}\Omega = \int_\Gamma \boldsymbol{\delta u} \cdot \boldsymbol{t}\ \mathrm{d}\Gamma + \int_\Omega \boldsymbol{\delta u} \cdot \boldsymbol{b}\ \mathrm{d}\Omega\]

where $\sigma$ is calculated with the material_response function from MaterialModelsBase.jl. Note that create_cell_state is already implemented for <:AbstractMaterial.

source
FerriteAssembly.element_residual!Method
FerriteAssembly.element_residual!(
    re, state::Vector{<:MMB.AbstractMaterialState}, ae, 
    m::MMB.AbstractMaterial, cv::AbstractCellValues, buffer)

The element_residual! implementation corresponding to the element_routine! implementation for a MaterialModelsBase.AbstractMaterial

source
FerriteAssembly.create_cell_stateMethod
FerriteAssembly.create_cell_state(m::MMB.AbstractMaterial, cv::AbstractCellValues, args...)

Create a Vector{<:MMM.AbstractMaterialState} where each element is the output from MMB.initial_material_state(m) and the length is the number of quadrature points in cv.

source