Changes

EM.Tempo

12,323 bytes added, 14:07, 7 August 2019
[[Image:Splash-fdtd.jpg|right|720px]]
<strong><font color="#961717" size="4">Fast Multi-Core Multicore & GPU-Accelerated FDTD Solvers for Simulating the Most Complex Electromagnetic Modeling Problems</font></strong>
<table>
<tr>
<tr>
</table>
[[Image:Tutorial_icon.png|30px]] '''[[EM.Cube#EM.Tempo_Tutorial_Lessons Tempo_Documentation | EM.Tempo Tutorial Gateway]]'''
[[Image:Back_icon.png|30px]] '''[[EM.Cube | Back to EM.Cube Main Page]]'''
=== EM.Tempo in a Nutshell ===
[[EM.Tempo]] is a powerful 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 the key to a thorough understanding of the interaction of electromagnetic waves with complex media such as anisotropic composites, metamaterials or biological environments or with passive and active devices and nonlinear circuits.
[[EM.Tempo]] has undergone several evolutionary development cycles since its inception in 2004. The original simulation engine utilized an FDTD formulation based on the uniaxial perfectly matched layer (UPML) boundary termination. Subsequently, a more advanced boundary termination based on the convolutional perfectly matched layer (CPML) was implemented 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 using CPML walls that touch material media. A novel formulation of periodic boundary conditions was 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 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:Info_icon.png|30px]] Click here for an overview of the '''[[Basic Principles of The Finite Difference Time Domain Method | Basic FDTD Theory]]'''.
=== EM.Tempo as the FDTD Module of EM.Cube ===
[[EM.Tempo]] is a general-purpose EM simulator than can solve most types of electromagnetic modeling problems involving arbitrary geometries and complex material variations in both time and frequency domains. It has also been integrated within the [[EM.Cube]] simulation environment as 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|30px]] Click here to learn more about '''[[Getting_Started_with_EM.Cube | EM.Cube Modeling Environment]]'''.
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 structureto reduce the total size of the computational domain.
<table>
Generalized uniaxial and doubly negative refractive index metamaterials with arbitrary numbers of both electric and magnetic poles</li>
<li>
Voxel databases for pointwise grid definition Two types of inhomogeneous gyrotropic materials: ferrites and magnetoplasmas</li>
<li>
PEC, PMC and convolutional perfectly match layer (CPML) boundary conditions</li>
<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 element</li> <li> Active and pssive one-port and two-port networks with arbitrary Netlist definitionsHuygens 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>
<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>
Interanl node voltages and currents of Netlist-based one-port and two-port networks</li>
<li>
Electric and Computation of electric, magnetic energiesand 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>
=== 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"
|-
| style="width:30px;" | [[File:voxel_group_icon.png]]
| style="width:150px;" | [[Glossary_of_EM.Cube%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Voxel Database Gyrotropic_Material |Voxel DatabaseGyrotropic Material]]| style="width:300px;" | Modeling general inhomogeneous materials defined pointwise using a voxel databaseferrites and magnetoplasmas| style="width:250px;" | Must import Solid objects|-| style="width:30px;" | [[File:Virt_group_icon.CARpng]]| style=" type data filewidth:150px;" | [[Glossary of EM.Cube's Materials, Sources, Devices & Other Physical Object Types#Virtual_Object_Group | Virtual Object]]| style="width:300px;" | Used for representing non-physical items | style="width:250px;" | All types of objects
|}
=== 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.
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|30px]] Click here to access the '''[[Glossary of EM.Cube's Materials, Sources, Devices & Other Physical Object Types]]'''.
<tr>
<td>
[[Image:FDTD_MAN1Tempo NavTree.png|thumb|left|300px400px|EM.Tempo's navigation tree.]]
</td>
</tr>
# PMC
# Dispersive
# Gyrotropic
# General Anisotropic
# Uniaxial Anisotropic
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 SettingSettings]]'''.
<table>
</table>
=== Advanced CMPL CPML Setup ===
In 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 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.
=== Using CPML to Model Structures of Infinite Extents ===
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>
=== 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:
{| class="wikitable"
| 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 specified 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;" | 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;" | [[File:hertz_src_icon.png]]
| style="width:150px;" | [[Glossary_of_EM.Cube%27s_Materials,_Sources,_Devices_%26_Other_Physical_Object_Types#Filamentary_Current_Source |Filamentary Current Source]]
| style="width:250px;" | General-purpose 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:200px;" | None (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;" | [[File:plane_wave_icon.png]]
| 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 Materials, Sources, Devices & Other Physical Object Types#Huygens Source |Huygens Source]]
| style="width:250px;" | Used for modeling equivalent sources imported from other [[EM.Cube]] modules
| style="width:200px;" | None (stand-alone source)
| style="width:200px;" | Surface of a cube
| style="width:200px;" | Imported from a Huygens surface data file
|}
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>
=== Simulating a Multiport Structure in EM.Tempo ===
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 Materials, Sources, Devices & Other Physical Object Types#Lumped Source |Lumped 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.
If your physical structure has two or more sources, but you have not defined any ports, all the sources will excite the structure simultaneously during the simulation. However, when you assign N ports to the sources, then you have a multiport structure that is characterized by an N×N scattering matrix, an N×N impedance matrix, and an N×N admittance matrix. To calculate these matrices, [[EM.Tempo]] uses a binary excitation scheme in conjunction with the principle of linear superposition. In this binary scheme, the structure is analyzed a total of N times. Each time one of the N port-assigned sources is excited, and all the other port-assigned sources are turned off. In other words, the FDTD solver runs a "port sweep" internally. When the ''j''th port is excited, all the S<sub>ij</sub> parameters are calculated together based on the following definition:
:<math> S_{ij} = \sqrt{\frac{Re(Z_i)}{Re(Z_j)}} \cdot \frac{V_j - Z_j^*I_j}{V_i+Z_i I_i} </math>
where V<sub>i</sub> is the voltage across Port i, I<sub>i</sub> is the current flowing into Port i and Z<sub>i</sub> is the characteristic impedance of Port i. The sweep loop then moves to the next port until all ports have been excited.
In summary, to analyze an N-port structure, [[EM.Tempo]] runs N separate FDTD time marching loops. The S/Z/Y parameters are frequency-domain quantities. The port voltages and currents are Fourier-transformed to the frequency domain over the frequency range [fc-bw/2, fc+bw/2], where fc is the center frequency and bw is the bandwidth of your project. You can reduce the frequency range of the Fourier transform by settings new values for '''Start''' and '''End''' frequencies in the "Port Definition" dialog as long as these are within the range [fc-bw/2, fc+bw/2]. By default, 200 frequency samples are taken over the specified frequency range. This number can be modified from the FDTD simulation engine settings dialog.
{{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|30px]] Click here to learn more about the '''[[Glossary_of_EM.Cube%27s_Simulation_Observables_%26_Graph_Types#Port_Definition_Observable | Port Definition Observable]]'''.
=== 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
# Arbitrary User-Defined Function
A sinusoidal waveform is single-tone and periodic. Its spectrum is concentrated around a single frequency, which is equal to your project's center frequency. A Gaussian pulse decays exponentially as t &rarr; &infin;, but it has a lowpass frequency spectrum which is concentrated around f = 0. A modulated Gaussian pulse decays exponentially as t &rarr; &infin;, and it has a bandpass frequency spectrum concentrated around your project's center frequency. For most practical problems, a modulated Gaussian pulse waveform with [[EM.Tempo]]'s default parameters provides an adequate performance.
The accuracy of the FDTD simulation results depends on the right choice of temporal waveform. [[EM.Tempo]]'s default waveform choice is a modulated Gaussian pulse. At the end of an FDTD simulation, the time domain field data are transformed into the frequency domain at your specified frequency or bandwidth to produce the desired observables.
{{Note|All of [[EM.Tempo]]'s excitation sources have a default modulated Gaussian pulse waveform unless you change them.}}
[[Image:Info_icon.png|30px]] Click here to learn more about [[EM.Tempo]]'s '''[[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
=== Defining Lumped Devices ===
In [[EM.Tempo]], you can define four 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#Capacitor | Capacitor]]'''
# '''[[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 sourcesources, lumped devices have a 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:
<table>
<tr>
<td> [[Image:FDTD MAN17.png|thumb|left|480px|EM.Tempo's lumped device dialogfor 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 EMGlossary_of_EM.Cube's Materials%27s_Materials, Sources_Sources, Devices & Other Physical Object Types_Devices_%26_Other_Physical_Object_Types#Resistor Active_Distributed_One-Port_Device | Active Distributed One-PortDevice/Circuit]]''' # '''[[Glossary of EMGlossary_of_EM.Cube's Materials%27s_Materials, Sources_Sources, Devices & Other Physical Object Types_Devices_%26_Other_Physical_Object_Types#Capacitor Active_Distributed_Two-Port_Device | Active Distributed Two-PortDevice/Circuit]]'''
These 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}}..
</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.
{{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 uses 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:
----
R2 3 0 50
C2 3 0 11p
----
 
{{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>
! scope="col"| Icon
! scope="col"| Simulation Data Type
! scope="col"| Associated Observable Type
! scope="col"| Applications
! scope="col"| Restrictions
|-
| style="width:30px;" | [[File:fieldprobe_icon.png]]
| style="width:150px;" | Point FieldsTemporal 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:30px;" | [[File:fieldprobe_icon.png]]
| style="width:150px;" | Temporal WaveformsPoint Fields| 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- the amplitude and H-phase of electric and magnetic field components at a fixed location in both time and the frequency domainsdomain
| style="width:250px;" | None
|-
| style="width:30px;" | [[File:fieldsensor_icon.png]]
| style="width:150px;" | Near-Field Distribution Maps
| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables & Graph Types#Near-Field Sensor Field_Sensor_Observable |Near-Field Sensor]] | style="width:300px;" | Computing the amplitude and phase of electric and magnetic field components on a planar cross section of the computational domain in both time and the frequency domainsdomain
| 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#Far-Field_Radiation_Pattern_Observable |Far-Field Radiation 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 Field_Radiation_Pattern_Observable |Far-Field Radiation Pattern]]| style="width:300px;" | Computing the radiation pattern and additional radiation characteristics such as directivity, axial ratio, side lobe levels, etc. | style="width:250px;" | NoneRequires 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;" | Far-Field Scattering CharacteristicsRadar Cross Section| style="width:150px;" | [[Glossary of EM.Cube's Simulation Observables & Graph Types#Radar Cross Section 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#Radar_Cross_Section_(RCS)_Observable | RCS]]
| 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:30px;" | [[File:port_icon.png]]
| style="width:150px;" | Port Voltages, 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:energy_icon.png]]
| 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#Energy-Power_Observable | Energy-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#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 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
|}
<table>
<tr>
<td> [[Image:FDTD_FF1.png|thumb|left|480px720px|EM.Tempo's Radiation Pattern dialog.]] </td>
</tr>
<tr>
<td> [[Image:FDTD_FF3.png|thumb|left|480px600px|EM.Tempo's Radar Cross Section dialog.]] </td>
</tr>
</table>
</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 ==
</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, [[FDTD Module]]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 ===
<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>
4,622
edits