◆ 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μ″.

Static Pressure Condensation ​

The pressure basis ψk is element-local and discontinuous: a pressure DOF belongs to a single element and is shared with no neighbor. Globally this makes the pressure–pressure block Kpp block-diagonal, with one independent 4×4 block per element. For the penalty-regularized incompressible models (1, 2, 5, 6) this block is an invertible κ-scaled penalty — for Model 1 it is Kppkl=−1κ∗∫ψkψldΩ (see the per-model kernels below) — so the pressure DOFs can be eliminated element by element before the global solve. (Model 7 uses a pure Lagrange multiplier with Kpp=0, which is singular and cannot be condensed this way.)

Writing the global mixed system as a 2×2 saddle-point system,

[KuuKupKpuKpp][up]=[fufp],

eliminating p=Kpp−1(fp−Kpuu) yields the Schur complement system in the displacement unknowns alone:

Su=fu′,S=Kuu−KupKpp−1Kpu,fu′=fu−KupKpp−1fp.

Because Kpp is block-diagonal, the condensation is performed entirely at the element level — each Se=Kuue−Kupe(Kppe)−1Kpue is formed from the 85×85 element matrix via one 4×4 solve, then scattered like an ordinary 81×81 displacement stiffness.

The reasoning behind condensation — why the elimination is exact and free of fill on this discretization, and why it improves accuracy rather than merely speed — is in About Static Pressure Condensation.

Applicability ​

The forward solve, the objective, and the μ∗- and ρ-gradients depend only on the displacement solution u; the pressure p need not be recovered for these. The only gradient terms that read p are the bulk-modulus gradient ∂Φ/∂κ (which differentiates Kpp) and the anisotropic-model pressure-coupling gradients. Static condensation therefore applies to the Model 1 reconstruction of the complex shear modulus μ∗=μ′+iμ″ (both the storage modulus μ′ and loss modulus μ″), optionally with density ρ, while the bulk modulus κ∗ is held fixed — which is the standard viscoelastic MRE reconstruction, and is the default on the batched solver path. See How to Tune Performance for usage and benchmarks.

Model 1: Isotropic Incompressible ​

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

Constitutive law: σ=2μ∗εdev−pI

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,x−23Ni,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(E1E2−E1E3+1),ν13=12(E1E3−E1E2+1)ν23=12(E2E3−E2E1+1)

Derived Stiffness Coefficients ​

Define the compliance sub-terms:

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

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=S−1.

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: Kpu≠KupT. 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=29Et−23μ,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μ(1−23ζ),S13lg=−23μ(1+13ζ)S22lg=μ(1+13ζ)+13μ,S23lg=−μ(1−13ζ)+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(4E2−1E1):

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 T∈R3×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=[T112T122T132T12T13T11T13T11T12T212T222T232T22T23T21T23T21T22T312T322T332T32T33T31T33T31T322T21T312T22T322T23T33⋯⋯⋯2T11T312T12T322T13T33⋯⋯⋯2T11T212T12T222T13T23⋯⋯⋯]

The global stiffness is then:

Sglobal=BTSlocalB

Inverse Problem ​

Objective Function ​

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

Φ(θ)=12∥ucalc(θ)−umeas∥2+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―λ=−(ucalc−umeas)

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[∑e∑gpwgpλ―eT∂Ke∂θ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α∥θ−θref∥2

Gradient: ∇R=α(θ−θref)

Hessian diagonal: Hkk=α

Total Variation ​

Smoothed TV functional on the material mesh:

R(θ)=α∑e∑gpwgp|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=α∑e∑gpwgp|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>θmax−2α(θmin−θk),θk<θmin0,otherwise

Hessian Modifiers ​

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

Hkk←H¯⋅ϵ⋅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^kk←H^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+βkdk−1

with the Polak-Ribiere+ update:

βk=max(0,gkT(gk−gk−1)gk−1Tgk−1)

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+1−gi

Initial Hessian scaling:

γ=sk−1Tyk−1yk−1Tyk−1

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