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

Mathematical Reference

This page provides the complete mathematical formulations used in Sentinel.jl, including the governing equations, all seven material model element kernels, the inverse problem, regularization functionals, and optimizer update rules.

General Framework

Governing Equation

Sentinel solves the frequency-domain viscoelastic wave equation. Given harmonic excitation at angular frequency ω, the time-harmonic displacement u(x)eiωt satisfies:

σ(u)ρω2u=0

where σ is the Cauchy stress tensor and ρ is the tissue density.

Mixed Finite Element Formulation

For incompressible and nearly-incompressible models (Models 1, 2, 5, 6, 7), a mixed (u,p) formulation avoids volumetric locking. The displacement field uses triquadratic (Hex27) basis functions Ni, while the pressure field uses an element-local basis:

ψk(ξ,η,ζ)={1,ξ,η,ζ},k=1,,4

This gives 81 displacement DOFs (27 nodes × 3 components) and 4 pressure DOFs per element, for a total of 85 local DOFs.

Element Stiffness Block Structure

The element stiffness matrix has the 2×2 block form:

Ke=[KuuKupKpuKpp]

where Kuu is 81×81, Kup is 81×4, Kpu=KupT, and Kpp is 4×4.

Complex Symmetry

All stiffness matrices are complex symmetric: K=KT (transpose, NOT Hermitian conjugate). This arises from the viscoelastic constitutive law with complex-valued moduli μ=μ+iμ.

Model 1: Isotropic Incompressible

Parameters: complex shear modulus μ, complex bulk modulus κ, density ρ

Constitutive law: σ=2μεdevpI

Displacement-Displacement Block

Diagonal terms (α=β):

Kijuxux=Ωeμ(43Ni,xNj,x+Ni,yNj,y+Ni,zNj,z)ω2ρNiNjdΩ

Off-diagonal terms (αβ):

Kijuxuy=Ωeμ(Ni,yNj,x23Ni,xNj,y)dΩ

with cyclic permutations for other component pairs.

Displacement-Pressure Block

Kiuα,pk=ΩeψkNi,αdΩ

Pressure-Pressure Block

Kklpp=1κΩeψkψldΩ

Model 2: Orthotropic

Parameters: 3 Young's moduli E1,E2,E3 (complex), density ρ

Compliance Matrix

The 6×6 compliance matrix S in Voigt notation ({εxx,εyy,εzz,γyz,γxz,γxy}):

S=[1/E1ν12/E1ν13/E1000ν21/E21/E2ν23/E2000ν31/E3ν32/E31/E30000001/G230000001/G130000001/G12]

Derived Poisson Ratios

ν12=12(E1E2E1E3+1),ν13=12(E1E3E1E2+1)ν23=12(E2E3E2E1+1)

Derived Stiffness Coefficients

Define the compliance sub-terms:

S11=1E1,S22=1E2,S33=1E3S12=ν12E1,S13=ν13E1,S23=ν23E2D1=S11S23S12S13

The 3×3 normal stiffness sub-block is obtained from the compliance inverse. The stiffness assembly then follows the general anisotropic kernel (Section "General Anisotropic Framework" below), with the 6×6 stiffness matrix C=S1.

Pressure Coupling

Compliance-weighted pressure terms:

SPx=prefD1,Kiux,pk=SPxΩeψkNi,xdΩ

with analogous terms for y and z directions, scaled by the corresponding compliance column sums.

Model 3: Isotropic Compressible

Parameters: complex shear modulus μ, complex bulk modulus κ, density ρ

No pressure DOFs — element stiffness is 81×81.

Lame Parameters

λ=κ23μ

Stiffness Matrix

Diagonal (α=β):

Kijuxux=Ωe(2μ+λ)Ni,xNj,x+μ(Ni,yNj,y+Ni,zNj,z)ω2ρNiNjdΩ

Off-diagonal (αβ):

Kijuxuy=ΩeλNi,xNj,y+μNi,yNj,xdΩ

Model 4: Poroelastic (Tet4)

Parameters: solid shear μs, solid bulk κs, fluid bulk κf, permeability k, porosity ϕ, fluid viscosity η, solid density ρs, fluid density ρf, added mass ρa

Uses linear tetrahedral (Tet4) elements with 4 displacement nodes (12 DOFs) and 4 nodal pressure DOFs, giving a 16×16 element matrix.

