About the software

gprMax is open source software that solves Maxwell’s equations using the Finite-Difference Time-Domain (FDTD) method. It uses Yee’s algorithm, with central-difference expressions for the spatial and temporal derivatives that are second-order accurate, and supports both two- and three-dimensional models.
The software began in research on the forward problem of Ground Penetrating Radar (GPR) in the 1990s, and GPR is what gives gprMax its name. After nearly three decades of development, version 4 is a general-purpose research platform for time-domain computational electromagnetics. GPR remains a core application — assessing bridges and roads, locating buried utilities, mapping glaciers, finding anti-personnel landmines — alongside antenna and microwave modelling, electromagnetic scattering and radar cross section, bioelectromagnetics and dosimetry, and radiometry. See what researchers are doing with it, across more than 1,600 publications.
gprMax is principally written in Python 3 with performance-critical parts in Cython. It is driven from the command line rather than through a general-purpose GUI, which keeps it scriptable and means it runs equally well on a laptop or in high-performance computing (HPC) environments. Models can be written as simple text input files, parameterised with Python blocks, or built entirely programmatically with the full Python API; the Marimo toolbox adds interactive dashboards for building introductory models and inspecting output.
Simulations can be accelerated on a range of hardware: the CPU solver is parallelised with OpenMP; OpenCL supports both CPUs and GPUs; and there are GPU solvers for NVIDIA CUDA and Apple Metal on macOS with M-series chips. MPI support enables larger-scale, multi-node simulations on HPC systems, either by domain decomposition of a single large model or as a task farm across many models. The CPU, CUDA, and OpenCL solvers all offer single- or double-precision field storage.
Features
gprMax has a comprehensive set of features for general electromagnetic simulation as well as for GPR modelling. Items marked New arrived with v4.0.0. Everything below is described in detail, with examples, in our User Guide.
Sources, boundaries & guided structures

- A wide range of sources: Hertzian and magnetic dipoles, hard and resistive voltage sources, transmission lines, magnetic-frill and rational-network feeds, and plane-wave excitation through a total-field/scattered-field interface New
- Eigenmode sources & ports for guided structures — waveguide excitation with S-parameter outputs and multi-port support New
- PEC and PMC symmetry boundaries — solve half or quarter of a symmetric problem at a fraction of the cost New
- Built-in libraries of antenna models
- Surface-impedance boundaries — model an opaque conductor without meshing its skin depth, with dispersion supplied by a rational ADE and Foster presets for common metals New
- Advanced higher-order PML absorbing boundaries
Outputs & analysis

- Near-to-far-field transformations — Kirchhoff surface-integral, equivalent-current, and frequency-domain formulations, including antennas over layered ground; these supply radiation patterns, antenna gain and directivity, and radar cross section (RCS) New
- Specific absorption rate (SAR) and absorbed power density outputs for bioelectromagnetics and dosimetry, with radiometric absorption weighting for radiometry New
- S11 and input impedance from voltage, transmission-line, magnetic-frill and rational-network sources, and full multi-port S-parameters from eigenmode ports; field snapshots and geometry views
Materials & geometry
- Dispersive materials (multi-pole Debye, Lorentz, or Drude) and anisotropy
- Versioned material databases — reusable electromagnetic properties without copying pole lists into every model New
- Modelling of soils with realistic dielectric and geometric properties, heterogeneous objects, and rough surfaces
- Tagged geometry import from STL and STEP CAD files, plus medical volumes such as the AustinMan & AustinWoman human phantoms New
- Subgridding — fine geometry inside a coarser model; currently the double-precision CPU solver only New
Workflow & scripting
- A full Python API for building parameterised models and simulations programmatically New
- 2D TE and TM modes as well as full 3D New
- User-contributed toolboxes: DebyeFit (including the CRIM mixing model), FMCW and SFCW radar, antenna patterns, impulse response, landmine models, and Marimo dashboards New
- Open, robust file formats: HDF5 outputs and VTK geometry and snapshot files
