EM.Illumina is a 3D electromagnetic simulator for modeling large free-space structures. It features a high frequency asymptotic solver based on Physical Optics (PO) for simulation of electromagnetic scattering from large metallic structures and impedance surfaces.
EM.Illumina provides a computationally efficient alternative for extremely large structures when a full-wave solution becomes prohibitively expensive. Based on a high frequency asymptotic physical optics formulation, it assumes that an incident source generates currents on a metallic structure, which in turn reradiate into the free space. A challenging step in establishing the PO currents is the determination of the lit and shadowed points on complex scatterer geometries. Ray tracing from each source to the points on the scatterers to determine whether they are lit or shadowed is a time consuming task. To avoid this difficulty, EM.Illumina's simulator uses a novel Iterative Physical Optics (IPO) formulation, which automatically accounts for multiple shadowing effects.The IPO technique can effectively capture dominant, near-field, multiple scattering effects from electrically large targets.
EM.Illumina's simulator is seamlessly interfaced with EM.CUBE's other simulattion engines. This module is the ideal place to define Huygens sources. These are based on Huygens surface data that are generated using a full-wave simulator like [[EM.Picasso]], [[EM.Tempo]] or [[EM.Libera]].
== Methods Of Physical Optics ==
<!--[[File:PO6.png]]-->
where '''G<sub>EJ</sub>''', '''G<sub>EM</sub>''', '''G<sub>HJ</sub>''', '''G<sub>HM</sub>''' are the dyadic Green's functions of electric and magnetic fields due to electric and magnetic currents, respectively. In EM.Cube's [[PO Module]], the background structure is the free space. Therefore, all these dyadic Green's functions reduce to the simple free-space Green's function of the form <math>\exp(-jk_0r)/(4\pi r)</math> and the near fields reduce to:
:<math>
[[File:PO16.png]]
where the summation over index ''j'' is carried out for all the elementary cells Δ<sub>j</sub> that make up the Huygens box. In EM.Cube Huygens surfaces are cubic and are discretized using a rectangular mesh. Therefore, Δ<sub>j</sub> represents any rectangular cell located on one of the six faces of Huygens box. Note that the calculated near-zone electric and magnetic fields act as incident fields for the scatterers in your [[PO Module ]] project. The Huygens source data are normally generated in one of EM.Cube's full-wave computational modules like FDTD, Planar or MoM3D. Keep in mind that the fields scattered (or reradiated) by your physical structure do not affect the fields inside the Huygens source.
The far fields of the Huygens surface currents are calculated from the following relations:
# Generalized Impedance Surface
[[PO Module ]] can only handle surface and [[Solid Objects|solid objects]]. No [[Curve Objects|curve objects]] are allowed in the project workspace; or else, they will be ignored during the PO simulation. You can define several PEC, PMC or impedance surface groups with different colors and impedance values (for the last type). All the objects created and drawn under a group share the same color and other properties. A new surface group can be defined by simply right clicking on one of the three '''PEC''', '''PMC''' or '''Impedance Surface''' items in the '''Physical Structure''' section of the Navigation Tree and selecting '''Insert New PEC...''', '''Insert New PMC...''', or '''Insert New Impedance Surface...''' from the contextual menu. A dialog for setting up the group properties opens up. In this dialog you can change the name of the group or its color. In the case of a surface impedance group, you can set the values for the real and imaginary parts of the '''Surface Impedance''' in Ohms.
[[File:PO18(1).png]] [[File:PO19.png]]
[[File:PO20.png]] [[File:PO21.png]]
Figure 1: [[PO Module]]'s Navigation Tree and its PEC, PMC and Impedance Surface dialogs.
=== Creating New Objects & Moving Them Around ===
The objects that you draw in EM.Cube's project workspace always belong to the "Active" surface group. By default, the last object group that you created remains active until you change it. The current active group is always listed in bold letters in the Navigation Tree. Any surface group can be made active by right clicking on its name in the Navigation Tree and selecting the '''Activate''' item of the contextual menu. If you start a new [[PO Module ]] project and draw any object without having previously defined a surface group, a default PEC group is automatically created and added to the Navigation Tree to hold your new object.
You can move one or more selected objects to any material group. Right click on the highlighted selection and select '''Move To > Physical Optics >''' from the contextual menu. This opens another sub-menu with a list of all the available surface groups already defined in [[PO Module]]. Select the desired surface group, and all the selected objects will move to that group. The objects can be selected either in the project workspace, or their names can be selected from the Navigation Tree. In the latter case, make sure that you hold the keyboard's '''Shift Key''' or '''Ctrl Key''' down while selecting a material group's name from the contextual menu. You can also move one or more objects from a PO surface group to EM.Cube's other modules, or vice versa. In that case, the sub-menus of the '''Move To >''' item of the contextual menu will indicate all the EM.Cube modules that have valid groups for transfer of the selected objects. '''Note that in EM.Cube, you can import external CAD models (such as STEP, IGES, STL models, etc.) only to [[CubeCAD]]. From [[CubeCAD]], you can then move the imported objects to any other computational module including [[PO Module]]. '''
[[File:PO22(1).png|800px]]
Figure 1: Moving objects between different surface groups in [[PO Module]].
=== Generating & Customizing PO Mesh ===
The mesh generation process in [[PO Module ]] involves three steps:
# Setting the mesh properties.
"Show Mesh" generates a new mesh and displays it if there is none in the memory, or it simply displays an existing mesh in the memory. This is a useful feature because generating a PO mesh may take a long time depending on the complexity and size of objects. If you change the structure or alter the mesh settings, a new mesh is always generated. You can ignore the mesh in the memory and force EM.Cube to generate a mesh from the ground up by selecting '''Menu > Simulate > Discretization > Regenerate Mesh''' or by right clicking on the '''3-D Mesh''' item of the Navigation Tree and selecting '''Regenerate''' from the contextual menu.
To set the PO mesh properties, click on the [[File:mesh_settings.png]] button of the '''Simulate Toolbar''' or select '''Menu > Simulate > Discretization > Mesh Settings... '''or right click on the '''3-D Mesh''' item in the '''Discretization''' section of the Navigation Tree and select '''Mesh Settings...''' from the contextual menu, or use the keyboard shortcut '''Ctrl+G'''. You can change the value of '''Mesh Density''' to generate a triangular mesh with a higher or lower resolutions. [[PO Module ]] offers two algorithms for triangular mesh generation. The default algorithm is '''Regular Surface Mesh''', which creates triangular elements that have almost equal edge lengths. The other algorithm is '''Structured Surface Mesh''', which usually creates a very structured mesh with a large number of aligned triangular elements. You can change the mesh generation algorithm from the dropdown list labeled '''Mesh Type'''. Another parameter that can affect the shape of the mesh especially in the case of [[Solid Objects|solid objects]] is the '''Curvature Angle Tolerance''' expressed in degrees. This parameter determines the apex angle of the triangular cells of the structured mesh. Lower values of the angle tolerance will results in more pointed triangular cells.
[[File:PO23.png]]
Figure 1: [[PO Module]]'s Mesh Settings dialog.
=== More On Triangular Surface Mesh ===
The physical optics method assumes an unbounded, open-boundary computational domain, wherein the physical structure is placed against a free space background medium. As such, only finite-extent surfaces are discretized. EM.Cube's [[PO Module ]] uses a triangular surface mesh to discretize all the surface and [[Solid Objects|solid objects]] in the project workspace. As mentioned earlier, [[Curve Objects|curve objects]] (or wires) are not allowed in [[PO Module]]. In the case of solids, only the surface of the object or its faces are discretized, as the interior volume is not taken into account in a PO analysis. In general, triangular cells are placed on the exterior surface of [[Solid Objects|solid objects]]. In contrast, [[Surface Objects|surface objects]] are assumed to be double-sided by default. The means that the PO mesh of a surface object indeed consists of coinciding double cells, one representing the upper or positive side and the other representing the lower or negative side. This may lead to a very large number of cells. EM.Cube's PO mesh has some more settings that allow you to treat all mesh cells as double-sided or all single-sided. This can be done in the Mesh Settings dialog by checking the boxes labeled '''All Double-Sided Cells''' and '''All Single-Sided Cells'''. This is useful when your project workspace contains well-organized and well-oriented [[Surface Objects|surface objects]] only. In the single-sided case, it is very important that all the normals to the cells point towards the source. Otherwise, the [[Surface Objects|surface objects]] will be assumed to lie in the shadow region and no currents will be computed on them. By checking the box labeled '''Reverse Normal''', you instruct EM.Cube to reverse the direction of the normal vectors at the surface of all the cells.
[[File:PO24.png]]
=== Mesh Density & Local Mesh Control ===
EM.Cube's [[PO Module ]] applies the mesh density specified in the Mesh Settings dialog on a global scale to discretize all the objects in the project workspace. Although the mesh density is expressed in cells per free space wavelength similar to full-wave method of moments (MoM) solvers, you have to keep in mind that the triangular surface mesh cells in PO Modules act slightly differently. The complex-valued, vectorial, electric and magnetic surface currents, '''J''' and '''M''' are assumed to be constant on the surface of each triangular cell. On plates and flat faces or surfaces, the normal vectors to all the cells are identical. Incident plane waves or other types of relatively uniform source fields induce uniform PO currents on all these cells. Therefore, a high resolution mesh may not be necessary on flat surface or faces. However, a high mesh density is very important for accurate discretization of curved objects like spheres or ellipsoids.
You can lock the mesh density of any surface group to any desired value different than the global mesh density. To do so, open the property dialog of a surface group by right clicking on its name in the Navigation Tree and select '''Properties...''' from the contextual menu. At the bottom of the dialog, check the box labeled '''Lock Mesh'''. This will enable the '''Density '''box, where you can set a desired value. The default value is equal to the global mesh density.
[[File:PO30.png|thumb|300px|PO Module's Short Dipole Source dialog]]
A short dipole is the simplest way of exciting a structure in EM.Cube's [[PO Module]]. A short dipole source acts like an infinitesimally small ideal current source. To define a short dipole source, follow these steps:
* Right click on the '''Short Dipoles''' item in the '''Sources''' section of the Navigation Tree and select '''Insert New Source...''' from the contextual menu. The Short Dipole dialog opens up.
=== Importing Short Dipoles From MoM3D Module ===
The solution of a problem in one of EM.Cube's computational modules can serve as the excitation source for another problem in another computational module. An example of this is analyzing a wire antenna in the [[MoM3D Module]] and importing the wire current solution to [[PO Module ]] to excite a large scatterer. Remember that you cannot define wires or [[Curve Objects|curve objects]] in [[PO Module]]. However, you can have short dipole sources that act like differential wire elements carrying fixed currents. Using this concept, you can realize a complex wire antenna or radiator array as the source of your PO project.
When you simulate a wire structure in the [[MoM3D Module]], you can define a '''Current Distribution Observable''' in your project. This is used not only to visualize the current distribution in the project workspace, but also to save the current solution into an ASCII data file. This data file is called "MoM.IDI" by default and has a '''.IDI''' file extension. The current data are saved as line segments representing each of the wire cells together with the complex-valued, vectorial current at the center of each cell. You can import the current data from an existing '''.IDI''' file to [[PO Module]], To import a wire current solution, right click on '''Short Dipoles''' item in the '''Sources''' section of the Navigation Tree and select '''Import Dipole Source...''' from the contextual menu. This opens up the standard Windows Open dialog with the file type set to '''.IDI'''. Browse your folders to find the right current data file. Once you find it, select it and click the '''Open''' button of the dialog. This will create as many short dipole sources on the [[PO Module]]'s Navigation Tree as the total number of mesh cells in the Wire MoM solution. From this point on, each of the imported dipoles behave like a regular short dipole source. You can open the property dialog of each individual source and modify its parameters, if necessary.
[[File:PO36.png|800px]]
Figure: Importing a Wire MoM current solution into the [[PO Module]]. In this structure, 90 wire cell currents representing a helical antenna were imported and placed above a large sinusoidal PEC surface.
=== Plane Wave Sources ===
[[File:PO29.png|thumb|300px|PO Module's Plane Wave dialog]]
Your physical structure in [[PO Module ]] can be excited by an incident plane wave. In particular, a plane wave source can be used to compute the radar cross section of a target. A plane wave is defined by its propagation vector indicating the direction of incidence and its polarization. EM.Cube's [[PO Module ]] provides the following polarization options:
* TMz
[[File:po_phys17.png|thumb|300px|PO Module's Huygens Source dialog]]
At the end of a full-wave simulation in the EM.Cube's FDTD, MoM3D, Planar or Physical Optics Modules, you can generate Huygens surface data. According to Huygens' principle, if one knows the tangential electric and magnetic field components on a closed surface, one can determine the total electric and magnetic fields everywhere inside and outside that closed surface. Huygens surfaces are defined around a structure for recording the tangential components of electric and magnetic fields at the end of full-wave simulation of the structure. The tangential electric and magnetic fields are saved into ASCII data files as magnetic and electric currents, respectively. These current can be used as excitation for other structures. In other words, the electric and magnetic currents associated with a Huygens source radiate energy and provide the excitation for the [[PO Module]]'s physical structure.
In order to define a Huygens source, you need to have a Huygens data file of '''.HUY''' type. This file is generated as an output data file at the end of an FDTD, MoM3D, Planar or PO simulation, if you have defined a Huygens Surface observable in one of those projects. When you define a Huygens source, you indeed import an existing Huygens surface into the project and set it as an excitation source.
=== Running A Basic PO Analysis ===
To open [[PO Module]]'s Simulation Run dialog, click the '''Run''' [[File:run_icon.png]] button of the '''Simulate Toolbar''' or select '''Menu > Simulate > Run...'''or use the keyboard shortcut '''Ctrl+R'''. To start the simulation click the '''Run''' button of this dialog. Once the PO simulation starts, a new dialog called '''Output Window''' opens up that reports the various stages of PO simulation, displays the running time and shows the percentage of completion for certain tasks during the PO simulation process. A prompt announces the completion of the PO simulation. At this time, EM.Cube generates a number of output data files that contain all the computed simulation data. These include current distributions, near field data, far field radiation pattern data as well bi-static or mono-static radar cross sections (RCS) if the structure is excited by a plane wave source.
[[File:PO27.png]]
Figure 1: [[PO Module]]'s Simulation Run dialog.
=== Setting The Numerical Parameters ===
Before you run a PO simulation, you can change some of the PO simulation engine settings. While in the [[PO Module]]'s '''Simulation Run Dialog''', click the '''Settings''' button next to the '''Select Engine''' dropdown list. In the Physical Optics Engine Settings Dialog, there are two options for '''Solver Type''': '''Iterative''' and '''GOPO'''. The default option is Iterative. The GOPO solver is a zero-order PO simulator that uses Geometrical Optics (GO) to determine the lit and shadow cells in the structure's mesh. For the termination of the IPO solver, there are two options: '''Convergence Error''' and '''Maximum Number of Iterations'''. The default Termination Criterion is based on convergence error, which has a default value of 0.1 and can be changed to any desired accuracy. The convergence error is defined as the L2 norm of the normalized residual error in the combined '''J/M''' current solution of the entire discretized structure from one iteration to the next. Note that for this purpose, the magnetic currents are scaled by η<sub>0</sub> in the residual error vector.
You can also use higher- or lower-order integration schemes for the calculation of field integrals. EM.Cube's PO simulation engine uses triangular cells for the mesh of the physical surface structures and rectangular cells for discretization of Huygens sources and surfaces. For integration of triangular cells, you have three options: '''7-Point Quadrature''', '''3-Point Quadrature''' and '''Constant'''. For integration of rectangular cells, too, you have three options: '''9-Point Quadrature''', '''4-Point Quadrature''' and '''Constant'''.
[[File:PO28.png]]
Figure 1: [[PO Module]]'s Simulation Engine Settings dialog.
=== Visualizing Current Distributions ===
[[File:PO37.png|thumb|300px|PO Module's Current Distribution dialog]]
At the end of a PO simulation, EM.Cube's PO engine generates a number of output data files that contain all the computed simulation data. The main output data are the electric and magnetic current distributions. You can easily examine the 3D color-coded intensity plots of current distributions in the project workspace. Current distributions are visualized on the surface of the PO mesh cells, and the magnitude and phase of the electric and magnetic surface currents are plotted for all the objects. In order to view these currents, you must first define a current distribution observable before running the PO simulation. To do this, right click on the '''Current Distributions''' item in the '''Observables''' section of the Navigation Tree and select '''Insert New Observable...'''. The Current Distribution Dialog opens up. Accept the default settings and close the dialog. A new current distribution node is added to the Navigation Tree. Unlike the [[Planar Module]], in the [[PO Module ]] you can define only one current distribution node in the Navigation Tree, which covers all the objects in the project workspace. After a PO simulation is completed, new plots are added under the current distribution node of the Navigation Tree. Separate plots are produced for the magnitude and phase of each of the electric and magnetic surface current components (X, Y and Z) as well as the total current magnitude. The magnitude maps are plotted on a normalized scale with the minimum and maximum values displayed in the legend box. The phase maps are plotted in radians between -p and p. Note that sometimes the current distribution plots may hide inside smooth and curved objects, and you cannot see them. You may have to freeze such objects or switch to the mesh view mode.
[[File:PO38.png|800px]]
[[File:FDTD130.png]]
Three RCS quantities are computed: the θ and φ components of the radar cross section as well as the total radar cross section, which are dented by σ<sub>θ</sub>, σ<sub>φ</sub>, and σ<sub>tot</sub>. In addition, EM.Cube's [[PO Module ]] calculates two types of RCS for each structure: '''Bi-Static RCS''' and '''Mono-Static RCS'''. In bi-static RCS, the structure is illuminated by a plane wave at incidence angles θ<sub>0</sub> and φ<sub>0</sub>, and the RCS is measured and plotted at all θ and φ angles. In mono-static RCS, the structure is illuminated by a plane wave at incidence angles θ<sub>0</sub> and φ<sub>0</sub>, and the RCS is measured and plotted at the echo angles 180°-θ<sub>0</sub>; and φ<sub>0</sub>. It is clear that in the case of mono-static RCS, the PO simulation engine runs an internal angular sweep, whereby the values of the plane wave incidence angles θ and φ are varied over the entire intervals [0°, 180°] and [0°, 360°], respectively, and the backscatter RCS is recorded.
To calculate RCS, first you have to define an RCS observable instead of a radiation pattern. Right click on the '''Far Fields''' item in the '''Observables''' section of the Navigation Tree and select '''Insert New RCS...''' to open the Radar Cross Section Dialog. Use the '''Label''' box to change the name of the far field or change the color of the far field box using the '''Color''' button. Select the type of RCS from the two radio buttons labeled '''Bi-Static RCS''' and '''Mono-Static RCS'''. The former is the default choice. The resolution of RCS calculation is specified by '''Angle Increment''' expressed in degrees. By default, the θ and φ angles are incremented by 5 degrees. At the end of a PO simulation, besides calculating the RCS data over the entire (spherical) 3D space, a number of 2D RCS graphs are also generated. These are RCS cuts at certain planes, which include the three principal XY, YZ and ZX planes plus one additional constant f-cut. This latter cut is at f = 45° by default. You can assign another azimuth angle in degrees in the box labeled '''Non-Principal Phi Plane'''.
=== PO Sweep Simulations ===
You can run EM.Cube's PO simulation engine in the sweep mode, whereby a parameter like frequency, plane wave incident angles or a user defined variable is varied over a specified range at predetermined samples. The output data are saved into data files for visualization and plotting. EM.Cube's [[PO Module ]] currently offers three types of sweep:
# Frequency Sweep
[[File:po_phys52.png]] [[File:po_phys54.png]]
Figure 1: [[PO Module]]'s Frequency Settings and Angle Settings dialogs.
=== Animation Of PO Data ===
At the end of a frequency sweep, angular sweep or parametric sweep simulation in EM.Cube's [[PO Module]], the output data are saved for visualization and plotting. In particular, if you have defined current distribution, field sensor or far field observables in your project, multiple 3D plots, as many as the total number of sweep samples, are added to the Navigation Tree. In a single simulation run, a total of 14 current distribution plots, 14 field sensor plot and 3 radiation pattern plots or 3 RCS plots are generated under every observable node defined in the Navigation Tree. However, after a sweep simulation, only one plot is saved for each sweep sample. This is done to keep the resulting plots manageable. Thus, only the total radiation pattern or total RCS are saved for each sweep sample. In the case of a current distribution observable, you have the choice to save either the magnitude of total electric current distribution '''|J<sub>s</sub>|'''or the magnitude of total magnetic current distribution '''|M<sub>s</sub>|'''. To change this, open the '''Current Distribution Dialog''' by right clicking on the observable's name in the Navigation Tree and selecting '''Properties...''' from the contextual menu. In the '''Current Display - Multiple Plots''' section of this dialog, select one of the radio sensors labeled '''Electric Current (J)''' or '''Magnetic Current (M)'''. Similarly, in the case of a field sensor observable, you have the choice to save either the total E-field magnitude plot or the total H-field magnitude plot. To change this, open the '''Field Sensor Dialog''' by right clicking on a field sensor's name in the Navigation Tree and selecting '''Properties...''' from the contextual menu. In the '''Field Display - Multiple Plots''' section of this dialog, select one of the radio sensors labeled '''E-Field''' or '''H-Field'''.
[[File:PO39.png]] [[File:PO40.png]]
Figure 1: Selecting the current or field types for sweep data visualization in [[PO Module]]'s Current Distribution and Field Sensor dialogs.
Once the sweep simulation is finished, you can click any of the field plots and visualize it in the main window. You can also animate these field plots. Animation in EM.CUBE consists of consecutive display of the plots in the main window at a preset speed. To animate the field sensor plots, right click on the field sensor's name in the Navigation Tree and select '''Animation''' from the contextual menu. The field plots start to animate beginning with the first sample, going through all the plots one by one until the last one and repeating the loop all over again. While the animation proceeds in the main window, a dialog titled '''Animation Controls''' pops up at the lower right corner of the screen. You can drag this dialog anywhere in the project workspace from its title bar. The controls dialog shows the title of each graph as it is reviewed. You can set the speed of animation by typing in a value for '''Rate''', which is indeed the frame duration expressed in multiples of 100 milliseconds. The default frame duration is 300 msec. You can pause the animation and resume at any time. You can rewind to the first sample or skip to the last sample. You can also step through the samples one at a time using the increment (forward) or decrement (backward) buttons. To stop animation at any time, use the keyboard's '''Esc Key''' or click the '''Close (X)''' button of the animation controls dialog.
The animation controls dialog and animation of the H-field plots of a PEC sphere after an angular sweep.