Visualization
=============
This section lists modules for creating and editing data outside AEDT.
Plot fields and data outside AEDT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PyAEDT supports external report capabilities available with installed third-party
packages like `numpy `_,
`pandas `_, `matplotlib `_,
and `pyvista `_.
.. currentmodule:: ansys.aedt.core.modules
.. autosummary::
:toctree: _autosummary
:nosignatures:
solutions.SolutionData
solutions.FieldPlot
Plot 3D objects and fields
~~~~~~~~~~~~~~~~~~~~~~~~~~
ModelPlotter is a class that benefits of `pyvista `_ package and allows to generate
models and 3D plots.
.. currentmodule:: ansys.aedt.core.generic.plot
.. autosummary::
:toctree: _autosummary
:nosignatures:
ModelPlotter
Plot touchstone data outside AEDT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TouchstoneData class is based on `scikit-rf `_ package and allows advanced
touchstone post-processing.
The following methods allows to read and check touchstone files.
.. currentmodule:: ansys.aedt.core.generic.touchstone_parser
.. autosummary::
:toctree: _autosummary
:nosignatures:
read_touchstone
check_touchstone_files
Using the above methods you are getting an object of a class TouchstoneData.
The class TouchstoneData is based on `scikit-rf `_,
Additional methods are added to provide easy access to touchstone curves.
.. currentmodule:: ansys.aedt.core.generic.touchstone_parser
.. autosummary::
:toctree: _autosummary
:nosignatures:
TouchstoneData.get_insertion_loss_index
TouchstoneData.plot_insertion_losses
TouchstoneData.plot
TouchstoneData.plot_return_losses
TouchstoneData.get_mixed_mode_touchstone_data
TouchstoneData.get_return_loss_index
TouchstoneData.get_insertion_loss_index_from_prefix
TouchstoneData.get_next_xtalk_index
TouchstoneData.get_fext_xtalk_index_from_prefix
TouchstoneData.plot_next_xtalk_losses
TouchstoneData.plot_fext_xtalk_losses
TouchstoneData.get_worst_curve
Here an example on how to use TouchstoneData class.
.. code:: python
from ansys.aedt.core.generic.touchstone_parser import TouchstoneData
ts1 = TouchstoneData(touchstone_file=os.path.join(test_T44_dir, "port_order_1234.s8p"))
assert ts1.get_mixed_mode_touchstone_data()
ts2 = TouchstoneData(touchstone_file=os.path.join(test_T44_dir, "port_order_1324.s8p"))
assert ts2.get_mixed_mode_touchstone_data(port_ordering="1324")
assert ts1.plot_insertion_losses(plot=False)
assert ts1.get_worst_curve(curve_list=ts1.get_return_loss_index(), plot=False)
...
Farfield
~~~~~~~~
PyAEDT offers sophisticated tools for advanced farfield post-processing.
There are two complementary classes: ``FfdSolutionDataExporter`` and ``FfdSolutionData``.
- FfdSolutionDataExporter: Enables efficient export and manipulation of farfield data. It allows users to convert simulation results into a standard metadata format for further analysis, or reporting.
- FfdSolutionData: Focuses on the direct access and processing of farfield solution data. It supports a comprehensive set of postprocessing operations, from visualizing radiation patterns to computing key performance metrics.
.. currentmodule:: ansys.aedt.core.generic.farfield_visualization
.. autosummary::
:toctree: _autosummary
:nosignatures:
FfdSolutionDataExporter
FfdSolutionData
This code shows how you can get the farfield data and perform some post-processing:
.. code:: python
import ansys.aedt.core
from ansys.aedt.core.generic.farfield_visualization import FfdSolutionDataExporter
app = ansys.aedt.core.Hfss()
ffdata = app.get_antenna_data(frequencies=None,
setup="Setup1 : Sweep",
sphere="3D",
variations=None,
overwrite=False,
link_to_hfss=True,
export_touchstone=True)
incident_power = ffdata.incident_power
ffdata.plot_cut(primary_sweep="Theta", theta=0)
ffdata.plot_contour(polar=True)
ffdata.plot_3d(show_geometry=False)
app.release_desktop(False, False)
If you exported the farfield data previously,you can directly get the farfield data:
.. code:: python
from ansys.aedt.core.generic.farfield_visualization import FfdSolutionData
input_file = r"path_to_ffd\pyaedt_antenna_metadata.json"
ffdata = FfdSolutionData(input_file)
incident_power = ffdata.incident_power
ffdata.plot_cut(primary_sweep="Theta", theta=0)
ffdata.plot_contour(polar=True)
ffdata.plot_3d(show_geometry=False)
app.release_desktop(False, False)
The following diagram shows both classes work. You can use them independently or from the ``get_antenna_data`` method.
.. image:: ../_static/farfield_visualization_pyaedt.png
:width: 800
:alt: Farfield data with PyAEDT
If you have existing farfield data, or you want to export it manually, you can still use FfdSolutionData class.
.. image:: ../_static/farfield_visualization_aedt.png
:width: 800
:alt: Farfield data with AEDT
Heterogeneous data message
~~~~~~~~~~~~~~~~~~~~~~~~~~
Heterogeneous data message (HDM) is the file exported from SBR+ solver containing rays information.
The following methods allows to read and plot rays information.
.. currentmodule:: ansys.aedt.core.sbrplus
.. autosummary::
:toctree: _autosummary
:nosignatures:
hdm_parser.Parser
plot.HDMPlotter