你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-06 20:46:52 +08:00
234 行
6.3 KiB
ReStructuredText
234 行
6.3 KiB
ReStructuredText
|
|
.. _plotting:
|
|
|
|
********
|
|
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:
|
|
|
|
.. code-block:: none
|
|
|
|
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:
|
|
|
|
.. code-block:: none
|
|
|
|
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 :ref:`other utilities section <utils>`). This module uses matplotlib to plot an image of the B-scan. Usage (from the top-level gprMax directory) is:
|
|
|
|
.. code-block:: none
|
|
|
|
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:
|
|
|
|
.. code-block:: none
|
|
|
|
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.
|
|
|
|
|
|
.. _waveforms:
|
|
|
|
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:
|
|
|
|
.. code-block:: none
|
|
|
|
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.
|
|
|
|
.. math:: W(t) = e^{-\zeta(t-\chi)^2}
|
|
|
|
where :math:`\zeta = 2\pi^2f^2`, :math:`\chi=\frac{1}{f}` and :math:`f` is the frequency.
|
|
|
|
.. figure:: images/gaussian.png
|
|
|
|
Example of the ``gaussian`` waveform - time domain and power spectrum.
|
|
|
|
|
|
gaussiandot
|
|
^^^^^^^^^^^
|
|
|
|
First derivative of a Gaussian waveform.
|
|
|
|
.. math:: W(t) = -2 \zeta (t-\chi) e^{-\zeta(t-\chi)^2}
|
|
|
|
where :math:`\zeta = 2\pi^2f^2`, :math:`\chi=\frac{1}{f}` and :math:`f` is the frequency.
|
|
|
|
.. figure:: images/gaussiandot.png
|
|
|
|
Example of the ``gaussiandot`` waveform - time domain and power spectrum.
|
|
|
|
|
|
gaussiandotnorm
|
|
^^^^^^^^^^^^^^^
|
|
|
|
Normalised first derivative of a Gaussian waveform.
|
|
|
|
.. math:: W(t) = -2 \sqrt{\frac{e}{2\zeta}} \zeta (t-\chi) e^{-\zeta(t-\chi)^2}
|
|
|
|
where :math:`\zeta = 2\pi^2f^2`, :math:`\chi=\frac{1}{f}` and :math:`f` is the frequency.
|
|
|
|
.. figure:: images/gaussiandotnorm.png
|
|
|
|
Example of the ``gaussiandotnorm`` waveform - time domain and power spectrum.
|
|
|
|
|
|
gaussiandotdot
|
|
^^^^^^^^^^^^^^
|
|
|
|
Second derivative of a Gaussian waveform.
|
|
|
|
.. math:: W(t) = 2\zeta \left(2\zeta(t-\chi)^2 - 1 \right) e^{-\zeta(t-\chi)^2}
|
|
|
|
where :math:`\zeta = \pi^2f^2`, :math:`\chi=\frac{\sqrt{2}}{f}` and :math:`f` is the frequency.
|
|
|
|
.. figure:: images/gaussiandotdot.png
|
|
|
|
Example of the ``gaussiandotdot`` waveform - time domain and power spectrum.
|
|
|
|
|
|
gaussiandotdotnorm
|
|
^^^^^^^^^^^^^^^^^^
|
|
|
|
Normalised second derivative of a Gaussian waveform.
|
|
|
|
.. math:: W(t) = \left( 2\zeta (t-\chi)^2 - 1 \right) e^{-\zeta(t-\chi)^2}
|
|
|
|
where :math:`\zeta = \pi^2f^2`, :math:`\chi=\frac{\sqrt{2}}{f}` and :math:`f` is the frequency.
|
|
|
|
.. figure:: images/gaussiandotdotnorm.png
|
|
|
|
Example of the ``gaussiandotdotnorm`` waveform - time domain and power spectrum.
|
|
|
|
|
|
ricker
|
|
^^^^^^
|
|
|
|
A Ricker (or Mexican Hat) waveform which is the negative, normalised second derivative of a Gaussian waveform.
|
|
|
|
.. math:: W(t) = - \left( 2\zeta (t-\chi)^2 -1 \right) e^{-\zeta(t-\chi)^2}
|
|
|
|
where :math:`\zeta = \pi^2f^2`, :math:`\chi=\frac{\sqrt{2}}{f}` and :math:`f` is the frequency.
|
|
|
|
.. figure:: images/ricker.png
|
|
|
|
Example of the ``ricker`` waveform - time domain and power spectrum.
|
|
|
|
|
|
sine
|
|
^^^^
|
|
|
|
A single cycle of a sine waveform.
|
|
|
|
.. math:: W(t) = R\sin(2\pi ft)
|
|
|
|
and
|
|
|
|
.. math::
|
|
|
|
R =
|
|
\begin{cases}
|
|
1 &\text{if $ft\leq1$}, \\
|
|
0 &\text{if $ft>1$}.
|
|
\end{cases}
|
|
|
|
:math:`f` is the frequency
|
|
|
|
.. figure:: images/sine.png
|
|
|
|
Example of the ``sine`` waveform - time domain and power spectrum.
|
|
|
|
|
|
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).
|
|
|
|
.. math:: W(t) = R\sin(2\pi ft)
|
|
|
|
and
|
|
|
|
.. math::
|
|
|
|
R =
|
|
\begin{cases}
|
|
R_cft &\text{if $R\leq 1$}, \\
|
|
1 &\text{if $R>1$}.
|
|
\end{cases}
|
|
|
|
where :math:`R_c` is set to :math:`0.25` and :math:`f` is the frequency.
|
|
|
|
.. figure:: images/contsine.png
|
|
|
|
Example of the ``contsine`` waveform - time domain and power spectrum.
|
|
|
|
|