Changes

EM.Tempo

0 bytes added, 17:13, 29 August 2016
<td> [[Image:FDTD24A.png|thumb|360px|The domain box of a patch antenna with a finite-sized substrate.]] </td>
<td> [[Image:FDTD24.png|thumb|360px|The domain box of a laterally infinite patch antenna with a PEC ground and zero ±X and ±Y and -Z domain offsets.]] </td>
</tr>
</table>
 
== Generating the FDTD Mesh ==
 
[[EM.Tempo]] generates a brick volume mesh for FDTD simulation. The FDTD mesh is a rectangular Yee mesh that extends to the entire computational domain. It is primarily constructed from three mesh grid profiles along the XY, YZ and ZX principal planes. These projections together create a 3D mesh space consisting of a large number of cubic cells (voxels) carefully assembled in a way that approximates the shape of the original structure.
 
In EM.Tempo, you can choose one of the three FDTD mesh types:
 
* Adaptive Mesh
* Regular Mesh
* Fixed-Cell Mesh
 
[[Image:Info_icon.png|40px]] Click here to learn more about '''[[Mesh_Generation_Schemes_in_EM.Cube#Working_with_Mesh_Generator | Working with Mesh Generator ]]'''.
 
EM.Tempo's default mesh generator creates an adaptive brick volume mesh that uses a variable staircase profile, where the grid line spacings vary with the curvature (derivative) of the edge or face. As a result, a higher mesh resolution is produced at "curved" areas to better capture the geometrical details. The resolution of the adaptive FDTD mesh is driven by the '''Mesh Density''', expressed in cells per effective wavelength. Since FDTD is a time-domain method and the excitation waveform may have a wideband spectral content, the effective wavelength is calculated based on the highest frequency of the project: f<sub>max</sub> = f<sub>0</sub> + &Delta;f/2, where f<sub>0</sub> is your project's center frequency and &Delta;f (or BW) is its specified bandwidth. In other words, the effective wavelength in the free space is &lambda;<sub>0,eff</sub> = c / f<sub>max</sub>, c being the speed of light in the free space. The effective wavelength in a dielectric material with relative permittivity e<sub>r</sub> and permeability µ<sub>r</sub> is given by &lambda;<sub>d,eff</sub> = &lambda;<sub>0,eff</sub> / &radic;&epsilon;<sub>r</sub>&mu;<sub>r</sub>.
 
[[Image:Info_icon.png|40px]] Click here to learn more about '''[[Mesh_Generation_Schemes_in_EM.Cube#EM.Tempo.27s_Adaptive_Brick_Mesh_Generator | EM.Tempo's Adaptive Brick Mesh Generator]]'''.
 
<table>
<tr>
<td>
[[Image:FDTD80.png|thumb|left|720px|EM.Tempo's mesh settings dialog.]]
</td>
</tr>
</table>
 
EM.Tempo also offers a uniform, frequency-independent, fixed-cell FDTD mesh generator. The fixed-cell mesh consists of three uniform grids along the XY, YZ and ZX principal planes. In that case, the fixed-cell mesh generator tries to fit your physical structure to the mesh grid rather than adapting the mesh to your physical structure.
 
[[Image:Info_icon.png|40px]] Click here to learn more about '''[[Mesh_Generation_Schemes_in_EM.Cube#The_Fixed-Cell_Brick_Mesh_Generator | The Fixed-Cell Brick Mesh Generator ]]'''.
 
Occasionally, you may opt for a more regularized FDTD mesh with almost equal grid line spacings everywhere, but still with a frequency-dependent cell size. For that purpose, EM.Tempo offers the '''Regular''' FDTD mesh generator, which is a simplified version of its adaptive mesh generator. The regular FDTD mesh enforces only two criteria: '''Minimum Mesh Density''' and '''Absolute Minimum Grid Spacing'''. The grid cell sizes in this mesh are almost I=uniform in objects of the same material composition or in free-space regions.
 
{{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.}}
 
<table>
<tr>
<td> [[Image:FDTD34.png|thumb|360px|A human head model and a cellular phone handset on its side.]] </td>
<td> [[Image:FDTD33.png|thumb|360px|The FDTD mesh of the human head model and the cellular phone handset.]] </td>
</tr>
</table>
{{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.}}
 
== Running FDTD Simulations Using EM.Tempo ==
 
=== EM.Tempo's Simulation Modes ===
 
[[Image:FDTD57.png|thumb|390px|EM.Tempo's Run dialog.]]
[[Image:FDTD66.png|thumb|480px|EM.Tempo's output window.]]
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"| Simulation Mode
! scope="col"| Usage
! scope="col"| Number of Engine Runs
! scope="col"| Frequency
! scope="col"| Restrictions
|-
| style="width:120px;" | Wideband Analysis
| style="width:270px;" | Simulates the physical structure "As Is"
| style="width:100px;" | Single run
| style="width:200px;" | Generates data for many frequency samples
| style="width:150px;" | None
|-
| style="width:120px;" | Parametric Sweep
| style="width:270px;" | Varies the value(s) of one or more project variables
| style="width:100px;" | Multiple runs
| style="width:200px;" | Runs at the center frequency fc
| style="width:150px;" | None
|-
| style="width:120px;" | 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:200px;" | Runs at the center frequency fc
| style="width:150px;" | None
|-
| style="width:120px;" | 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:200px;" | Runs at the center frequency fc
| style="width:150px;" | None
|-
| style="width:120px;" | Dispersion Sweep
| style="width:270px;" | Varies the value of wavenumber in a periodic structure
| style="width:100px;" | Multiple runs
| style="width:200px;" | Runs at multiple frequency points corresponding to constant wavenumber values
| style="width:150px;" | Only for periodic structures excited by a plane wave source
|}
 
=== Running a Wideband FDTD Analysis ===
 
The FDTD method is one of the most versatile numerical techniques for solving electromagnetic modeling problems. Choosing the right settings and optimal values for certain numerical [[parameters]] will have a significant impact on both accuracy and computational efficiency of an FDTD simulation. Below are a number of steps that you should typically follow by order when planning your FDTD simulation:
 
* Identify material types and proper domain boundary conditions.
* Identify the source type and excitation mechanism.
* Define the project observables.
* Mesh the physical structure and examine the quality of the generated mesh and it geometric fidelity.
* Determine the proper temporal waveform.
* 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 '''Menu > Simulate > 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 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.
 
=== The FDTD Simulation Engine Settings ===
 
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.}}
 
The "'''Acceleration'''" section of the FDTD Simulation Engine Settings dialog give three options for the FDTD kernel:
 
# Serial CPU Solver
# Multi-Core CPU Solver
# 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.
 
<table>
<tr>
<td>
[[Image:FDTD58.png|thumb|left|720px|EM.Tempo's simulation engine settings dialog.]]
</td>
</tr>
</table>
== Working with FDTD Simulation Data ==
<td> [[Image:fdtd_out38_tn.png|thumb|300px|Radiation pattern of a horizontal dipole above PEC ground.]] </td>
<td> [[Image:fdtd_out39_tn.png|thumb|300px|Radiation pattern of a horizontal dipole above PMC ground.]] </td>
</tr>
</table>
 
== Generating the FDTD Mesh ==
 
[[EM.Tempo]] generates a brick volume mesh for FDTD simulation. The FDTD mesh is a rectangular Yee mesh that extends to the entire computational domain. It is primarily constructed from three mesh grid profiles along the XY, YZ and ZX principal planes. These projections together create a 3D mesh space consisting of a large number of cubic cells (voxels) carefully assembled in a way that approximates the shape of the original structure.
 
In EM.Tempo, you can choose one of the three FDTD mesh types:
 
* Adaptive Mesh
* Regular Mesh
* Fixed-Cell Mesh
 
[[Image:Info_icon.png|40px]] Click here to learn more about '''[[Mesh_Generation_Schemes_in_EM.Cube#Working_with_Mesh_Generator | Working with Mesh Generator ]]'''.
 
EM.Tempo's default mesh generator creates an adaptive brick volume mesh that uses a variable staircase profile, where the grid line spacings vary with the curvature (derivative) of the edge or face. As a result, a higher mesh resolution is produced at "curved" areas to better capture the geometrical details. The resolution of the adaptive FDTD mesh is driven by the '''Mesh Density''', expressed in cells per effective wavelength. Since FDTD is a time-domain method and the excitation waveform may have a wideband spectral content, the effective wavelength is calculated based on the highest frequency of the project: f<sub>max</sub> = f<sub>0</sub> + &Delta;f/2, where f<sub>0</sub> is your project's center frequency and &Delta;f (or BW) is its specified bandwidth. In other words, the effective wavelength in the free space is &lambda;<sub>0,eff</sub> = c / f<sub>max</sub>, c being the speed of light in the free space. The effective wavelength in a dielectric material with relative permittivity e<sub>r</sub> and permeability µ<sub>r</sub> is given by &lambda;<sub>d,eff</sub> = &lambda;<sub>0,eff</sub> / &radic;&epsilon;<sub>r</sub>&mu;<sub>r</sub>.
 
[[Image:Info_icon.png|40px]] Click here to learn more about '''[[Mesh_Generation_Schemes_in_EM.Cube#EM.Tempo.27s_Adaptive_Brick_Mesh_Generator | EM.Tempo's Adaptive Brick Mesh Generator]]'''.
 
<table>
<tr>
<td>
[[Image:FDTD80.png|thumb|left|720px|EM.Tempo's mesh settings dialog.]]
</td>
</tr>
</table>
 
EM.Tempo also offers a uniform, frequency-independent, fixed-cell FDTD mesh generator. The fixed-cell mesh consists of three uniform grids along the XY, YZ and ZX principal planes. In that case, the fixed-cell mesh generator tries to fit your physical structure to the mesh grid rather than adapting the mesh to your physical structure.
 
[[Image:Info_icon.png|40px]] Click here to learn more about '''[[Mesh_Generation_Schemes_in_EM.Cube#The_Fixed-Cell_Brick_Mesh_Generator | The Fixed-Cell Brick Mesh Generator ]]'''.
 
Occasionally, you may opt for a more regularized FDTD mesh with almost equal grid line spacings everywhere, but still with a frequency-dependent cell size. For that purpose, EM.Tempo offers the '''Regular''' FDTD mesh generator, which is a simplified version of its adaptive mesh generator. The regular FDTD mesh enforces only two criteria: '''Minimum Mesh Density''' and '''Absolute Minimum Grid Spacing'''. The grid cell sizes in this mesh are almost I=uniform in objects of the same material composition or in free-space regions.
 
{{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.}}
 
<table>
<tr>
<td> [[Image:FDTD34.png|thumb|360px|A human head model and a cellular phone handset on its side.]] </td>
<td> [[Image:FDTD33.png|thumb|360px|The FDTD mesh of the human head model and the cellular phone handset.]] </td>
</tr>
</table>
 
== Running FDTD Simulations Using EM.Tempo ==
 
=== EM.Tempo's Simulation Modes ===
 
[[Image:FDTD57.png|thumb|390px|EM.Tempo's Run dialog.]]
[[Image:FDTD66.png|thumb|480px|EM.Tempo's output window.]]
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"| Simulation Mode
! scope="col"| Usage
! scope="col"| Number of Engine Runs
! scope="col"| Frequency
! scope="col"| Restrictions
|-
| style="width:120px;" | Wideband Analysis
| style="width:270px;" | Simulates the physical structure "As Is"
| style="width:100px;" | Single run
| style="width:200px;" | Generates data for many frequency samples
| style="width:150px;" | None
|-
| style="width:120px;" | Parametric Sweep
| style="width:270px;" | Varies the value(s) of one or more project variables
| style="width:100px;" | Multiple runs
| style="width:200px;" | Runs at the center frequency fc
| style="width:150px;" | None
|-
| style="width:120px;" | 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:200px;" | Runs at the center frequency fc
| style="width:150px;" | None
|-
| style="width:120px;" | 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:200px;" | Runs at the center frequency fc
| style="width:150px;" | None
|-
| style="width:120px;" | Dispersion Sweep
| style="width:270px;" | Varies the value of wavenumber in a periodic structure
| style="width:100px;" | Multiple runs
| style="width:200px;" | Runs at multiple frequency points corresponding to constant wavenumber values
| style="width:150px;" | Only for periodic structures excited by a plane wave source
|}
 
=== Running a Wideband FDTD Analysis ===
 
The FDTD method is one of the most versatile numerical techniques for solving electromagnetic modeling problems. Choosing the right settings and optimal values for certain numerical [[parameters]] will have a significant impact on both accuracy and computational efficiency of an FDTD simulation. Below are a number of steps that you should typically follow by order when planning your FDTD simulation:
 
* Identify material types and proper domain boundary conditions.
* Identify the source type and excitation mechanism.
* Define the project observables.
* Mesh the physical structure and examine the quality of the generated mesh and it geometric fidelity.
* Determine the proper temporal waveform.
* 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 '''Menu > Simulate > 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 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.
 
=== The FDTD Simulation Engine Settings ===
 
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.}}
 
The "'''Acceleration'''" section of the FDTD Simulation Engine Settings dialog give three options for the FDTD kernel:
 
# Serial CPU Solver
# Multi-Core CPU Solver
# 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.
 
<table>
<tr>
<td>
[[Image:FDTD58.png|thumb|left|720px|EM.Tempo's simulation engine settings dialog.]]
</td>
</tr>
</table>
28,333
edits