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

Configuring Inverse Runfiles

Sentinel's inverse solver reads its configuration from .dat text files that specify mesh files, material model, zone decomposition parameters, iteration structures, and regularization settings. This page documents the runfile format and key parameters.

Runfile Format

Inverse runfiles use alternating label lines and data lines. Each label line describes what the next data line contains; the parser reads them in strict sequence, skipping labels and extracting values from data lines.

Region Stack File:
0
Measured Displacement File:
1
60.0
../meshfiles/brain_mre.dsp

The parser (parse_inverse_runfile) handles two format versions:

VersionOriginDetection
v7p3Original NLI formatDefault when v937 fields are absent
v937Matches Fortran MRE-Zone v9.37Detected via peek-ahead on additional fields

Both versions share the same core structure. The parser uses peek-ahead to detect whether v937-specific sections are present and reads them if found.

v937 Additions

Version v937 adds several fields after the core sections. For the MGH brain MRE dataset (and most single-frequency isotropic reconstructions), these have default or benign values:

FieldPurposeTypical Value
Pressure BC FilePressure boundary conditions for poroelastic models0 (disabled)
Zone Displacement BC OptionHow zone BCs are built: 1 = measured, 2 = calculated1
Multi-Frequency IndicatorsPer-property flag for multi-frequency alpha weighting.false. for each property
Multi-Frequency AlphaFrequency-dependent weighting exponents1.0 (no effect)
Material Mesh StructuresInline node/element files for material meshesNot used when meshes are generated from resolutions
Global Forward Solve IndicatorWhether to run a global forward solve each iteration.false.

Sentinel currently implements zonedispbcopt=1 (zone BCs from measured displacement) and globfwdind=false (no global forward solve), matching the standard MGH reconstruction workflow.

Key Parameters

Material Model

The mtrlmodel integer selects the constitutive model:

ValueModelProperties
1IsotropicIncompressibleμ, ρ
2OrthotropicE1, E2, E3, ρ
3IsotropicCompressibleμ, κ, ρ
5TransverseIsotropicV1μ, μs, Et, κ, ρ
6TransverseIsotropicV2μ, ϕ, ζ, κ, ρ
7GeneralizedAnisotropicE1, E2, μ, κ, ρ

Property Scalars

Each property has a real/imaginary scalar pair that converts normalized internal values (centered at 1.0) to physical units. For example, with isotropic incompressible brain MRE:

Property Scalars:
3300.0, -200.0, 1000.0, 0.0

This means property 1 (shear modulus) has s_re = 3300.0 Pa and s_im = -200.0 Pa, while property 2 (density) has s_re = 1000.0 kg/m^3 and s_im = 0.0. The physical value is value * scalar: a normalized value of 1.0 corresponds to 3300 Pa real shear modulus.

Material Mesh Resolutions

The inverse solver uses a dual-mesh architecture: displacement on hex27 elements and material properties on structured hex8 grids. The runfile specifies up to 3 material mesh resolution levels (coarse to fine):

Number of Material Property Mesh Resolutions:
3
Material Property Mesh Resolutions (dx, dy, dz in meters):
0.006, 0.006, 0.006
0.004, 0.004, 0.004
0.002, 0.002, 0.002

Each property maps to a resolution level via the meshind matrix.

Zone Sizes and Overlap

Zone decomposition parameters control how the domain is partitioned:

Zone Sizes (x, y, z half-extents in meters):
0.04, 0.04, 0.04
Zone Overlap Percentage (x, y, z):
0.50, 0.50, 0.50

An overlap of 0.50 means 50% of each zone edge overlaps with neighboring zones. Higher overlap improves smoothness at zone boundaries but increases computation.

Tolerances

Tolerance values are in PERCENT

The "Minimum Parameter Update Size" values in the runfile are specified in percent, not as fractions. The Fortran code divides by 100 after reading: minepsglob = minepsglob / 100.d0. Sentinel applies the same conversion.

Minimum Parameter Update Size [global, zone, line]:
0.1, 0.1, 0.01

This means:

  • Global tolerance: 0.1% = 0.001 internal threshold

  • Zone tolerance: 0.1% = 0.001 internal threshold

  • Line search tolerance: 0.01% = 0.0001 internal threshold

The convergence check computes material_epsilon –- the maximum relative change in any reconstructed property between iterations. When epsilon < global_tol, the solver declares convergence.

Iteration Structures

Iteration structures define how the zone-level optimizer behaves at different stages of the reconstruction. The runfile specifies N structures with threshold limits that partition the global iteration range:

Number of Zone Iteration Structures:
2
Iteration Limits for Zone Iteration Structures:
10
Zone Iteration Structures [CG, GN, QN, LS]:
1, 0, 0, 1
2, 0, 0, 2

This defines two structures:

StructureGlobal ItersCG ItersGN ItersQN ItersLS Iters
11–101001
211–1502002

For the first 10 global iterations, each zone runs 1 CG iteration with 1 line search step. From iteration 11 onward, each zone runs 2 CG iterations with 2 line search steps. The optimizer is selected by the first nonzero count: QN > 0 selects L-BFGS, GN > 0 selects Gauss-Newton, otherwise CG is used.

See ZoneIterationStructure and run_inverse_solve! for implementation details.

Regularization Indicators

The regularization section begins with a 10-element boolean array that enables or disables each method:

Regularization Indicators [TV,SF,TK,MQ,JW,Con,CGr,VH,McG,SP]:
.false., .true., .false., .false., .false., .true., .true., .false., .true., .false.
IndexAbbreviationRegularizationType
1TVTotalVariationRegPenalty
2SFSpatialFilterRegPost-processing
3TKTikhonovRegPenalty
4MQMarquardtRegHessian modifier
5JWJoachimowiczRegHessian modifier
6ConExteriorConstraintRegPenalty
7CGrCG residual scalingWeight schedule
8VHVanHoutenRegPost-processing
9McGBoundsRegPost-processing
10SPSoftPriorRegPenalty

Each enabled regularization has its own parameter block following the indicators. These blocks specify which properties to treat, initial and final weights (for scheduled ramps), and method-specific parameters such as filter widths (SF), delta smoothing values (TV), or constraint bounds (Con).

Weight schedules interpolate linearly from initial to final values over the total iteration count, with an optional constant-weight delay period controlled by const_reg_iters. See WeightSchedule for details.