Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

GRASP field data

Date from the TICRA's General Reflector Antenna Software Package (GRASP) can be stored in the following formats:

  • GRASP field data in cuts: .cut

  • GRASP field data in grids: .grd / .h5

To correctly interpret the numerical data, additional information is needed. This information can be retrieved from the .tor file associated with the project, or can be provided by the user via dictionary {userinfo}. Such missing information may include frequency information, class of cut/grid, type of cut/grid.

How does the data look in pycra-tools?

Pycra-tools gathers the data and writes into a Xarray labeled multi-dimensional array. Say “da” is the name of the resulting dataframe. It is composed of three parts:

  • da.name: filename incl. filepath

  • da.data: 4-dim data array (read from .cut / .grd / .h5)

  • da.coords: coordinates (read from .cut / .grd / .h5 and .tor / {userinfo})

  • da.attrs: auxiliary information (read from .cut / .grd / .h5 and .tor / {userinfo})

For example, the dataframe might look as follows:

# print(da_grid_efield)
<xarray.DataArray '/home/phjschmid/phdphysics/simulation/projects/pycra_tools/fields_example/Job_01/spherical_grid_uv_near_E.grd' (
                                                                                                                                   Y: 31,
                                                                                                                                   X: 61,
                                                                                                                                   comp: 3,
                                                                                                                                   freq: 5)> Size: 454kB
array([[[[ 5.15861528e-05-4.46895748e-05j,
           2.80121366e-05-4.58763053e-06j,
           1.97908968e-05-1.28813911e-05j,
           2.01978300e-05-1.41671314e-06j,
           9.43783472e-06-7.26531742e-07j],
         [-4.03735515e-04+1.56113416e-03j,
          -3.25065879e-04-5.13820470e-05j,
           1.52882140e-04+2.38164472e-04j,
          -2.49587274e-04+9.49856158e-05j,
           4.55253419e-05-7.49902910e-05j],
         [-1.14083086e-06-2.05554903e-05j,
           1.74641513e-05-1.32081820e-05j,
           1.42019231e-05-3.93982770e-06j,
           1.10262921e-05-4.17702324e-06j,
           8.97920006e-06-1.36825675e-06j]],

        [[ 4.27598870e-05-5.62610151e-05j,
           2.49717299e-05-7.92351158e-06j,
           1.51696125e-05-1.66674332e-05j,
           2.02591508e-05-5.56884386e-06j,
...
          -9.09998444e-06+2.32794695e-05j,
          -1.51901649e-05+5.38423199e-06j,
          -8.21757535e-06+5.77032655e-06j,
          -1.01859792e-05+4.34384376e-06j]],

        [[ 5.15861528e-05-4.46895748e-05j,
           2.80121366e-05-4.58763053e-06j,
           1.97908968e-05-1.28813911e-05j,
           2.01978300e-05-1.41671314e-06j,
           9.43783472e-06-7.26531742e-07j],
         [-4.03735515e-04+1.56113416e-03j,
          -3.25065879e-04-5.13820470e-05j,
           1.52882140e-04+2.38164472e-04j,
          -2.49587274e-04+9.49856158e-05j,
           4.55253419e-05-7.49902910e-05j],
         [ 1.14083086e-06+2.05554903e-05j,
          -1.74641513e-05+1.32081820e-05j,
          -1.42019231e-05+3.93982770e-06j,
          -1.10262921e-05+4.17702324e-06j,
          -8.97920006e-06+1.36825675e-06j]]]], shape=(31, 61, 3, 5))
Coordinates:
  * Y        (Y) float64 248B 0.7 0.6533 0.6067 0.56 ... -0.6067 -0.6533 -0.7
  * X        (X) float64 488B -0.7 -0.6767 -0.6533 -0.63 ... 0.6533 0.6767 0.7
  * comp     (comp) <U1 12B 'a' 'b' 'c'
  * freq     (freq) float64 40B 3.5e+09 4.375e+09 5.25e+09 6.125e+09 7e+09
Attributes:
    class_name:               spherical_grid
    coordinate_system:        uv
    coordinate_system_name:   rectangular_horn_tx_coor_sys
    field_region_distance_m:  1.0


# print(da_grid_efield.name)
/home/phjschmid/phdphysics/simulation/projects/pycra_tools/fields_example/Job_01/spherical_grid_uv_near_E.grd


# print(da_grid_efield.X)
<xarray.DataArray 'X' (X: 61)> Size: 488B
array([-0.7     , -0.676667, -0.653333, -0.63    , -0.606667, -0.583333,
       -0.56    , -0.536667, -0.513333, -0.49    , -0.466667, -0.443333,
       -0.42    , -0.396667, -0.373333, -0.35    , -0.326667, -0.303333,
       -0.28    , -0.256667, -0.233333, -0.21    , -0.186667, -0.163333,
       -0.14    , -0.116667, -0.093333, -0.07    , -0.046667, -0.023333,
        0.      ,  0.023333,  0.046667,  0.07    ,  0.093333,  0.116667,
        0.14    ,  0.163333,  0.186667,  0.21    ,  0.233333,  0.256667,
        0.28    ,  0.303333,  0.326667,  0.35    ,  0.373333,  0.396667,
        0.42    ,  0.443333,  0.466667,  0.49    ,  0.513333,  0.536667,
        0.56    ,  0.583333,  0.606667,  0.63    ,  0.653333,  0.676667,
        0.7     ])
