From c8a030b55745e134feeb0bbb735a48e5003f619d Mon Sep 17 00:00:00 2001 From: Devin Date: Sat, 28 Dec 2024 13:27:10 +0100 Subject: [PATCH 01/11] Correct error to HFSS Setup default type #5618 \ansys\aedt\core\modules\setup_templates.py - Change autosweep default from "LinearStep" to "LinearCount" to match the default behavior of HFSS. - Use "RangeCount": 501 \ansys\aedt\core\hfss.py - Update docstring errors for create_setup() \ansys\aedt\core\application.py - Change default setup from 1 to 0 for HFSS where appropriate. \ansys\aedt\core\application\analysis.py - Correct an error that would always use an auto-generated name for the setup. --- src/ansys/aedt/core/application/analysis.py | 3 ++- src/ansys/aedt/core/application/design_solutions.py | 8 ++++---- src/ansys/aedt/core/hfss.py | 3 +-- src/ansys/aedt/core/modules/setup_templates.py | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ansys/aedt/core/application/analysis.py b/src/ansys/aedt/core/application/analysis.py index 494e4b58d8c..284f38fe1df 100644 --- a/src/ansys/aedt/core/application/analysis.py +++ b/src/ansys/aedt/core/application/analysis.py @@ -1355,7 +1355,8 @@ def _create_setup(self, name="MySetupAuto", setup_type=None, props=None): if setup_type is None: setup_type = self.design_solutions.default_setup - name = self.generate_unique_setup_name(name) + if not name: + name = self.generate_unique_setup_name(name) if setup_type == 0: setup = SetupHFSSAuto(self, setup_type, name) elif setup_type == 4: diff --git a/src/ansys/aedt/core/application/design_solutions.py b/src/ansys/aedt/core/application/design_solutions.py index 8531a688e7b..df7fad37feb 100644 --- a/src/ansys/aedt/core/application/design_solutions.py +++ b/src/ansys/aedt/core/application/design_solutions.py @@ -342,7 +342,7 @@ "name": "HFSS Modal Network", "options": None, "report_type": "Modal Solution Data", - "default_setup": 1, + "default_setup": 0, "default_adaptive": "LastAdaptive", "intrinsics": ["Freq", "Phase"], }, @@ -350,7 +350,7 @@ "name": "HFSS Terminal Network", "options": None, "report_type": "Terminal Solution Data", - "default_setup": 1, + "default_setup": 0, "default_adaptive": "LastAdaptive", "intrinsics": ["Freq", "Phase"], }, @@ -358,7 +358,7 @@ "name": "DrivenModal", "options": None, "report_type": "Modal Solution Data", - "default_setup": 1, + "default_setup": 0, "default_adaptive": "LastAdaptive", "intrinsics": ["Freq", "Phase"], }, @@ -366,7 +366,7 @@ "name": "DrivenTerminal", "options": None, "report_type": "Terminal Solution Data", - "default_setup": 1, + "default_setup": 0, "default_adaptive": "LastAdaptive", "intrinsics": ["Freq", "Phase"], }, diff --git a/src/ansys/aedt/core/hfss.py b/src/ansys/aedt/core/hfss.py index 3183bbaa4cf..8c742252720 100644 --- a/src/ansys/aedt/core/hfss.py +++ b/src/ansys/aedt/core/hfss.py @@ -811,8 +811,7 @@ def create_setup(self, name="MySetupAuto", setup_type=None, **kwargs): ``"HFSSDrivenAuto"``, ``"HFSSDrivenDefault"``, ``"HFSSEigen"``, ``"HFSSTransient"``, and ``"HFSSSBR"``. The default is ``"HFSSDrivenAuto"``. **kwargs : dict, optional - Extra arguments to set up the circuit. - Available keys depend on the setup chosen. + Keyword arguments from the native AEDT API. For more information, see :doc:`../SetupTemplatesHFSS`. diff --git a/src/ansys/aedt/core/modules/setup_templates.py b/src/ansys/aedt/core/modules/setup_templates.py index 9f47b9e38f4..cf6b08f21c0 100644 --- a/src/ansys/aedt/core/modules/setup_templates.py +++ b/src/ansys/aedt/core/modules/setup_templates.py @@ -47,7 +47,7 @@ def HFSS3DLayout_AdaptiveFrequencyData(freq): meshlink = dict({"ImportMesh": False}) -autosweep = dict({"RangeType": "LinearStep", "RangeStart": "1GHz", "RangeEnd": "10GHz", "RangeStep": "1GHz"}) +autosweep = dict({"RangeType": "LinearCount", "RangeStart": "1GHz", "RangeEnd": "10GHz", "RangeCount": "501"}) autosweeps = dict({"Sweep": autosweep}) multifreq = dict({"1GHz": [0.02], "2GHz": [0.02], "5GHz": [0.02]}) sweepsbr = dict({"RangeType": "LinearStep", "RangeStart": "1GHz", "RangeEnd": "10GHz", "RangeStep": "1GHz"}) From 5a5d2150945a58e7e25cdc1a5099fd5e71469196 Mon Sep 17 00:00:00 2001 From: Devin Date: Fri, 3 Jan 2025 19:00:24 +0100 Subject: [PATCH 02/11] Update Docs and Unit Tests - The docstring for Hfss.create_setup had an error. The text "HFSSDrivenDefault" is not a valid argument for setup_type. - Updated test_02_hfss_export_results by adding the argument setup_type which was not present previously. - Added a few more assert statements to that test. - Added the solve frequency as a variable that is retrieved from the setup since this is re-used multiple times. - Added a test for HFSS setups in test_20_HFSS.py --- src/ansys/aedt/core/hfss.py | 2 +- tests/system/general/test_20_HFSS.py | 14 +++++++++++++- tests/system/solvers/test_00_analyze.py | 15 +++++++++------ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/ansys/aedt/core/hfss.py b/src/ansys/aedt/core/hfss.py index 8c742252720..1ecc9b277e9 100644 --- a/src/ansys/aedt/core/hfss.py +++ b/src/ansys/aedt/core/hfss.py @@ -808,7 +808,7 @@ def create_setup(self, name="MySetupAuto", setup_type=None, **kwargs): Name of the setup. The default is ``"Setup1"``. setup_type : str, optional Type of the setup, which is based on the solution type. Options are - ``"HFSSDrivenAuto"``, ``"HFSSDrivenDefault"``, ``"HFSSEigen"``, ``"HFSSTransient"``, + ``"HFSSDrivenAuto"``, ``"HFSSDriven"``, ``"HFSSEigen"``, ``"HFSSTransient"``, and ``"HFSSSBR"``. The default is ``"HFSSDrivenAuto"``. **kwargs : dict, optional Keyword arguments from the native AEDT API. diff --git a/tests/system/general/test_20_HFSS.py b/tests/system/general/test_20_HFSS.py index 572799e5995..86ddd37ea10 100644 --- a/tests/system/general/test_20_HFSS.py +++ b/tests/system/general/test_20_HFSS.py @@ -77,7 +77,19 @@ def test_01_save(self): assert os.path.exists(test_project) def test_01A_check_setup(self): - assert self.aedtapp.active_setup is None + # Use the built-in Waveguide Tee example. + filter_fn = os.path.join("Examples", "HFSS", "Filters", "ceramic_monoblock_MMDS_Band.aedt") + filter_fn = os.path.join(self.aedtapp.desktop_install_dir, filter_fn) + self.aedtapp.copy_design_from(filter_fn, "3pole_monoblock") + self.aedtapp.design_name = "3pole_monoblock" + assert self.aedtapp.setups[0].props["Name"] == "Setup_5GNR_Band_N41" + setup_auto = self.aedtapp.create_setup(name="auto") + assert self.aedtapp.setups[1].name == "auto" + assert setup_auto.properties["Auto Solver Setting"] == "Balanced" + assert setup_auto.properties["Type"] == "Discrete" + setup_auto.props["Type"] = "Interpolating" + assert setup_auto.props["Type"] == "Interpolating" + assert setup_auto["sweeps"]["Sweep"]["RangeType"] == "LinearCount" def test_02_create_primitive(self): coax1_len = 200 diff --git a/tests/system/solvers/test_00_analyze.py b/tests/system/solvers/test_00_analyze.py index 58ac97c911b..346601fcc7a 100644 --- a/tests/system/solvers/test_00_analyze.py +++ b/tests/system/solvers/test_00_analyze.py @@ -202,11 +202,13 @@ def test_02_hfss_export_results(self, hfss_app): hfss_app.add_3d_component_array_from_json(dict_in) exported_files = hfss_app.export_results() assert len(exported_files) == 0 - setup = hfss_app.create_setup(name="test") - setup.props["Frequency"] = "1GHz" + setup_driven = hfss_app.create_setup(name="test", setup_type="HFSSDriven", + MaximumPasses=1) exported_files = hfss_app.export_results() + solve_freq = setup_driven.props["Frequency"] assert len(exported_files) == 0 hfss_app.analyze_setup(name="test", cores=4) + assert setup_driven.is_solved exported_files = hfss_app.export_results() assert len(exported_files) == 39 exported_files = hfss_app.export_results( @@ -215,12 +217,12 @@ def test_02_hfss_export_results(self, hfss_app): assert len(exported_files) > 0 fld_file1 = os.path.join(self.local_scratch.path, "test_fld_hfss1.fld") assert hfss_app.post.export_field_file( - quantity="Mag_E", output_file=fld_file1, assignment="Box1", intrinsics="1GHz", phase="5deg" + quantity="Mag_E", output_file=fld_file1, assignment="Box1", intrinsics=solve_freq, phase="5deg" ) assert os.path.exists(fld_file1) fld_file2 = os.path.join(self.local_scratch.path, "test_fld_hfss2.fld") assert hfss_app.post.export_field_file( - quantity="Mag_E", output_file=fld_file2, assignment="Box1", intrinsics={"frequency": "1GHz"} + quantity="Mag_E", output_file=fld_file2, assignment="Box1", intrinsics={"frequency": solve_freq} ) assert os.path.exists(fld_file2) fld_file2 = os.path.join(self.local_scratch.path, "test_fld_hfss3.fld") @@ -228,12 +230,13 @@ def test_02_hfss_export_results(self, hfss_app): quantity="Mag_E", output_file=fld_file2, assignment="Box1", - intrinsics={"frequency": "1GHz", "phase": "30deg"}, + intrinsics={"frequency": solve_freq, "phase": "30deg"}, ) assert os.path.exists(fld_file2) fld_file2 = os.path.join(self.local_scratch.path, "test_fld_hfss4.fld") assert hfss_app.post.export_field_file( - quantity="Mag_E", output_file=fld_file2, assignment="Box1", intrinsics={"frequency": "1GHz"}, phase="30deg" + quantity="Mag_E", output_file=fld_file2, assignment="Box1", + intrinsics={"frequency": solve_freq}, phase="30deg", ) assert os.path.exists(fld_file2) fld_file2 = os.path.join(self.local_scratch.path, "test_fld_hfss5.fld") From f6fa96b60fc95a83bd4f6287dce36c84b28eb704 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 18:02:23 +0000 Subject: [PATCH 03/11] CHORE: Auto fixes from pre-commit.com hooks For more information, see https://pre-commit.ci --- tests/system/solvers/test_00_analyze.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/system/solvers/test_00_analyze.py b/tests/system/solvers/test_00_analyze.py index 346601fcc7a..a1f08496c50 100644 --- a/tests/system/solvers/test_00_analyze.py +++ b/tests/system/solvers/test_00_analyze.py @@ -202,8 +202,7 @@ def test_02_hfss_export_results(self, hfss_app): hfss_app.add_3d_component_array_from_json(dict_in) exported_files = hfss_app.export_results() assert len(exported_files) == 0 - setup_driven = hfss_app.create_setup(name="test", setup_type="HFSSDriven", - MaximumPasses=1) + setup_driven = hfss_app.create_setup(name="test", setup_type="HFSSDriven", MaximumPasses=1) exported_files = hfss_app.export_results() solve_freq = setup_driven.props["Frequency"] assert len(exported_files) == 0 @@ -235,8 +234,11 @@ def test_02_hfss_export_results(self, hfss_app): assert os.path.exists(fld_file2) fld_file2 = os.path.join(self.local_scratch.path, "test_fld_hfss4.fld") assert hfss_app.post.export_field_file( - quantity="Mag_E", output_file=fld_file2, assignment="Box1", - intrinsics={"frequency": solve_freq}, phase="30deg", + quantity="Mag_E", + output_file=fld_file2, + assignment="Box1", + intrinsics={"frequency": solve_freq}, + phase="30deg", ) assert os.path.exists(fld_file2) fld_file2 = os.path.join(self.local_scratch.path, "test_fld_hfss5.fld") From e7a0e735383d7e9acf6d119ed2764eaa08870f5a Mon Sep 17 00:00:00 2001 From: Devin Date: Sat, 4 Jan 2025 10:38:54 +0100 Subject: [PATCH 04/11] Update test_31_Q3D.py - Replace deprecated create_discrete_sweep() with create_frequency_sweep() --- tests/system/solvers/test_31_Q3D.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/system/solvers/test_31_Q3D.py b/tests/system/solvers/test_31_Q3D.py index e3e797308e5..f04c38dde2b 100644 --- a/tests/system/solvers/test_31_Q3D.py +++ b/tests/system/solvers/test_31_Q3D.py @@ -102,12 +102,12 @@ def test_06a_create_setup(self): assert mysetup.dc_resistance_only mysetup.dc_enabled = False mysetup.dc_enabled = True - sweep = self.aedtapp.create_discrete_sweep(mysetup.name, sweepname="mysweep", freqstart=1, units="GHz") + sweep = self.aedtapp.create_frequency_sweep(mysetup.name, sweepname="mysweep", start_frequency=1, units="GHz") assert sweep assert sweep.props["RangeStart"] == "1GHz" # Create a discrete sweep with the same name of an existing sweep is not possible. - assert not self.aedtapp.create_discrete_sweep(mysetup.name, sweepname="mysweep", freqstart=1, units="GHz") + assert not self.aedtapp.create_frequency_sweep(mysetup.name, sweepname="mysweep", stop_frequency=1, units="GHz") assert mysetup.create_linear_step_sweep( name="StepFast", unit="GHz", From 81f58a68820b7a42ee5bd0fac025a66d3054044e Mon Sep 17 00:00:00 2001 From: Devin Date: Sat, 4 Jan 2025 10:40:46 +0100 Subject: [PATCH 05/11] Fix choke_designer.py - choke_designer.py uses the "HFSSDriven" setup type. This must must be passed explicitly with the "setup_type" argument. --- src/ansys/aedt/core/workflows/hfss/choke_designer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/aedt/core/workflows/hfss/choke_designer.py b/src/ansys/aedt/core/workflows/hfss/choke_designer.py index 8998cc36e3e..d33d784c3d0 100644 --- a/src/ansys/aedt/core/workflows/hfss/choke_designer.py +++ b/src/ansys/aedt/core/workflows/hfss/choke_designer.py @@ -459,7 +459,7 @@ def main(extension_args): hfss.modeler.create_region(pad_percent=1000) # Create setup - setup = hfss.create_setup("Setup1") + setup = hfss.create_setup("Setup1", setup_type="HFSSDriven") setup.props["Frequency"] = "50MHz" setup.props["MaximumPasses"] = 10 From bb534447da11e1455bf2300a43f93867a6d905f8 Mon Sep 17 00:00:00 2001 From: Devin Date: Tue, 7 Jan 2025 12:11:10 +0100 Subject: [PATCH 06/11] Undo changes to Q3D unit test. Some changes were made inadvertently. --- tests/system/solvers/test_31_Q3D.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/system/solvers/test_31_Q3D.py b/tests/system/solvers/test_31_Q3D.py index 68c3e6bab18..ff09719b5f2 100644 --- a/tests/system/solvers/test_31_Q3D.py +++ b/tests/system/solvers/test_31_Q3D.py @@ -102,12 +102,12 @@ def test_06a_create_setup(self): assert mysetup.dc_resistance_only mysetup.dc_enabled = False mysetup.dc_enabled = True - sweep = self.aedtapp.create_frequency_sweep(mysetup.name, sweepname="mysweep", start_frequency=1, units="GHz") + sweep = self.aedtapp.create_discrete_sweep(mysetup.name, sweepname="mysweep", freqstart=1, units="GHz") assert sweep assert sweep.props["RangeStart"] == "1GHz" # Create a discrete sweep with the same name of an existing sweep is not possible. - assert not self.aedtapp.create_frequency_sweep(mysetup.name, sweepname="mysweep", stop_frequency=1, units="GHz") + assert not self.aedtapp.create_discrete_sweep(mysetup.name, sweepname="mysweep", freqstart=1, units="GHz") assert mysetup.create_linear_step_sweep( name="StepFast", unit="GHz", From 841f36bf063e5cf07675557b5e02156f803c9e90 Mon Sep 17 00:00:00 2001 From: Devin Date: Tue, 7 Jan 2025 14:36:31 +0100 Subject: [PATCH 07/11] Make sure setup name is unique A 2nd attempt to create a setup name with the same name would cause an error in AEDT. Now check if the setup exists and assign a unique name if the name is used.. --- src/ansys/aedt/core/application/analysis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/aedt/core/application/analysis.py b/src/ansys/aedt/core/application/analysis.py index 40273240f1f..0022d8b73b4 100644 --- a/src/ansys/aedt/core/application/analysis.py +++ b/src/ansys/aedt/core/application/analysis.py @@ -1355,7 +1355,7 @@ def _create_setup(self, name="MySetupAuto", setup_type=None, props=None): if setup_type is None: setup_type = self.design_solutions.default_setup - if not name: + if not name or name in self.setup_names: name = self.generate_unique_setup_name(name) if setup_type == 0: setup = SetupHFSSAuto(self, setup_type, name) From 64e2f6eb93d12b7608913eefd9870046d2c34281 Mon Sep 17 00:00:00 2001 From: Samuelopez-ansys Date: Mon, 13 Jan 2025 14:05:06 +0100 Subject: [PATCH 08/11] Fix UT --- src/ansys/aedt/core/application/analysis.py | 3 +-- tests/system/general/test_20_HFSS.py | 11 +---------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/ansys/aedt/core/application/analysis.py b/src/ansys/aedt/core/application/analysis.py index 0022d8b73b4..c0e1ca8e508 100644 --- a/src/ansys/aedt/core/application/analysis.py +++ b/src/ansys/aedt/core/application/analysis.py @@ -1355,8 +1355,7 @@ def _create_setup(self, name="MySetupAuto", setup_type=None, props=None): if setup_type is None: setup_type = self.design_solutions.default_setup - if not name or name in self.setup_names: - name = self.generate_unique_setup_name(name) + name = self.generate_unique_setup_name(name) if setup_type == 0: setup = SetupHFSSAuto(self, setup_type, name) elif setup_type == 4: diff --git a/tests/system/general/test_20_HFSS.py b/tests/system/general/test_20_HFSS.py index 5b4de00a5f0..6cc99a23572 100644 --- a/tests/system/general/test_20_HFSS.py +++ b/tests/system/general/test_20_HFSS.py @@ -77,19 +77,10 @@ def test_01_save(self): assert os.path.exists(test_project) def test_01A_check_setup(self): - # Use the built-in Waveguide Tee example. - filter_fn = os.path.join("Examples", "HFSS", "Filters", "ceramic_monoblock_MMDS_Band.aedt") - filter_fn = os.path.join(self.aedtapp.desktop_install_dir, filter_fn) - self.aedtapp.copy_design_from(filter_fn, "3pole_monoblock") - self.aedtapp.design_name = "3pole_monoblock" - assert self.aedtapp.setups[0].props["Name"] == "Setup_5GNR_Band_N41" setup_auto = self.aedtapp.create_setup(name="auto") - assert self.aedtapp.setups[1].name == "auto" + assert self.aedtapp.setups[0].name == "auto" assert setup_auto.properties["Auto Solver Setting"] == "Balanced" assert setup_auto.properties["Type"] == "Discrete" - setup_auto.props["Type"] = "Interpolating" - assert setup_auto.props["Type"] == "Interpolating" - assert setup_auto["sweeps"]["Sweep"]["RangeType"] == "LinearCount" def test_02_create_primitive(self): coax1_len = 200 From 3844bddd0b35a251c283c9466af8820fb188ca40 Mon Sep 17 00:00:00 2001 From: Samuelopez-ansys Date: Mon, 13 Jan 2025 14:20:15 +0100 Subject: [PATCH 09/11] Revert default setup --- src/ansys/aedt/core/application/design_solutions.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ansys/aedt/core/application/design_solutions.py b/src/ansys/aedt/core/application/design_solutions.py index 140afd1d19f..cfb31b795ce 100644 --- a/src/ansys/aedt/core/application/design_solutions.py +++ b/src/ansys/aedt/core/application/design_solutions.py @@ -342,7 +342,7 @@ "name": "HFSS Modal Network", "options": None, "report_type": "Modal Solution Data", - "default_setup": 0, + "default_setup": 1, "default_adaptive": "LastAdaptive", "intrinsics": ["Freq", "Phase"], }, @@ -350,7 +350,7 @@ "name": "HFSS Terminal Network", "options": None, "report_type": "Terminal Solution Data", - "default_setup": 0, + "default_setup": 1, "default_adaptive": "LastAdaptive", "intrinsics": ["Freq", "Phase"], }, @@ -358,7 +358,7 @@ "name": "DrivenModal", "options": None, "report_type": "Modal Solution Data", - "default_setup": 0, + "default_setup": 1, "default_adaptive": "LastAdaptive", "intrinsics": ["Freq", "Phase"], }, @@ -366,7 +366,7 @@ "name": "DrivenTerminal", "options": None, "report_type": "Terminal Solution Data", - "default_setup": 0, + "default_setup": 1, "default_adaptive": "LastAdaptive", "intrinsics": ["Freq", "Phase"], }, From 318164e9c88bb43ae5748671f98ab2b113f538c6 Mon Sep 17 00:00:00 2001 From: Samuelopez-ansys Date: Mon, 13 Jan 2025 14:32:13 +0100 Subject: [PATCH 10/11] Revert auto setup --- tests/system/general/test_20_HFSS.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/system/general/test_20_HFSS.py b/tests/system/general/test_20_HFSS.py index 6cc99a23572..aba5db2bdfd 100644 --- a/tests/system/general/test_20_HFSS.py +++ b/tests/system/general/test_20_HFSS.py @@ -77,10 +77,11 @@ def test_01_save(self): assert os.path.exists(test_project) def test_01A_check_setup(self): - setup_auto = self.aedtapp.create_setup(name="auto") + setup_auto = self.aedtapp.create_setup(name="auto", setup_type="HFSSDrivenAuto") assert self.aedtapp.setups[0].name == "auto" assert setup_auto.properties["Auto Solver Setting"] == "Balanced" assert setup_auto.properties["Type"] == "Discrete" + assert setup_auto.delete() def test_02_create_primitive(self): coax1_len = 200 From b4982a3ba3e7d9a9d8f193f2a4a0dfb4eda551a7 Mon Sep 17 00:00:00 2001 From: Samuelopez-ansys Date: Mon, 13 Jan 2025 15:14:08 +0100 Subject: [PATCH 11/11] Modify docstring --- src/ansys/aedt/core/hfss.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/aedt/core/hfss.py b/src/ansys/aedt/core/hfss.py index ce5a5e956de..a93691731d1 100644 --- a/src/ansys/aedt/core/hfss.py +++ b/src/ansys/aedt/core/hfss.py @@ -809,7 +809,7 @@ def create_setup(self, name="MySetupAuto", setup_type=None, **kwargs): setup_type : str, optional Type of the setup, which is based on the solution type. Options are ``"HFSSDrivenAuto"``, ``"HFSSDriven"``, ``"HFSSEigen"``, ``"HFSSTransient"``, - and ``"HFSSSBR"``. The default is ``"HFSSDrivenAuto"``. + and ``"HFSSSBR"``. The default is ``"HFSSDriven"``. **kwargs : dict, optional Keyword arguments from the native AEDT API. For more information, see