PlaneSrc
Concrete subclass of Source representing a constant electric dipole distribution over an entire plane.
Contents
Description
PlaneSrc is to generate a plane wave in a homogeneous medium. It supports oblique incidence, i.e., emission in the direction different from the normal direction of the plane.
Construction
src = PlaneSrc(normal_axis, intercept, polarization) src = PlaneSrc(normal_axis, intercept, polarization, K) src = PlaneSrc(normal_axis, intercept, polarization, K, k_Bloch) src = PlaneSrc(normal_axis, intercept, polarization, K, theta, wvlen)
Input Arguments
- normal_axis: direction normal to the plane. It should be one of Axis.x, Axis.y, Axis.z.
- intercept: location of the plane in the normal_axis direction.
- polarization: direction of the dipoles distributed on the plane. It should be either one of Axis.x, Axis.y, Axis.z, or an angle in radian. When it is an instance of Axis, it should be orthogonal to normal_axis. When it is an angle in radian, it is measured in the 2D Cartesian coordinate system normal to normal_axis. For example, if normal_axis == Axis.y, then the angle is measured in the zx-plane, and therefore it is measured in the counterclockwise direction from the z-axis in the zx-plane.
- K: amplitude of the surface current density that the dipoles drive.
- kt_Bloch: in-plane Bloch wavevector. If unassigned, kt_Bloch = [0 0] is used.
- theta: oblique incidence angle measured from normal_axis. It is positive toward normal_axis \(\times\) polarization direction, and negative toward -normal_axis \(\times\) polarization direction. For example, if normal_axis == Axis.y and polarization == Axis.z, theta measured toward the +x-direction is positive, and theta measured toward the -x-direction is negative. abs(theta) should not exceed pi/2, because the waves are emitted from the both sides of the plane anyway.
- wvlen: wavelength of the plane wave in the background medium. It is required to set up the Bloch boundary condition for oblique incidence. wvlen is not the vacuum wavelength used in the frequency-domain Maxwell's equations, but the wavelength in the medium where this PlaneSrc is located.
Note
In the finite-difference grid, PlaneSrc excites dipoles at the E-field points. This poses a condition on intercept argument in the constructor: intercept should be at a dual grid point in the normal_axis direction. Therefore, make sure that intercept does not overlap with the locations of the vertices of Shape in the normal_axis direction; otherwise dynamic grid generation in maxwell_run will fail.
Example
% Create an instance of PointSrc. src = PlaneSrc(Axis.y, 0, Axis.z); % y = 0 should not be primary grid point
% Use the constructed src in maxwell_run(). [E, H] = maxwell_run({INITIAL ARGUMENTS}, 'SRCJ', src);