Theory¶
These sections give an overview over theory that underlies the different aspects of acoustotreams. For more in-depth information, there is also a list of associated Publications.
Master equations of linear monochromatic acoustics¶
The master equations that describe propagation of pressure waves in nonelastic media can be written in frequency domain in the absence of external sources and shear (transverse) waves as [1]
where \(p = p(\mathbf{r}, \omega)\) and \(\mathbf v = \mathbf v(\mathbf r, \omega)\)
are the pressure and velocity fields (acoustotreams.pfield(), acoustotreams.vfield()).
All these quantities are complex valued fields, that depend on the angular frequency \(\omega\) and
the position \(\mathbf r\). The material parameters are the speed of sound \(c\), and
the mass density \(\rho\). Conventionally, within acoustotreams the (air) wave number
\(k_0 = \frac{\omega}{c_0}\) is generally used to express the frequency. Here \(c_0\) is
the speed of sound in air being 343 m/s.
For the transformation to the time domain we use for a general function \(f(\omega)\)
as Fourier transformation convention, and thus the inverse transformation is
Solutions to the scalar Helmholtz equation¶
Instead of immediatly solving equations from above, we will study the Helmholtz equation which is commonly encountered when studying wave phenomena first. This section mainly relies on [2].
The scalar Helmholtz equation is
where \(\Delta\) is the Laplace operator. Note, that by applying the divergence operator on equation \(\boldsymbol{\nabla}p=\mathrm i \omega \mathbf{v}\) and using the equation \(\boldsymbol{\nabla} \cdot \mathbf{v} = \frac{\mathrm i \omega}{\rho c^2}p\), the scalar Helmholtz equation can be obtained. Alternatively, we can apply the gradient to the second equation and get the vector Helmholtz equation
If we denote \(\psi\) as a solution to the scalar Helmholtz equation, solutions to the vector Helmholtz equation can be constructed as follows
where \(\mathbf c\) is a steering vector that depends on the coordinate system used for the solution \(\psi\). We will focus the following discussion on the three cases of planar, cylindrical, and spherical solutions, where the coordinate systems are chosen to be Cartesian, cylindrical, and spherical.
The first type of solution is longitudinal waves that obey constraint \(\boldsymbol{\nabla} \times \mathbf L = 0\), while the second and third ones are transverse waves with the constraint \(\boldsymbol{\nabla} \cdot \{\mathbf M,\mathbf N\} = 0\). In the following, we will limit the discussion of the transverse waves, because acoustic waves in a medium with \(c^{t} \equiv 0\) can be described by scalar pressure fields and corresponding longitudinal fields.
Plane waves¶
In Cartesian coordinates the solution to the scalar Helmholtz equation are simple plane waves
given by acoustotreams.special.spw_Psi() where the wave vector fulfils
\(|\mathbf k|^2 = k_x^2 + k_y^2 + k_z^2 = k^2\). The corresponding
longitudinal vector plane wave is
given by acoustotreams.special.vpw_L(). We normalized this wave by \(k\) in the medium
such that it has unit strength for real-valued wave vectors.
Cylindrical waves¶
The cylindrical solutions can be constructed mostly analogously to the plane waves. The solutions in cylindrical coordinates are
where \(k_z \in \mathbb R\) and \(m \in \mathbb Z\) are the parameters of the
solution (acoustotreams.special.scw_rPsi(), and acoustotreams.special.scw_Psi()). The radial part
of the wave vector is defined as \(k_\rho = \sqrt{k^2 - k_z^2}\) with the imaginary part
of the square root to be taken non-negative. Note that here \(\rho\) is a radial distance
of cylindrical coordinates. The functions \(Z_m^{(n)}\) are the Bessel and Hankel functions.
For a complete set of solutions, it is necessary to select two of them. We generally use the (regular)
Bessel functions \(J_m = Z_m^{(1)}\) and the Hankel functions of the first kind
\(H_m^{(1)} = Z_m^{(3)}\), which are singular at \(\rho \to 0\) and correspond to radiating waves,
(acoustotreams.special.jv(), acoustotreams.special.hankel1()). The vector cylindrical waves are then
where we, again, normalized the functions by by \(k\) in the medium (acoustotreams.special.vcw_rL(),
and acoustotreams.special.vcw_L()).
Spherical waves¶
Finally, we define the spherical wave solutions
given by (acoustotreams.special.ssw_rPsi(), and acoustotreams.special.ssw_Psi())
where \(z_l^{(n)}\) are the spherical Bessel and Hankel functions.
We choose \(j_l = z_l^{(1)}\) and \(h_l^{(1)} = z_l^{(3)}\) in complete analogy
to the cylindrical waves case (acoustotreams.special.spherical_jn(),
acoustotreams.special.spherical_hankel1()). \(Y_{lm}\) are the spherical harmonics
(acoustotreams.special.sph_harm()). The value \(l \in \mathbb N \cup \{0\}\) refers to
the angular momentum or degree. The projection of the angular momentum onto the z axis or order is
\(m \in \mathbb Z\) with \(|m| \leq l\). Hence, the vector spherical waves are defined as
(acoustotreams.special.vsw_rL(), and acoustotreams.special.vsw_L()) where
are the vector spherical harmonics (acoustotreams.special.vsh_X(),
acoustotreams.special.vsh_Y(), and acoustotreams.special.vsh_Z()).
These are themselves defined by the functions \(\pi_l^m(x) = \frac{m P_l^m(x)}{\sqrt{1 - x^2}}\),
\(\tau_l^m(x) = \frac{\mathrm d}{\mathrm d \theta}P_l^m(x = \cos\theta)\), and
the associated Legendre polynomials \(P_l^m\) (acoustotreams.special.pi_fun(),
acoustotreams.special.tau_fun(), and acoustotreams.special.lpmv()).
The vector spherical harmonics are orthogonal to each other and normalized to 1 upon integration over the
solid angle.
Solutions to the acoustic master equations¶
Up to now, we set up the acoustic master equations and found solutions to the scalar Helmholtz equation. The solutions to the acoustic master equations are then
where \(\nu\) is just a placeholder for the actual parameters that index a concrete set of solutions. The inverse prefactor \(Z = \rho c\) is called acoustic impedance.