An Oversampling Technique for Multiscale Finite Volume Method to Simulate Frequency-domain Electromagnetic Responses L. Caudillo-Mata⇤, E. Haber, and C. Schwarzbach Geophysical Inversion Facility, Earth, Ocean and Atmospheric Sciences Department, University of British Columbia. Finite-Difference Time-Domain Method using Yee’s Algorithm. The electric field components form the edges of the cube, and the magnetic field components form the normal to the faces of the cube. Thus, the required program execution time may be excessive. Its accuracy is at least one order of magnitude worse than that of the method.
![](images/Yee-cube.png)In order to discretize Maxwell's equations with second-order accuracy for homogeneous regions where there are no discontinuous material boundaries, FDTD methods store different field components for different grid locations. This discretization is known as a Yee lattice.
The form of the Yee lattice in 3d is shown in the schematic above for a single cubic grid voxel with dimensions $Delta x times Delta x times Delta x$. The three components of E are stored on the edges of the cube in the corresponding directions, while the components of H are stored on the cube faces.
More precisely, let a coordinate $(i,j,k)$ in the grid correspond to:
$$mathbf{x} = (i hat{mathbf{e}}_1 + j hat{mathbf{e}}_2 + k hat{mathbf{e}}_3) Delta x$$
where $hat{mathbf{e}}_k$ denotes the unit vector in the k-th coordinate direction. Then, the $ell$th component of $mathbf{E}$ or $mathbf{D}$ (or $mathbf{P}$) is stored for the locations:
$$(i,j,k)+ frac{1}{2} hat{mathbf{e}}_ell Delta x$$
The $ell$th component of $mathbf{H}$, on the other hand, is stored for the locations:
$$(i+frac{1}{2},j+frac{1}{2},k+frac{1}{2})-frac{1}{2} hat{mathbf{e}}_ell Delta x$$
In two dimensions, the arrangement is similar except that we set $hat{mathbf{e}}_3=0$. The 2d Yee lattice for the P-polarization (E in the xy plane and H in the z direction) is shown in the figure below.
![](images/Yee-te.png)The consequence of the Yee lattice is that, whenever you need to access field components, e.g. to find the energy density $(mathbf{E}^* cdot mathbf{D} + |mathbf{H}|^2)/2$ or the flux $textrm{Re}, mathbf{E}^* times mathbf{H}$, then the components need to be interpolated to some common point in order to remain second-order accurate. Meep automatically does this interpolation for you wherever necessary — in particular, whenever you compute energy density or Poynting flux, or whenever you output a field to a file, it is stored at the centers of each grid voxel: $(i+0.5,j+0.5,k+0.5)$.