◆ FORGE Suite
GitHubMechanical Neuroimaging Lab · Univ. of Delaware
Skip to content

Material Models

Type Hierarchy

Sentinel.AbstractMaterialModel Type
julia
AbstractMaterialModel

Abstract supertype for all MRE material constitutive models. Concrete subtypes drive dispatch for element integration, adjoint gradient computation, and optimization routines.

source
Sentinel.IsotropicIncompressible Type
julia
IsotropicIncompressible <: AbstractMaterialModel

Rayleigh-damped viscoelastic isotropic incompressible material. Corresponds to Fortran mtrlmodel = 1.

Material properties (numprop = 1):

  • prop 1: complex shear modulus G* = G_r + i·G_i [Pa]

Uses a mixed pressure-displacement formulation with elemental pressures.

source
Sentinel.IsotropicCompressible Type
julia
IsotropicCompressible <: AbstractMaterialModel

Rayleigh-damped isotropic compressible viscoelastic material. Corresponds to Fortran mtrlmodel = 3.

Material properties (numprop = 2):

  • prop 1: complex shear modulus G* [Pa]

  • prop 2: complex bulk modulus K* Pa

Supports both hex27 and tet4 elements.

source
Sentinel.Orthotropic Type
julia
Orthotropic <: AbstractMaterialModel

Rayleigh-damped orthotropic viscoelastic material. Corresponds to Fortran mtrlmodel = 2.

Material properties (numprop = 2):

  • prop 1: complex shear modulus in plane 1

  • prop 2: complex shear modulus in plane 2

Requires fiber direction field for principal axis definition.

source
Sentinel.Poroelastic Type
julia
Poroelastic <: AbstractMaterialModel

Poroelastic 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)

source
Sentinel.TransverseIsotropicV1 Type
julia
TransverseIsotropicV1 <: AbstractMaterialModel

Transverse isotropic viscoelastic material, formulation 1. Corresponds to Fortran mtrlmodel = 5.

Material properties (numprop = 2):

  • prop 1: complex shear modulus in the isotropic plane G_TI*

  • prop 2: complex anisotropy ratio

Requires fiber direction field (DTI-derived) for symmetry axis. Uses same assembly kernel as TransverseIsotropicV2 and GeneralizedAnisotropic.

source
Sentinel.TransverseIsotropicV2 Type
julia
TransverseIsotropicV2 <: AbstractMaterialModel

Transverse isotropic viscoelastic material, formulation 2. Corresponds to Fortran mtrlmodel = 6.

Alternate parameterization of transverse isotropy. Uses same assembly kernel as TransverseIsotropicV1 and GeneralizedAnisotropic.

source
Sentinel.GeneralizedAnisotropic Type
julia
GeneralizedAnisotropic <: AbstractMaterialModel

Generalized anisotropic viscoelastic material. Corresponds to Fortran mtrlmodel = 7.

Uses same assembly kernel (genanisoforwardassemble) as models 5 and 6.

source
Sentinel.material_model Function
julia
material_model(model::Int) -> AbstractMaterialModel

Convert the Fortran integer model flag to the corresponding Julia type singleton.

Examples

julia
julia> material_model(1)
IsotropicIncompressible()

julia> material_model(4)
Poroelastic()
source

Material Data

Sentinel.Material Type
julia
Material

Complete 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 use material_model(model) for dispatch

  • numprop: number of material properties

  • nreg: number of regularization terms

  • nummeas: number of measurement points for error analysis

  • prop: vector of SingleProperty, length numprop

  • nummtrlmesh: number of material meshes (for multi-resolution parameterization)

  • meshind: (2, numprop, nummtrlmeshstructs) — mesh index for real/imag per property

  • res8: (nummtrlmesh, 3) — resolution of each material mesh [dx, dy, dz]

  • nodval: nodal material property values for tet mesh, (nn, numprop) complex

  • psource: pressure source for poroelastic model, (np, numdispsets) complex

  • rhop, rhoa, rhof: poroelastic density parameters (model=4 only)

  • toterrinit, totalerror, disperror, toterrprev: error tracking scalars

  • numerrupdate: iteration counter for error updates

  • calcvar: flag — compute property estimate variances

  • errinit: flag — whether toterrinit has been initialized

  • regerror: per-regularization-term error, length nreg

source
Sentinel.SingleProperty Type
julia
SingleProperty

Stores 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 = elemental

  • nvpp: 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 normalization

  • npr: number of parameter points for the real part

  • npi: number of parameter points for the imaginary part

  • rvalue: real property values, size (npr, nvpp) — stored as normalized values

  • ivalue: imaginary property values, size (npi, nvpp) — stored as normalized values

  • rvariance: variance of real estimates, size (npr, nvpp)

  • ivariance: variance of imaginary estimates, size (npi, nvpp)

  • rupdate: flags indicating updated real parameter points, length npr

  • iupdate: flags indicating updated imaginary parameter points, length npi

  • rcount: update counts for real parameter points, length npr

  • icount: update counts for imaginary parameter points, length npi

  • rgp: number of Gauss points affected by each real property value, length npr

  • igp: number of Gauss points affected by each imaginary property value, length npi

  • rmesh: 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.

source