Go to the Homepage Go to Seafloor ElectroMagnetic Consortium website Go to About Us Research Projects Go to Resources Go to Instruments Go to Links Visit UCSD Home Page

Sharp 2DMT

Research Projects
Research Cruises
EM Instruments
Occam's Inversion
Finite Element EM Modeling
EM Concepts and Background
Student Theses
Worldwide Cruises Map


OCCAM1DCSEM - An Inversion Program for Generating Smooth 1D Models from Controlled-Source Electromagnetic and Magnetotelluric Data.

OCCAM1DCSEM is a Fortran package for generating smooth one-dimensional models from controlled-source electromagnetic and magnetotelluric data. The OCCAM1DCSEM package is built around a new 1D CSEM forward code named DIPOLE1D, which has been designed to handle a diverse number of 1D CSEM modeling scenarios. This package comes with Matlab front- and rear-end routines for editing survey data, creating the files required by OCCAM1DCSEM and for plotting the resulting inversion models and CSEM responses.

This code was developed under the sponsorship of the Seafloor Electromagnetic Methods Consortium (SEMC). After a period of early access for consortium members, this code is being made available to the general public.


  • Both OCCAM1DCSEM and DIPOLE1D are licensed under the GNU General Public License, Version 3.0. They are open source---enjoy!
  • Uses a Cartesian coordinate system
  • Models all 3 field components (x,y,z) of both the electric and magnetic fields
  • Supports inversion of real and imaginary, amplitude and phase, and polarization ellipse data
  • Receivers can be located anywhere in the model
  • Receiver sensor axes can be given a fixed rotation (supports full 3D rotation)
  • Option to solve for the receiver sensor orientations (supports solving for the full 3D rotation if z component data available)
  • Transmitters can be located anywhere in the model
  • Transmitter antenna can be rotated both horizontally and vertically
  • Model layers are parameterized in absolute depths, not thickness
  • There are no assumptions of fixed layers (you have to input the air and sea layers)
  • Handles stratified seawater conductivity layering
  • Can invert for layer conductivities both above and below the receivers and transmitters
  • Includes 1D MT inversion (alone or jointly with CSEM inversion)
  • Supports point dipoles and finite length dipoles. new February 2010.
  • Supports minimum gradient support roughness penalty. new March 2010.
  • Supports bounds on model parameters, implemented through non-linear transforms. new March 2011.

Download a zip archive of the source code, instructions, Matlab plotting routines and examples:

OCCAM1DCSEM Version 3.13, (zip file, 10 MB)

Occam1DCSEM has been downloaded times since October 22, 2009.

Not a programmer?

No worries---we have set up a web page where you can run the DIPOLE1D forward code and view automatically created CSEM response plots using only your web browser -- visit WHAM (Web Hosted Active Source Modeling).

Java Interface:

Curtin University Ph.D. candidate Andrew Pethick has written a very useful java graphical interface for CSEM modeling which uses Dipole1D for some of its calculations. Check it out--it's free and fun! http://www.mcsem.com


The forward code Dipole1D and the inversion code Occam1DCSEM are described in:

Key, K., 2009, 1D inversion of multicomponent, multi-frequency marine CSEM data: Methodology and synthetic studies for resolving thin resistive layers: Geophysics, 74, F9–F20.

The original paper describing the Occam's inversion approach is:

Constable, S. C., R. L. Parker, and C. G. Constable, 1987, Occam’s inversion –– A practical algorithm for generating smooth models from electromagnetic sounding data, Geophysics, 52 (03), 289–300.

Brief notes explaining how to bound the model parameters using non-linear transforms (PDF).

Screen shots:

Occam's inversion iterations results obtained from joint inversion of CSEM and MT data. CSEM data provide good constrains on the shallower thin resistive layer, while MT data provide good constraints on the deeper resistive basement.


Synthetic inversion tests used to study the resolution of the three fundamental transmitter orientations and the corresponding three field components for inline receivers along the y axis.


Synthetic inversion example of a finely layered model consisting of 1000 thin layers (gray lines) with large (left) and small (right) reservoirs. These were modeled with Dipole1D, and then inverted with Occam1DCSEM (bold lines) after adding synthetic noise.

The Matlab data preparation user interface CreateEMDataFile.m, which is useful for QC'ing data and then creating the data, model and startup files used by Occam1DCSEM.

Last updated: Thursday, 12-May-2016 19:59:05 PDT
email: sconstable@ucsd.edu