Changes

EM.Tempo

25,218 bytes added, 14:07, 7 August 2019
[[Image:Splash-fdtd.jpg|right|800px720px]]<strong><font color="#961717" size="4">Fast Multi-Core And Multicore & GPU-Accelerated FDTD Solvers For Tackling The for Simulating the Most Complex Electromagnetic Modeling Problems</font></strong>
<table>
<tr>
<td>[[image:Cube-icon.png | link=Getting_Started_with_EM.Cube]] [[image:cad-ico.png | link=Building_Geometrical_Constructions_in_CubeCAD]] [[image:prop-ico.png | link=EM.Terrano]] [[image:postatic-ico.png | link=EM.IlluminaFerma]] [[image:staticplanar-ico.png | link=EM.FermaPicasso]] [[image:planarmetal-ico.png | link=EM.PicassoLibera]] [[image:metalpo-ico.png | link=EM.LiberaIllumina]] </td>
<tr>
</table>
[[Image:Tutorial_icon.png|40px30px]] '''[[EM.Cube#EM.Tempo_Tutorial_Lessons Tempo_Documentation | EM.Tempo Tutorial Gateway]]'''
[[Image:Back_icon.png|40px30px]] '''[[EM.Cube | Back to EM.Cube Main Page]]'''
==Product Overview==
=== EM.Tempo in a Nutshell ===
EM.Tempo is a powerful time-domain electromagnetic simulator for full-wave modeling of 3D radiation, scattering and propagation problems. It features a highly efficient Finite Difference Time Domain (FDTD) simulation engine that has been optimized for speed and memory usage. EM.Tempo brings to your desktop the ultimate in computational power. Its FDTD solver has been parallelized to take full advantage of multi-core processor architectures. With a large variety of geometrical, material and excitation features including open-boundary and periodic structures, you can use EM.Tempo as a general purpose 3D field simulator for most of your electromagnetic modeling needs. EM.Tempo's new advanced simulation capabilities are your the key to the a thorough understanding of wave the interaction in of electromagnetic waves with complex media such as anisotropic composites, metamaterials or biological environmentsor with passive and active devices and nonlinear circuits.
EM.Tempo is the outcome of evolution of our older FDTD simulation tool, EM.Lounge, first introduced has undergone several evolutionary development cycles since its inception in 2004. The original simulation code engine utilized an FDTD formulation based on the uniaxial perfectly matched layer (UPML) boundary termination. Through subsequent expansionsSubsequently, a far superior more advanced boundary termination based on the convolutional perfectly matched layer (CPML) was implemented, which performs impeccably with a far superior performance for all oblique wave incidences in different types of media. EM.Tempo now has the ability to model laterally infinite layered structures as well as using CPML walls that touch material media. A novel formulation of periodic boundary conditions with oblique plane wave incidenceswas implemented based on the constant transverse wavenumber method (or direct spectral FDTD). In 2013 we introduced an Open-MP optimized multi-core version of the FDTD engine as well as a hardware-accelerated versions solver that runs on CUDA-enabled graphical processing unit (GPU) platforms. Both of these fast solvers are now a standard part of the EM.Tempo Pro package.
[[Image:Tutorial_iconInfo_icon.png|40px30px]] Click here to access for an overview of the '''[[EM.Cube#EM.Tempo_Tutorial_Lessons Basic Principles of The Finite Difference Time Domain Method | EM.Tempo Tutorial GatewayBasic FDTD Theory]]'''.
<table>
<tr>
<td>
[[Image:ship_image1ART GOLF Fig title.png|thumb|left|600px400px|Analyzing an imported battleship model with The 3D far-field radiation pattern of a vehicle-mounted antenna structure simulated by EM.Tempo.]]
</td>
</tr>
=== EM.Tempo as the FDTD Module of EM.Cube ===
[[EM.Tempo]] is a general-purpose EM simulator than can handle solve most types of electromagnetic modeling problems involving arbitrary geometries and complex material variations in both time and frequency domains. It has also serves as been integrated within the full-wave '''FDTD Module''' of '''[[EM.Cube]]''', a comprehensive, integrated, modular electromagnetic modeling simulation environmentas its full-wave "FDTD Module". EM.Tempo shares the visual interface, 3D parametric CAD modeler, data visualization tools, and many more utilities and features collectively known as [[Building Geometrical Constructions in CubeCAD | CubeCAD]] with all of [[EM.Cube]]'s other computational modules.
[[Image:Info_icon.png|40px30px]] Click here to learn more about '''[[Getting_Started_with_EM.Cube | EM.Cube Modeling Environment]]'''.
=== The Advantages & Limitations of EM.Tempo's FDTD Simulator === A time domain simulation like FDTD offers several advantages over frequency domain simulations. In certain applications, the time domain signature or behavior of a system, e.g. the transient response of a circuit or an antenna, is sought. In other applications, you may need to determine the wideband frequency response of a system. In such cases, using a frequency domain technique, you have to run the simulation engine many times to adequately sample the specified frequency range. In contrast, using the FDTD method requires a single-run simulation. The temporal field data are transformed into the Fourier domain to obtain the wideband frequency response of the simulated system. Among other advantages of the FDTD method are its versatility in handling complex material compositions as well as its superb numerical stability. It is worth noting that unlike most frequency domain methods, the FDTD technique does not involve numerical solution of large ill-conditioned matrix equations that are often very sensitive to the mesh quality. Like every numerical technique, the FDTD method has disadvantages, too. Adding the fourth dimension, time, to the computations increases the size of the numerical problem significantly. Unfortunately, this translates to both larger memory usage and longer computation times. Note that the field data are generated in both the 3D space and time. EM.Tempo uses a staircase "Yee" mesh to discretize the physical structure. This works perfectly fine for rectangular objects that are oriented along the three principal axes. In the case of highly curved structures or slanted surfaces and lines, however, this may compromise the geometrical fidelity of your structure. EM.Tempo provides a default adaptive FDTD mesher that can capture the fine details of geometric contours, slanted thin layers, surfaces, etc. to arbitrary precision. However, with smaller mesh cells, the stability criterion leads to smaller time steps; hence, longer computation times. Another disadvantage of the FDTD technique compared to naturally open-boundary methods like the method of moments (MoM) is its finite-extent computational domain. This means that to model open boundary problems like radiation or scattering, absorbing boundary conditions are needed to dissipate the incident waves at the walls of the computational domain and prevent them from reflecting back into the domain. The accuracy of the FDTD simulation results depends on the quality of these absorbers and their distance from the actual physical structure. EM.Tempo provides high quality perfectly matched layer (PML) terminations at the boundaries, which can be placed fairly close to your physical structure to reduce the total size of the computational domain. <table><tr><td>[[Image:Info_iconAirplane Mesh.png|40px]] Click here to learn more about the basic functionality of '''[[Building_Geometrical_Constructions_in_CubeCAD thumb| CubeCADleft|480px|The Yee mesh of an imported aircraft CAD model.]]'''.</td></tr></table>
== EM.Tempo Features at a Glance ==
PEC, PMC and dielectric materials and thin wires</li>
<li>
Anisotropic Uniaxial and fully anisotropic materials with four complete constitutive tensors</li>
<li>
Dispersive materials of Debye, Drude and Lorentz types with arbitrary number of poles and generalized metamaterials</li>
<li>
Voxel databases for pointwise grid definition Generalized uniaxial and doubly negative refractive index metamaterials with arbitrary numbers of inhomogeneous both electric and magnetic poles</li> <li> Two types of gyrotropic materials: ferrites and magnetoplasmas</li>
<li>
PEC, PMC and convolutional perfectly match layer (CPML) boundary conditions</li>
</ul>
=== Sources, Ports & Lumped Devices ===
<ul>
<li>
Lumped voltage sources with internal resistanceplaced on a PEC line or thin wire object with an arbitrary orientation</li>
<li>
Distributed sources with uniform, sinusoidal and edge-singular profiles</li>
<li>
Multi-port and coupled port definitions</li>
<li>
Two types of filamentary current sources: Hertzian short dipole radiators with arbitrary orientation and long wire current sources aligned along one of the principal axes with a uniform, triangular or sinusoidal current distribution profile</li>
<li>
Plane wave excitation with linear and circular polarizations</li>
Gaussian beam excitation</li>
<li>
Passive RLC lumped loads and nonliear diode elementsHuygens sources</li>
<li>
Source arrays with weight distribution &amp; phase progression</li>
<li>
Arbitrary user-defined temporal excitation waveforms using mathematical expressions and Python functions</li>
<li>
Passive lumped devices: R, L, C, series RL and parallel RC and nonlinear diode device</li>
<li>
Active lumped one-port and two-port devices placed on PEC lines aligned along one of the principal axes with arbitrary Netlist definitions</li>
<li>
Active distributed one-port and two-port devices placed under microstrip lines with arbitrary Netlist definitions</li>
</ul>
[[Image:Gauss2.gif|thumb|400px|Animating the propagation of a Gaussian beam in a left-handed metamaterial block with EM.Tempo.]]
=== Mesh Generation ===
<ul>
<li>
Fast generation of Yee grid approximation mesh of solids, surfaces and curves</li>
<li>
Geometry-aware and material-aware adaptive mesh generator with gradual grid transitions</li>
<li>
Fixed-cell uniform mesh generator with three unequal cell dimensions</li> <li> Mesh view with mesh three principal grid profilerprofilers</li>
<li>
Manual control of mesh parameters and fixed grid points</li>
<ul>
<li>
FullWideband full-wave simulation of 3D structures</li> <li> Transient analysis with arbitrary user defined excitation waveforms</li> <li> Multi-frequency computation of frequency domain quantities in a single FDTD simulation run</li>
<li>
OpenMP-parallelized multi-core and multi-thread FDTD simulation engine</li>
<li>
GPU-accelerated FDTD simulation engine based on NVIDIA CUDA platforms</li>
<li>
User defined excitation waveforms</li>
<li>
Total-field-scattered-field analysis of plane wave and Gaussian beam excitation</li>
<li>
Infinite material half-space Green&#39;s functions for calculation of far fields in presence of a lossy ground</li>
<li>
Accelerated computation of S-parameters of resonant structures based on Prony's method of exponential interpolation</li>
<li>
Parametric sweeps of variable object properties or source parameters including frequency and angular sweeps</li>
<li>
Multi-variable and multi-goal optimization of structurestructures</li>
<li>
Remote simulation capability</li> <li> Both Windows and Linux versions Automated generation of the FDTD compact reduced order surrogate models from full-wave simulation engine availabledata</li>
</ul>
<ul>
<li>
Near -field intensity (colorgrid), contour and surface plots (vectorial - amplitude &amp; phase)</li>
<li>
Near -field probes for monitoring fields field components in both time &amp; frequency domains</li>
<li>
Far -field radiation patterns: 3-D 3D pattern visualization and 2-D 2D polar and Cartesian graphs</li>
<li>
Far -field characteristics such as directivity, beam width, axial ratio, side lobe levels and null parameters, etc.</li>
<li>
Radiation pattern of arbitrary array configurations of the FDTD structure or periodic unit cell</li>
<li>
Huygens surface data generation for use in FDTD or other [[EM.Cube]] modules</li>
<li>
Bistatic and monostatic radar cross section</li>
<li>
Huygens surface data generation for use in other [[EM.Cube]] modules</li> <li> Periodic reflection/transmission coefficients and k-&szligbeta; diagrams</li>
<li>
Port characteristics: S/Y/Z parameters, VSWR and Smith chart</li>
<li>
Time and frequency domain port voltages, currents and powers</li> <li> Touchstone-style S -parameter text files for direct export to [[RF.Spice or its Device EditorA/D]]</li> <li> Interanl node voltages and currents of Netlist-based one-port and two-port networks</li>
<li>
Electric and Computation of electric, magnetic energies&nbsp;and total energy densities, dissipated power density (Ohmic loss), specific absorption rate (SAR) density and complex Poynting vector on field sensor planes</li>
<li>
Animation of temporal evolution of fields</li>
<li>
Custom output parameters defined as mathematical expressions or Python functions of standard outputs</li>
</ul>
 
==An FDTD Simulation Primer ==
 
=== An Overview of FDTD Modeling ===
 
In the Finite Difference Time Domain (FDTD) method, a discretized form of Maxwell’s equations is solved numerically and simultaneously in both the 3D space and time. During this process, the electric and magnetic fields are computed everywhere in the computational domain and as a function of time starting at t = 0. From knowledge of the primary fields in space and time, one can compute other secondary quantities including frequency domain characteristics like scattering parameters, input impedance, far field radiation patterns, radar cross section, etc.
 
[[Image:Info_icon.png|40px]] Click here for an overview of '''[[Basic_FDTD_Theory | Basic FDTD Theory]]'''.
 
Since FDTD is a finite domain numerical technique, the computational domain of the problem must be truncated. At the boundaries of the computational domain, proper boundary conditions must be enforced. In a shielded structure, all objects are enclosed within a perfect electric (or magnetic) conductor box. In an open boundary problem like an antenna, some kind of absorbing boundary conditions such as a perfectly matched layer (PML) must be used to emulate the free space. The absorbing boundaries should act such that the field propagates through them without any back reflection. The FDTD simulation time depends directly on the size of the computational domain and on how close you can place the PML walls to the enclosed objects.
 
[[Image:Info_icon.png|40px]] Click here to learn more about EM.Tempo's '''[[Basic_FDTD_Theory#Why_Does_FDTD_Need_Domain_Termination.3F | Perfectly Matched Layer Termination]]'''.
 
The FDTD computational domain must be discretized using an appropriate meshing scheme. EM.Tempo uses a non-uniform, variable, staircase (pixelated) Yee mesh with a mesh density that you can customize. A fixed-cell mesh generator is also available, where you can set constant cell dimensions along the three principal axes for the entire computational domain. The variable mesh density is specified in terms of the effective wavelength inside material media. As a result, the mesh resolution and average mesh cell size differ in regions that are filled with different types of material. EM.Tempo's non-uniform mesher generates more cells in the areas that are occupied by dielectric materials, fewer cells in the free-space regions and no cells inside (impenetrable) PEC regions. EM.Tempo's default "adaptive" mesh generator also refines the mesh around curved segments of lines, surface or solids to produce a far more accurate representation of your geometry. The example on the right illustrates a metal ellipsoid and a 3D view of its Yee mesh.
 
<table>
<tr>
<td>
[[Image:FDTD93.png|thumb|left|480px|Geometry of an imported aircraft CAD model...]]
</td>
</tr>
<tr>
<td>
[[Image:FDTD94.png|thumb|left|480px|...and its Yee mesh.]]
</td>
</tr>
</table>
 
The FDTD method provides a wideband simulation of your physical structure. In order to produce sufficient spectral information, an appropriate wideband temporal waveform is needed to excite the physical structure. The choice of the waveform, its bandwidth and time delay all affect the convergence behavior of the FDTD time marching loop. By default, EM.Tempo uses a modulated Gaussian waveform with optimal [[parameters]]. Another issue of concern is the numerical stability of the time marching scheme. You might expect to get better and more accurate results if you keep increasing the FDTD mesh resolution. However, in order to satisfy the Courant-Friedrichs-Levy (CFL) stability condition, the time step must be inversely proportional to the maximum grid cell size . A high resolution mesh requires a smaller time step. To let the fields in the computational domain fully evolve over time, a smaller time step will require a larger number of time steps to converge. EM.Tempo automatically chooses a time step that satisfies the CFL condition.
 
[[Image:Info_icon.png|40px]] For more detailed information about the stability of the FDTD algorithm, see '''[[Basic_FDTD_Theory#Waveform.2C_Bandwidth.2C_Stability| Waveform, Bandwidth, Stability]]'''.
 
=== The Advantages & Limitations of EM.Tempo's FDTD Simulator ===
 
A time domain simulation like FDTD offers several advantages over a frequency domain simulation. In certain applications, the time domain signature or behavior of a system, e.g. the transient response of a circuit or an antenna, is sought. In other applications, you may need to determine the wideband frequency response of a system. In such cases, using a frequency domain technique, you have to run the simulation engine many times to adequately sample the specified frequency range. In contrast, using the FDTD method requires a single-run simulation. The temporal field data are transformed into the Fourier domain to obtain the wideband frequency response of the simulated system. Among other advantages of the FDTD method are its versatility in handling complex material compositions as well as its superb numerical stability. It is worth noting that unlike frequency domain methods like the finite element method (FEM) or method of moments (MoM), the FDTD technique does not involve numerical solution of large ill-conditioned matrix equations that are often very sensitive to the mesh quality.
 
Like every numerical technique, the FDTD method has disadvantages, too. Adding the fourth dimension, time, to the computations increases the size of the numerical problem significantly. Unfortunately, this translates to both larger memory usage and longer computation times. Note that the field data are generated in both the 3D space and time. EM.Tempo uses a staircase "Yee" mesh to discretize the physical structure. This works perfectly fine for rectangular objects that are oriented along the three principal axes. In the case of highly curved structures or slanted surfaces and lines, however, this may compromise the geometrical fidelity of your structure. EM.Tempo provides a default adaptive FDTD mesher that can capture the fine details of geometric contours, slanted thin layers, surfaces, etc. to arbitrary precision. However, with smaller mesh cells, the stability criterion leads to smaller time steps; hence, longer computation times. Another disadvantage of the FDTD technique compared to naturally open-boundary methods like MoM is its finite-extent computational domain. This means that to model open boundary problems like radiation or scattering, absorbing boundary conditions are needed to dissipate the incident waves at the walls of the computational domain and prevent them from reflecting back into the domain. The accuracy of the FDTD simulation results depends on the quality of these absorbers and their distance from the actual physical structure. EM.Tempo provides high quality perfectly match layer (PML) terminations at the boundaries which can be placed fairly close your physical structure.
== Building the Physical Structure in EM.Tempo ==
=== Material Variety in EM.Tempo ===
Your physical structure in EM.Tempo can be made up of several geometric objects with different material compositions. In other words, the geometric objects you draw or import from external files are grouped together based on a common material composition. EM.Tempo's material types are divided into seven categories:
{| class="wikitable"
|-
! scope="col"| Icon
! scope="col"| Material Type
! scope="col"| Applications
! scope="col"| Geometric Object Types Allowed
|-
| style="width:30px;" | [[File:pec_group_icon.png]]| style="width:150px;" | '''[[Glossary of EMGlossary_of_EM.Cube's Materials & Physical Object Types%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Perfect Electric Conductor (PEC) |Perfect Electric Conductor (PEC)]]'''
| style="width:300px;" | Modeling perfect metals
| style="width:250px;" | Solid, surface and curve objects
|-
| style="width:30px;" | [[File:thin_group_icon.png]]| style="width:150px;" | '''[[Glossary of EMGlossary_of_EM.Cube's Materials & Physical Object Types%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Thin Wire |Thin Wire]]'''
| style="width:300px;" | Modeling wire radiators
| style="width:250px;" | Lines parallel to one of the three principal axes
|-
| style="width:30px;" | [[File:pmc_group_icon.png]]| style="width:150px;" | '''[[Glossary of EMGlossary_of_EM.Cube's Materials & Physical Object Types%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Perfect Magnetic Conductor (PMC) |Perfect Magnetic Conductor (PMC)]]'''
| style="width:300px;" | Modeling perfect magnetic sheets
| style="width:250px;" | Rectangle strips parallel to one of the three principal planes
|-
| style="width:30px;" | [[File:diel_group_icon.png]]| style="width:150px;" | '''[[Glossary of EMGlossary_of_EM.Cube's Materials & Physical Object Types%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Dielectric Material |Dielectric Material]]'''
| style="width:300px;" | Modeling any homogeneous material
| style="width:250px;" | Solid objects
|-
| style="width:30px;" | [[File:aniso_group_icon.png]]| style="width:150px;" | '''[[Glossary of EMGlossary_of_EM.Cube's Materials & Physical Object Types%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Anisotropic Material |Anisotropic Material]]'''
| style="width:300px;" | Modeling unaxial or generalized anisotriopic materials
| style="width:250px;" | Solid objects
|-
| style="width:30px;" | [[File:disp_group_icon.png]]| style="width:150px;" | '''[[Glossary of EMGlossary_of_EM.Cube's Materials & Physical Object Types%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Dispersive Material |Dispersive Material]]'''
| style="width:300px;" | Modeling Debye, Drude and Lorentz materials and generalized metamaterials
| style="width:250px;" | Solid objects
|-
| style="width:30px;" | [[File:voxel_group_icon.png]]| style="width:150px;" | [[Glossary_of_EM.Cube%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Gyrotropic_Material |Gyrotropic Material]]| style="width:300px;" | Modeling ferrites and magnetoplasmas| style="width:250px;" | Solid objects|-| style="width:30px;" | [[File:Virt_group_icon.png]]| style="width:150px;" | '''[[Glossary of EM.Cube's Materials , Sources, Devices & Other Physical Object Types#Voxel Database Virtual_Object_Group |Voxel DatabasesVirtual Object]]'''| style="width:300px;" | Modeling general inhomogeneous materials defined pointwise using a voxel databaseUsed for representing non-physical items | style="width:250px;" | Must import ".CAR" type data fileAll types of objects
|}
Click on each category to learn more details about it in the [[Glossary of EM.Cube's Materials , Sources, Devices & Other Physical Object Types]].
=== Organizing the Physical Structure by Material Groups ===
EM.Tempo groups your geometric objects in the project workspace based on their material type. All the objects belonging to the same material group share the same color and same material properties. Under each material node in the navigation tree, you can create new material groups of the same type but with different properties such as color, texture, or electric and magnetic constitutive parameters. These material groups are used to organize both the geometric objects you draw in the project workspace and those you import from external CAD model files.
Once a new material node has been created on the navigation tree, it becomes the "Active" material group of the project workspace, which is always listed in bold letters. When you draw a new geometric object such as a box or a sphere, its name is added under the currently active material type. There is only one material group that is active at any time. Any material can be made active by right clicking on its name in the navigation tree and selecting the '''Activate''' item of the contextual menu. It is recommended that you first create material groups, and then draw new objects under the active material group. However, if you start a new EM.Tempo project from scratch, and start drawing a new object without having previously defined any material groups, a new default PEC group is created and added to the navigation tree to hold your new object.
{{Note|You can import external objects only to CubeCAD. You can then move the imported objects form CubeCAD to EM.Tempo.}}
[[Image:Info_icon.png|40px30px]] Click here to access the '''[[Glossary of EM.Cube's Materials , Sources, Devices & Other Physical Object Types]]'''.
<table>
<tr>
<td>
[[Image:FDTD_MAN1Tempo NavTree.png|thumb|left|300px400px|EM.Tempo's navigation tree.]]</td></tr></table> === Moving Objects Among Different Material Groups === You can move any geometric object or a selection of object from one material group to another. You can also transfer objects among [[EM.Cube]]'s different modules. For example, you often need to move imported CAD models from CubeCAD to EM.Tempo. To transfer objects, first select them in the project workspace or select their names in the navigation tree. Then right-click on them and select <b>Move To &rarr; Module Name &rarr; Object Group</b> from the contextual menu. For example, if you want to move a selected object to a material group called "Dielectric_1" in EM.Tempo, then you have to select the menu item '''Move To &rarr; EM.Tempo &rarr; Dielectric_1''' as shown in the figure below. Note that you can transfer several objects altogether using the keyboards's {{key|Ctrl}} or {{key|Shift}} keys to make multiple selections.  <table><tr><td>[[Image:Tempo_L11_Fig2.png|thumb|left|720px|Moving an imported object from CubeCAD to EM.Tempo.]]
</td>
</tr>
=== Material Hierarchy in EM.Tempo ===
[[EM.Tempo ]] allows overlapping objects although it is generally recommended that object overlaps be avoided in favor of clearly defined geometries and object boundaries. If two or more objects of the same material type and group overlap, they are merged using the Boolean union operation during the mesh generation process. If two overlapping objects belong to two different material categories, then the material properties of the FDTD cells in the overlap region will follow the [[EM.Tempo]]'s material hierarchy rule. In that case, the overlap area cells will always be regarded as having the material type of the higher priority. According to this rule, the material types are ordered from the highest priority to the lowest in the following manner:
# PEC
# PMC
# Dispersive
# Gyrotropic
# General Anisotropic
# Uniaxial Anisotropic
# Dielectric
If planned carefully, taking advantage of [[EM.Tempo]]'s material hierarchy rule would make the construction of complex objects easier. For example, a dielectric coated metallic cylinder can be modeled by two concentric cylinders: an inner PEC of smaller radius and an outer dielectric of larger radius as shown in the illustration below. The portion of the dielectric cylinder that overlaps the inner PEC cylinder is ignored by the FDTD engine because the PEC cylinder takes precedence over the dielectric in the material hierarchy. Alternatively, you can model the same structure by an inner solid PEC cylinder enclosed by an outer hollow pipe-shaped dielectric cylinder.
<table>
<td>
[[Image:FDTD_MAN2.png|thumb|left|360px|The geometric construction of a dielectric-coated metallic cylinder with a conformal foil.]]
</td>
</tr>
</table>
 
=== Moving Objects Among Different Material Groups or EM.Cube Modules ===
 
You can move any geometric object or a selection of objects from one material group to another. You can also transfer objects among [[EM.Cube]]'s different modules. For example, you often need to move imported CAD models from CubeCAD to [[EM.Tempo]]. To transfer objects, first select them in the project workspace or select their names in the navigation tree. Then right-click on them and select <b>Move To &rarr; Module Name &rarr; Object Group</b> from the contextual menu. For example, if you want to move a selected object to a material group called "Dielectric_1" in [[EM.Tempo]], then you have to select the menu item '''Move To &rarr; [[EM.Tempo]] &rarr; Dielectric_1''' as shown in the figure below. Note that you can transfer several objects altogether using the keyboards's {{key|Ctrl}} or {{key|Shift}} keys to make multiple selections.
 
<table>
<tr>
<td>
[[Image:Tempo_L11_Fig2.png|thumb|left|720px|Moving an imported object from CubeCAD to EM.Tempo.]]
</td>
</tr>
The FDTD method requires a finite-extent solution domain. This is rather straightforward for shielded structures, where a typical PEC enclosure box defines the computational domain. For open-boundary structures like antennas and scatterers, the computational domain must be truncated using appropriate termination boundary conditions. The objective of termination boundary conditions is to eliminate the reflections from the walls of the domain box back to the computational domain.
In [[EM.Tempo]], you can define two types of domain box. A "'''Default'''" -type domain is a box that is placed at a specified offset distance from the largest extents of your physical structure (global bounding box). The offset is specified in free-space wavelengths. A "'''Custom'''" -type domain, on the other hand, is defined as a fixed-size and fixed-location box in the World Coordinate System (WCS). In this case, you have to specify the coordinates of the lower left front corner (Corner 1) and upper right back corner (Corner 2) of the domain box.
When you start a new project in [[EM.Tempo]], a default-type domain is automatically created with a default offset value set equal to a quarter free-space wavelength (0.25&lambda;<sub>0</sub>). As soon as you draw your first object, a blue domain box shows up in the project workspace and encloses your object. As you add more objects and increase the overall size of your structure, the domain box grows accordingly to encompass your entire physical structure. When you delete objects from the project workspace, the domain box also shrinks accordingly.
===Changing the Domain Settings===
By default, the domain box is shown as a wireframe box with blue lines. You can change the color of the domain box or hide it.
 
[[Image:Info_icon.png|30px]] Click here to learn more about '''[[Glossary_of_EM.Cube%27s_Simulation-Related_Operations#Domain_Settings | Domain Settings]]'''.
<table>
===Settings the Domain Boundary Conditions===
[[EM.Tempo ]] supports four types of domain boundary conditions: PEC, PMC, Convolutional Perfectly Matched Layers (CPML) and Periodic Boundary Conditions (PBC). By default, all the six sides of the computational domain box are set to CPML, representing a completely open-boundary structure. Different boundary conditions can be assigned to each of the six walls of the domain box. The periodic boundary conditions are special ones that are assigned through [[EM.Tempo]]'s Periodicity Dialog and will be discussed later under modeling of periodic structures. The current release of [[EM.Cube]] allows periodic boundary conditions only on the side walls of the computational domain, and not on the top or bottom walls.
To define the boundary conditions of the solution domain, follow these steps:
</table>
=== Advanced CMPL CPML Setup ===
In many open-boundary electromagnetic modeling problems , you need a boundary condition that simply absorbs all the incoming radiation. For problems of this nature, an absorbing boundary condition (ABC) is often chosen that effectively minimizes wave reflections at the boundary. [[EM.Tempo ]] uses Convolutional Perfectly Matched Layers (CPML) for absorbing boundary conditions. Usually two or more ABC layers must be placed at the boundaries of the physical structure to maximize wave absorption. The boundary CPML cells in the project workspace are transparent not visible to the user. But, in effect, multiple rows of CPML cells are placed on the exterior side of each face of the visible domain box.
You can set the number of CPML layers as well as their order. This is done through the CPML Settings Dialog, which can be accessed by right clicking on the '''CPML''' item in the '''Computational Domain''' section of the navigation tree and selecting '''CPML Settings...''' from the contextual menu. By default, four eight CPML layers of the third order are placed outside the FDTD problem domain. It is recommended that you always try a four-layer CPML first to assess the computational efficiency. The number of CPML layers may be increased only if a very low reflection is required (<-40dB).
{{Note|[[EM.Tempo]]'s default quarter wavelength offset for the domain box is a and its 8-layer CPML walls are very conservative choice choices and can be reduced further relaxed in many cases. A An offset equal to eight free-space grid cells beyond the largest bounding box usually give gives a more compact, but still valid, domain box.}}
[[Image:Info_icon.png|40px30px]] Click here to learn more about the theory of '''[[Basic_FDTD_TheoryBasic_Principles_of_The_Finite_Difference_Time_Domain_Method#Why_Does_FDTD_Need_Domain_TerminationCPML_vs.3F _PML | Perfectly Matched Layer Termination]]'''.
<table>
<tr>
<td> [[Image:FDTD MAN10.png|thumb|left|550px360px|The boundary CPML cells placed outside the visible domain box.]] </td></tr><tr><td> [[Image:FDTD15.png|thumb|left|480px400px|CPML Settings dialog.]] </td>
</tr>
</table>
You can use EM.Tempo to model planar structures of infinite extents. A planar substrate usually consists of one or more dielectric layers, possibly with a PEC ground plane at its bottom. To model a laterally infinite dielectric substrate, you must assign a PML boundary condition to the four lateral sides of the domain box and set the lateral domain offset values along the ±X and ±Y directions all equal to zero. If the planar structure ends in an infinite dielectric half-space from the bottom, you must assign a PML boundary condition to the bottom side of the domain box and set the -Z offset equal to zero. This leaves only the +Z offset with a nonzero value.
When a domain boundary wall is designated as CPML and its has a zero domain offset, meaning it touches a material block, the CPML cells outside the domain wall are reflected back inside the computational domain. In other words, the effective number of CPML layers will be twice the one specified in the CPML Settings dialog. This will effectively extend the material block infinitely beyond the boundary wall and will create an open boundary effect in the specified direction. It goes without saying that only "substrate" objects are supposed to touch the boundary walls in such a scenario. Because of the rolled-back CPML cells inside the domain, it is very important to make sure that other finite-sized parts and objects stay clear from the domain walls as well as from the invisible "interior" CPML cells.  {{Note|The current release of EM.Tempo does not support full-anisotropic or dispersive or gyrotropic layers of laterally infinite extents. In other words, your anisotropic or dispersive or gyrotropic material objects must not touch the CPML domain boundaries.}}
<table>
<tr>
<td> [[Image:FDTD MAN8.png|thumb|left|550px360px|The domain box of a patch antenna with a finite-sized substrate and ground.]] </td></tr><tr><td> [[Image:FDTD MAN9.png|thumb|left|550px360px|The domain box of a laterally infinite patch antenna with zero ±X, ±Y and -Z domain offsets. Note that the bottom PEC plate can be replaced with a PEC boundary condition at the -Z domain wall.]] </td>
</tr>
</table>
== EM.Tempo's Excitation Sources & Lumped Devices ==
=== Source Variety in EM.Tempo ===
Before you can run an FDTD simulation, you have to define a source to excite your project’s physical structure. EM.Tempo offers a variety of excitation mechanisms for your physical structure depending on your particular type of modeling problem or application (click on each type to learn more about it):
{| class="wikitable"
|-
! scope="col"| Icon
! scope="col"| Source Type
! scope="col"| Applications
! scope="col"| Host Object! scope="col"| Spatial Domain! scope="col"| Restrictions/ Additional Requirements|-| style="width:30px;" | [[File:lumped_src_icon.png]]| style="width:150px;" | [[Glossary_of_EM.Cube%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Lumped Source |Lumped Source]]| style="width:250px;" | General-purpose point voltage source| style="width:200px;" | PEC or thin wire line parallel to a principal axis| style="width:200px;" | A single point| style="width:200px;" | None|-| style="width:30px;" | [[File:distrb_src_icon.png]]| style="width:150px;" | [[Glossary_of_EM.Cube%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Distributed Source |Distributed Source]]| style="width:250px;" | General-purpose distributed planar source with a uniform, edge-singular or sinusoidal impressed field profile| style="width:200px;" | Virtual rectangle strip parallel to a principal plane| style="width:200px;" | A rectangular area| style="width:200px;" | None
|-
| '''style="width:30px;" | [[File:mstrip_icon.png]]| style="width:150px;" | [[Glossary of EMGlossary_of_EM.Cube's Excitation Sources%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Lumped Source Microstrip Port |Lumped Microstrip Port Source]]'''| style="width:300px250px;" | GeneralUsed for S-purpose point voltage sourceparameter computations in microstrip-type structures| style="width:250px200px;" | PEC rectangle strip parallel to a principal plane| style="width:200px;" | A vertical rectangular area underneath the host strip| style="width:200px;" | Associated with Requires a PEC or thin wire lineground plane strip underneath the host strip
|-
| '''style="width:30px;" | [[Glossary of EMFile:cpw_icon.png]]| style="width:150px;" | [[Glossary_of_EM.Cube's Excitation Sources%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Distributed Source Coplanar Waveguide (CPW) Port |Distributed Coplanar Waveguide (CPW) Port Source]]'''| style="width:300px250px;" | GeneralUsed for S-purpose distributed voltage sourceparameter computations in CPW-type structures| style="width:250px200px;" | Associated with a virtual PEC rectangle strip parallel to a principal plane| style="width:200px;" | Two parallel horizontal rectangular areas attached to the opposite lateral edges the host center strip| style="width:200px;" | Requires two parallel PEC ground strips on the two sides of the host center strip
|-
| '''style="width:30px;" | [[File:coax_icon.png]]| style="width:150px;" | [[Glossary of EMGlossary_of_EM.Cube's Excitation Sources%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Microstrip Coaxial Port |Microstrip Coaxial Port Source]]'''| style="width:300px250px;" | Used for S-parameter computationsin coaxial-type structures| style="width:250px200px;" | Associated with a PEC rectangle stripCylinder oriented along a principal axis| style="width:200px;" | A circular ring area enveloping the host inner conductor cylinder| style="width:200px;" | Requires a concentric hollow outer conductor cylinder
|-
| '''style="width:30px;" | [[Glossary of EMFile:wg_src_icon.png]]| style="width:150px;" | [[Glossary_of_EM.Cube's Excitation Sources%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Coplanar Waveguide (CPW) Port |Coplanar Waveguide (CPW) Port Source]]'''| style="width:300px250px;" | Used for S-parameter computationsin waveguide structures| style="width:250px200px;" | Associated with a Hollow PEC rectangle stripbox oriented along a principal axis| style="width:200px;" | A rectangular area at the cross section of the host hollow box| style="width:200px;" | The host box object can have one capped end at most.
|-
| '''style="width:30px;" | [[Glossary of EMFile:hertz_src_icon.png]]| style="width:150px;" | [[Glossary_of_EM.Cube's Excitation Sources%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Coaxial Port Filamentary_Current_Source |Coaxial Port Filamentary Current Source]]'''| style="width:300px250px;" | Used for SGeneral-parameter computationspurpose wire current source of two types: Hertzian short dipole radiator and long wire current source with a uniform, triangular or sinusoidal current distribution profile| style="width:250px200px;" | Associated with a PEC CylinderNone (stand-alone source)| style="width:200px;" | A line| style="width:200px;" | Hertzian short dipole radiators can have an arbitrary orientation, but long wire current sources must be aligned along one of the principal axes
|-
| '''style="width:30px;" | [[Glossary of EMFile:plane_wave_icon.png]]| style="width:150px;" | [[Glossary_of_EM.Cube's Excitation Sources%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Waveguide Port Plane Wave |Waveguide Port Plane Wave Source]]'''| style="width:300px250px;" | Used for Smodeling electromagnetic scattering & computation of reflection/transmission characteristics of periodic surfaces | style="width:200px;" | None (stand-parameter computationsalone source)| style="width:250px200px;" | Associated with Surface of a hollow PEC boxcube enclosing the physical structure| style="width:200px;" | None
|-
| '''style="width:30px;" | [[Glossary of EMFile:gauss_icon.png]]| style="width:150px;" | [[Glossary_of_EM.Cube's Excitation Sources%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Plane Wave Gaussian Beam |Plane Wave Gaussian Beam Source]]'''| style="width:300px250px;" | Used for scattering computationsmodeling focused beams | style="width:250px200px;" | StandNone (stand-alone source)| style="width:200px;" | Surface of a cube enclosing the physical structure| style="width:200px;" | None
|-
| '''style="width:30px;" | [[File:huyg_src_icon.png]]| style="width:150px;" | [[Glossary of EM.Cube's Excitation Materials, Sources, Devices & Other Physical Object Types#Gaussian Beam Huygens Source |Gaussian Beam Huygens Source]]'''| style="width:300px250px;" | Used for modeling focused beams equivalent sources imported from other [[EM.Cube]] modules | style="width:250px200px;" | StandNone (stand-alone source)| style="width:200px;" | Surface of a cube | style="width:200px;" | Imported from a Huygens surface data file
|}
A lumped source is the most commonly used way of exciting a structure in EM.Tempo. A lumped source is an ideal source that must be placed Click on a line object that is parallel each category to one of the three principal axes learn more details about each source type and shows up as a small red arrow on the host line. Lumped sources are typically used how to define ports and compute the port characteristics like S/Y/Z parameters. Using simple lumped sources, you can simulate a variety of transmission line structures in EM.Tempo including filters, couplers or antenna feeds. This approach may become less accurate at very high frequencies when the details of the feed structures become important and can no longer be modeled with highly localized lumped ports. In such cases, it is recommended to use “Distributed Sources”, which utilize accurate modal field distributions at the ports for calculation of the incident and reflected waves. Waveguide source is used to excite the dominant TE<sub>10</sub> mode of a hollow rectangular waveguide. Waveguide sources typically provide more accurate results for scattering parameters of waveguide structures compared to lumped sources as they represent the actual dominant propagating modes at the transmission line portsone.
[[Image:Info_icon.png|40px30px]] Click here to learn more More information about all the source types can be found in the '''[[Common_Excitation_Source_Types_in_EMGlossary of EM.Cube#Defining_Finite-Sized_Source_Arrays | Using Source Arrays in Antenna Arrays's Materials, Sources, Devices & Other Physical Object Types]]'''.
In the most general sense, one can consider two fundamental types of excitation sources for an FDTD simulation: a lumped source and a distributed source. A lumped sources is localized at a single mesh point in the computational domain, while a distributed source is spread over several mesh cells. Among the source types of the above list, the microstrip port, CPW port, coaxial port, waveguide port, plane wave and Gaussian beam sources are indeed special cases of a distributed source for specific applications.  A lumped source is the most commonly used way of exciting a structure in EM.Tempo. A lumped source is a voltage source with a series internal resistor that must be placed on a PEC or thin wire line object that is parallel to one of the three principal axes. A lumped source is displayed as a small red arrow on the host line. Lumped sources are typically used to define ports and compute the port characteristics like S/Y/Z parameters. Using simple lumped sources, you can simulate a variety of transmission line structures including filters, couplers or antenna feeds. This approach may become less accurate at higher frequencies when the details of the feed structure become important and can no longer be modeled with highly localized lumped ports. In such cases, it is recommended to use “Distributed Sources”, which utilize accurate modal field distributions at the ports for calculation of the incident and reflected waves. Waveguide source is used to excite the dominant TE<sub>10</sub> mode of a hollow rectangular waveguide. Other special types of distributed sources are microstrip port, CPW port and coaxial ports that can be used effectively to excite their respective transmission line structures.  When you create an array of an object type that can host one of the above source types, you can also associate a source array with that array object.  [[Image:Info_icon.png|30px]] Click here to learn more about '''[[Preparing_Physical_Structures_for_Electromagnetic_Simulation#Modeling_Finite-Sized_Source_Arrays | Modeling Finite-Sized Source Arrays]]'''. A plane wave source is a popular excitation method that is used for calculation of the radar cross section of targets or reflection and transmission characteristics of periodic surfaces. A Gaussian beam source is another source type that is highly localized as opposed to the uniform plane wave. For both plane wave and Gaussian beam sources, [EM.Tempo requires a finite incidence surface to calculate the excitation. When you create either of these sources, a plane wave box or a Gaussian beam box is created as part of their definition. A trident symbol on the box shows the propagation vector as well as the E-field and H-field polarization vectors. The time domain plane wave or Gaussian beam excitation is calculated on the surface of this box and injected into the computational domain. The plane wave box is displayed in the project workspace as a purple wireframe box enclosing the structure, while the Gaussian beam box appears as a green wireframe box. Both boxes have an initial default size with an offset of 0.2&lambda;<sub>0</sub> from the largest bounding box enclosing your entire physical structure. In both source dialogs, the radio button '''Size: Default''' is selected by default. The radio button '''Size: Custom''' allows you to set the excitation box manually. The values for the coordinates of '''Corner 1''' and '''Corner 2''' can now be changed. Corner 1 is the front lower left corner and Corner 2 is the rear upper right corner of the box. The corner coordinates are defined in the world coordinate system (WCS).
<table>
<tr>
<td> [[Image:FDTD MAN11.png|thumb|550px360px|A plane wave box enclosing a PEC cylinder at oblique incidence: &theta; = 105&deg; and &phi; = 315&deg;.]] </td></tr><tr><td> [[Image:FDTD MAN12.png|thumb|550px360px|A Gaussian beam box enclosing a PEC cylinder at oblique incidence: &theta; = 105&deg; and &phi; = 315&deg;. The concentric circles represent the beam's focus point and radius.]] </td>
</tr>
</table>
Ports are used to order and index sources for circuit parameter calculations like S/Y/Z parameters. In EM.Tempo, you can define ports at the location of the following types of sources:
*[[Glossary of EM.Cube's Excitation Materials, Sources, Devices & Other Physical Object Types#Lumped Source |Lumped sources]]*[[Glossary of EM.Cube's Excitation Materials, Sources, Devices & Other Physical Object Types#Distributed Source |Distributed sources]]*[[Glossary of EM.Cube's Excitation Materials, Sources, Devices & Other Physical Object Types#Microstrip Port |Microstrip port sources]]*[[Glossary of EM.Cube's Excitation Materials, Sources, Devices & Other Physical Object Types#Coplanar Waveguide (CPW) Port |CPW port sources]]*[[Glossary of EM.Cube's Excitation Materials, Sources, Devices & Other Physical Object Types#Coaxial Port |Coaxial port sources]]*[[Glossary of EM.Cube's Excitation Materials, Sources, Devices & Other Physical Object Types#Waveguide Port |Waveguide port sources]]
Every time you create a new source with one of the above types, the program asks if you want to initiate a new port and associate it with the newly created source. If the physical structure of your project workspace has N sources, then N default ports are defined, with one port assigned to each source according to their order in the navigation tree. You can define any number of ports equal to or less than the total number of sources in your project.
{{Note|In order to obtain correct results, the port impedance must equal the characteristic impedance of the transmission line on which the port is established. This is not automatically taken care of by EM.Tempo.}}
[[Image:Info_icon.png|40px30px]] Click here to learn more about the '''[[Common_Excitation_Source_Types_in_EMGlossary_of_EM.Cube%27s_Simulation_Observables_%26_Graph_Types#The_Port_Definition_Observable Port_Definition_Observable | The Port Definition Observable]]'''.
[[Image:Info_icon.png|40px30px]] Click here to learn more about '''[[Common_Excitation_Source_Types_in_EM.CubePreparing_Physical_Structures_for_Electromagnetic_Simulation#Exciting_Multiport_Structures_Using_Linear_Superposition | Exciting Multiport Structures Using Linear Superposition]]'''Modeling_Coupled_Sources_. [[Image:Info_icon.png|40px]] Click here to learn more about '''[[Common_Excitation_Source_Types_in_EM.Cube#Modeling_Coupled_Ports 26_Ports | Modeling Coupled Sources & Ports]]'''.
<table>
<tr>
<td> [[Image:FDTD MAN16.png|thumb|left|480px|EM.Tempo's port definition dialog.]] </td>
</tr>
</table>
 
=== Defining Lumped Devices ===
 
In EM.Tempo, you can define four types of lumped devices:
 
# '''[[Glossary of EM.Cube's Lumped Devices & Circuits#Lumped Resistor | Resistor]]'''
# '''[[Glossary of EM.Cube's Lumped Devices & Circuits#Lumped Capacitor | Capacitor]]'''
# '''[[Glossary of EM.Cube's Lumped Devices & Circuits#Lumped Inductor | Inductor]]'''
# '''[[Glossary of EM.Cube's Lumped Devices & Circuits#Lumped Nonlinear Diode | Nonlinear Diode]]'''
 
Although lumped devices are not sources and do not excite a structure, their properties are similar to lumped sources. A lumped device has to be associated with a PEC line object that is parallel to one of the three principal axes. Similar to lumped source, lumped devices have a '''Offset''' parameter that is equal to the distance between their location on the host line and its start point.
 
A lumped device is characterized by a v-i equation of the form:
 
:<math>i(t) = L \{ v(t) \} </math>
 
where V(t) is the voltage across the device, i(t) is the current flowing through it and ''L'' is an operator function, which may involve differential or integral operators. Lumped devices are incorporated into the FDTD grid across two adjacent nodes in a similar manner to lumped sources. At the location of a lumped device, the FDTD solver enforces the device's governing equation by relating the device voltage and current to the electric and magnetic field components and updating the fields accordingly at every time step.
[[Image:Info_icon.png|40px]] Click here to learn more about '''[[Modeling_Lumped_Elements,_Circuits_%26_Devices_in_EM.Cube#Defining_Lumped_Loads_in_EM.Tempo | Defining Lumped Loads in EM.Tempo]]'''.
 
[[Image:Info_icon.png|40px]] Click here for a general discussion of '''[[Modeling_Lumped_Elements,_Circuits_%26_Devices_in_EM.Cube| Linear Passive & Nonlinear Active Devices]]'''.
 
{{Note|Small values of inductance may result in the divergence of the FDTD numerical scheme. To avoid this problem, you need to increase the mesh resolution and adopt a higher mesh density. This, of course, may lead to a much longer computation time.}}
 
<table>
<tr>
<td> [[Image:FDTD MAN17.png|thumb|left|480px|EM.Tempo's lumped device dialog.]] </td>
</tr>
</table>
=== Excitation Waveform & Frequency Domain Computations ===
When an FDTD simulation starts, your project's source starts pumping energy into the computational domain at t > 0. Maxwell's equations are solved in all cells at every time step until the solution converges, or the maximum number of time steps is reached. A physical source has a zero value at t = 0, but it rises from zero at t > 0 according to a specified waveform. [[EM.Tempo]] currently offers four types of temporal waveform:
# Sinusoidal
{{Note|All of EM.Tempo's excitation sources have a default modulated Gaussian pulse waveform unless you change them.}}
[[Image:Info_icon.png|40px30px]] Click here to learn more about EM.Tempo's '''[[Waveforms and Discrete Fourier Transforms Basic_Principles_of_The_Finite_Difference_Time_Domain_Method#The_Relationship_Between_Excitation_Waveform_and_Frequency-Domain_Characteristics | Standard & Custom Waveforms and Discrete Fourier Transforms]]'''.
=== Defining Custom Waveforms in EM.Tempo ===
In some time-domain applications, you may want to simulate the propagation of a certain kind of waveform in a circuit or structure. In addition to the default waveforms, [[EM.Tempo]] allows you to define custom waveforms by either time or frequency specifications for each individual source in your project. If you open up the property dialog of any source type in [[EM.Tempo]], you will see an {{key|Excitation Waveform...}} button located in the "Source Properties" section of the dialog. Clicking this button opens up [[EM.Tempo]]'s Excitation Waveform dialog. From this dialog, you can override [[EM.Tempo]]'s default waveform and customize your own temporal waveform. The Excitation Waveform dialog offers three different options for defining the waveform:
* Automatically Generate Optimal Waveform
The first option, which is also the default option, constructs an optimal modulated Gaussian pulse waveform based on your project's specified center frequency and bandwidth. This optimal waveform guarantees the most accurate frequency domain computations for your simulation. The second option gives you a choice of the three standard waveforms and lets you define their waveform parameters in terms of frequency domain characteristics like center frequency and bandwidth and spectral contents. The third option lets you define a completely arbitrary temporal waveform for your source.
Select the third option of waveform definition and then choose the '''Custom''' option from the '''Waveform Type''' dropdown list. Enter a mathematical expression for your custom waveform a function of the time variable "T" or "t" in the box labeled '''Expression'''. You can use arithmetic operationoperations, standard and library functions as well as you models and variables. For example, in the figure on the right, we have user-defined a modulated Bessel waveform in the form of "sin(2*pi*Fc*T-pi/4)*Jn(0,pi*Fc*T/4)", where Fc is the center frequency of the project and one of the project's default variables and Jn(n,x) denotes the Bessel function of the first kind and order n, which is one of [[EM.Cube]]'s library Python functions.
[[Image:Info_icon.png|40px]] Click here to see a '''[[List of Library Functions]]'''. [[Image:Info_icon.png|40px30px]] Click here to learn more about '''[[Parametric_ModelingUsing Python to Create Functions,_Sweep_%26_OptimizationModels & Scripts#Creating_Custom_Functions_Using_Models Creating Custom Python Functions | Creating Custom Python Functions Using Models]]'''.
<table>
</table>
When you define a custom waveform in the Excitation Waveform dialog, make sure to click the {{key|Accept}} button of the dialog to make your changes effective. A graph of your custom waveform is plotted in the right panel of the dialog for your review. It is important to keep in mind that typical time scales in the FDTD simulation of RF structures are on the order of nanosecond or smaller. Using the variable "Fcfc" in the expression of your waveform definition usually takes care of this required scaling. Otherwise, you need to use scaling factors like 1e-9 explicitly in your expression. For example, in the figure below, we have defined a modulated Bessel waveform in the form of "sp.j0(t/2e-9)*sin(2*pi*fc*t)", where sp.j0(x) denotes the zeroth-order Bessel function of the first kind burrowed from Python's special functions module. [[Image:Info_icon.png|30px]] Click here to learn more about '''[[Glossary of EM.Cube's Python Functions#Standard Python Functions | Python's Standard & Advanced Mathematical Functions]]'''.
{{Note| If you define a custom excitation waveform for your source based on arbitrary time domain specifications, none of the standard frequency domain output data and parameters will be computed at the end of your FDTD simulation.}}
<table>
</table>
== Working EM.Tempo's Active & Passive Devices == === Defining Lumped Devices === In [[EM.Tempo]], you can define eigth types of lumped devices: # '''[[Glossary of EM.Cube's Materials, Sources, Devices & Other Physical Object Types#Resistor | Resistor]]''' # '''[[Glossary of EM.Cube's Materials, Sources, Devices & Other Physical Object Types#Inductor | Inductor]]'''# '''[[Glossary of EM.Cube's Materials, Sources, Devices & Other Physical Object Types#Capacitor | Capacitor]]''' # '''[[Glossary of EM.Cube's Materials, Sources, Devices & Other Physical Object Types#Series_RL_Device | Series RL Device]]''' # '''[[Glossary of EM.Cube's Materials, Sources, Devices & Other Physical Object Types#Parallel_RC_Device | Parallel RC Device]]''' # '''[[Glossary of EM.Cube's Materials, Sources, Devices & Other Physical Object Types#Diode | Nonlinear Diode]]''' # '''[[Glossary of EM.Cube's Materials, Sources, Devices & Other Physical Object Types#Active_Lumped_One-Port_Device | Active Lumped One-Port Device]]''' # '''[[Glossary of EM.Cube's Materials, Sources, Devices & Other Physical Object Types#Active_Lumped_Two-Port_Device | Active Lumped Two-Port Device]]'''  Lumped devices are connected between two adjacent FDTD mesh nodes. Although lumped devices are not sources and the passive types do not excite a structure, their properties are similar to lumped sources. That is why they are listed under the '''Sources''' section of the navigation tree. A lumped device has to be associated with a PEC line object that is parallel to one of the three principal axes. Similar to lumped sources, lumped devices have an '''Offset''' parameter that is equal to the distance between their location on the host line and its start point.  A lumped device is characterized by a v-i equation of the form: :<math>i(t) = L \{ v(t) \} </math> where V(t) is the voltage across the device, i(t) is the current flowing through it and ''L'' is an operator function, which may involve differential or integral operators. Lumped devices are incorporated into the FDTD grid across two adjacent nodes in a similar manner to lumped sources. At the location of a lumped device, the FDTD solver enforces the device's governing equation by relating the device voltage and current to the electric and magnetic field components and updating the fields accordingly at every time step. [[Image:Info_icon.png|30px]] Click here for a general discussion of '''[[Preparing_Physical_Structures_for_Electromagnetic_Simulation#A_Review_of_Linear_.26_Nonlinear_Passive_.26_Active_Devices | Linear & Nonlinear Passive & Active Devices]]'''. {{Note|Small values of inductance may result in the divergence of the FDTD numerical scheme. To avoid this problem, you need to increase the mesh resolution and adopt a higher mesh density. This, of course, may lead to a much longer computation time.}} <table><tr><td> [[Image:FDTD MAN17.png|thumb|left|480px|EM.Tempo's lumped device dialog for nonlinear diode.]] </td></tr><tr><td> [[Image:FDTD MAN17A.png|thumb|left|480px|EM.Tempo's lumped device dialog for active lumped two-port device.]] </td></tr></table> === Defining Active Distributed Multiport Networks === EM.Tempo also provides two types of active distributed multiport network devices: # '''[[Glossary_of_EM.Cube%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Active_Distributed_One-Port_Device | Active Distributed One-Port Device/Circuit]]''' # '''[[Glossary_of_EM.Cube%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Active_Distributed_Two-Port_Device | Active Distributed Two-Port Device/Circuit]]'''  Unlike the active lumped devices, these devices are rather distributed and their behavior is similar to a microstrip port source. In other words, the active distributed one-port device requires a rectangle strip object as a host, while the active distributed two-port device requires two rectangle strip objects for its definition. You can choose one of the edges of the strip object for establishing the circuit port. In the case of a two-port device, you need two parallel and end-to-end aligned strip objects.  The circuit behavior of these devices is defined by a Netlist file. Their property dialog provides a text editor for simply writing the Netlist description of the device. You can also import an existing external Netlist file with a ".CIR" or ".TXT" file extension using the button labeled {{key|Load Netlist}}..  {{Note|[[RF.Spice A/D]] can generate a Netlist file corresponding to an existing circuit project, which can then be saved to a text file with a ".TXT" file extension. }} <table><tr><td> [[Image:ActiveOnePort.png|thumb|left|480px|EM.Tempo's active one-port device/circuit dialog.]] </td></tr></table> <table><tr><td> [[Image:ActiveTwoPort.png|thumb|left|720px|EM.Tempo's active two-port device/circuit dialog.]] </td></tr></table> === A Note on Using Active Devices === When your physical structure contains an active device, EM.Tempo performs an EM-circuit co-simulation that involves both the full-wave FDTD EM solver and the SPICE circuit solver. In a global self-consistent co-simulation, at each time step of the FDTD time marching loop, the electric and magnetic fields at the location of the device ports are used to compute the port voltages and currents. These quantities are then used in the SPCIE circuit solver to update all the voltages and currents at the internal nodes of the active device. The updated port voltages and currents are finally used to update the electric and magnetic fields in the physical mesh cells and the time marching loop proceeds to the next time step.  EM.Tempo can handle several active one-ports and two-ports simultaneously. In that case, all the devices are automatically compiled into a single Netlist that serves as the input of the SPICE solver. The individual internal nodes of each device need to be renamed for the global Netlist. Besides the main circuit, the Netlist of each device may contain several "subcircuits". Note that the subcircuit nodes are not re-indexed for the global Netlist as is expected.  {{Note|If you want to use a B-type nonlinear dependent source in the Netlist definition of an active one-port or two-port, it must be contained in a subcircuit definition rather than in the main circuit.}} The figure below shows the geometry of a two-port amplifier device with microstrip input and output transmission lines. The Netlist of the two-port device is given below: ---- C1 1 0 1p R1 1 0 50 E1 2 0 1 0 20 RS 2 3 10 R2 3 0 50 C2 3 0 1p ---- In this case, a linear voltage-controlled voltage source (E1) with a voltage gain of 20 has been used. The input and output nodes are 1 and 3, respectively.  <table><tr><td> [[Image:Amp circ.png|thumb|left|420px|The schematic of the amplifier circuit in RF.Spice A/D.]] </td></tr></table> The same Netlist can be written using a B-type nonlinear dependent source as follows: ---- C1 1 0 1p X1 1 0 2 0 amp_dev .subckt amp_dev 1 2 3 4  R1 1 2 50 B1 3 4 v = 20*v(1,2) .ends RS 2 3 10 R2 3 0 50 C2 3 0 1p ---- {{Note|You can use active one-ports to define custom voltage or current sources for your entire physical structure rather than using one of the physical excitation source types of the navigation tree.}} <table><tr><td> [[Image:Amp ex.png|thumb|left|550px|The geometry of a microstrip-based amplifier with an active two-port device.]] </td></tr></table> == EM.Tempo's Observables & Simulation Data Types==
=== Understanding the FDTD Observable Types ===
{| class="wikitable"
|-
! scope="col"| Icon
! scope="col"| Simulation Data Type
! scope="col"| Associated Observable Type
! scope="col"| Applications
! scope="col"| Restrictions
|-
| style="width:150px30px;" | '''[[Glossary of EMFile:fieldprobe_icon.Cube's Simulation Observables#Temporal Field Probe |Point Fieldspng]]'''| style="width:150px;" | '''Temporal Waveforms| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables& Graph Types#Temporal Field Probe Temporal_Field_Probe_Observable |Temporal Field Probe]]'''| style="width:300px;" | Computing E- electric and H-magnetic field components at a fixed location in both the time and frequency domainsdomain
| style="width:250px;" | None
|-
| style="width:150px30px;" | '''[[Glossary of EMFile:fieldprobe_icon.Cube's Simulation Observables#Near-Field Sensor |Near-Field Distributionpng]]'''| style="width:150px;" | '''Point Fields| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables& Graph Types#Near-Field Sensor Temporal_Field_Probe_Observable |Near-Temporal Field SensorProbe]]''' | style="width:300px;" | Computing E- the amplitude and H-phase of electric and magnetic field components on at a planar cross section of fixed location in the computational frequency domain in both time and frequency domains
| style="width:250px;" | None
|-
| style="width:150px30px;" | '''[[Glossary of EMFile:fieldsensor_icon.Cube's Simulation Observables#Far-Field Radiation Pattern png]]|Farstyle="width:150px;" | Near-Field Radiation Characteristics]]'''Distribution Maps| style="width:150px;" | '''[[Glossary of EM.Cube's Simulation Observables& Graph Types#FarNear-Field Radiation Pattern Field_Sensor_Observable |FarNear-Field Radiation PatternSensor]]'''| style="width:300px;" | Computing the radiation pattern amplitude and additional radiation characteristics such as directivity, axial ratio, side lobe levels, etc. phase of electric and magnetic field components on a planar cross section of the computational domain in the frequency domain
| style="width:250px;" | None
|-
| style="width:30px;" | [[File:fieldsensor_icon.png]]| style="width:150px;" | Time-Domain Near-Field Animation| style="width:150px;" | [[Glossary of EM.Cube'''s Simulation Observables & Graph Types#Near-Field_Sensor_Observable |Near-Field Sensor]] | style="width:300px;" | Computing either total electric or total magnetic field distribution on a planar cross section of the computational domain in the time domain| style="width:250px;" | The field maps are generated at certain specified time intervals|-| style="width:30px;" | [[File:farfield_icon.png]]| style="width:150px;" | Far-Field Radiation Patterns| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables& Graph Types#Radar Cross Section (RCS) Far-Field_Radiation_Pattern_Observable |Far-Field Scattering CharacteristicsRadiation Pattern]]| style="width:300px;" | Computing the 3D radiation pattern in spherical coordinates | style="width:250px;" | Requires one of these source types: lumped, distributed, microstrip, CPW, coaxial or waveguide port|-| style="width:30px;" | [[File:farfield_icon.png]]'''| style="width:150px;" | Far-Field Radiation Characteristics| style="width:150px;" | [[Glossary of EM.Cube'''s Simulation Observables & Graph Types#Far-Field_Radiation_Pattern_Observable |Far-Field Radiation Pattern]]| style="width:300px;" | Computing additional radiation characteristics such as directivity, axial ratio, side lobe levels, etc. | style="width:250px;" | Requires one of these source types: lumped, distributed, microstrip, CPW, coaxial or waveguide port|-| style="width:30px;" | [[File:farfield_icon.png]]| style="width:150px;" | Far-Field Scattering Patterns| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables& Graph Types#Far-Field_Radiation_Pattern_Observable |Far-Field Radiation Pattern]]| style="width:300px;" | Computing the 3D scattering pattern in spherical coordinates | style="width:250px;" | Requires a plane wave or Gaussian beam source|-| style="width:30px;" | [[File:rcs_icon.png]]| style="width:150px;" | Radar Cross Section | style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables & Graph Types#Radar_Cross_Section_(RCS) _Observable |Radar Cross Section (RCS)]]'''
| style="width:300px;" | Computing the bistatic and monostatic RCS of a target
| style="width:250px;" | Requires a plane wave source
|-
| style="width:30px;" | [[File:rcs_icon.png]]| style="width:150px;" | Polarimetric Scattering Matrix Data| style="width:150px;" | '''[[Glossary of EM.Cube's Simulation Observables& Graph Types#Port Definition Radar_Cross_Section_(RCS)_Observable |Port CharacteristicsRCS]] | style="width:300px;" | Computing the scattering matrix of a target for various plane wave source incident angles| style="width:250px;" | Requires a plane wave source|-| style="width:30px;" | [[File:port_icon.png]]'''| style="width:150px;" | '''Port Characteristics| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables& Graph Types#Port Definition Port_Definition_Observable |Port Definition]]'''
| style="width:300px;" | Computing the S/Y/Z parameters and voltage standing wave ratio (VSWR)
| style="width:250px;" | Requires one of these source types: lumped, distributed, microstrip, CPW, coaxial or waveguide port
|-
| style="width:150px30px;" | '''[[Glossary of EMFile:port_icon.Cube's Simulation Observables#Port Definition png]]| style="width:150px;" |Port VoltageVoltages, Current Currents & Powers]]'''| style="width:150px;" | '''[[Glossary of EM.Cube's Simulation Observables& Graph Types#Port Definition Port_Definition_Observable |Port Definition]]'''
| style="width:300px;" | Computing the port voltages, port currents and total port powers in both time and frequency domains
| style="width:250px;" | Requires one of these source types: lumped, distributed, microstrip, CPW, coaxial or waveguide port
|-
| style="width:30px;" | [[File:period_icon.png]]| style="width:150px;" | Periodic Reflection & Transmission Coefficients| style="width:150px;" | '''[[Glossary of EM.Cube's Simulation Observables& Graph Types#Periodic Characteristics |Periodic Characteristics]]'''| style="width:150px;" | (No observable definition required )
| style="width:300px;" | Computing the reflection and transmission coefficients of a periodic surface
| style="width:250px;" | Requires a plane wave source and periodic boundary conditions
|-
| style="width:150px30px;" | '''[[Glossary of EMFile:energy_icon.Cube's Simulation Observables#Domain Energy |Domain Energypng]]'''| style="width:150px;" | '''Electric and Magnetic Energy| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables& Graph Types#Domain Energy -Power_Observable |Domain Energy-Power]]'''| style="width:300px;" | Computing the total electric and , magnetic and total energy in inside the entire computational domain in the time domain
| style="width:250px;" | None
|-
| style="width:30px;" | [[File:energy_icon.png]]| style="width:150px;" | Dissipated Power| style="width:150px;" | '''[[Glossary of EM.Cube's Simulation Observables& Graph Types#Huygens Surface Energy-Power_Observable |Huygens SurfaceEnergy-Power]]| style="width:300px;" | Computing the total dissipated power inside the entire computational domain in the time domain| style="width:250px;" | None|-| style="width:30px;" | [[File:energy_icon.png]]| style="width:150px;" | Electric and Magnetic Energy Density| style="width:150px;" | [[Glossary of EM.Cube'''s Simulation Observables & Graph Types#Energy-Power_Observable | Energy-Power]]| style="width:300px;" | Computing the electric, magnetic and total energy density on a field sensor plane in the frequency domain| style="width:250px;" | Requires at least one field sensor observable|-| style="width:30px;" | [[File:energy_icon.png]]| style="width:150px;" | Dissipated Power (Ohmic Loss) Density and Specific Absorption Rate (SAR) Density| style="width:150px;" | [[Glossary of EM.Cube'''s Simulation Observables & Graph Types#Energy-Power_Observable | Energy-Power]]| style="width:300px;" | Computing the dissipated power density and SAR density on a field sensor plane in the frequency domain| style="width:250px;" | Requires at least one field sensor observable|-| style="width:30px;" | [[File:energy_icon.png]]| style="width:150px;" | Poynting Vector| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables& Graph Types#Huygens Energy-Power_Observable | Energy-Power]]| style="width:300px;" | Computing the complex Poynting vector on a field sensor plane in the frequency domain| style="width:250px;" | Requires at least one field sensor observable|-| style="width:30px;" | [[File:huyg_surf_icon.png]]| style="width:150px;" | Equivalent Electric and Magnetic Surface Currents| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables & Graph Types#Huygens_Surface_Observable |Huygens Surface]]'''
| style="width:300px;" | Collecting tangential field data on a box to be used later as a Huygens source in other [[EM.Cube]] modules
| style="width:250px;" | None
|-
| style="width:30px;" | [[File:CartData_icon.png]]
| style="width:150px;" | Generic 3D Cartesian Spatial Data
| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables & Graph Types#3D_Cartesian_Data_Observable | 3D Cartesian Data]]
| style="width:300px;" | Visualizing the contents of generic 3D Cartesian spatial data files overlaid on the project workspace
| style="width:250px;" | Requires import of an existing ".CAR" data file
|}
 
Click on each category to learn more details about it in the [[Glossary of EM.Cube's Simulation Observables & Graph Types]].
Of EM.Tempo's frequency domain observables, the near fields, far fields and all of their associated parameters like directivity, RCS, etc., are calculated at a certain single frequency that is specified as part of the definition of the observable. To compute those frequency domain data at several frequencies, you need to define multiple observables, one for each frequency. On the other hand, port characteristics like S/Y/Z parameters and VSWR are calculated over the entire specified bandwidth of your project. Of EM.Tempo's source types, lumped sources, waveguide sources and distributed sources let you define one or more ports for your physical structure and compute its port characteristics. One of EM.Tempo's real advantages over frequency-domain solvers is its ability of generate wideband S/Z/Y parameter data in a single simulation run.
=== Examining the Near Fields in Time and Frequency Domains ===
[[Image:FDTD77.png|thumb|400px|Time-domain evolution of the electric field at a given point.]]
EM.Tempo's FDTD time marching loop computes all the six electric and magnetic field components at every Yee cell of your structure's mesh at every time step. This amounts to a formidable amount of data that is computationally very inefficient to store. Instead, you can instruct EM.Tempo to save a small potion of these data for visualization and plotting purposes. Using a '''Field Probe''' at a specified point, you can record the a time-domain field component over the entire FDTD loop. The time-domain results are also transformed to the frequency domain within the specified bandwidth using a discrete Fourier transform (DFT).
<table>
<tr>
<td>
[[Image:FDTD77.png|thumb|left|480px|Time-domain evolution of the electric field at a given point.]]</td>
</tr>
</table>
 
In EM.Tempo, you can visualize the near fields at a specific frequency in a specific plane of the computational domain. To do so, you need to define a '''Field Sensor''' observable. EM.Tempo's field sensor defines a plane across the entire computational domain parallel to one of the three principal planes. The magnitude and phase of all the six components of the electric and magnetic fields on the mesh grid points on the sensor plane are computed and displayed.
<table>
<tr>
<td> [[Image:FDTD_FS2.png|thumb|360pxleft|420px|EM.Tempo's Field Sensor dialog.]] </td></tr><tr><td> [[Image:FDTD_FS1FDTD_FS1_new.png|thumb|360pxleft|480px|Three field sensor planes defined around a PEC ellipsoid illuminated by a plane wave source.]] </td>
</tr>
</table>
<table>
<tr>
<td> [[Image:FDTD_FS3FDTD_FS3_new.png|thumb|left|360px|Electric field distribution above the PEC plate.]] </td><td> [[Image:FDTD_FS4FDTD_FS4_new.png|thumb|left|360px|Magnetic field distribution above the PEC plate.]] </td>
</tr>
</table>
<table>
<tr>
<td> [[Image:FDTD_FF1.png|thumb|360pxleft|720px|EM.Tempo's Radiation Pattern dialog.]] </td></tr><tr><td> [[Image:FDTD_FF3.png|thumb|360pxleft|600px|EM.Tempo's Radar Cross Section dialog.]] </td>
</tr>
</table>
[[Image:FDTD_FF2.png|thumb|400px|EM.Tempo's Far Field Acceleration dialog.]]
The default radiation box is placed at an offset of 0.1&lambda;<sub>0</sub> from the largest bounding box of your physical structure. You can change the offset value from the "Far Field Acceleration" dialog, which can be accessed by clicking the {{key|Acceleration...}} button of EM.Tempo's Radiation Pattern dialog. Calculation of far-field characteristics at high angular resolutions can be a very time consuming computational task. You can accelerate this process by setting a lower '''Max. Far Field Sampling Rate''' from the same dialog. The default sampling rate is 30 samples per wavelength. A low sampling rate will under-sample the mesh grid points on the radiation box.
<table><tr><td> [[Image:FDTD133FDTD_FF2.png|thumb|350pxleft|Far Field Background Medium 480px|EM.Tempo's far field acceleration dialog.]]</td></tr></table>
=== Radiation Pattern Above a Half-Space Medium ===
# Free space background terminated in an infinite PMC ground plane at the bottom
# Free space background terminated in an infinite dielectric half-space medium
 
<table>
<tr>
<td> [[Image:FDTD133.png|thumb|left|480px|EM.Tempo's far field background medium dialog.]] </td>
</tr>
</table>
In other words, EM.Tempo lets you calculate the far field radiation pattern of a structure in the presence of any of the above four background structure types. You can set these choices in EM.Tempo's "Far Field Background Medium" dialog. To access this dialog, open the Radiation Pattern dialog and click the button labeled {{key|Background...}}. From this dialog, you can also set the Z-coordinate of the top of the terminating half-space medium. If you set the -Z boundary condition of your computational domain to PEC or PMC types, the cases of infinite PEC or PMC ground planes from the above list are automatically selected, respectively, and the Z-coordinates of the ground plane and the bottom face of the computational domain will be identical.
<table>
<tr>
<td> [[Image:fdtd_out36_tn.png|thumb|300pxleft|360px|Radiation pattern of a vertical dipole above PEC ground.]] </td><td> [[Image:fdtd_out37_tn.png|thumb|300pxleft|360px|Radiation pattern of a vertical dipole above PMC ground.]] </td>
</tr>
<tr>
<td> [[Image:fdtd_out38_tn.png|thumb|300pxleft|360px|Radiation pattern of a horizontal dipole above PEC ground.]] </td><td> [[Image:fdtd_out39_tn.png|thumb|300pxleft|360px|Radiation pattern of a horizontal dipole above PMC ground.]] </td>
</tr>
</table>
 
=== Generating and Working with Multi-Frequency Simulation Data ===
 
One of the primary advantages of the FDTD method is its ability to run wideband EM simulations. The frequency domain data are computed by transforming the time-domain data to the Fourier domain. This is done automatically when EM.Tempo computes the port characteristics such as S/Z/Y parameters. The following frequency-domain observables are defined at a single frequency:
 
* Near-Field Sensor
* Far-field Radiation Pattern
* RCS
* Huygens Surface
 
The default computation frequency of the above observables is the project's center frequency (fc). You can change the observable frequency from the observable's property dialog and enter any frequency in Hz. The reason these types of simulation data are computed at a single frequency is their typically very large size. However, you can define as many instances of these observables and set different frequency values for each one. In the case of radiation pattern and RCS, there are two dialogs that can be accessed from the navigation tree. Right-click on the "Fer-Field Radiation Patterns" or "Radar Cross Sections" items of the navigation tree and select '''Insert Multi-Frequency Radiation Pattern...''' or '''Insert Multi-Frequency RCS...''' from the contextual menu.
 
<table>
<tr>
<td> [[Image:RadPattern multi.png|thumb|left|360px|EM.Tempo's Multi-frequency Radiation Pattern dialog.]] </td>
<td> [[Image:RCS multi.png|thumb|left|360px|EM.Tempo's Multi-frequency Radar Cross Section dialog.]] </td>
</tr>
</table>
 
Using the multi-frequency dialogs, you can set the value of Start Frequency, Stop Frequency and Step Frequency in Hz. You can also set the values of Theta Angle Increment and Phi Angle Increment in degrees. The default values of both quantities are 5&deg;. In the case of RCS, you have choose one of the two options: '''Bistatic RCS''' or '''Monostatic RCS'''.
 
To facilitate the process of all the defining multi-frequency observables in EM.Tempo, you can also use the following Python functions at the command line:
 
----
 
emag_field_sensor_multi_freq(f1,f2,df,dir_coordinate,x0,y0,z0)
 
emag_farfield_multi_freq(f1,f2,df,theta_incr,phi_incr)
 
emag_rcs_bistatic_multi_freq(f1,f2,df,theta_incr,phi_incr)
 
emag_rcs_monostatic_multi_freq(f1,f2,df,theta_incr,phi_incr)
 
emag_huygens_surface_multi_freq(f1,f2,df,x1,y1,z1,x2,y2,z2)
 
----
 
In the above Python functions, f1 and f2 are the start and stop frequencies, respectively, and df is the frequency increment, all expressed in Hz. Note that the above commands simply create and insert the specified observables in the navigation tree. They do not run perform a simulation. The created observables have the same "base name" with ordered numeric indices. For example, far-field radiation patterns are names as Multi_FF_1, Multi_FF_2, ...
 
EM.Tempo also provides some additional Python functions for the far-field radiation patterns and RCS observables.
 
----
 
emag_farfield_consolidate(x1,x2,dx,base_name)
 
emag_rcs_consolidate(x1,x2,dx,base_name)
 
emag_farfield_explode(base_name)
 
emag_rcs_explode(base_name)
 
emag_farfield_average(n,base_name)
 
emag_rcs_average(n,base_name)
 
----
 
The two "consolidate" Python functions take the results of multi-frequency simulation observables and merge them into a single data file. The base name in the case of far-field radiation patterns is "Multi_FF" as pointed out earlier. The name of the resulting consolidated data file is the same as the base name with a "_All" suffix and a ".DAT" file extension. In the case of far-field radiation patterns, it is "Multi_FF_All.DAT". The two "explode" Python functions take a consolidated data file names as "base_name_All.DAT" and break it up into several single-frequency ".RAD" or ".RCS" data files. Finally, the two "average" Python functions take several radiation pattern or RCS files with a common base name in the current project folder, compute their average and save the results to a new data file named "base_name_ave" with a ".RAD" or ".RCS" file extensions, respectively.
== Generating the FDTD Mesh in EM.Tempo ==
{{Note|When choosing a mesh type for your FDTD simulation, keep in mind that adaptive and regular mesh types are frequency-dependent and their density varies with the highest frequency of your specified bandwidth, while the uniform mesh type is always fixed and independent of your project's frequency settings.}}
[[Image:Info_icon.png|40px30px]] Click here to learn more about '''[[Mesh_Generation_Schemes_in_EMPreparing_Physical_Structures_for_Electromagnetic_Simulation#Working_with_EM.Cube#Working_with_Mesh_Generator .27s_Mesh_Generators | Working with Mesh Generator ]]'''.
[[Image:Info_icon.png|40px30px]] Click here to learn more about the properties of '''[[Mesh_Generation_Schemes_in_EMGlossary_of_EM.Cube%27s_Simulation-Related_Operations#EM.Tempo.27s_Adaptive_Brick_Mesh_Generator Adaptive_Yee_Mesh | EM.Tempo's Adaptive Brick Mesh Generator]]'''.
[[Image:Info_icon.png|40px30px]] Click here to learn more about the properties of '''[[Mesh_Generation_Schemes_in_EMGlossary_of_EM.Cube%27s_Simulation-Related_Operations#The_FixedFixed-Cell_Brick_Mesh_Generator Cell_Brick_Mesh | The EM.Tempo's Fixed-Cell Brick Mesh Generator ]]'''.
<table>
<tr>
<td>
[[Image:FDTD MAN18.png|thumb|left|550px360px|The top view of the adaptive FDTD mesh of the dielectric ellipsoid.]]
</td>
</tr>
<tr>
<td>
[[Image:FDTD MAN19.png|thumb|left|550px360px|The top view of the regular FDTD mesh of the dielectric ellipsoid with the same mesh density.]]
</td>
</tr>
<tr>
<td>
[[Image:FDTD MAN20A.png|thumb|left|550px360px|The top view of the fixed-cell FDTD mesh of the dielectric ellipsoid using the larger cell size inside the air region.]]
</td>
</tr>
<tr>
<td>
[[Image:FDTD MAN20.png|thumb|left|550px360px|The top view of the fixed-cell FDTD mesh of the dielectric ellipsoid using the smaller cell size inside the dielectric region.]]
</td>
</tr>
</td>
</tr>
</table>
 
<table>
<tr>
<td>
[[Image:FDTD MAN24.png|thumb|left|450px360px|The low-resolution adaptive mesh of the PEC parabolic reflector.]]</td><td> [[Image:FDTD MAN27.png|thumb|left|360px|The high-resolution adaptive mesh of the PEC parabolic reflector.]]
</td>
</tr>
<tr>
<td>
[[Image:FDTD MAN27MAN26.png|thumb|left|450px360px|The hightop (XY) view of the low-resolution adaptive mesh of the PEC parabolic reflector.]]</td><td> [[Image:FDTD MAN25.png|thumb|left|360px|The right (YZ) view of the low-resolution adaptive mesh of the PEC parabolic reflector.]]
</td>
</tr>
</table>
 
=== Adding Fixed Grid Points to the Adaptive Yee Mesh ===
 
Adding fixed grid points to an FDTD mesh increases its resolution locally. Each fixed grid point adds three grid lines along the three principal axes passing through that point. You can add as many fixed grid points as you desire and create dense meshes at certain regions. Fixed grid points appear as grey points in the project workspace. To insert a new fixed grid point, follow these steps:
 
* Open the Fixed Grid Points Dialog by selecting '''Menu > Simulate > Discretization > Fixed Grid Points...''' or by right-clicking on the '''FDTD''' '''Mesh''' item of the navigation tree and selecting '''Fixed Grid Points Settings...'''
* Click the {{key|Add/Edit}} button to open the "Add Fixed Grid Point" dialog.
* Enter the (X, Y, Z) coordinates of the new fixed point in the coordinate boxes and click the {{key|OK}} button.
* To modify the coordinates of an existing fixed grid point, select it from the table and click the {{key|Add/Edit}} button.
* You can also remove a fix grid point from the FDTD mesh using the {{key|Delete}} button.
<table>
<tr>
<td> [[Image:FDTD MAN26FDTD36.png|thumb|left|550px480px|The top (XY) view of the lowA user-resolution adaptive defined fixed grid point in an FDTD mesh of the PEC parabolic reflector.]]</td>
</tr>
<tr>
<td> [[Image:FDTD38.png|thumb|left|480px|Adding a new fixed grid point in EM.Tempo's fixed grid points settings dialog.]] </td>
</tr>
<tr>
<td> [[Image:FDTD39.png|thumb|left|480px|The "Add Fixed Grid Point" dialog.]] </td>
</tr>
</table>
 
According to the Courant-Friedrichs-Levy (CFL) stability criterion, the FDTD time step is determined by the smallest cell size in your FDTD mesh. Occasionally, EM.Tempo's adaptive mesh generator may create extremely tiny grid cells that would result in extremely small time steps. This would then translate into a very long computation time. [[EM.Cube]] offers the "Regular" FDTD mesh generator, which is a simplified version of the adaptive mesh generator. In a regular FDTD mesh, the grid cell sizes stay rather the same in objects of the same material composition. The mesh resolution increases in materials of higher permittivity and/or permeability based on the effective wavelength in exactly the same way as the adaptive mesh.
 
=== Profiling the Brick Mesh ===
 
A volumetric brick mesh is overwhelming for visualization in the 3D space. For this reason, [[EM.Cube]]'s mesh view shows only the outline of the cells on exterior surface of the (staircased) meshed objects. The mesh grid planes provide a 2D profile of the mesh cells along the principal coordinate planes. To display a mesh grid plane, select '''Menu > Simulate > Discretization > Grid Planes >''' and pick one of the three options: '''XY Plane''', '''YZ Plane''' or '''ZX Plane'''. You may also right click on one of the '''XY Plane''', '''YZ Plane''' or '''ZX Plane''' items in the '''Discretization''' section of the navigation tree and select '''Show''' from the contextual menu.
 
While a mesh grid plane is visible, you can move it back and forth between the two boundary planes at the two opposite sides of the computational domain. You can do this in one of the following four ways:
 
* Using the keyboard's Page Up {{key|PgUp}} key and Page Down {{key|PgDn}} key.
* By selecting '''Menu > Simulate > Discretization > Grid Planes > Increment Grid''' or ''' Decrement Grid'''.
* By right clicking on one of the '''XY Plane''', '''YZ Plane''' or '''ZX Plane''' items in the '''Discretization''' section of the navigation tree and selecting '''Increment Grid''' or ''' Decrement Grid''' from the contextual menu.
* Using the keyboard shortcut {{key|>}} or {{key|<}}.
 
As you “step through” or profile the mesh grid, you can see how the structure is discretized along internal planes of the computational domain.
 
<table>
<tr>
<td> [[Image:Tempo L1 Fig11.png|thumb|left|360px|The XY mesh grid plane.]] </td>
<td> [[Image:Tempo L1 Fig12.png|thumb|left|360px|The YZ mesh grid plane.]] </td>
</tr>
</table>
 
=== The FDTD Grid Coordinate System (GCS) ===
 
When your physical structure is discretized using the brick mesh generator, a second coordinate system becomes available to you. The mesh grid coordinate system allows you to specify any location in the computational domain in terms of node indices on the mesh grid. [[EM.Cube]] displays the total number of mesh grid lines of the simulation domain (N<sub>x</sub> × N<sub>y</sub> × N<sub>z</sub>) along the three principal axes on the '''Status Bar'''. Therefore, the number of cells in each direction is one less than the number of grid lines, i.e. (N<sub>x</sub>-1)× (N<sub>y</sub>-1) × (N<sub>z</sub>-1). The lower left front corner of the domain box (Xmin, Ymin, Zmin) becomes the origin of the mesh grid coordinate system (I = 0, J = 0, K = 0). The upper right back corner of the domain box (Xmax, Ymax, Zmax) therefore becomes (I = N<sub>x</sub>-1, J = N<sub>y</sub>-1, K = N<sub>z</sub>-1).
 
[[EM.Cube]] allows you to navigate through the mesh grid and evaluate the grid points individually. Every time you display one of the three mesh grid planes, the "'''Grid Coordinate System (GCS)'''" is automatically activated. On the Status Bar, you will see [[Image:statusgrid.png]] instead of the default [[Image:statusworld.png]]. This means that the current coordinates reported on Status Bar are now expressed in grid coordinate system. The current grid point is displayed by a small white circle on the current mesh grid plane, and it always starts from (I = 0, J = 0, K = 0). Using the keyboard's '''Arrow Keys''', you can move the white circle through the mesh grid plane and read the current node's (I, J, K) indices on the status bar. You can switch back to the "'''World Coordinate System (WCS)'''" or change to the "'''Domain Coordinate System'''" by double-clicking the status bar box that shows the current coordinate system and cycling through the three options. The domain coordinate system is one that establishes its origin at the lower left front corner of the computational domain and measure distances in project unit just like the WCS.
 
<table>
<tr>
<td>
[[Image:FDTD MAN25FDTD35(1).png|thumb|left|550px480px|The right grid cursor on the XY grid plane and its grid coordinates (YZI, J, K) view of the low-resolution adaptive mesh of displayed on the PEC parabolic reflectorstatus bar.]]
</td>
</tr>
=== EM.Tempo's Simulation Modes ===
Once you build your physical structure in the project workspace and define an excitation source, you are ready to run an FDTD simulation. The simulation engine will run even if you have not defined any observables. Obviously, no simulation data will be generated in that case. [[EM.Tempo ]] currently offers several different simulation modes as follows:
{| class="wikitable"
! scope="col"| Restrictions
|-
| style="width:120px;" | [[#Running a Wideband FDTD Analysis| Wideband Analysis]]
| style="width:270px;" | Simulates the physical structure "As Is"
| style="width:100px;" | Single run
| style="width:150px;" | None
|-
| style="width:120px;" | [[Parametric_Modeling_%26_Simulation_Modes_in_EM.Cube#Running_Parametric_Sweep_Simulations_in_EM.Cube | Parametric Sweep]]
| style="width:270px;" | Varies the value(s) of one or more project variables
| style="width:100px;" | Multiple runs
| style="width:150px;" | None
|-
| style="width:120px;" | [[Parametric_Modeling_%26_Simulation_Modes_in_EM.Cube#Performing_Optimization_in_EM.Cube | Optimization]]
| style="width:270px;" | Optimizes the value(s) of one or more project variables to achieve a design goal
| style="width:100px;" | Multiple runs
| style="width:150px;" | None
|-
| style="width:120px;" | [[Parametric_Modeling_%26_Simulation_Modes_in_EM.Cube#Generating_Surrogate_Models | HDMR Sweep]]
| style="width:270px;" | Varies the value(s) of one or more project variables to generate a compact model
| style="width:100px;" | Multiple runs
| style="width:150px;" | None
|-
| style="width:120px;" | [[#Running a Dispersion Sweepin EM.Tempo | Dispersion Sweep]]
| style="width:270px;" | Varies the value of wavenumber in a periodic structure
| style="width:100px;" | Multiple runs
* Select the simulation mode and run the FDTD engine.
Wideband analysis is [[EM.Tempo]]'s simplest and most straightforward simulation mode. It runs the FDTD time marching loop once. At the end of the simulation, the time-domain field data are transformed into the frequency domain using a discrete Fourier transform (DFT). As a result, you can generate wideband frequency data from a single time-domain simulation run. The other simulation modes will be explained later in this manual.
To open the Simulation Run Dialog, click the '''Run''' [[Image:run_icon.png]] button of the '''Simulate Toolbar''' or select the menu item '''Simulate &rarr: ; Run...''' from the menu bar or use the keyboard shortcut {{key|Ctrl+R}}. To start the FDTD simulation, click the {{key|Run}} button at the bottom of this dialog. Once the simulation starts, the "Output Message Window" pops up and reports messages during the different stages of the FDTD simulation. During the FDTD time marching loop, after every 10th time step, the output window updates the values of the time step, elapsed time, the engine performance in Mega-cells per seconds, and the value of the convergence ratio U<sub>n</sub>/U<sub>max</sub> in dB. An [[EM.Tempo ]] simulation is terminated when the ratio U<sub>n</sub>/U<sub>max</sub> falls below the specified power threshold or when the maximum number of time steps is reached. You can, however, terminate the FDTD engine earlier by clicking the '''Abort Simulation''' button.
<table>
An FDTD simulation involves a number of numerical parameters that can be accessed and modified from the FDTD Engine Settings Dialog. To open this dialog, select '''Menu > Simulate > Simulation Engine Settings... '''or open the '''Run Dialog''', and click the {{key|Settings}} button next to the engine dropdown list.
In the " '''Convergence''' " section of the dialog, you can set the '''Termination Criterion''' for the FDTD time loop. The time loop must stop after a certain point in time. If you use a decaying waveform like a Gaussian pulse or a Modulated Gaussian pulse, after certain number of time steps, the total energy of the computational domain drops to very negligible values, and continuing the time loop thereafter would not generate any new information about your physical structure. By contrast, a sinusoidal waveform will keep pumping energy into the computational domain forever, and you have to force the simulation engine to exit the time loop. [[EM.Tempo ]] provides two mechanism to terminated the time loop. In the first approach, an energy-like quantity defined as U<sub>n</sub> = &Sigma; [ &epsilon;<sub>0</sub>|'''E<sub>i,n</sub>'''|<sup>2</sup> + &mu;<sub>0</sub>|'''H<sub>i,n</sub>'''|<sup>2</sup> ].&Delta;V<sub>i</sub> is calculated and recorded at a large random set of points in the computational domain. Here i is the space index and n is the time index. The quantity U<sub>n</sub> has a zero value at t = 0 (i.e. n = 0), and its value starts to build up over time. With a Gaussian or Modulated Gaussian pulse waveform, U<sub>n</sub> reach a maximum value U<sub>max</sub> at some time step and starts to decline thereafter. The ratio 10.log( U<sub>n</sub>/ U<sub>max</sub>) expressed in dB is used as the convergence criterion. When its value drops below certain '''Power Threshold''', the time loop is exited. The default value of Power Threshold is -30dB, meaning that the FDTD engine will exit the time loop if the quantity U<sub>n</sub> drops to 1/1000 of its maximum value ever. The second termination criterion is simply reaching a '''Maximum Number of Time Steps''' , whose default value set to 10,000. A third option, which is [[EM.Tempo]]'s default setting (labeled "'''Both'''"), terminates the simulation as soon as either of the first two criteria is met first.
{{Note|Keep in mind that for highly resonant structures, you may have to increase the maximum number of time steps to very large values above 20,000.}}
# GPU Solver
The serial CPU solver is [[EM.Tempo]]'s basic FDTD kernel that run the time marching loop on a single central processing unit (CPU) of your computer. The default option is the multi-core CPU solver. This is a highly parallelized version of the FDTD kernel based on the Open-MP framework. It takes full advantage of a multi-core, multi-CPU architecture, if your computer does have one. The GPU solver is a hardware-accelerated FDTD kernel optimized for CUDA-enabled graphical processing unit (GPU) cards. If your computer has a fast NVIDIA GPU card with enough onboard RAM, the GPU kernel can speed up your FDTD simulations up to 50 times or more over the single CPU solver.
For structures excited with a plane wave source, there are two standard FDTD formulations: '''Scattered Field '''(SF) formulation and '''Total Field - Scattered Field''' (TF-SF) formulation. [[EM.Tempo]] offers both formulations. The TF-SF solver is the default choice and is typically much faster than the SF solver for most problems. In two cases, when the structure has periodic boundary conditions or infinite CPML boundary conditions (zero domain offsets), only the SF solver is available.
{{Note| [[EM.Tempo]] can only handle regular, non-skewed periodic lattices with no secondary offsets.}}
[[Image:Info_icon.png|40px30px]] Click here to learn more about the theory of '''[[Basic_FDTD_TheoryBasic_Principles_of_The_Finite_Difference_Time_Domain_Method#Time_Domain_Simulation_of_Periodic_Structures | Time Domain Simulation of Periodic Structures]]'''.
===Defining a Periodic Structure in EM.Tempo===
<tr>
<td> [[Image:Period1.png|thumb|350px|Setting periodic scan angles in EM.Tempo's Lumped Source dialog.]] </td>
</tr></tr></table> <table><tr><tr><td> [[Image:Period2.png|thumb|350px720px|Setting the array factor in EM.Tempo's Radiation Pattern dialog.]] </td>
</tr>
</table>
=== Running a Dispersion Sweep in EM.Tempo ===
The '''Dispersion Sweep '''option of the Simulation Mode dropdown drop-down list performs a sweep of constant k<sub>l</sub> wavenumber values. This is a specialized sweep for the constant transverse wavenumber method that [[EM.Cube]]'s [[FDTD ModuleTempo]] uses to model periodic structures illuminated by a plane wave source. The real advantage of a dispersion sweep is that through a one-dimensional sweep of k<sub>li</sub>, you can find the reflection and transmission coefficients for all combinations of frequency f<sub>j</sub> and incident angle &theta;<sub>j</sub> such that (2&pi;/c) . f<sub>j</sub>. sin &theta;<sub>j</sub> = k<sub>li</sub>. This provides a complete picture of the dispersion behavior of your periodic structure. The sweep data can be graphed as a wavenumber-frequency intensity plot (also known as beta-k diagram) that projects the eigenvalues of the periodic structure. The horizontal axis represents the constant transverse wavenumber k<sub>l</sub> (or beta). The vertical axis represents frequency. Sometimes, the free space wave number k<sub>0</sub> = (2&pi;/c).f is used as the vertical axis, hence, the term beta-k diagram. However, [[EM.Cube]] plots frequency vs. wavenumber. Both the horizontal and vertical axes start from 0 and extend to f<sub>max</sub> and k<sub>l,max</sub>, respectively, where f<sub>max</sub> = f<sub>0</sub> + &Delta;f/2, and &Delta;f is the specified bandwidth of the project. For this sweep option you have to specify the number of wavenumber samples. Note that the dispersion sweep is run for a fixed given value of the plane wave incident angle &phi; as specified in [[FDTD ModuleEM.Tempo]]'s Plane Wave Dialog.
<table>
<tr>
<td>
[[Image:FDTD144KBT Settings.png|thumb|250px360px| [[EM.Tempo]]'s Dispersion Sweep Settings dialog.]]
</td>
</tr>
<tr>
<td>
[[Image:FDTD148KBT R.png|leftthumb|450px360px|A typical reflection coefficient dispersion diagram of a periodic structure.]]</td><td>[[Image:KBT T.png|thumb|360px|A typical transmission coefficient dispersion diagram of a periodic structure.]]
</td>
</tr>
</table>
<pbr />&nbsp; </phr> [[Image:Top_icon.png|48px30px]] '''[[EM.Tempo#Product_Overview | Back to the Top of the Page]]'''
[[Image:Tutorial_icon.png|40px30px]] '''[[EM.Cube#EM.Tempo_Tutorial_Lessons Tempo_Documentation | EM.Tempo Tutorial Gateway]]'''
[[Image:Back_icon.png|40px30px]] '''[[EM.Cube | Back to EM.Cube Main Page]]'''
4,622
edits