Excitation Sources
At the start of a simulation, electric or magnetic fields are introduced into the simulation box, helping establish initial conditions for the system. This is done by setting the numerical values of the field at specified Yee cells. Usually, the excitation source is created indirectly using high-level Ports. However, sometimes a satisfactory port is unavailable for the simulated structure, making it necessary to create custom excitation sources using low-level functions. This allows one to introduce an excitation with a specific location, field type, distribution, and weighting function.
Custom excitation is also needed for calculating a structure’s Radar Cross Section (RCS), which requires simulating a free-space plane wave in a special mode called Total-Field Scattered-Field (TFSF).
Standard Excitation
A standard excitation source is created by assigning it to a box primitive, which defines it position and size. Both E-field and H-field excitations are supported.
The excitation can either be hard or soft. A hard excitation forces the field at the source points to exactly take the field values of the source, ignoring any other incoming wave e.g. from reflections. For soft sources the field values at source points are the superposition of the defined source and other travelling waves.
Matlab/Octave
AddExcitation()
function definition:
CSX = AddExcitation(CSX, name, type, excite, varargin)
CSX
: CSX-struct created by InitCSXname
: Property name for the excitation.type
:0
: E-field soft excitation.1
: E-field hard excitation.2
: H-field soft excitation.3
: H-field hard excitation.10
: Plane wave excitation.
excite
: Excitation vector, e.g.[2 0 0]
for excitation of 2 V/m inx
direction.varargin
: Additional options:Delay
: Setup an excitation time delay in seconds.PropDir
: Direction of plane wave propagation (plane wave excitation only).
Python
AddExcitation()
function definition:
excitation = AddExcitation(name, exc_type, exc_val, **kw)
excitation
: An instance ofCSPropExcitation
.name
: Property name for the excitation.type
:0
: E-field soft excitation.1
: E-field hard excitation.2
: H-field soft excitation.3
: H-field hard excitation.10
: Plane wave excitation.
exc_val
: Excitation vector, e.g.[2, 0, 0]
for excitation of 2 V/m inx
direction.**kw
: Additional options, currently unimplemented.
The created CSPropExcitation
instance
has the following useful methods (not exhaustive):
SetDelay(val)
: Set signal delay for this property.SetPropagationDir(val)
: Set the propagation direction (plane wave excitation only).
Example
Add a 400 MHz sinusoidal line excitation (short dipole):
% Octave
f0 = 400e6;
FDTD = SetSinusExcite(FDTD, f0)
CSX = AddExcitation(CSX, 'infDipole', 1, [1 0 0]);
start = [-dipole_length/2, 0, 0];
stop = [+dipole_length/2, 0, 0];
CSX = AddBox(CSX, 'infDipole', 1, start, stop);
# Python
TBD.
Total Field / Scattered Field Excitation
To create a plane wave excitation in the sense of a Total Field / Scattered
Field (TFSF) approach, the AddPlaneWaveExcite()
function is used.
This type of source becomes useful if the scattered field of an object is
of interest, such as in Radar Cross Section (RCS) simulations.
The field from the excitation is confined to the box defined for the source, the scattered field will propagate beyond the box. A plane wave excitation must not intersect with any kind of material. This excitation type can only be applies in air/vacuum and completely surrounding a structure. The plane wave source has to be assigned to a box primitive which defines the position and extend of the field.
As an example, see the Metal Sphere Radar Cross Section example in the Tutorial section.
Matlab/Octave
AddPlaneWaveExcite()
function definition:
CSX = AddPlaneWaveExcite(CSX, name, k_dir, E_dir, <f0, varargin>)
CSX
: CSX struct created byInitCSX
.name
: Property name for the excitation.k_dir
: Unit vector of wave progation direction.E_dir
: Electric field polarization vector (must be orthogonal tok_dir
).f0
: Frequency for numerical phase velocity compensation (optional).
Python
The same AddExcitation()
is used for plane wave
excitations. Its function definitions are repetedly here for cross-referencing:
excitation = AddExcitation(name, exc_type, exc_val, **kw)
excitation
: An instance ofCSPropExcitation
.name
: Property name for the excitation.type
:10
: Plane wave excitation.
exc_val
: Electric field polarization vector (must be orthogonal tok_dir
).**kw
: Additional options, currently unimplemented.
The created CSPropExcitation
instance
has the following useful methods (not exhaustive):
SetPropagationDir(k_dir)
: Unit vector of wave progation direction.SetFrequency(f0)
: Frequency for numerical phase velocity compensation (optional).
Example
Add a Gaussian pulse as a TFSF source:
FDTD = SetGaussExcite(FDTD, 0.5 * (f_start + f_stop), 0.5 * (f_stop - f_start));
inc_angle = 0 / 180 * pi; %incident angle on the x-axis
k_dir = [cos(inc_angle) sin(inc_angle) 0]; % plane wave direction
E_dir = [0 0 1]; % plane wave polarization --> E_z
f0 = 500e6; % frequency for numerical phase velocity compensation
CSX = AddPlaneWaveExcite(CSX, 'plane_wave', k_dir, E_dir, f0);
% source is in the box defined by start and stop
start = [-100 -100 -100];
stop = [100 100 100];
CSX = AddBox(CSX, 'plane_wave', 0, start, stop);
# Python
TBD.