From e4a879b9fdf467cb0833f5c5f480f344c94daed0 Mon Sep 17 00:00:00 2001 From: Devin Date: Sun, 19 Jan 2025 10:00:54 +0100 Subject: [PATCH 01/16] Update component_conversion.py - Fix errors that led to an invalid project. - Update to match template. --- examples/high_frequency/antenna/array.py | 135 +++++++++++++++-------- 1 file changed, 88 insertions(+), 47 deletions(-) diff --git a/examples/high_frequency/antenna/array.py b/examples/high_frequency/antenna/array.py index f900da8a0..0c4a493e7 100644 --- a/examples/high_frequency/antenna/array.py +++ b/examples/high_frequency/antenna/array.py @@ -1,86 +1,120 @@ # # Component antenna array -# This example shows how to use PyAEDT to create an example using a 3D component file. It sets -# up the analysis, solves it, and uses postprocessing functions to create plots using Matplotlib and -# PyVista without opening the HFSS user interface. This example runs only on Windows using CPython. +# This example shows how to create an antenna array using 3D components for the unit +# cell definition. You will see how to set +# up the analysis, generates the EM solution, and post-process the solution data +# using Matplotlib and +# PyVista. This example runs only on Windows using CPython. # # Keywords: **HFSS**, **antenna array**, **3D components**, **far field**. -# ## Perform imports and define constants +# ## Prerequisites # -# Perform required imports. +# ### Perform imports +# + import os import tempfile import time -import ansys.aedt.core +from ansys.aedt.core import Hfss from ansys.aedt.core.visualization.advanced.farfield_visualization import \ FfdSolutionData +from ansys.aedt.core.downloads import download_3dcomponent +from ansys.aedt.core import general_methods +# - -# Define constants +# ### Define constants +# Constants help ensure consistency and avoid repetition throughout the example. AEDT_VERSION = "2024.2" NUM_CORES = 4 NG_MODE = False # Open AEDT UI when it is launched. -# ## Create temporary directory +# ### Create temporary directory +# +# Create a temporary working directory. +# The name of the working folder is stored in ``temp_folder.name``. +# +# > **Note:** The final cell in the notebook cleans up the temporary folder. If you want to +# > retrieve the AEDT project and data, do so before executing the final cell in the notebook. # -# Create a temporary directory where downloaded data or -# dumped data can be stored. -# If you'd like to retrieve the project data for subsequent use, -# the temporary folder name is given by ``temp_folder.name``. temp_folder = tempfile.TemporaryDirectory(suffix=".ansys") -# ## Download 3D component -# Download the 3D component that is needed to run the example. +# ### Download 3D component +# Download the 3D component that will be used to define +# the unit cell in the antenna array. -example_path = ansys.aedt.core.downloads.download_3dcomponent( - destination=temp_folder.name -) +path_to_3dcomp = download_3dcomponent(destination=temp_folder.name) -# ## Launch HFSS and open project +# ### Launch HFSS # -# Launch HFSS and open the project. +# The following cell creates a new ``Hfss`` object. Electronics desktop is launched and +# a new HFSS design is inserted into the project. # + project_name = os.path.join(temp_folder.name, "array.aedt") -hfss = ansys.aedt.core.Hfss( +hfss = Hfss( project=project_name, version=AEDT_VERSION, design="Array_Simple", non_graphical=NG_MODE, - new_desktop=True, + new_desktop=False, # Set to `False` to connect to an existing AEDT session. ) print("Project name " + project_name) # - -# ## Read array definition +# ### Read array definition # # Read array definition from the JSON file. -dict_in = ansys.aedt.core.general_methods.read_json( - os.path.join(example_path, "array_simple.json") +array_definition = general_methods.read_json( + os.path.join(path_to_3dcomp, "array_simple.json") ) -# ## Define 3D component +# ### Add the 3D component definition +# +# The JSON file links the unit cell to the 3D component +# named "Circ_Patch_5GHz1". +# This can be seen by examining ``array_definition["cells"]``. The following +# code prints the row and column indices of the array elements along with the name +# of the 3D component for each element. # -# Define the 3D component cell. +# > **Note:** The ``array_definition["cells"]`` is of type ``dict`` and the key +# > values use the row, column indices in a string. For example: ``"(1,2)"`` for +# > the cell in the first row and the 2nd column. + +print("Element\t\tName") +print("--------\t-------------") +for cell in array_definition["cells"]: + cell_name = array_definition["cells"][cell]["name"] + print(f"{cell}\t\t'{cell_name}'.") + +# Each unit cell is defined by a 3D Component. The 3D component may be added +# to the HFSS design using the method +# [``Hfss.modeler.insert_3d_component()``] +# (https://aedt.docs.pyansys.com/version/stable/API/_autosummary/ansys.aedt.core.modeler.modeler_3d.Modeler3D.insert_3d_component.html) +# or it can be added as a key to the ``array_definition`` as shown below. -dict_in["Circ_Patch_5GHz1"] = os.path.join(example_path, "Circ_Patch_5GHz.a3dcomp") +array_definition["Circ_Patch_5GHz1"] = os.path.join(path_to_3dcomp, "Circ_Patch_5GHz.a3dcomp") -# ## Add 3D component array +# Note that the 3D component name is identical to the value for each element +# in the ``"cells"`` dictionary. For example, +# ``array_definition["cells"][0][0]["name"] + +# ### Create the 3D component array in HFSS # -# A 3D component array is created from the previous dictionary. +# The array is now generated in HFSS from the information in +# ``array_definition``. # If a 3D component is not available in the design, it is loaded # into the dictionary from the path that you specify. The following -# code edits the dictionary to point to the location of the A3DCOMP file. +# code edits the dictionary to point to the location of the ``*.a3dcomp`` file. -array = hfss.add_3d_component_array_from_json(dict_in) +array = hfss.add_3d_component_array_from_json(array_definition, name="circ_patch_array") -# ## Modify cells +# ### Modify cells # # Make the center element passive and rotate the corner elements. @@ -90,7 +124,7 @@ array.cells[2][0].rotation = 90 array.cells[2][2].rotation = 90 -# ## Set up simulation and analyze +# ### Set up simulation and run analysis # # Set up a simulation and analyze it. @@ -100,27 +134,30 @@ hfss.analyze(cores=NUM_CORES) -# ## Get far field data +# ## Postprocess +# +# ### Retrieve far-field data # -# Get far field data. After the simulation completes, the far +# Get far-field data. After the simulation completes, the far # field data is generated port by port and stored in a data class. ffdata = hfss.get_antenna_data(setup=hfss.nominal_adaptive, sphere="Infinite Sphere1") -# ## Generate contour plot +# ### Generate contour plot # # Generate a contour plot. You can define the Theta scan and Phi scan. ffdata.farfield_data.plot_contour( quantity="RealizedGain", - title="Contour at {}Hz".format(ffdata.farfield_data.frequency), + title=f"Contour at {ffdata.farfield_data.frequency * 1E-9:0.1f} GHz" ) -# ## Release AEDT +# ### Save the project and data # -# Release AEDT. -# You can perform far field postprocessing without AEDT because the data is stored. +# Farfield data can be accessed from disk after the solution has been generated +# using the ``metadata_file`` property of ``ffdata``. +# + metadata_file = ffdata.metadata_file working_directory = hfss.working_directory @@ -128,10 +165,12 @@ hfss.release_desktop() # Wait 3 seconds to allow AEDT to shut down before cleaning the temporary directory. time.sleep(3) +# - -# ## Load far field data +# ### Load far field data # -# Load the stored far field data. +# The ``FfdSolutionData`` method can be instantiated from the metadata file. Embedded element +# patters are linked through the metadata file. ffdata = FfdSolutionData(input_file=metadata_file) @@ -141,19 +180,20 @@ # and Phi scan. ffdata.plot_contour( - quantity="RealizedGain", title="Contour at {}Hz".format(ffdata.frequency) + quantity="RealizedGain", title=f"Contour at {ffdata.frequency*1e-9:.1f}GHz" ) -# ## Generate 2D cutout plots +# ### Generate 2D cutout plots # # Generate 2D cutout plots. You can define the Theta scan # and Phi scan. +# + ffdata.plot_cut( quantity="RealizedGain", primary_sweep="theta", secondary_sweep_value=[-180, -75, 75], - title="Azimuth at {}Hz".format(ffdata.frequency), + title=f"Azimuth at {ffdata.frequency*1E-9:.1f}GHz", quantity_format="dB10", ) @@ -164,8 +204,9 @@ title="Elevation", quantity_format="dB10", ) +# - -# ## Generate 3D plot +# ### Generate 3D plot # # Generate 3D plots. You can define the Theta scan and Phi scan. @@ -175,7 +216,7 @@ show=False, ) -# ## Clean up +# ### Clean up # # All project files are saved in the folder ``temp_folder.name``. # If you've run this example as a Jupyter notebook, you From b43ed37dae11d62a862f71418817660381b790b4 Mon Sep 17 00:00:00 2001 From: Devin Date: Tue, 21 Jan 2025 07:17:20 -0500 Subject: [PATCH 02/16] Update Antenna examples - Allow discrete sweep for dipole.py - Add interpolating and discrete sweeps - Match template format. --- examples/high_frequency/antenna/array.py | 4 +- examples/high_frequency/antenna/dipole.py | 136 ++++++++++++++-------- 2 files changed, 88 insertions(+), 52 deletions(-) diff --git a/examples/high_frequency/antenna/array.py b/examples/high_frequency/antenna/array.py index 0c4a493e7..9dbac64ac 100644 --- a/examples/high_frequency/antenna/array.py +++ b/examples/high_frequency/antenna/array.py @@ -83,8 +83,8 @@ # of the 3D component for each element. # # > **Note:** The ``array_definition["cells"]`` is of type ``dict`` and the key -# > values use the row, column indices in a string. For example: ``"(1,2)"`` for -# > the cell in the first row and the 2nd column. +# > is builta as a string from the _(row, column)_ indices of the array element. For example: +# > the key for the element in the first row and 2nd column is ``"(1,2)"``. print("Element\t\tName") print("--------\t-------------") diff --git a/examples/high_frequency/antenna/dipole.py b/examples/high_frequency/antenna/dipole.py index 9a852b9af..43a796e43 100644 --- a/examples/high_frequency/antenna/dipole.py +++ b/examples/high_frequency/antenna/dipole.py @@ -1,94 +1,130 @@ # # Dipole antenna # -# This example shows how to use PyAEDT to create a dipole antenna in HFSS -# and postprocess results. +# This example shows how to create a dipole antenna in HFSS +# and view the simulation results. # # Keywords: **HFSS**, **modal**, **antenna**, **3D components**, **far field**. -# ## Perform imports and define constants +# ## Prerequisites # -# Perform required imports. +# ### Perform imports +# + import os import tempfile import time import ansys.aedt.core +# - -# Define constants. +# ### Define constants +# Constants help ensure consistency and avoid repetition throughout the example. AEDT_VERSION = "2024.2" NUM_CORES = 4 NG_MODE = False # Open AEDT UI when it is launched. -# ## Create temporary directory +# ### Create temporary directory # -# Create a temporary directory where downloaded data or -# dumped data can be stored. -# If you'd like to retrieve the project data for subsequent use, -# the temporary folder name is given by ``temp_folder.name``. +# Create a temporary working directory. +# The name of the working folder is stored in ``temp_folder.name``. +# +# > **Note:** The final cell in the notebook cleans up the temporary folder. If you want to +# > retrieve the AEDT project and data, do so before executing the final cell in the notebook. temp_folder = tempfile.TemporaryDirectory(suffix=".ansys") -# ## Launch AEDT +# ### Launch the Ansys Electronics Desktop +# +# You can start Ansys Electronics Desktop (AEDT) either by +# creating an instance of the ``Desktop`` class or by +# directly creating an application instance like ``Hfss``. +# +# > **Note:** If a Desktop instance is already running, the +# > application will connect to it automatically as shown below. d = ansys.aedt.core.launch_desktop( AEDT_VERSION, non_graphical=NG_MODE, new_desktop=True ) -# ## Launch HFSS +# ### Create an HFSS Design # -# Create an HFSS design. +# Create an instance of +# the ``Hfss`` class. An HFSS design is inserted into the +# Desktop. The ``hfss`` object is subsequently used to +# create and simulate the dipole antenna. project_name = os.path.join(temp_folder.name, "dipole.aedt") hfss = ansys.aedt.core.Hfss( version=AEDT_VERSION, project=project_name, solution_type="Modal" ) -# ## Define variable +# ## Model Preparation # -# Define a variable for the dipole length. - -hfss["l_dipole"] = "13.5cm" - -# ## Get 3D component from system library +# ### Define the dipole length as a parameter # -# Get a 3D component from the ``syslib`` directory. For this example to run -# correctly, you must get all geometry parameters of the 3D component or, in -# case of an encrypted 3D component, create a dictionary of the parameters. - -compfile = hfss.components3d["Dipole_Antenna_DM"] -geometryparams = hfss.get_components3d_vars("Dipole_Antenna_DM") -geometryparams["dipole_length"] = "l_dipole" -hfss.modeler.insert_3d_component(compfile, geometryparams) +# The parameter ``l_dipole`` can be modified to change +# the length of the dipole antenna. -# ## Create boundaries -# -# Create an open region. +hfss["l_dipole"] = "10.2cm" +component_name = "Dipole_Antenna_DM" +freq_range = ["1GHz", "2GHz"] # Frequency range for analysis and post-processing. +center_freq = "1.5GHz" # Center frequency +freq_step = "0.5GHz" -hfss.create_open_region(frequency="1GHz") -# ## Create setup +# ### Insert the dipole antenna +# +# The 3D component "Dipole_Antenna_DM" will be inserted from +# the built-in ``syslib`` folder. The full path to 3D components +# can be retrieved from +# ``hfss.components3d`` which provides the full path to all +# 3D components located in the _syslib_ or _userlib_. +# +# The component is inserted using the method +# ``hfss.modeler.insert_3d_component()``. # -# Create a setup with a sweep to run the simulation. +# - The first argument passed to ``insert_3d_component()`` +# full name of the +# ``*.a3dcomp`` file. +# - The second argument is a ``dict`` whose keys are the parameter names +# defined in the 3D component. In this case, we pass the +# dipole length, ``"l_dipole"`` as the value of ``dipole_length`` +# and leave other values unchanged. + +compfile = hfss.components3d[component_name] # Full file name. +comp_params = hfss.get_components3d_vars(component_name) # Dict of name/value pairs. +comp_params["dipole_length"] = "l_dipole" # Update the dipole length. +hfss.modeler.insert_3d_component(compfile, geometry_parameters=comp_params) + +# ### Define the solution domain +# +# An open region object places a an airbox around the dipole antenna +# and assigns a radition boundary to the outer surfaces of the region. -setup = hfss.create_setup("MySetup") -setup.props["Frequency"] = "1GHz" -setup.props["MaximumPasses"] = 1 -hfss.create_linear_count_sweep( - setup=setup.name, - units="GHz", - start_frequency=0.5, - stop_frequency=1.5, - num_of_freq_points=101, - name="sweep1", - sweep_type="Interpolating", - interpolation_tol=3, - interpolation_max_solutions=255, - save_fields=False, -) +hfss.create_open_region(frequency=center_freq) -# ## Run simulation +# ### Define the solution setup +# +# The solution setup is used to specify parameters used to generate the HFSS solution: +# - ``"Frequency"`` specifies the solution frequency used +# to adapt the finite element mesh. +# - ``"MaximumPasses"`` specifies the maximum number of passes used for automatic +# adaptive mesh refinement. +# - ``"MultipleAdaptiveFreqsSetup"`` specifies the solution frequencies at which +# the antenna will be solved during adaptive mesh refinement. For resonant structures +# it is advisable to select at least two frequencies, one above and one below the +# expected resonance frequency. + +setup = hfss.create_setup(name="MySetup", MultipleAdaptiveFreqsSetup=freq_range, MaximumPasses=4) + +disc_sweep = setup.add_sweep(name="DiscreteSweep", sweep_type="Discrete", + RangeStart=freq_range[0], RangeEnd=freq_range[1], RangeStep=freq_step, + SaveFields=True) +interp_sweep = setup.add_sweep(name="InterpolatingSweep", sweep_type="Interpolating", + RangeStart=freq_range[0], RangeEnd=freq_range[1]) + +# ### Run simulation hfss.analyze_setup(name="MySetup", cores=NUM_CORES) @@ -96,7 +132,7 @@ # # Plot s-parameters and far field. -hfss.create_scattering("MyScattering") +hfss.create_scattering("MyScattering", sweep=interp_sweep.name) variations = hfss.available_variations.nominal_w_values_dict variations["Freq"] = ["1GHz"] variations["Theta"] = ["All"] From bcb87e13b58f6b56671373212d8ba69b5f83caf8 Mon Sep 17 00:00:00 2001 From: Devin Date: Thu, 30 Jan 2025 11:47:12 +0100 Subject: [PATCH 03/16] Merge split cell --- examples/high_frequency/antenna/dipole.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/high_frequency/antenna/dipole.py b/examples/high_frequency/antenna/dipole.py index 43a796e43..83317a250 100644 --- a/examples/high_frequency/antenna/dipole.py +++ b/examples/high_frequency/antenna/dipole.py @@ -116,6 +116,7 @@ # it is advisable to select at least two frequencies, one above and one below the # expected resonance frequency. +# + setup = hfss.create_setup(name="MySetup", MultipleAdaptiveFreqsSetup=freq_range, MaximumPasses=4) disc_sweep = setup.add_sweep(name="DiscreteSweep", sweep_type="Discrete", @@ -123,6 +124,7 @@ SaveFields=True) interp_sweep = setup.add_sweep(name="InterpolatingSweep", sweep_type="Interpolating", RangeStart=freq_range[0], RangeEnd=freq_range[1]) +# - # ### Run simulation From daeefefb4bbe3338086d0570e29e8d6e76e96d0e Mon Sep 17 00:00:00 2001 From: Devin Date: Sat, 1 Feb 2025 09:00:39 +0100 Subject: [PATCH 04/16] Fix report --- examples/high_frequency/antenna/dipole.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/high_frequency/antenna/dipole.py b/examples/high_frequency/antenna/dipole.py index 83317a250..2400761cb 100644 --- a/examples/high_frequency/antenna/dipole.py +++ b/examples/high_frequency/antenna/dipole.py @@ -151,7 +151,7 @@ # Create a far field report. new_report = hfss.post.reports_by_category.far_field( - "db(RealizedGainTotal)", hfss.nominal_adaptive, "3D" + "db(RealizedGainTotal)", disc_sweep, "3D", Freq=center_freq, ) new_report.report_type = "3D Polar Plot" new_report.secondary_sweep = "Phi" From 8ea91bf9ee289ef47c51d730a7accf9621595ff3 Mon Sep 17 00:00:00 2001 From: Devin Date: Sat, 1 Feb 2025 09:06:55 +0100 Subject: [PATCH 05/16] Fix report --- examples/high_frequency/antenna/dipole.py | 31 ++++++++--------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/examples/high_frequency/antenna/dipole.py b/examples/high_frequency/antenna/dipole.py index 2400761cb..d3df8f825 100644 --- a/examples/high_frequency/antenna/dipole.py +++ b/examples/high_frequency/antenna/dipole.py @@ -34,30 +34,21 @@ temp_folder = tempfile.TemporaryDirectory(suffix=".ansys") -# ### Launch the Ansys Electronics Desktop -# -# You can start Ansys Electronics Desktop (AEDT) either by -# creating an instance of the ``Desktop`` class or by -# directly creating an application instance like ``Hfss``. -# -# > **Note:** If a Desktop instance is already running, the -# > application will connect to it automatically as shown below. - -d = ansys.aedt.core.launch_desktop( - AEDT_VERSION, non_graphical=NG_MODE, new_desktop=True -) - # ### Create an HFSS Design # # Create an instance of -# the ``Hfss`` class. An HFSS design is inserted into the -# Desktop. The ``hfss`` object is subsequently used to +# the ``Hfss`` class. The Ansys Electronics Desktop will be launched +# with an active HFSS design. The ``hfss`` object is subsequently +# used to # create and simulate the dipole antenna. project_name = os.path.join(temp_folder.name, "dipole.aedt") -hfss = ansys.aedt.core.Hfss( - version=AEDT_VERSION, project=project_name, solution_type="Modal" -) +hfss = ansys.aedt.core.Hfss( version=AEDT_VERSION, + non_graphical=NG_MODE, + project=project_name, + new_desktop=True, + solution_type="Modal", + ) # ## Model Preparation # @@ -104,7 +95,7 @@ hfss.create_open_region(frequency=center_freq) -# ### Define the solution setup +# ### Specify the solution setup # # The solution setup is used to specify parameters used to generate the HFSS solution: # - ``"Frequency"`` specifies the solution frequency used @@ -117,7 +108,7 @@ # expected resonance frequency. # + -setup = hfss.create_setup(name="MySetup", MultipleAdaptiveFreqsSetup=freq_range, MaximumPasses=4) +setup = hfss.create_setup(name="MySetup", MultipleAdaptiveFreqsSetup=freq_range, MaximumPasses=2) disc_sweep = setup.add_sweep(name="DiscreteSweep", sweep_type="Discrete", RangeStart=freq_range[0], RangeEnd=freq_range[1], RangeStep=freq_step, From 2a5a52a9b9e6a33f2e065bd3f91d2dcc342b2451 Mon Sep 17 00:00:00 2001 From: Devin Date: Mon, 3 Feb 2025 09:33:06 +0100 Subject: [PATCH 06/16] Improve reporting --- examples/high_frequency/antenna/dipole.py | 54 ++++++++++++----------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/examples/high_frequency/antenna/dipole.py b/examples/high_frequency/antenna/dipole.py index d3df8f825..e502e229a 100644 --- a/examples/high_frequency/antenna/dipole.py +++ b/examples/high_frequency/antenna/dipole.py @@ -127,42 +127,46 @@ hfss.create_scattering("MyScattering", sweep=interp_sweep.name) variations = hfss.available_variations.nominal_w_values_dict -variations["Freq"] = ["1GHz"] +variations["Freq"] = [center_freq] variations["Theta"] = ["All"] variations["Phi"] = ["All"] -hfss.post.create_report( - "db(GainTotal)", - hfss.nominal_adaptive, - variations, - primary_sweep_variable="Theta", - context="3D", - report_category="Far Fields", -) +elevation_ffd_plot = hfss.post.create_report(expressions="db(GainTheta)", + setup_sweep_name=disc_sweep.name, + variations=variations, + primary_sweep_variable="Theta", + context="Elevation", # Far-field setup is pre-defined. + report_category="Far Fields", + plot_type="Radiation Pattern", + plot_name="Elevation" + ) # Create a far field report. -new_report = hfss.post.reports_by_category.far_field( - "db(RealizedGainTotal)", disc_sweep, "3D", Freq=center_freq, -) -new_report.report_type = "3D Polar Plot" -new_report.secondary_sweep = "Phi" -new_report.create("Realized3D") +# + +report_3d = hfss.post.reports_by_category.far_field("db(RealizedGainTheta)", + disc_sweep.name, + sphere_name="3D", + Freq= [center_freq],) -# This code generates a 2D plot. +report_3d.report_type = "3D Polar Plot" +report_3d.create(name="Realized3D") +# - -hfss.field_setups[2].phi_step = 90 -new_report2 = hfss.post.reports_by_category.far_field( - "db(RealizedGainTotal)", hfss.nominal_adaptive, hfss.field_setups[2].name -) -new_report2.variations = variations -new_report2.primary_sweep = "Theta" -new_report2.create("Realized2D") +# View cross-polarization. + +xpol = hfss.post.reports_by_category.far_field(["db(RealizedGainTheta)", "db(RealizedGainPhi)"], + disc_sweep.name, + sphere_name="Azimuth", + Freq= [center_freq],) + +xpol.report_type = "Radiation Pattern" +xpol.create(name="xpol") # Get solution data using the ``new_report`` object and postprocess or plot the # data outside AEDT. -solution_data = new_report.get_solution_data() -solution_data.plot() +solution_data = report_3d.get_solution_data() +solution_data.plot(formula="dB20", x_label="X", y_label="Y", is_polar=True) # Generate a far field plot by creating a postprocessing variable and assigning # it to a new coordinate system. You can use the ``post`` prefix to create a From cd6575f5b369cd6838fa96918c0e6f472b736ee2 Mon Sep 17 00:00:00 2001 From: Devin Date: Sun, 16 Feb 2025 12:47:02 -0600 Subject: [PATCH 07/16] Update dipole example. - Fix numerous errors in plotting and rendering. - Allow multiple frequencies for adaptive refinement. - Expand explanation of functions used in this examle. --- examples/high_frequency/antenna/dipole.py | 190 ++++++++++++---------- 1 file changed, 105 insertions(+), 85 deletions(-) diff --git a/examples/high_frequency/antenna/dipole.py b/examples/high_frequency/antenna/dipole.py index e502e229a..eaf5e3919 100644 --- a/examples/high_frequency/antenna/dipole.py +++ b/examples/high_frequency/antenna/dipole.py @@ -1,9 +1,9 @@ # # Dipole antenna # -# This example shows how to create a dipole antenna in HFSS -# and view the simulation results. +# This example shows how to create, analyze and review simulation results for a +# half-wavelength dipole antenna in HFSS. # -# Keywords: **HFSS**, **modal**, **antenna**, **3D components**, **far field**. +# Keywords: **HFSS**, **antenna**, **3D component**, **far field**. # ## Prerequisites # @@ -14,7 +14,7 @@ import tempfile import time -import ansys.aedt.core +from ansys.aedt.core import Hfss # - # ### Define constants @@ -34,7 +34,7 @@ temp_folder = tempfile.TemporaryDirectory(suffix=".ansys") -# ### Create an HFSS Design +# ### Launch HFSS # # Create an instance of # the ``Hfss`` class. The Ansys Electronics Desktop will be launched @@ -43,12 +43,12 @@ # create and simulate the dipole antenna. project_name = os.path.join(temp_folder.name, "dipole.aedt") -hfss = ansys.aedt.core.Hfss( version=AEDT_VERSION, - non_graphical=NG_MODE, - project=project_name, - new_desktop=True, - solution_type="Modal", - ) +hfss = Hfss(version=AEDT_VERSION, + non_graphical=NG_MODE, + project=project_name, + new_desktop=True, + solution_type="Modal", + ) # ## Model Preparation # @@ -64,7 +64,7 @@ freq_step = "0.5GHz" -# ### Insert the dipole antenna +# ### Insert the dipole antenna model # # The 3D component "Dipole_Antenna_DM" will be inserted from # the built-in ``syslib`` folder. The full path to 3D components @@ -83,12 +83,12 @@ # dipole length, ``"l_dipole"`` as the value of ``dipole_length`` # and leave other values unchanged. -compfile = hfss.components3d[component_name] # Full file name. -comp_params = hfss.get_components3d_vars(component_name) # Dict of name/value pairs. +component_fn = hfss.components3d[component_name] # Full file name. +comp_params = hfss.get_components3d_vars(component_name) # Retrieve dipole parameters. comp_params["dipole_length"] = "l_dipole" # Update the dipole length. -hfss.modeler.insert_3d_component(compfile, geometry_parameters=comp_params) +hfss.modeler.insert_3d_component(component_fn, geometry_parameters=comp_params) -# ### Define the solution domain +# ### Create the 3D domain region # # An open region object places a an airbox around the dipole antenna # and assigns a radition boundary to the outer surfaces of the region. @@ -97,15 +97,25 @@ # ### Specify the solution setup # -# The solution setup is used to specify parameters used to generate the HFSS solution: -# - ``"Frequency"`` specifies the solution frequency used -# to adapt the finite element mesh. +# The solution setup defines parameters that govern the HFSS solution process. This example demonstrates +# how to set up the solution to use two solution frequencies for adaptive refinement. This approach can improve solution +# efficiency for resonant structures wherein the final resonance frequency may not be known. # - ``"MaximumPasses"`` specifies the maximum number of passes used for automatic # adaptive mesh refinement. # - ``"MultipleAdaptiveFreqsSetup"`` specifies the solution frequencies at which # the antenna will be solved during adaptive mesh refinement. For resonant structures # it is advisable to select at least two frequencies, one above and one below the # expected resonance frequency. +# +# > **Note:** The parameter names used here are passed directly to the native AEDT API and therfore +# > do not adhere to [PEP-8](https://peps.python.org/pep-0008/). Readability and adherence to +# > PEP-8 will improve as PyAEDT evolves. +# +# Both a discrete frequency sweep and an interpolating sweep are added to the solution setup. The discrete +# sweep provides access to field solution data for post-processing. The interpolating sweep builds the +# rational fit of network parameters over the frequency interval defined by ``RangeStart`` and +# ``RangeEnd``. The solutions from the discrete sweep are used as the starting +# solutions for the interpolating sweep. # + setup = hfss.create_setup(name="MySetup", MultipleAdaptiveFreqsSetup=freq_range, MaximumPasses=2) @@ -114,18 +124,31 @@ RangeStart=freq_range[0], RangeEnd=freq_range[1], RangeStep=freq_step, SaveFields=True) interp_sweep = setup.add_sweep(name="InterpolatingSweep", sweep_type="Interpolating", - RangeStart=freq_range[0], RangeEnd=freq_range[1]) + RangeStart=freq_range[0], RangeEnd=freq_range[1], + SaveFields=False) # - # ### Run simulation -hfss.analyze_setup(name="MySetup", cores=NUM_CORES) +setup.analyze() # ### Postprocess # # Plot s-parameters and far field. -hfss.create_scattering("MyScattering", sweep=interp_sweep.name) +#spar_plot = hfss.post.create_report_from_configuration(input_file=spar_template,solution_name=interp_sweep.name) +spar_plot = hfss.create_scattering(plot="Return Loss", sweep=interp_sweep.name) + +# ### Visualize far-field data +# +# Parameters passed to ``hfss.post.create_report()`` specify the details of the report that will be created in AEDT. +# Below you can see how the parameters map to the reporter user interface. +# +# +# +# +# > **Note:** These images are from the 24R2 release + variations = hfss.available_variations.nominal_w_values_dict variations["Freq"] = [center_freq] variations["Theta"] = ["All"] @@ -137,10 +160,19 @@ context="Elevation", # Far-field setup is pre-defined. report_category="Far Fields", plot_type="Radiation Pattern", - plot_name="Elevation" + plot_name="Elevation Gain (dB)" ) +elevation_ffd_plot.children["Legend"].properties["Show Trace Name"] = False +elevation_ffd_plot.children["Legend"].properties["Show Solution Name"] = False -# Create a far field report. +# ### Create a far-field report +# +# The ``hfss.post.reports_by_category`` provides direct access to specific post-processing capabilities and can simplify +# syntax. Note that the variation is not passed to the method. In this case, the currently active variation will be used. The concept of a "variation" is useful when you generate multiple parametric solutions for a single HFSS design. +# +# The argument ``sphere_name`` specifies the far-field sphere used to generate the plot. In this case, the far-field sphere "3D" was automatically created when HFSS was launched by instantiating the ``Hfss`` class. +# +# # + report_3d = hfss.post.reports_by_category.far_field("db(RealizedGainTheta)", @@ -149,93 +181,81 @@ Freq= [center_freq],) report_3d.report_type = "3D Polar Plot" -report_3d.create(name="Realized3D") +report_3d.create(name="Realized Gain (dB)") # - -# View cross-polarization. +# ### Retrieve solution data for external post-processing +# +# An instance of the ``SolutionData`` class can be created from the report by calling the ``get_solution_data()`` +# method. This class makes data accessible for further post-processing using +# [Matplotlib](https://matplotlib.org/) and is used, for example, to create plots that can be viewed +# directly in the browser or in PDF reports as shown below. + +report_3d_data = report_3d.get_solution_data() +new_plot = report_3d_data.plot_3d() +# The dipole is linearly polarized as can be seen from the comparison of $\theta$-polarized +# and $\phi$-polarized gain at $\theta=90\degree$. The following code creates the gain plots +# in AEDT. + +# + +xpol_expressions = ["db(RealizedGainTheta)", "db(RealizedGainPhi)"] xpol = hfss.post.reports_by_category.far_field(["db(RealizedGainTheta)", "db(RealizedGainPhi)"], disc_sweep.name, + name="Cross Polarization", sphere_name="Azimuth", Freq= [center_freq],) xpol.report_type = "Radiation Pattern" xpol.create(name="xpol") +xpol.children["Legend"].properties["Show Solution Name"] = False +xpol.children["Legend"].properties["Show Variation Key"] = False +# - -# Get solution data using the ``new_report`` object and postprocess or plot the -# data outside AEDT. - -solution_data = report_3d.get_solution_data() -solution_data.plot(formula="dB20", x_label="X", y_label="Y", is_polar=True) +# The ``get_solution_data()`` method is again used to create an inline plot of cross-polarization from +# the report in HFSS. -# Generate a far field plot by creating a postprocessing variable and assigning -# it to a new coordinate system. You can use the ``post`` prefix to create a -# postprocessing variable directly from a setter, or you can use the ``set_variable()`` -# method with an arbitrary name. +ff_el_data = elevation_ffd_plot.get_solution_data() +ff_el_data.plot(x_label="Theta", y_label="Gain", is_polar=True) -hfss["post_x"] = 2 -hfss.variable_manager.set_variable(name="y_post", expression=1, is_post_processing=True) -hfss.modeler.create_coordinate_system(origin=["post_x", "y_post", 0], name="CS_Post") -hfss.insert_infinite_sphere(custom_coordinate_system="CS_Post", name="Sphere_Custom") -# ## Retrieve solution data +# A new coordinate system can be created for post-processing to change the phase-center for the far-field plots. +# In this example, the coordinate system is shifted by 13mm in the $+z$ direction. # -# You can also process solution data using Python libraries like Matplotlib. - -new_report = hfss.post.reports_by_category.far_field( - "GainTotal", hfss.nominal_adaptive, "3D" -) -new_report.primary_sweep = "Theta" -new_report.far_field_sphere = "3D" -solutions = new_report.get_solution_data() - -# Generate a 3D plot using Matplotlib. - -solutions.plot_3d() - -# Generate a far fields plot using Matplotlib. - -new_report.far_field_sphere = "Sphere_Custom" -solutions_custom = new_report.get_solution_data() -solutions_custom.plot_3d() - -# Generate a 2D plot using Matplotlib where you specify whether it is a polar -# plot or a rectangular plot. - -solutions.plot(formula="db20", is_polar=True) - -# ## Retrieve far-field data +# The ``sweep`` parameter is used here to modify the plot in AEDT by updating the ``ff_setup.properties``. # -# After the simulation completes, the far -# field data is generated port by port and stored in a data class. You can use this data -# once AEDT is released. +# > **Note:** Properties of many PyAEDT objects can be accessed through the ``properties`` property as shown +# > here. The keywords used to access properties are documented in the native AEDT API. -ffdata = hfss.get_antenna_data( - sphere="Sphere_Custom", - setup=hfss.nominal_adaptive, - frequencies=["1000MHz"], +# + +hfss.modeler.create_coordinate_system(origin=[0, 0, "13mm"], name="Offset_CS") +ff_setup = hfss.insert_infinite_sphere(custom_coordinate_system="Offset_CS", name="Offset") +sweep = dict(ThetaStart="-180deg", ThetaStop="180deg", ThetaStep="5deg", + PhiStart="0deg", PhiStop="180deg", PhiStep="10deg", + ) +for key, value in sweep.items(): + ff_setup.properties[key] = value + +gain_dB = hfss.post.reports_by_category.far_field( + "dB(GainTotal)", disc_sweep.name, "3D", Freq= [center_freq], ) +# - -# ## Generate 2D cutout plot -# -# Generate a 2D cutout plot. You can define the Theta scan -# and Phi scan. +# Again use ``get_solution_data()`` to create the far-field plot for rendering and +# post-processing outside the Ansys Electronics Desktop. -ffdata.farfield_data.plot_cut( - primary_sweep="theta", - secondary_sweep_value=0, - quantity="RealizedGain", - title="FarField", - quantity_format="dB20", - is_polar=True, -) +gain_offset_data = gain_dB.get_solution_data() +gain_offset_data.plot() # ## Release AEDT +# + hfss.save_project() -d.release_desktop() +hfss.release_desktop() + # Wait 3 seconds to allow AEDT to shut down before cleaning the temporary directory. time.sleep(3) +# - # ## Clean up # From b346e7ee765d005b9d56717c3b1810b025550fa6 Mon Sep 17 00:00:00 2001 From: Devin Date: Sun, 16 Feb 2025 12:50:32 -0600 Subject: [PATCH 08/16] Update dipole example. - Add images for dipole example. --- .../antenna/_static/ff_report_ui_1.png | Bin 0 -> 37924 bytes .../antenna/_static/ff_report_ui_2.png | Bin 0 -> 21695 bytes .../antenna/_static/sphere_3d.png | Bin 0 -> 48927 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/high_frequency/antenna/_static/ff_report_ui_1.png create mode 100644 examples/high_frequency/antenna/_static/ff_report_ui_2.png create mode 100644 examples/high_frequency/antenna/_static/sphere_3d.png diff --git a/examples/high_frequency/antenna/_static/ff_report_ui_1.png b/examples/high_frequency/antenna/_static/ff_report_ui_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2114cecb21df5806513dbecc525bd9942e08366e GIT binary patch literal 37924 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 literal 0 HcmV?d00001 diff --git a/examples/high_frequency/antenna/_static/ff_report_ui_2.png b/examples/high_frequency/antenna/_static/ff_report_ui_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7606bd0184ecc74adbf8a63699533a5e0af28cf7 GIT binary patch literal 21695 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 literal 0 HcmV?d00001 diff --git a/examples/high_frequency/antenna/_static/sphere_3d.png b/examples/high_frequency/antenna/_static/sphere_3d.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d91a662bdcfbbadd579def51907f565bd4ec5a GIT binary patch literal 48927 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 Date: Mon, 17 Feb 2025 10:53:48 -0600 Subject: [PATCH 09/16] Update dipole example. - Add images for dipole example. --- examples/high_frequency/antenna/dipole.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/examples/high_frequency/antenna/dipole.py b/examples/high_frequency/antenna/dipole.py index eaf5e3919..2bc57e7c8 100644 --- a/examples/high_frequency/antenna/dipole.py +++ b/examples/high_frequency/antenna/dipole.py @@ -194,6 +194,8 @@ report_3d_data = report_3d.get_solution_data() new_plot = report_3d_data.plot_3d() +# ### View Cross-Polarization +# # The dipole is linearly polarized as can be seen from the comparison of $\theta$-polarized # and $\phi$-polarized gain at $\theta=90\degree$. The following code creates the gain plots # in AEDT. @@ -219,6 +221,8 @@ ff_el_data.plot(x_label="Theta", y_label="Gain", is_polar=True) +# ### Change the antenna phase center +# # A new coordinate system can be created for post-processing to change the phase-center for the far-field plots. # In this example, the coordinate system is shifted by 13mm in the $+z$ direction. # @@ -241,6 +245,8 @@ ) # - +# ### Plot far-field outside of AEDT +# # Again use ``get_solution_data()`` to create the far-field plot for rendering and # post-processing outside the Ansys Electronics Desktop. From 6d49923e385247c99854647d5f2a87f170ce0c0a Mon Sep 17 00:00:00 2001 From: Devin Date: Thu, 27 Feb 2025 12:39:45 -0600 Subject: [PATCH 10/16] Update dipole example. - Re-run in 25R1 and remove relative CS parts which did not work properly. --- .../antenna/_static/sphere_3d.png | Bin 48927 -> 44291 bytes examples/high_frequency/antenna/dipole.py | 113 ++++++++---------- 2 files changed, 47 insertions(+), 66 deletions(-) diff --git a/examples/high_frequency/antenna/_static/sphere_3d.png b/examples/high_frequency/antenna/_static/sphere_3d.png index f3d91a662bdcfbbadd579def51907f565bd4ec5a..35999626f472f191a0c0f25e1686b61b2e1104a0 100644 GIT binary patch literal 44291 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 literal 48927 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 **Note:** The final cell in the notebook cleans up the temporary folder. If you want to +# > **Note:** The final cell in this notebook cleans up the temporary folder. If you want to # > retrieve the AEDT project and data, do so before executing the final cell in the notebook. temp_folder = tempfile.TemporaryDirectory(suffix=".ansys") @@ -54,8 +56,9 @@ # # ### Define the dipole length as a parameter # -# The parameter ``l_dipole`` can be modified to change -# the length of the dipole antenna. +# The dipole length can be modified by changing the +# parameter ``l_dipole`` to tune the +# resonance frequency. hfss["l_dipole"] = "10.2cm" component_name = "Dipole_Antenna_DM" @@ -67,21 +70,21 @@ # ### Insert the dipole antenna model # # The 3D component "Dipole_Antenna_DM" will be inserted from -# the built-in ``syslib`` folder. The full path to 3D components +# the built-in ``syslib`` folder. The full path to the 3D components # can be retrieved from -# ``hfss.components3d`` which provides the full path to all -# 3D components located in the _syslib_ or _userlib_. +# ``hfss.components3d``. # # The component is inserted using the method # ``hfss.modeler.insert_3d_component()``. # # - The first argument passed to ``insert_3d_component()`` -# full name of the +# is the full path and name of the # ``*.a3dcomp`` file. -# - The second argument is a ``dict`` whose keys are the parameter names -# defined in the 3D component. In this case, we pass the -# dipole length, ``"l_dipole"`` as the value of ``dipole_length`` -# and leave other values unchanged. +# - The second argument is a ``dict`` whose keys are the names of the parameters +# accessible in the 3D component. In this case, we assign the +# dipole length, ``"l_dipole"`` to the 3D Component +# parameter ``dipole_length`` +# and leave other parameters unchanged. component_fn = hfss.components3d[component_name] # Full file name. comp_params = hfss.get_components3d_vars(component_name) # Retrieve dipole parameters. @@ -91,29 +94,29 @@ # ### Create the 3D domain region # # An open region object places a an airbox around the dipole antenna -# and assigns a radition boundary to the outer surfaces of the region. +# and assigns a radiation boundary to the outer surfaces of the region. hfss.create_open_region(frequency=center_freq) # ### Specify the solution setup # # The solution setup defines parameters that govern the HFSS solution process. This example demonstrates -# how to set up the solution to use two solution frequencies for adaptive refinement. This approach can improve solution -# efficiency for resonant structures wherein the final resonance frequency may not be known. +# how to adapt the solution mesh simultaneously at two frequencies. # - ``"MaximumPasses"`` specifies the maximum number of passes used for automatic -# adaptive mesh refinement. -# - ``"MultipleAdaptiveFreqsSetup"`` specifies the solution frequencies at which -# the antenna will be solved during adaptive mesh refinement. For resonant structures -# it is advisable to select at least two frequencies, one above and one below the -# expected resonance frequency. +# adaptive mesh refinement. In this example the solution runs very fast since only two passes +# are used. Accuracy can be improved by increasing this value. +# - ``"MultipleAdaptiveFreqsSetup"`` specifies the solution frequencies used during adaptive +# mesh refinement. Selection of two frequencies, one above and one below the +# expected resonance frequency help improve mesh quality at the resonant frequency. # # > **Note:** The parameter names used here are passed directly to the native AEDT API and therfore -# > do not adhere to [PEP-8](https://peps.python.org/pep-0008/). Readability and adherence to -# > PEP-8 will improve as PyAEDT evolves. +# > do not adhere to [PEP-8](https://peps.python.org/pep-0008/). # -# Both a discrete frequency sweep and an interpolating sweep are added to the solution setup. The discrete -# sweep provides access to field solution data for post-processing. The interpolating sweep builds the -# rational fit of network parameters over the frequency interval defined by ``RangeStart`` and +# Both a discrete frequency sweep and an interpolating sweep are added to the solution setup. +# The discrete sweep provides access to field solution data for post-processing. +# The interpolating sweep builds the +# rational polynomial fit for the network (scattering) parameters over the +# frequency interval defined by ``RangeStart`` and # ``RangeEnd``. The solutions from the discrete sweep are used as the starting # solutions for the interpolating sweep. @@ -123,18 +126,25 @@ disc_sweep = setup.add_sweep(name="DiscreteSweep", sweep_type="Discrete", RangeStart=freq_range[0], RangeEnd=freq_range[1], RangeStep=freq_step, SaveFields=True) + interp_sweep = setup.add_sweep(name="InterpolatingSweep", sweep_type="Interpolating", RangeStart=freq_range[0], RangeEnd=freq_range[1], SaveFields=False) # - # ### Run simulation +# +# The following cell runs the analysis in HFSS including adaptive mesh refinement and +# solution of both frequency sweeps. setup.analyze() # ### Postprocess # -# Plot s-parameters and far field. +# Plot the return loss in Ansys Electronics Desktop (AEDT). A plot similar to the one shown here will be +# generated in . +# +# #spar_plot = hfss.post.create_report_from_configuration(input_file=spar_template,solution_name=interp_sweep.name) spar_plot = hfss.create_scattering(plot="Return Loss", sweep=interp_sweep.name) @@ -142,7 +152,7 @@ # ### Visualize far-field data # # Parameters passed to ``hfss.post.create_report()`` specify the details of the report that will be created in AEDT. -# Below you can see how the parameters map to the reporter user interface. +# Below you can see how parameters map from Python to the reporter in the AEDT user interface. # # # @@ -167,8 +177,11 @@ # ### Create a far-field report # -# The ``hfss.post.reports_by_category`` provides direct access to specific post-processing capabilities and can simplify -# syntax. Note that the variation is not passed to the method. In this case, the currently active variation will be used. The concept of a "variation" is useful when you generate multiple parametric solutions for a single HFSS design. +# The ``hfss.post.reports_by_category`` helps simplify the syntax required to access +# post-processing capabilities. In this case, results are shown for the current +# variation. The concept of +# "variations" is essential for managing parametric solutions +# in HFSS. # # The argument ``sphere_name`` specifies the far-field sphere used to generate the plot. In this case, the far-field sphere "3D" was automatically created when HFSS was launched by instantiating the ``Hfss`` class. # @@ -189,15 +202,15 @@ # An instance of the ``SolutionData`` class can be created from the report by calling the ``get_solution_data()`` # method. This class makes data accessible for further post-processing using # [Matplotlib](https://matplotlib.org/) and is used, for example, to create plots that can be viewed -# directly in the browser or in PDF reports as shown below. +# directly in the browser or embedded in PDF reports as shown below. report_3d_data = report_3d.get_solution_data() new_plot = report_3d_data.plot_3d() -# ### View Cross-Polarization +# ### View cross-polarization # # The dipole is linearly polarized as can be seen from the comparison of $\theta$-polarized -# and $\phi$-polarized gain at $\theta=90\degree$. The following code creates the gain plots +# and $\phi$-polarized "realized gain" at $\theta=90\degree$. The following code creates the gain plots # in AEDT. # + @@ -221,38 +234,6 @@ ff_el_data.plot(x_label="Theta", y_label="Gain", is_polar=True) -# ### Change the antenna phase center -# -# A new coordinate system can be created for post-processing to change the phase-center for the far-field plots. -# In this example, the coordinate system is shifted by 13mm in the $+z$ direction. -# -# The ``sweep`` parameter is used here to modify the plot in AEDT by updating the ``ff_setup.properties``. -# -# > **Note:** Properties of many PyAEDT objects can be accessed through the ``properties`` property as shown -# > here. The keywords used to access properties are documented in the native AEDT API. - -# + -hfss.modeler.create_coordinate_system(origin=[0, 0, "13mm"], name="Offset_CS") -ff_setup = hfss.insert_infinite_sphere(custom_coordinate_system="Offset_CS", name="Offset") -sweep = dict(ThetaStart="-180deg", ThetaStop="180deg", ThetaStep="5deg", - PhiStart="0deg", PhiStop="180deg", PhiStep="10deg", - ) -for key, value in sweep.items(): - ff_setup.properties[key] = value - -gain_dB = hfss.post.reports_by_category.far_field( - "dB(GainTotal)", disc_sweep.name, "3D", Freq= [center_freq], -) -# - - -# ### Plot far-field outside of AEDT -# -# Again use ``get_solution_data()`` to create the far-field plot for rendering and -# post-processing outside the Ansys Electronics Desktop. - -gain_offset_data = gain_dB.get_solution_data() -gain_offset_data.plot() - # ## Release AEDT # + From 54746ed10f4369c66e617520df8afdab1447469a Mon Sep 17 00:00:00 2001 From: Devin Date: Fri, 28 Feb 2025 06:26:06 -0600 Subject: [PATCH 11/16] Update array example. - Minor syntax updates per suggestions. --- examples/high_frequency/antenna/array.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/examples/high_frequency/antenna/array.py b/examples/high_frequency/antenna/array.py index 9dbac64ac..4fa1664d8 100644 --- a/examples/high_frequency/antenna/array.py +++ b/examples/high_frequency/antenna/array.py @@ -27,7 +27,7 @@ # ### Define constants # Constants help ensure consistency and avoid repetition throughout the example. -AEDT_VERSION = "2024.2" +AEDT_VERSION = "2025.1" NUM_CORES = 4 NG_MODE = False # Open AEDT UI when it is launched. @@ -110,7 +110,7 @@ # ``array_definition``. # If a 3D component is not available in the design, it is loaded # into the dictionary from the path that you specify. The following -# code edits the dictionary to point to the location of the ``*.a3dcomp`` file. +# code edits the dictionary to point to the location of the ``A3DCOMP`` file. array = hfss.add_3d_component_array_from_json(array_definition, name="circ_patch_array") @@ -169,7 +169,8 @@ # ### Load far field data # -# The ``FfdSolutionData`` method can be instantiated from the metadata file. Embedded element +# An instance of the ``FfdSolutionData`` class +# can be instantiated from the metadata file. Embedded element # patters are linked through the metadata file. ffdata = FfdSolutionData(input_file=metadata_file) @@ -180,7 +181,7 @@ # and Phi scan. ffdata.plot_contour( - quantity="RealizedGain", title=f"Contour at {ffdata.frequency*1e-9:.1f}GHz" + quantity="RealizedGain", title=f"Contour at {ffdata.frequency * 1e-9:.1f} GHz" ) # ### Generate 2D cutout plots @@ -193,7 +194,7 @@ quantity="RealizedGain", primary_sweep="theta", secondary_sweep_value=[-180, -75, 75], - title=f"Azimuth at {ffdata.frequency*1E-9:.1f}GHz", + title=f"Azimuth at {ffdata.frequency * 1E-9:.1f} GHz", quantity_format="dB10", ) From 79825416ea938a13551c8dd48cbd999f90062266 Mon Sep 17 00:00:00 2001 From: Devin <38879940+Devin-Crawford@users.noreply.github.com> Date: Fri, 28 Feb 2025 09:05:08 -0600 Subject: [PATCH 12/16] Update examples/high_frequency/antenna/dipole.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Morais <146729917+SMoraisAnsys@users.noreply.github.com> --- examples/high_frequency/antenna/dipole.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/high_frequency/antenna/dipole.py b/examples/high_frequency/antenna/dipole.py index 0ec4b3b8b..3420dedd4 100644 --- a/examples/high_frequency/antenna/dipole.py +++ b/examples/high_frequency/antenna/dipole.py @@ -57,8 +57,7 @@ # ### Define the dipole length as a parameter # # The dipole length can be modified by changing the -# parameter ``l_dipole`` to tune the -# resonance frequency. +# parameter ``l_dipole`` to tune the resonance frequency. hfss["l_dipole"] = "10.2cm" component_name = "Dipole_Antenna_DM" From 7c6580498c40df4038658c94be097a49aee82f3e Mon Sep 17 00:00:00 2001 From: Devin <38879940+Devin-Crawford@users.noreply.github.com> Date: Fri, 28 Feb 2025 09:05:23 -0600 Subject: [PATCH 13/16] Update examples/high_frequency/antenna/dipole.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Morais <146729917+SMoraisAnsys@users.noreply.github.com> --- examples/high_frequency/antenna/dipole.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/high_frequency/antenna/dipole.py b/examples/high_frequency/antenna/dipole.py index 3420dedd4..f5e7abadb 100644 --- a/examples/high_frequency/antenna/dipole.py +++ b/examples/high_frequency/antenna/dipole.py @@ -82,8 +82,7 @@ # - The second argument is a ``dict`` whose keys are the names of the parameters # accessible in the 3D component. In this case, we assign the # dipole length, ``"l_dipole"`` to the 3D Component -# parameter ``dipole_length`` -# and leave other parameters unchanged. +# parameter ``dipole_length`` and leave other parameters unchanged. component_fn = hfss.components3d[component_name] # Full file name. comp_params = hfss.get_components3d_vars(component_name) # Retrieve dipole parameters. From 4e67d8206350e3563cc71fcecb64c96d8caee51e Mon Sep 17 00:00:00 2001 From: Devin <38879940+Devin-Crawford@users.noreply.github.com> Date: Fri, 28 Feb 2025 09:05:41 -0600 Subject: [PATCH 14/16] Update examples/high_frequency/antenna/dipole.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Morais <146729917+SMoraisAnsys@users.noreply.github.com> --- examples/high_frequency/antenna/dipole.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/high_frequency/antenna/dipole.py b/examples/high_frequency/antenna/dipole.py index f5e7abadb..5c69bd36d 100644 --- a/examples/high_frequency/antenna/dipole.py +++ b/examples/high_frequency/antenna/dipole.py @@ -70,8 +70,7 @@ # # The 3D component "Dipole_Antenna_DM" will be inserted from # the built-in ``syslib`` folder. The full path to the 3D components -# can be retrieved from -# ``hfss.components3d``. +# can be retrieved from ``hfss.components3d``. # # The component is inserted using the method # ``hfss.modeler.insert_3d_component()``. From 0f1c2f5f843ed436eda634b9982905a30706e9e7 Mon Sep 17 00:00:00 2001 From: Devin Date: Tue, 4 Mar 2025 14:52:33 -0600 Subject: [PATCH 15/16] Fix json import error - Resolve #315 --- examples/aedt_general/report/automatic_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/aedt_general/report/automatic_report.py b/examples/aedt_general/report/automatic_report.py index a5274824d..8dd618ad0 100644 --- a/examples/aedt_general/report/automatic_report.py +++ b/examples/aedt_general/report/automatic_report.py @@ -97,7 +97,7 @@ # The following code modifies the trace rendering prior to creating the report. # + -props = ansys.aedt.core.general_methods.read_json( +props = ansys.aedt.core.generic.file_utils.read_json( os.path.join(project_path, "Transient_CISPR_Custom.json") ) From 3e7f4b0d81b1701e5ee6852b878c75713dfae19b Mon Sep 17 00:00:00 2001 From: Devin Date: Wed, 5 Mar 2025 12:44:57 -0600 Subject: [PATCH 16/16] Update touchstone_file.py - Ignore this file in CI/CD due to incompatibility with Linux. - Update to match template. --- doc/source/conf.py | 1 + examples/aedt_general/report/touchstone_file.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index ff5c29d02..44c7ceb95 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -264,6 +264,7 @@ def convert_examples_into_notebooks(app): "interference.py", "hfss_emit.py", "component_conversion.py", + "touchstone_file.py" ) # NOTE: Only convert the examples if the workflow isn't tagged as coupling HTML and PDF build. diff --git a/examples/aedt_general/report/touchstone_file.py b/examples/aedt_general/report/touchstone_file.py index 240c1b6e3..18b883a64 100644 --- a/examples/aedt_general/report/touchstone_file.py +++ b/examples/aedt_general/report/touchstone_file.py @@ -9,14 +9,15 @@ # # Keywords: **Touchstone**, **report**. -# ## Perform imports -# Import the required packages. +# ## Prerequisites +# +# ### Perform imports from ansys.aedt.core import downloads from ansys.aedt.core.visualization.advanced.touchstone_parser import \ read_touchstone -# ## Download example data +# ### Download example data example_path = downloads.download_touchstone() @@ -24,7 +25,9 @@ data = read_touchstone(example_path) -# ## Plot data +# ## Demonstrate post-processing +# +# ### Plot serial channel metrics # # Get the curve plot by category. The following code shows how to plot lists of the return losses, # insertion losses, next, and fext based on a few inputs and port names. @@ -34,7 +37,7 @@ data.plot_next_xtalk_losses("U1") data.plot_fext_xtalk_losses(tx_prefix="U1", rx_prefix="U7") -# ## Identify cross-talk +# ### Visualize cross-talk # # Identify the worst case cross-talk.