# Plotting¶

## A-scans¶

### plot_Ascan.py¶

This module uses matplotlib to plot the time history for the electric and magnetic field components, and currents for all receivers in a model (each receiver gets a separate figure window). Usage (from the top-level gprMax directory) is:

python -m tools.plot_Ascan outputfile


where outputfile is the name of output file including the path.

There are optional command line arguments:

• --outputs to specify a subset of the default output components (Ex, Ey, Ez, Hx, Hy, Hz, Ix, Iy or Iz) to plot. By default all components are plotted.
• -fft to plot the Fast Fourier Transform (FFT) of a single output component

For example to plot the Ez output component with it’s FFT:

python -m tools.plot_Ascan my_outputfile.out --outputs Ez -fft


## B-scans¶

### plot_Bscan.py¶

gprMax produces a separate output file for each trace (A-scan) in the B-scan. These must be combined into a single file using the outputfiles_merge.py module (described in the other utilities section). This module uses matplotlib to plot an image of the B-scan. Usage (from the top-level gprMax directory) is:

python -m tools.plot_Bscan outputfile output


where:

• outputfile is the name of output file including the path
• output is the name of output component (Ex, Ey, Ez, Hx, Hy, Hz, Ix, Iy or Iz) to plot

## Antenna parameters¶

### plot_antenna_params.py¶

This module uses matplotlib to plot the input impedance (resistance and reactance) and s11 parameter from an antenna model fed using a transmission line. It also plots the time history of the incident and reflected voltages in the transmission line and their frequency spectra. Usage (from the top-level gprMax directory) is:

python -m tools.plot_antenna_params outputfile --tln transmissionlinenumber


where:

• outputfile is the name of output file including the path
• --tln is the number of the transmission line (default is one). Transmission lines are numbered (starting at one) in the order they appear in the input file.

## Built-in waveforms¶

This section describes the definitions of the functions that are used to create the built-in waveforms, and how to plot them.

### plot_builtin_wave.py¶

This module uses matplotlib to plot one of the built-in waveforms and it’s FFT. Usage (from the top-level gprMax directory) is:

python -m tools.plot_builtin_wave type amp freq timewindow dt


where:

• type is the type of waveform, e.g. gaussian, ricker etc...
• amp is the amplitude of the waveform
• freq is the centre frequency of the waveform
• timewindow is the time window to view the waveform, i.e. the time window of the proposed simulation
• dt is the time step to view waveform, i.e. the time step of the proposed simulation

There is an optional command line argument:

• -fft to plot the Fast Fourier Transform (FFT) of the waveform

### Definitions¶

Definitions of the built-in waveforms and example plots are shown using the parameters: amplitude of one, frequency of 1GHz, time window of 6ns, and a time step of 1.926ps.

#### gaussian¶

A Gaussian waveform.

$W(t) = e^{-\zeta(t-\chi)^2}$

where $$\zeta = 2\pi^2f^2$$, $$\chi=\frac{1}{f}$$ and $$f$$ is the frequency.

#### gaussiandot¶

First derivative of a Gaussian waveform.

$W(t) = -2 \zeta (t-\chi) e^{-\zeta(t-\chi)^2}$

where $$\zeta = 2\pi^2f^2$$, $$\chi=\frac{1}{f}$$ and $$f$$ is the frequency.

#### gaussiandotnorm¶

Normalised first derivative of a Gaussian waveform.

$W(t) = -2 \sqrt{\frac{e}{2\zeta}} \zeta (t-\chi) e^{-\zeta(t-\chi)^2}$

where $$\zeta = 2\pi^2f^2$$, $$\chi=\frac{1}{f}$$ and $$f$$ is the frequency.

#### gaussiandotdot¶

Second derivative of a Gaussian waveform.

$W(t) = 2\zeta \left(2\zeta(t-\chi)^2 - 1 \right) e^{-\zeta(t-\chi)^2}$

where $$\zeta = \pi^2f^2$$, $$\chi=\frac{\sqrt{2}}{f}$$ and $$f$$ is the frequency.

#### gaussiandotdotnorm¶

Normalised second derivative of a Gaussian waveform.

$W(t) = \left( 2\zeta (t-\chi)^2 - 1 \right) e^{-\zeta(t-\chi)^2}$

where $$\zeta = \pi^2f^2$$, $$\chi=\frac{\sqrt{2}}{f}$$ and $$f$$ is the frequency.

#### ricker¶

A Ricker (or Mexican Hat) waveform which is the negative, normalised second derivative of a Gaussian waveform.

$W(t) = - \left( 2\zeta (t-\chi)^2 -1 \right) e^{-\zeta(t-\chi)^2}$

where $$\zeta = \pi^2f^2$$, $$\chi=\frac{\sqrt{2}}{f}$$ and $$f$$ is the frequency.

#### sine¶

A single cycle of a sine waveform.

$W(t) = R\sin(2\pi ft)$

and

$\begin{split}R = \begin{cases} 1 &\text{if ft\leq1}, \\ 0 &\text{if ft>1}. \end{cases}\end{split}$

$$f$$ is the frequency

#### contsine¶

A continuous sine waveform. In order to avoid introducing noise into the calculation the amplitude of the waveform is modulated for the first cycle of the sine wave (ramp excitation).

$W(t) = R\sin(2\pi ft)$

and

$\begin{split}R = \begin{cases} R_cft &\text{if R\leq 1}, \\ 1 &\text{if R>1}. \end{cases}\end{split}$

where $$R_c$$ is set to $$0.25$$ and $$f$$ is the frequency.