LineSrc
Concrete subclass of Source representing a constant electric dipole distribution along a line.
Contents
Description
LineSrc is to generate a cylindrical wave in a homogeneous medium. It can creates a cylindrical wave propagating not only in the radial direction, but also in the direction slanted toward the line axis. It also supports the polarization normal to the line axis.
Construction
src = LineSrc(axis, intercept) src = LineSrc(axis, intercept, polarization) src = LineSrc(axis, intercept, polarization, IorK) src = LineSrc(axis, intercept, polarization, IorK, ka_Bloch) src = LineSrc(axis, intercept, polarization, IorK, theta, wvlen)
Input Arguments
- axis: direction of the line. It should be one of Axis.x, Axis.y, Axis.z.
- intercept: location of the line in the plane normal to the line. For axis == Axis.y, it is in the format of [z x].
- polarization: direction of the dipoles distributed on the plane. It should be one of Axis.x, Axis.y, Axis.z. If unassigned, polarization = axis is used.
- IorK: for polarization == axis, complex amplitude of the current that the dipoles drive; for polarization ~= axis, complex amplitude of the sheet current density that the dipoles drive. If unassigned, IorK = 1.0 is used.
- ka_Bloch: Bloch wavevector in the axis of this line. If unassigned, ka_Bloch = 0 is used.
- theta: oblique incidence angle. abs(theta) should not exceed pi/2. If unassigned, theta = 0.0 is used.
- wvlen: wavelength of the cylindrical 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 LineSrc is located.
Note
In the finite-difference grid, the dipoles in LineSrc are located at the E-field points. This poses a condition on intercept argument in the constructor: if polarization == axis, both elements of intercept should be at dual grid points; if polarization ~= axis, the element of intercept corresponding to the polarization component should be at a primary grid point, and the other element of intercept should be at a dual grid point. Therefore, make sure that the elements of intercept at primary grid points do not overlap with the locations of the vertices of Shape; otherwise dynamic grid generation in maxwell_run will fail.
Example
% Create an instance of LineSrc.
src = LineSrc(Axis.z, [0 0]);
% Use the constructed src in maxwell_run(). [E, H] = maxwell_run({INITIAL ARGUMENTS}, 'SRC', src);