[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2 Grid Properties

Angora currently only supports a rectangular, Cartesian FDTD grid with equal grid spacing in the x, y, and z directions. Mesh refinement is not yet supported; therefore the grid spacing is uniform across the grid.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2.1 Courant Factor

Global variable: floating-point courant

Angora adopts a slightly modified form for the Courant factor, defined as

\begin{displaymath}
\sqrt{3} {c\Delta t \over \Delta x}
\end{displaymath}

where c=299792458 m/s is the speed of light in vacuum, and $\Delta t $ and $\Delta x $ are the temporal and spatial step sizes (see Spatial Step Size). The Courant factor should be less than 1.0 for stability. A common value for courant is 0.98.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2.2 Spatial Step Size

Global variable: floating-point dx (units: m)

The spatial step size in the FDTD grid is specified by the dx variable. Currently only cubic FDTD cells are supported; therefore the spatial step sizes in the x, y, and z direction are all determined by dx.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2.3 Grid Dimensions

Global variable: floating-point grid_dimension_x (units: m)
Global variable: floating-point grid_dimension_y (units: m)
Global variable: floating-point grid_dimension_z (units: m)
Global variable: integer grid_dimension_x_in_cells
Global variable: integer grid_dimension_y_in_cells
Global variable: integer grid_dimension_z_in_cells

These variables determine the size of the Cartesian FDTD grid. The dimensions of the grid can be specified either in meters, or in grid cells. For the latter, the _in_cells suffix should be appended to the variable name. If the dimensions are given in meters, the number of FDTD cells in the Cartesian FDTD grid in the x, y, and z directions are rounded to the closest integer. If no perfectly-matched layers are specified (see Perfectly-Matched Layer (PML)), the total number of FDTD cells in the three-dimensional FDTD grid is equal to (grid_dimension_x_in_cells) x (grid_dimension_y_in_cells) x (grid_dimension_z_in_cells).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2.4 Perfectly-Matched Layer (PML)

Global variable: floating-point pml_thickness (units: m)
Global variable: integer pml_thickness_in_cells

This variable sets the thickness of the perfectly-matched layers (PMLs) around the grid in all directions. Further customization of the PML thickness is not yet supported. The thickness can be specified either in meters, or in grid cells. For the latter, the _in_cells suffix should be appended to the variable name.

Typical PML thicknesses are 5 to 10 grid cells. If you do not want to place a PML layer around the grid, just assign pml_thickness=0. Without a PML layer, the boundary of the FDTD grid acts as a perfect electric conductor (PEC). Other boundary conditions (perfect magnetic conductor, periodic, etc.) will also be supported in the future.

With a PML definition, the total number of FDTD cells in the three-dimensional FDTD grid becomes

(grid_dimension_x_in_cells+2*pml_thickness_in_cells)

x (grid_dimension_y_in_cells+2*pml_thickness_in_cells)

x (grid_dimension_z_in_cells+2*pml_thickness_in_cells)

The computational burden per FDTD cell associated with the PML layer is roughly three times that of the main grid.

Angora implements the convolution PML (CPML) formulation of the complex-frequency shifted (CFS) PML (see Roden00; Kuzuoglu96.)

Global variable: floating-point cpml_feature_size (units:m, default: max(grid_dimension_x,grid_dimension_y,grid_dimension_z))
Global variable: floating-point cpml_feature_size_in_cells (default: max(grid_dimension_x_in_cells,grid_dimension_y_in_cells,grid_dimension_z_in_cells))

This variable specifies the maximum size of the scattering or radiating structure in the FDTD grid. This size can be specified either in meters, or in grid cells. For the latter, the _in_cells suffix should be appended to the variable name.

This information is used to determine the frequency-shifting parameter $\alpha$ in the CFS-PML formulation. Following Berenger’s derivation (see Berenger02), this parameter is defined as

\begin{displaymath}
\alpha = c\epsilon/w
\end{displaymath}

where c is the velocity of propagation in the medium, $\epsilon$ is the absolute permittivity (in F/m) in the medium, and $w$ is the maximum size of the structure.

The above relationship follows essentially from the low-frequency behavior of the CFS-PML. At low frequencies where the evanescent field around the structure dominates, the CFS-PML reduces to a real stretch of coordinates without any absorption. This helps the termination of evanescent fields, which are poorly handled by ordinary PMLs.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2.5 Number of Time Steps

Global variable: integer num_of_time_steps

This variable determines the number of time steps in the FDTD simulation.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2.6 Coordinate Origin

Global variable: floating-point origin_x (units:m, default: (grid_dimension_x+2*pml_thickness)/2+1)
Global variable: floating-point origin_y (units:m, default: (grid_dimension_y+2*pml_thickness)/2+1)
Global variable: floating-point origin_z (units:m, default: (grid_dimension_z+2*pml_thickness)/2+1)
Global variable: integer origin_x_in_cells (default: (grid_dimension_x_in_cells+2*pml_thickness_in_cells)/2+1)
Global variable: integer origin_y_in_cells (default: (grid_dimension_y_in_cells+2*pml_thickness_in_cells)/2+1)
Global variable: integer origin_z_in_cells (default: (grid_dimension_z_in_cells+2*pml_thickness_in_cells)/2+1)

These variables set the origin of the coordinate system in the simulation. All other coordinates in a configuration file are taken as relative to this origin. The coordinates can be specified either in meters, or in grid cells. For the latter, the _in_cells suffix should be appended to the variable name. These three numbers represent the Cartesian coordinates of the origin from the back-left-lower corner of the grid. In this figure, the location of the coordinate origin in the FDTD grid is shown for (origin_x_in_cells,origin_y_in_cells,origin_z_in_cells)=(2,3,2). The FDTD grid is composed of (3x5x3) grids, and only the back (y=z=0), left (x=z=0), and lower (x=y=0) surfaces are shown in the figure.

grid_origin

Figure 6.1: The location of the coordinate origin in the FDTD grid for (origin_x_in_cells,origin_y_in_cells,origin_z_in_cells)=(2,3,2).

If the coordinates are given in meters, they are rounded to the closest integer multiple of the spatial step size (see section Spatial Step Size).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2.7 Dynamic Range

The following two variables are only relevant in movie recording (see Movie Recording), wherein the floating-point field values on the movie frames are sometimes discretized to fit into 1 byte.

Global variable: floating-point max_field_value (default: 1.0)

This value specifies the maximum field value used in the discretization for 1-byte movie recording (see section Movie Recording).

Global variable: floating-point dB_accuracy (default: automatic)

This value specifies the dynamic range (in dB) to be used in the discretization for 1-byte movie recording (see section Movie Recording). For example,

 
dB_accuracy = -60;

tells Angora to discretize the field values in a dynamic range between the maximum field value (specified by max_field_value above) and 60dB below that value. If dB_accuracy is not specified, Angora tries to set this value automatically, based on its best guess on the useful accuracy range in the simulation. This value can also be read from the output of the movie recorder (see section Movie Recording).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Ilker Rafet Capoglu on December 12, 2012 using texi2html 1.82.