Analytical solution for an acoustic wave emitted by a Gaussian pulse as
described in Tam: Computational Acoustics, a wave number approach.
Appendix G.3.

The pulse is described geometrical by an origin and a halfwidth, where
center is the location of the maximum in the spherical Gaussian pulse, and
halwidth is the radius at which the pulse has half the value of the
maximum.
The height of the pulse is given by amplitude.
Note, this definition matches the gausspulse spatial function, which can be
used as an initial condition to this problem.
Additionally the speed of sound and the background pressure are required
to compute the solution.

Nodes of different colours represent the following:

Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).

Pulse height in the initial condition at the center over the background
value.

real(kind=rk),

public

::

center(3)

Location of the pulse center in 3D.

real(kind=rk),

public

::

halfwidth

Radius of the initial pulse, where half the amplitude is reached.

real(kind=rk),

public

::

background

A background value to use (result is given by background+pulse).

real(kind=rk),

public

::

speed_of_sound

Speed of sound is the velocity by which the acoustic wave is to be
transported.

Source Code

type tem_acoustic_pulse_type!> Pulse height in the initial condition at the center over the background!! value.real(kind=rk)::amplitude!> Location of the pulse center in 3D.real(kind=rk)::center(3)!> Radius of the initial pulse, where half the amplitude is reached.real(kind=rk)::halfwidth!> A background value to use (result is given by background+pulse).real(kind=rk)::background!> Speed of sound is the velocity by which the acoustic wave is to be!! transported.real(kind=rk)::speed_of_soundend type tem_acoustic_pulse_type