Coordinates:
  * X        (X) float64 488B -0.7 -0.6767 -0.6533 -0.63 ... 0.6533 0.6767 0.7
Attributes:
    long_name:  co-polar
    texname:    u
    units:      


# print(da_grid_efield.Y)
<xarray.DataArray 'Y' (Y: 31)> Size: 248B
array([ 0.7     ,  0.653333,  0.606667,  0.56    ,  0.513333,  0.466667,
        0.42    ,  0.373333,  0.326667,  0.28    ,  0.233333,  0.186667,
        0.14    ,  0.093333,  0.046667,  0.      , -0.046667, -0.093333,
       -0.14    , -0.186667, -0.233333, -0.28    , -0.326667, -0.373333,
       -0.42    , -0.466667, -0.513333, -0.56    , -0.606667, -0.653333,
       -0.7     ])
Coordinates:
  * Y        (Y) float64 248B 0.7 0.6533 0.6067 0.56 ... -0.6067 -0.6533 -0.7
Attributes:
    long_name:  cross-polar
    texname:    v
    units:      


# print(da_grid_efield.comp)
<xarray.DataArray 'comp' (comp: 3)> Size: 12B
array(['a', 'b', 'c'], dtype='<U1')
Coordinates:
  * comp     (comp) <U1 12B 'a' 'b' 'c'
Attributes:
    long_name:     field comopnents
    field_type:    e_field
    polarisation:  linear
    names_math:    ['E_{co}', 'E_{cx}', 'E_r']
    units_math:    ['W$^{0.5}$', 'W$^{0.5}$', 'W$^{0.5}$']
    unitsystem:    TICRA


# print(da_grid_efield.freq)
<xarray.DataArray 'freq' (freq: 5)> Size: 40B
array([3.500e+09, 4.375e+09, 5.250e+09, 6.125e+09, 7.000e+09])
Coordinates:
  * freq     (freq) float64 40B 3.5e+09 4.375e+09 5.25e+09 6.125e+09 7e+09
Attributes:
    long_name:  frequency
    units:      Hz

Classification and naming convensions

We distinguish the following classifications:

  1. Fundamentally, different classes of cuts/grids are distinguished, describing the geometrical shape that comprises the coordinates where the numerical simulation shall be evaluated, e.g. spherical cuts/grids.

  2. The classes of geometrical shapes can be parameterized in different types of coordinate systems, such as the uv mapping for spherical grids.

  3. Simulations are evaluated on the coordinates of the selected coordinate system. Depending on the class, different types of fields can be simulated. For surface cuts/grids, for example, there is the option incident_h_field and others.

  4. Depending on the class, the evaluated fields can be represented in several ways. This is described by GRASP's polarizations parameter.

  5. Finally, depending on the class, the simulation may be performed at finite (GRASP “nearfield” definition) of infinite distance from the antenna (GRASP “farfield” definition).

(1) Classes

The class of cuts/grids is stored in da.attrs['class_name']. The options are the following:

  • spherical

  • cylindrical

  • planar

  • surface

  • RCS (not implemented)

(2) Types of coordinate systems

Information about the type of coordinate system is stored in da.attrs['coordinate_system'] (TICRA (2024) manual: cut_type, grid_type). The options differ for cuts and grids. As regards cuts, the available options are the following:

  • spherical: polar, conical

  • cylindrical: axial, circular

  • planar: radial, circular

  • surface: radial, circular

  • RCS (not implemented)

For grids, the following options are available:

  • spherical: uv, elevation_over_azimuth, elevation_and_azimuth, azimuth_over_elevation, theta_phi, azimuth_over_elevation_edx, elevation_over_azimuth_edx

  • cylindrical: phi_z

  • planar: rho_phi, xy

  • surface: xy

  • RCS (not implemented)

(3) Types of fields

Given the ensemble of coordinates, different quantities can be simulated (e.g. electric field, magnetic field, currents), depending on the cut/grid class considered. This is stored in da.comp.attrs['field_type'] (TICRA (2024) manual: e_h, field_type). The options per class are the following:

  • spherical: e_field, h_field

  • cylindrical: e_field, h_field

  • planar: e_field, h_field

  • surface: incident_e_field, incident_h_field, reflected_e_field, reflected_h_field, currents

  • RCS (not implemented)

(4) Types of “polarizations”

Depending on the class of cut/grid, the evaluated fields may be represented in different ways (e.g. superposition of linear vs. circular polarization components). This information is stored in da.comp.attrs['polarisation']. The options inlude:

  • spherical: theta_phi, circular, linear, major_minor, theta_phi_xpd, circular_xpd, linear_xpd, major_minor_xpd, power

  • cylindrical: circular, linear, major_minor, circular_xpd, major_minor_xpd, power

  • planar: rho_phi, circular, linear, major_minor, rho_phi_xpd, circular_xpd, linear_xpd, major_minor_xpd, power, poynting

  • surface: rho_phi, circular, linear, major_minor, rho_phi_xpd, circular_xpd, linear_xpd, major_minor_xpd, power

  • RCS (not implemented)

(5) Field region and distance

Depending on the class, the fields can be evaluated in the near-field (all classes), or in the far-field (only for spherical cuts and grids). By definition in GRASP, the farfield is taken as the range limit towards infinity, whereas the nearfield refers to any finite distance. The distance information is stored in da.attrs['field_region_distance_m'] (TICRA (2024) manual: near_dist), which can be either infinity or a finite number.

References
  1. TICRA Tools User’s Manual (24.1). (2024). TICRA.