ModEM Overview

ModEM is a modular system of parallel computer codes for inversion of electromagnetic (EM) geophysical data, developed over the past decade at Oregon State University. The code has been structured as a flexible system, adaptable to a range of EM geophysical data types, and a range of inverse problem solution strategies, and regularization models. The organization of the ModEM code is summarized schematically in the figure below. General theory is described in Egbert and Kelbert (2012) and more specific implementation details are given in Kelbert et al. (2014). ModEM uses gradient-based search algorithms (NLCG, LBFGS) to minimize a functional that penalizes data misfit, and a regularization term based on a model covariance. ModEM is parallelized (over forward problems) using standard MPI libraries, as described in Meqbel (2009).


Some History: ModEM was initially developed by Gary Egbert and colleagues at OSU (primarily Anna Kelbert, now at USGS, Naser Meqbel, now working in industry, and Kush Tandon, deceased) as a flexible modular system of computer codes for inversion of EM data, as described in Egbert and Kelbert, 2012 and Kelbert et al., 2014. Our efforts grew out of earlier work on 3-D MT inversion with Prof. Weerachai Siripunvaraporn at Mahidol University, in Bangkok, Thailand (Siripunvaraporn et al., 2004, 2005a,b; Siripunvaraporn and Egbert 2007; 2009). The development at OSU was funded primarily by the US Department of Energy, and was initially focused on creating a test bed for experimentation with more efficient gradient-based search algorithms for multi-frequency and multi-transmitter EM inverse problems (Egbert, 2012). ModEM was written in Fortran95 following an object-oriented programming paradigm (to the extent possible with F95), and consists of interchangeable modules which in principal can support different inversion algorithms, forward modeling codes, data functionals, model parameterization and regularization. The coarse-grained parallelization (over forward/adjoint problems, using MPI) was developed by Naser Meqbel, as part of his PhD thesis at Free University of Berlin/GFZ.