Numerical formulation
This page summarizes the numerical method underlying PETGEM. For the full derivation and validation, see the publications listed in Publications.
Forward problem
PETGEM solves the 3D Controlled-Source Electromagnetic (CSEM) problem in the frequency domain. For a time-harmonic source, the electric field \(E\) satisfies
where \(\mu\) is the magnetic permeability, \(\sigma\) the conductivity, \(\omega\) the angular frequency, and \(J_s\) the source current density.
The field is discretized with high-order Nédélec (edge) vector finite
elements of order nord (1 to 6) on an unstructured tetrahedral mesh. These
\(H(\mathrm{curl})\)-conforming elements enforce tangential continuity
across faces and represent the curl-curl operator accurately while keeping the
number of unknowns low relative to low-order formulations. Discretization yields
the complex linear system
with
where \(N_i\) are the vector basis functions. The receiver responses are obtained by interpolating \(e\) at the receiver locations. The system is solved per frequency with PETSc (see Solver options and performance).
Inverse problem
The inverse kernel recovers a conductivity model \(m\) (one value per invertable material) by minimizing the regularized data-misfit functional
where \(d_\mathrm{obs}\) and \(d_\mathrm{pre}\) are the observed and
predicted responses, \(C_d\) the data covariance (set from the noise level),
\(m_0\) the reference model, and \(\lambda\) the Tikhonov factor
(-inv_lambda).
The gradient of \(\Phi\) is assembled by the adjoint-state method: at
each iteration, one forward and one adjoint solve per frequency yield the
sensitivity contribution without forming the full Jacobian. The model is updated
with a limited-memory BFGS (L-BFGS) scheme (-inv_lbfgs_memory,
-inv_max_iter). An optional neighbor-smoothing operator regularizes the
recovered model spatially (-inv_diag_weight); materials flagged as fixed are
excluded from the update.
Conventions
Internally the kernels use the \(e^{-i\omega t}\) time convention, so the assembled operator carries the corresponding sign; this is equivalent to the \(e^{+i\omega t}\) formulation above under complex conjugation and does not affect the computed field magnitudes. PETGEM must therefore be built against a PETSc configured with complex scalars (see Installation).