Electromagnetic wave propagation
Problem
We seek plane wave solutions to Maxwell's equations in a non-conducting, source-free, anisotropic linear dielectric medium
where \({\bf E}\) is the electric field, \({\boldsymbol \epsilon}\) is the bulk dielectric permittivity tensor, and \(\mu\) the bulk isotropic permeability of the medium. Note this can also be written as \(\nabla^2 {\bf E} = \mu {\boldsymbol \epsilon} {\partial^2 {\bf E}}/{\partial t^2}\).
Substituting \({\bf E}\) for a plane wave solution, \({\bf E} = {\bf E}_0 \exp[i({\bf k}\cdot {\bf x} - \omega t)]\), the problem reduces to
where \({\bf K} = {\bf k}\times{\bf k} \times\) is the matrix representation of the twice-applied cross product.
The above equation requires
Evidently, the eigenvalues and eigenvectors of \({\boldsymbol \epsilon}^{-1} {\bf K}/(\mu k^2)\) are the permitted wave velocities squared and wave polarization, respectively, where
is the wave velocity squared.
Homogenization
If wave lengths are much longer than the average grain size, the problem can be closed by approximating the bulk polycrystalline permittivity tensor by the grain-averaged permittivity tensor
constructed by averaging over all grain orientations (over the CPO).
Transversely isotropic grains
Monocrystal | Polycrystal |
---|---|
If grains are approximately transversely isotropic w.r.t. the symmetry axis \({\bf m}'\), the dielectric permittivity tensor of a single crystal can be written as $$ {\boldsymbol \epsilon}' = (2\epsilon_{t}' + \epsilon_{m}') \frac{\bf I}{3} + (\epsilon_{m}'-\epsilon_{t}') \left( {\bf m}'^2 - \frac{\bf I}{3} \right), $$ where \(\epsilon_{m}'\) and \(\epsilon_{t}'\) are the permittivities parallel and perpendicular to the symmetry axis. In this case, the grain-averaged permitivity is simply
where \(\langle {\bf m}'^2 \rangle\) is the second-order structure tensor (aka \({\bf a}^{(2)}\)).
Example for glacier ice
Experimental, bug reports are welcome.
import numpy as np
from specfabpy import specfab as sf
lm, nlm_len = sf.init(4)
nlm = np.zeros((nlm_len), dtype=np.complex64) # array of expansion coefficients
### Physical parameters (note eps=eps0*epsr, mu=mu0*mur)
epsr_m = 3.17 # relative permittivity of a single grain parallel to symmetry axis (c)
epsr_t = 3.17-0.034 # relative permittivity of a single grain perpendicular to symmetry axis (a)
mur = 1 # relative permeability of a single grain
### c-axis number distribution (nlm) from second-order structure tensor (a2)
p = np.array([0,0,1]) # preferred c-axis direction
a2 = np.einsum('i,j', p,p) # a2 if ODF = deltafunc(r-p)
nlm[:sf.L2len] = sf.a2_to_nlm(a2) # l<=2 expansion coefficients for corresponding normalized ODF
### Propagation directions of interest
theta, phi = np.deg2rad([0,90,]), np.deg2rad([0,0,]) # wave-vector directions (theta is colatitude, phi is longitude)
### Calculate phase velocities
Vi = sf.Vi_electromagnetic_tranisotropic(nlm, epsr_m, epsr_t, mur, theta,phi) # fast and slow phase velocities are V_S1=vi[0,:], V_S2=vi[1,:]
Evolving CPO
The below animation shows directional S-wave velocities for a CPO evolving under \({\hat {\bf x}}\)—\({\hat {\bf z}}\) confined compression, relative to an isotropic CPO, when subject to lattice rotation.
Orthotropic grains
Not yet supported.