Features and Algorithms

Summary -- further details are provided in links


  • written in Fortran 95, following an object oriented approach (to the extent possible) with interchangeable modules. A truly object oriented (OO) implementation in Fortran 2008 is currently under development.


  • modular program structure supports interchangeable search algorithms, forward modelling schemes, data functionals, model parameterization and regularization--in different combinations, although in the stable version choices are somewhat limited. This structure simplify implementation of inversions for a range of EM geophysical data types, including CSEM, ZTEM, semi-airborne, DC resistivity. Some developments along these lines have been completed, but these are not yet available in the stable version.


  • a range of data types are supported in the stable version -- full or partial impedance, apparent resistivity and phase, phase tensors, vertical field (tipper) and interstation transfer functions are all currently supported. It is simple to add new data types, as exemplified by Tietze et al. (2015).


  • forward modelling is based on a 3-D finite difference staggered grid electric field solver. Several Krylov space solvers (QMR and BCG) are currently supported. A divergence correction is implemented, but the regularization approach of Dong and Egbert (2018) does not require this. There are two implementations of the forward solver: matrix-free (the standard) and sparse matrix.



  • a simple cell-based model parameterization is used. The regularization penalizes deviations from a prior, with smoothness in the deviations enforced through a model covariance. This allows parts of the model space to be “frozen”, discontinuities across flat or sloping interfaces, and spatially variable covariance length scales.


  • NLCG is the default (and most used) search algorithm for ModEM3DMT; other schemes include LBFGS and DCG (data space conjugate gradients) are implemented in the stable version.