E4D User Guide
E4D User Guide
Electrical Methods Inversion Options File
The information provided by an ER survey is typically insufficient to uniquely determine the subsurface bulk conductivity distribution at the scale of the computational mesh. In order to produce a reasonable representation of the true subsurface conductivity, the inverse solution must be constrained by a priori information in addition to the information provided by the data. The information provided by the data is given implicitly in the survey file. The a priori solution constraints are provided in the inverse options file.
Often, the quality of the inverse solution is highly dependent upon the solution constraints supplied to the inversion algorithm. It is generally beneficial to provide as much information as possible to the inversion algorithm, which can provide marked improvements in imaging resolution. E4D is implemented with a flexible set of model constraints applied using the method of iteratively reweighted least squares (IRLS). The inversion option file provides E4D with solution constraints zone by zone, and tells E4D how those constraints should be implemented across zone boundaries.
Each constraint is specified by two equations, a structural metric and a weighting function.
See File Syntax Rules for specific details.
Variable Name | Description |
---|---|
n_reg_blocks
(int) |
n_reg_blocks is the total number of constraint blocks. Each zone in the mesh is considered a constraint block and should have at least one assignment. |
Constraint Block repeat for n_reg_blocks
zone
(int) |
zone is the zone number for which this constraint block applies. |
s_met wx wy wz
(int) (real) (real) (real) |
s_met is the structural metric to use for this constraint. wx, wy, and wz indicate the relative weighting of this structure metric in the x,y and z directions. These are not used by every structural metric and are ignored if not used. However, they must be present in this file. |
fw mn scl
(int) (real) (real) |
fw is the weighting function to use for this constraint. mn is the mean of the weighting function in natural log space. For example 0.004 would be entered as ln(0.004)=-5.5215. scl is the standard deviation of the weighting function in natural log space. For example 0.0001 would be entered as ln(0.0001)=-9.2103. |
nlinks ilink ... ilink_n
(int) (int) |
nlinks is the number of zones to which this zone is linked. repeat for n_links ilink is the link to which this zone is linked. |
v_ref
(int/char) |
v_ref is the reference value used for this constraint block. If specified as "REF" or "Ref" or "ref", then the reference model specified in <e4d.inp> is used to provide the reference values for this constraint block. |
w_ref
(real) |
w_ref is the the relative weight applied to the regularization constraints specified in this block. |
Convergence Criteria
beta min_red beta_red
(real) (real) (real) |
beta is the global constraint weighting value at the beginning of the inversion, and controls the importance the inversion places on enforcing the model constraints in comparison to fitting the data. This parameter is either held constant or automatically reduced (see up_opt) by E4D during the inversion when required to reduce the misfit between measured and simulated data. min_red is the minimum fractional decrease in the objective function between outer iterations that may occur before beta is reduced. A conservative value for min_red is 0.05. Larger values of min_red will generally decrease time to convergence, but may also provide solutions that violate the model constraints more than what is necessary to appropriately fit the data. beta_red is the beta reduction factor. If the fractional decrease in the objective function between outer iterations is less than or equal to min_beta, then beta is reduced by a factor of beta_red for the next iteration. A conservative value for beta_red is 0.5. |
chi_target
(real) |
chi_target is the normalized chi-squared value at which the inversion is considered to have converged. In the absence of modeling errors and accurately specified data standard deviations, chi_target should reach a value of 1.0 at convergence. |
miniter maxiter
(int) (int) |
miniter is the minimum number of inner iterations (i.e. CGLS iterations) to execute before updating the solution. Recommended value is 30. maxiter is the maximum number of inner iterations (i.e. CGLS iterations) to execute before updating the solution. Recommended value is 50. |
minsig maxsig
(real) (real) |
minsig is the minimum conductivity value allowed by the inversion. maxsig is the maximum conductivity value allowed by the inversion. These values do not constrain the inversion, and are only provided as a safety mechanism to ensure the forward solution remains stable. Note: Maximum and minimum conductivity constraints should be specified in the constraints block. |
up_opt
(int) |
up_opt=1a line search is used to estimate the optimum beta value. This option is not avaiable at this time. If up_opt=1 E4D will default to up_opt=2. up_opt = 2beta reduces as specified by min_red and beta_red up_opt = 3beta remains at its starting value, and the inversion converges when the reduction in the objective function is less than min_red or the target chi-squared value is reached, whichever comes first. |
cflag cdev
(int) (int) |
cflag = 1data outlier re-weighting is implemented cflag = 0all data will be used to constrain the inversion at every iteration cdev specifies the outlier removal standard deviation. If the weighted residual error of any datum is greater than cdev standard deviations from the mean weighted residual error and cflag = 1, then that datum is not used to constrain the inversion in next iteration. (Recommended value = 3). Outlier conditions are checked at every iteration, so a particular datum may be removed for one iteration and included in the next, and vice-versa. |
Example of Smoothness Constrained Inversion
2 # of constraint blocks, this file implements 1 constrain zone 1 with this block 2 1.0 1.0 1.0 structural metric 2 (wx wy wz ignored) 1 10.0 .01 weight func. 1 with mean of 10 and small s.d. 1 2 one link to zone 2 0.0 reference value (not used) 1.0 relative weight 2 constrain zone 2 with this block 2 1.0 1.0 1.0 structural metric 2 (wx wy wz ignored) 1 10 0.01 weight func. 1 with mean of 10 and small s.d. 0 no links (already linked to zone 1 above) 0.0 reference value (not used) 1.0 relative weight 100 0.25 0.5 beta min_red beta_red 1.0 chi_targ 30 50 miniter maxiter 0.00001 1.0 minsig maxsig 2 up_opt 1 3.0 cflag cdevNotes: This inversion options file implements an Occam's type inversion by specifying similarity constraints between neighboring elements (structural metric 2) that are not removed unless the difference between neighbors is extreme. That is, the weight on the similarity constraints will not be reduced unless the absolute difference in log conductivity between neighbors exceeds 10, as specified by the weighting function. Zone 1 is linked to zone 2, which specifies that similarity constraints should be applied at the zone 1/zone 2 boundary. Since zone 1 is linked to zone 2, it is not necessary to link zone 2 to zone 1. Hence, zone 2 is not linked to another zone.
Example of Smoothness Constrained Inversion with a Minimum Conductivity Constraint
3 # of constraint blocks, this file implements 1 constrain zone 1 with this block 2 1.0 1.0 1.0 structural metric 2 (wx wy wz ignored) 1 10.0 .01 weight func. 1 with mean of 10 and small s.d. 1 2 one link to zone 2 0.0 reference value (not used) 1.0 relative weight 2 constrain zone 2 2 1.0 1.0 1.0 structural metric 2 (wx wy wz ignored) 1 10 0.01 weight func. 1 with mean of 10 and small s.d. 0 no links (already linked to zone 1 above) 0.0 reference value (not used) 1.0 relative weight 1 constrain zone 1 with this block 3 1.0 1.0 1.0 structural metric 3 (wx wy wz ignored) 1 0 .1 weight func. 1 with mean of 0.0 and s.d. of 0.1 0 do not apply this across any boundaries 0.002 reference value (0.002 S/m), minimum conductivity constraint 2 relative weight 100 0.25 0.5 beta min_red beta_red 1.0 chi_targ 30 50 miniter maxiter 0.00001 1.0 minsig maxsig 2 up_opt 1 3.0 cflag cdevNotes: This inversion options file implements an Occam's type inversion by specifying similarity constraints between neighboring elements (structural metric 2) that are not removed unless the difference between neighbors is extreme. That is, the weight on the similarity constraints will not be reduced unless the absolute difference in log conductivity between neighbors exceeds 10, as specified by the weighting function. Zone 1 is linked to zone 2, which specifies that similarity constraints should be applied at the zone 1/zone 2 boundary. Since zone 1 is linked to zone 2, it is not necessary to link zone 2 to zone 1. Hence, zone 2 is not linked to another zone. The third constraint block implements a minimum conductivity constraint. Weighting function 1, having a mean of zero, turns the constraint on if the value of the structural metric drops below zero, which occurs if the log conductivity drops below the reference value of 0.002 S/m. When the constraint is turned on, the inversion minimizes the structural metric by moving the conductivity toward the reference value. A relative weight of 2 is specified to ensure the constraint is enforced.
Example of Smoothness Constrained Inversion with a Maximum Conductivity Constraint
3 # of constraint blocks, this file implements 1 constrain zone 1 with this block 2 1.0 1.0 1.0 structural metric 2 (wx wy wz ignored) 1 10.0 .01 weight func. 1 with mean of 10 and small s.d. 1 2 one link to zone 2 0.0 reference value (not used) 1.0 relative weight 2 constrain zone 2 2 1.0 1.0 1.0 structural metric 2 (wx wy wz ignored) 1 10 0.01 weight func. 1 with mean of 10 and small s.d. 0 no links (already linked to zone 1 above) 0.0 reference value (not used) 1.0 relative weight 1 constrain zone 1 with this block 3 1.0 1.0 1.0 structural metric 3 (wx wy wz ignored) 2 0 .1 weight func. 2 with mean of 0.0 and s.d. of 0.1 0 do not apply this across any boundaries 0.01 reference value (0.01 S/m), maximum conductivity constraint 2 relative weight 100 0.25 0.5 beta min_red beta_red 1.0 chi_targ 30 50 miniter maxiter 0.00001 1.0 minsig maxsig 2 up_opt 1 3.0 cflag cdevNotes: This inversion options file implements an Occam's type inversion by specifying similarity constraints between neighboring elements (structural metric 2) that are not removed unless the difference between neighbors is extreme. That is, the weight on the similarity constraints will not be reduced unless the absolute difference in log conductivity between neighbors exceeds 10, as specified by the weighting function. Zone 1 is linked to zone 2, which specifies that similarity constraints should be applied at the zone 1/zone 2 boundary. Since zone 1 is linked to zone 2, it is not necessary to link zone 2 to zone 1. Hence, zone 2 is not linked to another zone. The third constraint block implements a maximum conductivity constraint. Weighting function 2, having a mean of zero, turns the constraint on if the value of the structural metric drops below zero, which occurs if the log conductivity goes above the reference value of 0.01 S/m. When the constraint is turned on, the inversion minimizes the structural metric by moving the conductivity toward the reference value. A relative weight of 2 is specified to ensure the constraint is enforced.
Example of Blocky Inversion
3 # of constraint blocks, this file implements 1 constrain zone 1 with this block 2 1.0 1.0 1.0 structural metric 2 (wx wy wz ignored) 1 0.1 .05 weight func. 1 with mean of 1.0 and s.d. of 0.05 1 2 one link to zone 2 0.0 reference value (not used) 1.0 relative weight 2 constrain zone 2 2 1.0 1.0 1.0 structural metric 2 (wx wy wz ignored) 1 0.1 0.05 weight func. 1 with mean of 0.1 and s.d. of 0.05 0 no links (already linked to zone 1 above) 0.0 reference value (not used) 1.0 relative weight 1 constrain zone 1 with this block 3 1.0 1.0 1.0 structural metric 3 (wx wy wz ignored) 1 0 .1 weight func. 1 with mean of 0.0 and s.d. of 0.1 0 no links 0.002 reference value (0.002 S/m) 2 relative weight 200 0.25 0.5 beta min_red beta_red 1.0 chi_targ 30 50 miniter maxiter 0.00001 1.0 minsig maxsig 2 up_opt 1 3.0 cflag cdevNotes: This inversion options file implements a blocky inversion by enforcing similarity constraints between neighboring elements (structural metric 2) only if the absolute difference in log conductivity between elements is (approximately) less than the 0.1, which is the mean of the weighting function. With a standard deviation of 0.05 (i.e., one half of the mean), the weighting function transition between one and zero is relatively smooth. Zone 1 is linked to zone 2, which specifies that similarity constraints should be applied at the zone 1/zone 2 boundary. Since zone 1 is linked to zone 2, it is not necessary to link zone 2 to zone 1. Hence, zone 2 is not linked to another zone. The third constraint block implements a minimum conductivity constraint. Weighting function 1, having a mean of zero, turns the constraint on if the value of the structural metric drops below zero, which occurs if the conductivity drops below the reference value of 0.002 S/m. When the constraint is turned on, the inversion minimizes the structural metric by moving the conductivity toward the reference value (in this case). A relative weight of 2 is specified to ensure the constraint is enforced.
Example of Anisotropic Weighting and Inequality Constraints Inversion
4 4 constraint blocks listed below 1 constrain zone 1 with this block 6 0.25 0.0 1.00 use metric 6 to encourage continuity normal to the dipping plane 1 5.0 .02 use weight function 1 with large mean to encourage smooth structure 1 2 apply these constraints at the boundary with zone 2 0 reference value (not used for structure metric 6) 1 relative weight 2 constraint zone 2 with this block (same constraints as zone 1 above) 6 0.25 0.0 1.00 1 5.0 .02 0 0 1 1 constraint zone 1 with this block 3 1.0 1.0 1.0 use structure metric 3 (log(conductivity) - log(reference)) 1 0.0 .1 use weighting function 1 to implement a lower bound inequality constraint 0 no links 0.001 reference value: lower bound = 0.001 S/m 2 double weight for stronger enforcement 1 constrain zone 1 with this block 3 1.0 1.0 1.0 use structure metric 3 (log(conductivity) - log(reference)) 2 0.0 0.1 use weighting function 2 to implement an upper bound inequality constraint 0 no links 0.02 reference value: upper bound = 0.02 S/m 2 double weight for stronger enforcement 200 0.25 0.5 start with beta = 200, reduce if % reduction is < 25, reduce by 50% 1.0 target chi-squared value is 1.0 30 50 at least 30 and at most 50 inner iterations 0.00001 1.0 lower and upper conductivity 'safety' limits 2 do not use line search 1 3.0 use data culling with a residual standard deviation of 3Note: Two additional pieces of information are provided in this example: 1) the orientation of the plane and 2) minimum and maximum conductivity limits. The orientation of the plane is provided with structural metric 6, which provides the absolute difference in log conductivity between adjacent elements, and takes as input a vector normal to the plane of preferred smoothing. Neighboring elements with centroids aligned parallel to the plane are weighted more heavily than elements aligned perpendicular to the plane, thereby fostering continuity along the plane. The minimum and maximum conductivity constraints set the minimum and maximum conductivity limits to 0.001 S/m and 0.02 S/m. This file is included in the Jupyter online tutorial in the metal_box_sheet_line example.
Example of Time Lapse Inversion Using the Baseline Solution as Reference
2 2 constraint blocks listed below 1 constrain zone 1 with this block 8 1.0 1.0 1.0 use structural metric 8 (spatial difference of temporal differences) 1 10.0 0.15 use weighting function 1 with a large mean value to impose smoothness constraints 1 2 apply the constraints across the boundary with zone 2 'ref' use reference model specified in e4d.inp as reference 1.0 relative weight for this constraint 2 constrain zone 2 with this block 8 1.0 1.0 1.0 use structural metric 8 1 10.0 0.15 use weighting function 1 with a large mean value to impose smoothness constraints 0 do not link to any zones (already linked to zone 1 in the block above) 'ref' use reference model specified in e4d.inp as reference 1.0 relative weight for this constraint 200 0.05 0.5 start beta at 500, decrease if obj. fnc. changes by less than 20%, decrease by 50% 1.0 target chi-squared value 30 50 minimum maximum number of inner iterations 0.00001 1.0 min and max allowable conductivity 2 no line search on beta, reduce beta as needed 1 3.0 use data culling with if the weighted residual >= 3.0 deviations from the meanNote: e4d.inp must specify the using the baseline model as the starting model for all files (see last line).
Example of Time Lapse Inversion Using the Previous Solution as Reference
2 2 constraint blocks listed below 1 constrain zone 1 with this block 8 1.0 1.0 1.0 use structural metric 8 (spatial difference of temporal differences) 1 10.0 0.15 use weighting function 1 with a large mean value to impose smoothness constraints 1 2 apply the constraints across the boundary with zone 2 'pref' use previous model as reference 1.0 relative weight for this constraint 2 constrain zone 2 with this block 8 1.0 1.0 1.0 use structural metric 8 1 10.0 0.15 use weighting function 1 with a large mean value to impose smoothness constraints 0 do not link to any zones (already linked to zone 1 in the block above) 'pref' use previous model as reference 1.0 relative weight for this constraint 200 0.05 0.5 start beta at 500, decrease if obj. fnc. changes by less than 20%, decrease by 50% 1.0 target chi-squared value 30 50 minimum maximum number of inner iterations 0.00001 1.0 min and max allowable conductivity 2 no line search on beta, reduce beta as needed 1 3.0 use data culling with if the weighted residual >= 3.0 deviations from the meanNote: e4d.inp must specify the using the previous model as the starting model for all files (see last line).