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! — MethodFerriteAssembly.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.
FerriteAssembly.element_residual! — MethodFerriteAssembly.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
FerriteAssembly.create_cell_state — MethodFerriteAssembly.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.
FerriteAssembly.allocate_cell_cache — MethodFerriteAssembly.allocate_cell_cache(m::MMB.AbstractMaterial, ::Any)Create the material cache defined by the MMB.allocate_material_cache(m) function.