Biot Coupling Coefficient

β(ω)=ωη2ρfκiη2+ωκ(ρa+ηρf)

where κ is the permeability.

Non-Symmetry

Warning

The poroelastic element matrix is NOT symmetric: KpuKupT. The Kpu block contains an additional iω factor absent from Kup.

Analytical Integration

Tet4 uses analytical integration (no Gauss quadrature) based on the constant-gradient property of linear tetrahedra:

ΩeNiNjdΩ=V20(1+δij),ΩeNi,αNj,βdΩ=biαbjβ36V

where V is the tetrahedral volume and biα are the shape function gradient coefficients.

General Anisotropic Framework (Models 2, 5, 6, 7)

Models 2, 5, 6, and 7 all use the general 6×6 stiffness tensor contraction. Given the Voigt stiffness matrix S (in global coordinates), the displacement-displacement block is:

Kijuαuβ=ΩeBαiTSBβjdΩδαβω2ρNiNj

Expanding the 9 block contributions from the 6×6 stiffness Spq:

BlockFormula
KuxuxS11Ni,xNj,x+S66Ni,yNj,y+S55Ni,zNj,z
KuxuyS12Ni,xNj,y+S66Ni,yNj,x
KuxuzS13Ni,xNj,z+S55Ni,zNj,x
KuyuxS12Ni,yNj,x+S66Ni,xNj,y
KuyuyS22Ni,yNj,y+S66Ni,xNj,x+S44Ni,zNj,z
KuyuzS23Ni,yNj,z+S44Ni,zNj,y
KuzuxS13Ni,zNj,x+S55Ni,xNj,z
KuzuyS23Ni,zNj,y+S44Ni,yNj,z
KuzuzS33Ni,zNj,z+S44Ni,yNj,y+S55Ni,xNj,x

Each integral includes the inertial mass term ω2ρNiNj on the diagonal blocks only.

Model 5: Transverse Isotropic V1

Parameters: isotropic shear μ, axial shear μs, tensile anisotropy Et, bulk κ, density ρ, fiber direction n

Local Stiffness (Fiber-Aligned Frame)

S11lg=49Et+43μ,S12lg=29Et23μ,S13lg=29EtS22lg=μ+19Et,S23lg=μ+19Et,S33lg=μ+19EtS44lg=μs,S55lg=μs,S66lg=μ

The global stiffness is obtained via Bond rotation: Sglobal=BTSlocalB (see Bond Rotation).

Model 6: Transverse Isotropic V2

Parameters: shear μ, anisotropy ratio ϕ, tensile ratio ζ, bulk κ, density ρ, fiber direction n

Local Stiffness (Fiber-Aligned Frame)

S11lg=43μ(1+43ζ),S12lg=23μ(123ζ),S13lg=23μ(1+13ζ)S22lg=μ(1+13ζ)+13μ,S23lg=μ(113ζ)+13μζ,S33lg=S22lgS44lg=ϕμ,S55lg=ϕμ,S66lg=μ

Model 7: Generalized Anisotropic

Parameters: 2 Young's moduli E1,E2, shear μ, bulk κ, density ρ, fiber direction n

Based on the Itzkov-Askel incompressible transversely isotropic formulation.

Local Stiffness (Fiber-Aligned Frame)

Define D=34E1(4E21E1):

S11lg=1/(E1E2)D,S12lg=1/(2E12)D,S13lg=S12lgS22lg=3/(4E12)D,S23lg=1/(4E12)1/(E1E2)D,S33lg=S22lgS44lg=μ,S55lg=μ,S66lg=12E1D

Note

Model 7 uses a pure Lagrange multiplier for incompressibility: Kpp=0. The bulk modulus κ is not used in the pressure-pressure block.

Bond Rotation

For fiber-aligned models (5, 6, 7), the local stiffness Slg must be rotated to the global frame using the Bond transformation.

Rotation Matrix

Given fiber direction n=(n1,n2,n3), construct a rotation TR3×3 whose first column is the fiber direction. The remaining columns are chosen to form a right-handed orthonormal frame:

T=[nt1t2]

where t1 and t2 are computed from cross products with the global axes, with special handling when n is nearly aligned with z^.

Bond Matrix

The 6×6 Bond matrix B transforms Voigt-notation stress/strain vectors under rotation T:

