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.dspThe parser (parse_inverse_runfile) handles two format versions:
| Version | Origin | Detection |
|---|---|---|
| v7p3 | Original NLI format | Default when v937 fields are absent |
| v937 | Matches Fortran MRE-Zone v9.37 | Detected 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:
| Field | Purpose | Typical Value |
|---|---|---|
| Pressure BC File | Pressure boundary conditions for poroelastic models | 0 (disabled) |
| Zone Displacement BC Option | How zone BCs are built: 1 = measured, 2 = calculated | 1 |
| Multi-Frequency Indicators | Per-property flag for multi-frequency alpha weighting | .false. for each property |
| Multi-Frequency Alpha | Frequency-dependent weighting exponents | 1.0 (no effect) |
| Material Mesh Structures | Inline node/element files for material meshes | Not used when meshes are generated from resolutions |
| Global Forward Solve Indicator | Whether 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:
| Value | Model | Properties |
|---|---|---|
| 1 | IsotropicIncompressible | |
| 2 | Orthotropic | |
| 3 | IsotropicCompressible | |
| 5 | TransverseIsotropicV1 | |
| 6 | TransverseIsotropicV2 | |
| 7 | GeneralizedAnisotropic |
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.0This 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.002Each 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.50An 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.01This 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, 2This defines two structures:
| Structure | Global Iters | CG Iters | GN Iters | QN Iters | LS Iters |
|---|---|---|---|---|---|
| 1 | 1–10 | 1 | 0 | 0 | 1 |
| 2 | 11–150 | 2 | 0 | 0 | 2 |
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.| Index | Abbreviation | Regularization | Type |
|---|---|---|---|
| 1 | TV | TotalVariationReg | Penalty |
| 2 | SF | SpatialFilterReg | Post-processing |
| 3 | TK | TikhonovReg | Penalty |
| 4 | MQ | MarquardtReg | Hessian modifier |
| 5 | JW | JoachimowiczReg | Hessian modifier |
| 6 | Con | ExteriorConstraintReg | Penalty |
| 7 | CGr | CG residual scaling | Weight schedule |
| 8 | VH | VanHoutenReg | Post-processing |
| 9 | McG | BoundsReg | Post-processing |
| 10 | SP | SoftPriorReg | Penalty |
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.