Material Models
Type Hierarchy
Sentinel.AbstractMaterialModel Type
AbstractMaterialModelAbstract supertype for all MRE material constitutive models. Concrete subtypes drive dispatch for element integration, adjoint gradient computation, and optimization routines.
sourceSentinel.IsotropicIncompressible Type
IsotropicIncompressible <: AbstractMaterialModelRayleigh-damped viscoelastic isotropic incompressible material. Corresponds to Fortran mtrlmodel = 1.
The property list is consumed positionally; three layouts are accepted:
3 properties (standard runfile layout): prop 1 = complex shear modulus μ*
Pa, prop 2 = density (the element kernels do not read this slot –- density arrives via the assembly-levelρargument), prop 3 = complex bulk modulus κ*Pa2 properties: prop 1 = μ_, prop 2 = κ_
1 property: prop 1 = μ* (κ* defaults to 1e9 Pa)
Uses a mixed pressure-displacement formulation with elemental pressures.
sourceSentinel.IsotropicCompressible Type
IsotropicCompressible <: AbstractMaterialModelRayleigh-damped isotropic compressible viscoelastic material. Corresponds to Fortran mtrlmodel = 3.
The property list is consumed positionally; two layouts are accepted:
3 properties (standard runfile layout): prop 1 = complex shear modulus μ*
Pa, prop 2 = density (the element kernels do not read this slot –- density arrives via the assembly-levelρargument), prop 3 = complex Lamé parameter λ*Pa(converted internally to bulk modulus κ = λ + 2μ/3)2 properties: prop 1 = μ_, prop 2 = complex bulk modulus κ_
Pa(used directly)
Supports both hex27 and tet4 elements.
sourceSentinel.Orthotropic Type
Orthotropic <: AbstractMaterialModelRayleigh-damped orthotropic viscoelastic material. Corresponds to Fortran mtrlmodel = 2.
Nine properties: the complex entries of the 6×6 orthotropic stiffness matrix in Voigt notation, in the order
11, 22, 33, 12, 13, 23, 44, 55, 66
Requires fiber direction field for principal axis definition.
sourceSentinel.Poroelastic Type
Poroelastic <: AbstractMaterialModelPoroelastic material with fluid pressure as an additional nodal DOF. Corresponds to Fortran mtrlmodel = 4.
Material properties:
Solid frame elastic properties
Fluid viscosity η
Permeability κ
Porosity φ
DOF layout: [u_x(1..nn), u_y(1..nn), u_z(1..nn), p(1..nn)] Fixed extra properties: ρ_p (solid density), ρ_a (added mass), ρ_f (fluid density)
sourceSentinel.TransverseIsotropicV1 Type
TransverseIsotropicV1 <: AbstractMaterialModelTransverse isotropic viscoelastic material, formulation 1 (absolute moduli). Corresponds to Fortran mtrlmodel = 5.
Properties (positional):
prop 1: complex shear modulus in the transverse (isotropic) plane
Paprop 2: complex shear modulus in the fiber-aligned shear planes
Paprop 3: complex tensile modulus along the fiber axis
Paprop 4 (optional): complex bulk modulus κ*
Pa(defaults to 1e9)
Requires fiber direction field (DTI-derived) for symmetry axis. Uses same assembly kernel as TransverseIsotropicV2 and GeneralizedAnisotropic.
Sentinel.TransverseIsotropicV2 Type
TransverseIsotropicV2 <: AbstractMaterialModelTransverse isotropic viscoelastic material, formulation 2 (relative anisotropy ratios). Corresponds to Fortran mtrlmodel = 6.
Properties (positional):
prop 1: complex substrate (base) shear modulus μ
Pa–- the transverse-plane shear modulusprop 2: shear anisotropy ratio φ (complex, dimensionless); the fiber-plane shear modulus is μ(1 + φ)
prop 3: tensile anisotropy ratio ζ (complex, dimensionless); scales the tensile (normal-stress) terms
prop 4 (optional): complex bulk modulus κ*
Pa(defaults to 1e9)
Requires fiber direction field (DTI-derived) for symmetry axis. Uses same assembly kernel as TransverseIsotropicV1 and GeneralizedAnisotropic.
Sentinel.GeneralizedAnisotropic Type
GeneralizedAnisotropic <: AbstractMaterialModelGeneralized anisotropic viscoelastic material. Corresponds to Fortran mtrlmodel = 7.
Properties (positional):
prop 1: complex shear modulus in the transverse plane
Paprop 2: complex principal directional Young's modulus along axis 1 (fiber direction)
Paprop 3: complex principal directional Young's modulus in the transverse direction
Pa
The stiffness matrix is used directly in global coordinates –- no fiber rotation is applied. Uses same assembly kernel (genanisoforwardassemble) as models 5 and 6.
Sentinel.material_model Function
material_model(model::Int) -> AbstractMaterialModelConvert the Fortran integer model flag to the corresponding Julia type singleton.
Examples
julia> material_model(1)
IsotropicIncompressible()
julia> material_model(4)
Poroelastic()Sentinel.model_index Function
model_index(::AbstractMaterialModel) -> IntReturn the Fortran integer index for a material model type.
sourceSentinel.has_pressure_dofs Function
has_pressure_dofs(::AbstractMaterialModel) -> BoolReturn true if the material model includes pressure degrees of freedom.
Incompressible models (1, 2, 5, 6, 7) use elemental pressure DOFs for the mixed formulation.
Poroelastic (4) uses nodal pressure DOFs.
Compressible (3) has no pressure DOFs.
Sentinel.pressure_dof_type Function
pressure_dof_type(::AbstractMaterialModel) -> SymbolReturn :elemental or :nodal to indicate pressure DOF placement. Returns :none for models without pressure DOFs.
Sentinel.uses_fiber_directions Function
uses_fiber_directions(::AbstractMaterialModel) -> BoolReturn true if the material model requires a fiber direction field (e.g., from DTI).
Material Data
Sentinel.Material Type
MaterialComplete material description for a single zone, including all properties, error tracking, and multi-mesh parameterization. Corresponds to the Fortran material derived type.
Fields
model: integer model identifier (1–7), or usematerial_model(model)for dispatchnumprop: number of material propertiesnreg: number of regularization termsnummeas: number of measurement points for error analysisprop: vector ofSingleProperty, lengthnumpropnummtrlmesh: number of material meshes (for multi-resolution parameterization)meshind:(2, numprop, nummtrlmeshstructs)— mesh index for real/imag per propertyres8:(nummtrlmesh, 3)— resolution of each material mesh [dx, dy, dz]nodval: nodal material property values for tet mesh,(nn, numprop)complexpsource: pressure source for poroelastic model,(np, numdispsets)complexrhop,rhoa,rhof: poroelastic density parameters (model=4 only)toterrinit,totalerror,disperror,toterrprev: error tracking scalarsnumerrupdate: iteration counter for error updatescalcvar: flag — compute property estimate varianceserrinit: flag — whethertoterrinithas been initializedregerror: per-regularization-term error, lengthnreg
Sentinel.SingleProperty Type
SinglePropertyStores the values of one scalar material property across all parameter nodes/elements. Corresponds to the Fortran singleproperty derived type.
Fields
basis: parameterization basis —1= nodal,2= elementalnvpp: number of values per point (e.g., 3 for power-law: θ₀_r, α_r, ω₀_r)scalar: 4-element scaling vector[s_r, s_i, α_r, α_i]for power-law normalizationnpr: number of parameter points for the real partnpi: number of parameter points for the imaginary partrvalue: real property values, size(npr, nvpp)— stored as normalized valuesivalue: imaginary property values, size(npi, nvpp)— stored as normalized valuesrvariance: variance of real estimates, size(npr, nvpp)ivariance: variance of imaginary estimates, size(npi, nvpp)rupdate: flags indicating updated real parameter points, lengthnpriupdate: flags indicating updated imaginary parameter points, lengthnpircount: update counts for real parameter points, lengthnpricount: update counts for imaginary parameter points, lengthnpirgp: number of Gauss points affected by each real property value, lengthnprigp: number of Gauss points affected by each imaginary property value, lengthnpirmesh: index of the material mesh that real property is defined on (1-based)imesh: index of the material mesh that imaginary property is defined on (1-based)
Notes
The scalar vector enables dimensionless parameterization:
scalar[1]scales real values: μ_r = scalar[1] * rvalue[j, k]scalar[2]scales imag values: μ_i = scalar[2] * ivalue[j, k]scalar[3],scalar[4]are α scalings for power-law frequency dependence
For non-power-law (standard) properties, nvpp = 1 and only one set of values exists. For power-law properties, nvpp = 3 with values [θ₀, α, ω₀] per point.