computeFarFieldFromKirchhoffBox.py

This analyzer script analyzes a user-specified history. It will perform a near to far field transformation on the history it is given. This allows for examination of the far field parameters, or radar cross section, of a particular object. The size of the sphere used as the near field is specified in the .pre file, typically with the variable name RS.

The Kirchhoff Box should surround all structures but be a few cells inside any boundary cells, including the cells associated with any MALs or PMLs.

The start time should be set to a time that allows for the desired signal to have reached all points on the Kirchhoff Box. This is typically rise time of the pulse plus the time to cross the far-field box diagonal.

The end time of the box is typically the start time plus another box crossing time or two, plus the desired length of time one wishes to have in the far field, e.g. one or two cycles of an oscillating signal. The simulation can end after the end time of the box.

This script calculates the far fields at the specified points on the far sphere, as designated by the sphere radius and a number of points in theta and phi spherical angles. It then puts that data along with the field magnitude on a spherical mesh that can be visualized with XSimComposer in a separate file for each analysis time. It does this for multiple far field times, as controlled by the timeStepStride parameter.

Input Parameters

-s <simname>, --simulationName=<simname>

(string, required)

<simname> is the name of the simulation to be analyzed. The file extension should NOT be included in this text field.

-l <fldlabel>, --fieldLabel=<fldlabel>

(string, optional, default = E)

<fldlabel> is the name of the field for which the far field is desired. This defaults to E which should work.

-r <R>, --farFieldRadius=<R>

(float, required)

<R> is the radius at which the far field will be calculated. This is typically set to a number that is large (10x is reasonable) compared with the size of the Kirchoff Box. However, the algorithm remains accurate for any radius outside the Kirchoff Box, even if that is technically in the radiation near field.

-n <stepstride>, --timeStepStride=<stepstride>

(int, optional, default = 20)

From the first calculation of the far field, how often should it calculate the far field, as a multiplier of the simulation time step.

-g <FC>, --getFourierComponent=<FC>

(int, optional, default = 0)

Whether to time integrate assuming a single Fourier frequency component.

-f <freq>, --frequency=<freq>

(float, optional)

<freq> is the Fourier component frequency, ignored if getFourierComponent = 0.

-t <num>, --numTheta=<num>

(int, required, default = 60)

Replace <num> with the number of theta points to be calculated.

-p <num>, --numPhi=<num>

(int, required, default = 120)

Replace <num> with the number of phi points to be calculated.

-z <dir>, --zeroThetaDirection=<dir>

(string, optional, default = (0,0,1))

<dir> is a vector pointing to where the polar angle is zero, typically the positive z direction.

-x <dir>, --zeroPhiDirection=<dir>

(string, optional, default = (1,0,0))

<dir> is a vector pointing to where the azimuthal angle is zero, typically the positive x direction.

-v, --varyingRadiusMesh

(int, optional, default = 0)

Whether to vary the mesh by the magnitude of the field.

-i, --simpsonIntegration

(int, optional, default = 0)

Use higher order Simpson integration.

-w, --overwrite

(flag)

Whether a dataset or group should be overwritten if it already exists.

Output

This analysis script outputs a series of HDF5 files named <simulationName>_FarField<fieldName>_NN.vsh5, where <simulationName> is the name of the simulation, and <fieldName> (e.g, E) is the field for which the far field is being calculated. This data can be seen in the Visualize tab under Data Overview Scalar Data as farE (if E is the fieldName). If the Visualize tab has already been opened the Reload Data button must be clicked in order to load the new data.

The dumps are not synchronized with the regular Vorpal data dumps, because the far field times may be strongly time delayed due to the large far field radius. Instead these dumps start at number 0, with the first far field analysis time, which is computed internally to be consistent with the required data being available in the Kirchhoff Box data stream. E.g., this time is delayed from the first dump time by half, or more, of a box diagonal transit time, depending on the centering of the Kirchhoff Box. Far field dumps are then output every timeStepStride as long as the necessary data for the computation is available in the Kirchhoff Box data stream.

Further analysis of these dumps is possible to get a single frequency amplitude, and is often done with a user-generated custom script. Such scripts can also be provided upon request.

If you are running this analyzer from the UI, and the output dataset file already exists, then it will be overwritten each time the analyzer is run, unless you uncheck the Overwrite Existing Files box near the bottom of the Analysis Results pane.

If you are running the analyzer from the command line, the dataset will not be overwritten unless the -w, or --overwrite flag is specified on the command line.

The results of your analyzer may not be written into the output file if you have not specified the overwrite option to be True.