API reference#

The Radar Explorer Toolkit API contains the ToolkitBackend class, which provides methods for controlling the toolkit workflow. This API provides methods for synthesizing and creating an antenna. You use this toolkit’s API at the toolkit level.

Note

The PyAEDT Common Toolkit provides the common methods for creating an AEDT session or connecting to an existing AEDT session.

You use the Radar Explorer Toolkit API to perform end-to-end workflows or directly postprocess radar results to display graphics objects and plot data.

Visualization#

The Radar Explorer Toolkit API offers sophisticated tools for advanced monostatic RCS postprocessing. It contains two complementary classes: MonostaticRCSData and MonostaticRCSPlotter.

  • MonostaticRCSData: Focuses on the direct access and processing of RCS solution data. It supports a comprehensive set of postprocessing operations, from visualizing radiation patterns to computing key performance metrics.

  • MonostaticRCSPlotter: Focuses on the postprocessing of RCS solution data.

MonostaticRCSData

Provides monostatic RCS data.

MonostaticRCSPlotter

Provides monostatic RCS plot functionalities.

This code shows how to get RCS data and perform some postprocessing:

from ansys.aedt.core import Hfss
from ansys.aedt.toolkits.radar_explorer.rcs_visualization import MonostaticRCSPlotter

app = Hfss()
rcs_object = app.get_rcs_data()
rcs_plotter = MonostaticRCSPlotter(rcs_data=rcs_object.rcs_data)
rcs_plotter.plot_rcs()

If you exported the RCS data previously, you can directly get this data:

from ansys.aedt.toolkits.radar_explorer.rcs_visualization import MonostaticRCSPlotter
from ansys.aedt.toolkits.radar_explorer.rcs_visualization import MonostaticRCSData

input_file = r"path_to_data\pyaedt_rcs_metadata.json"
rcs_data = MonostaticRCSData(input_file)
rcs_plotter = MonostaticRCSPlotter(rcs_data)
rcs_plotter.plot_cut()

The following diagram shows how both classes work. You can use them independently or from the get_rcs_data() method.

RCS Data

Workflow#

To perform an end-to-end workflow, use this class:

ToolkitBackend()

API to control the toolkit workflow.

Here is an example of how you use it:

# Import required modules for the example
import time
from ansys.aedt.toolkits.radar_explorer.rcs_visualization import MonostaticRCSData
from ansys.aedt.toolkits.radar_explorer.rcs_visualization import (
    MonostaticRCSPlotter,
)

# Import backend
from ansys.aedt.toolkits.template.backend.api import ToolkitBackend

# Initialize generic service
toolkit_api = ToolkitBackend()

# Load default properties from a JSON file
properties = toolkit_api.get_properties()

# Set properties
new_properties = {
    "num_phi": 101,
    "aspect_ang_phi": 80.0,
    "num_theta": 51,
    "aspect_ang_theta": 2.0,
}
flag4, msg4 = toolkit_api.set_properties(new_properties)
properties = toolkit_api.get_properties()

# Update RCS properties
toolkit_api.update_rcs_properties(
    range_is_system=True, azimuth_is_system=True, elevation_is_system=True
)

# Launch AEDT
thread_msg = toolkit_api.launch_thread(toolkit_api.launch_aedt)

# Wait until thread is finished
idle = toolkit_api.wait_to_be_idle()
if not idle:
    print("AEDT not initialized.")
    sys.exit()

# Create 3D component
component_file = toolkit_api.generate_3d_component()

# Insert SBR+ design
_ = toolkit_api.insert_sbr_design(component_file, name="Trihedral_RCS")

# Assign excitation
v_plane_wave = toolkit_api.add_plane_wave(name="IncWaveVpol", polarization="Vertical")
h_plane_wave = toolkit_api.add_plane_wave(name="IncWaveHpol", polarization="Horizontal")
plane_wave_names = [v_plane_wave, h_plane_wave]

# Create setup
setup_name = toolkit_api.add_setup()

# Analyze
toolkit_api.analyze()
toolkit_api.save_project()

# Get RCS data

rcs_metadata_vh = toolkit_api.export_rcs(
    h_plane_wave, "ComplexMonostaticRCSTheta", encode=False
)
rcs_metadata_hh = toolkit_api.export_rcs(
    h_plane_wave, "ComplexMonostaticRCSPhi", encode=False
)

# Load RCS data

rcs_data_vv = MonostaticRCSData(metadata_file)
rcs_data_vh = MonostaticRCSData(rcs_metadata_vh)

# Load RCS Plotter

rcs_data_vv_plotter = MonostaticRCSPlotter(rcs_data_vv)
rcs_data_vh_plotter = MonostaticRCSPlotter(rcs_data_vh)

# Select cut

primary_sweep = "IWavePhi"
secondary_sweep_value_vv = rcs_data_vv_plotter.rcs_data.incident_wave_theta
secondary_sweep_value_vh = rcs_data_vh_plotter.rcs_data.incident_wave_theta

# Plot RCS

plot_vv = rcs_data_vv_plotter.plot_rcs(
    primary_sweep=primary_sweep, secondary_sweep_value=secondary_sweep_value_vv
)
plot_vh = rcs_data_vh_plotter.plot_rcs(
    primary_sweep=primary_sweep, secondary_sweep_value=secondary_sweep_value_vh
)

plot_vh_freq = rcs_data_vh_plotter.plot_rcs(
    primary_sweep="Freq", secondary_sweep="IWavePhi"
)

# Release AEDT
toolkit_api.release_aedt()