B=[T112T122T132T12T13T11T13T11T12T212T222T232T22T23T21T23T21T22T312T322T332T32T33T31T33T31T322T21T312T22T322T23T332T11T312T12T322T13T332T11T212T12T222T13T23]

The global stiffness is then:

Sglobal=BTSlocalB

Inverse Problem

Objective Function

The inverse problem minimizes the misfit between calculated and measured displacements:

Φ(θ)=12ucalc(θ)umeas2+R(θ)

where θ is the vector of material parameters and R(θ) collects regularization terms.

Adjoint Method

The gradient is computed efficiently via the adjoint method. The adjoint displacement λ solves:

Kλ=(ucalcumeas)

where K is the complex conjugate of the stiffness matrix (since K is complex symmetric, K=KH).

Gradient Computation

The gradient of the data-misfit term with respect to material parameter θm is:

Φθm=Re[egpwgpλeTKeθmue]

where the sum runs over elements e and Gauss points, wgp is the quadrature weight times the Jacobian determinant, and Ke/θm is the element stiffness derivative with respect to parameter θm.

The parameter θm typically maps to a material property at a specific material mesh element via the GP2MTR interpolation. See the I/O page for details on the Gauss-point to material-point mapping.

Regularization Functionals

Tikhonov

Standard L2 penalty on deviation from reference:

R(θ)=12αθθref2

Gradient: R=α(θθref)

Hessian diagonal: Hkk=α

Total Variation

Smoothed TV functional on the material mesh:

R(θ)=αegpwgp|Je||θ|2+ε2

where ε>0 is a smoothing parameter and the gradient θ is evaluated on the structured hex8 material mesh using trilinear basis functions.

Gradient: Rθk=αegpwgp|Je|θNk|θ|2+ε2

Soft Prior

Region-based discrete Laplacian penalty:

R(θ)=αj(Lθ)j2

where L is a discrete Laplacian operator computed per material region.

Gradient: R=2αLTLθ

Exterior Constraint

Barrier penalty for out-of-domain parameters:

R(θ)=αk[max(0,θkθmax)2+max(0,θminθk)2]

Gradient: Only nonzero for parameters violating bounds:

Rθk={2α(θkθmax),θk>θmax2α(θminθk),θk<θmin0,otherwise

Hessian Modifiers

Joachimowicz: Scales diagonal Hessian by average value, error, and weight:

HkkH¯ϵw

where H¯ is the average diagonal Hessian, ϵ is the current displacement error, and w is a user-specified weight.

Marquardt: Normalized Levenberg-Marquardt damping. First normalize the Hessian:

H^kk=HkkDk2,Dk=Hkk

Then add damping H^kkH^kk+λ, solve for Δθ^, and rescale: Δθk=Δθ^k/Dk.

Post-Processing Regularizations

Van Houten: Clips power-law exponents to [αmin,αmax] after each iteration.

Spatial Filter: Applies Gaussian smoothing with kernel widths (σx,σy,σz) on the structured material mesh.

Bounds (McGarry): Enforces Poisson ratio bounds ν[νmin,νmax] by clipping derived ratios.

Optimizer Update Rules

Conjugate Gradient (Polak-Ribiere+)

Search direction:

dk=gk+βkdk1

with the Polak-Ribiere+ update:

βk=max(0,gkT(gkgk1)gk1Tgk1)

The max(0,) ensures automatic reset to steepest descent when conjugacy is lost. Step size αk is determined by Armijo backtracking line search (see below).

Gauss-Newton

Uses a diagonal Hessian approximation:

Δθk=gkHkk

where Hkk is the diagonal of the Gauss-Newton Hessian (assembled from element-level contributions). A floor value prevents division by near-zero entries.

L-BFGS

Limited-memory BFGS quasi-Newton method using the two-loop recursion. Maintains m curvature pairs {(si,yi)} where:

si=θi+1θi,yi=gi+1gi

Initial Hessian scaling:

γ=sk1Tyk1yk1Tyk1

The search direction is computed via the standard two-loop recursion with γI as the initial inverse Hessian approximation.

All optimizers use Armijo backtracking line search. Given sufficient decrease parameter c1 and backtracking factor ρ:

αk+1=ραkwhileΦ(θ+αkdk)>Φ(θ)+c1αkgTdk