GprMax

Description

From the gprMax Home Page: gprMax is open source software that simulates electromagnetic wave propagation. It uses Yee’s algorithm to solve Maxwell’s equations in 3D using the Finite-Difference Time-Domain (FDTD) method. It is designed for simulating Ground Penetrating Radar (GPR) but can also be used to model electromagnetic wave propagation for many other applications.

gprMax is command-line-driven software written in Python with performance-critical parts written in Cython. It does not feature a graphical user interface (GUI) which allows it to be very flexible and scriptable software that can run in high-performance computing (HPC) environments, i.e. on supercomputers. It has been parallelised using OpenMP which enables it to run on multiple CPUs, and features a task farm using Messaging Passing Interface (MPI).

Version

  • 3.0.0b24

Authorized Users

  • CIRCE account holders
  • SC account holders

Platforms

  • CIRCE cluster
  • SC cluster

Modules

GprMax requires the following module file to run:

  • apps/gprmax/3.0.0b24

Running GprMax on CIRCE/SC

The GprMax user guide is essential to understanding the application and making the most of it. The guide and this page should help you to get started with your simulations. Please refer to the Documentation section for a link to the guide.

  • Note on CIRCE: Make sure to run your jobs from your $WORK directory!
  • Note: Scripts are provided as examples only. Your SLURM executables, tools, and options may vary from the example below. For help on submitting jobs to the queue, see our SLURM User’s Guide.

Starting a Job - gprMax parallel standard

If, for example, you have a gprMax input file named "bench_100x100x100.in", you would set up a submit script similar to the one below to use gprMax:

  • The script below (for testing, name it “gprmax-test.sh”) can be copied into your job directory (the folder with your input files) and modified so that you can submit batch processes to the queue.
#!/bin/bash
#
#SBATCH --job-name=gprmax-test
#SBATCH --time=01:00:00
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=6
#SBATCH --output=output.%j

#### SLURM 1 processor gprMax test to run for 1 hour.

module load apps/gprmax/3.0.0b24

export OMP_NUM_THREADS=${SLURM_NTASKS}

python -m gprMax bench_100x100x100.in -benchmark

Documentation

Home Page, User Guides, and Manuals