Skip to content

Commit

Permalink
FEAT: refactoring and implementation to export C matrix (#5768)
Browse files Browse the repository at this point in the history
  • Loading branch information
gmalinve authored Feb 18, 2025
1 parent 865f1e6 commit 27b6420
Show file tree
Hide file tree
Showing 16 changed files with 352 additions and 183 deletions.
108 changes: 0 additions & 108 deletions src/ansys/aedt/core/application/analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@
from ansys.aedt.core.generic.settings import settings
from ansys.aedt.core.modules.boundary.layout_boundary import NativeComponentObject
from ansys.aedt.core.modules.boundary.layout_boundary import NativeComponentPCB
from ansys.aedt.core.modules.boundary.maxwell_boundary import MaxwellParameters
from ansys.aedt.core.modules.design_xploration import OptimizationSetups
from ansys.aedt.core.modules.design_xploration import ParametricSetups
from ansys.aedt.core.modules.solve_setup import Setup
Expand Down Expand Up @@ -2315,113 +2314,6 @@ def value_with_units(

return _dim_arg(value, units)

@pyaedt_function_handler(file_path="output_file", setup_name="setup")
def export_rl_matrix(
self,
matrix_name,
output_file,
is_format_default=True,
width=8,
precision=2,
is_exponential=False,
setup=None,
default_adaptive=None,
is_post_processed=False,
):
"""Export R/L matrix after solving.
Parameters
----------
matrix_name : str
Matrix name to be exported.
output_file : str
Output file path to export R/L matrix file to.
is_format_default : bool, optional
Whether the exported format is default or not.
If False the custom format is set (no exponential).
width : int, optional
Column width in exported .txt file.
precision : int, optional
Decimal precision number in exported \\*.txt file.
is_exponential : bool, optional
Whether the format number is exponential or not.
setup : str, optional
Name of the setup.
default_adaptive : str, optional
Adaptive type.
is_post_processed : bool, optional
Boolean to check if it is post processed. Default value is ``False``.
Returns
-------
bool
``True`` when successful, ``False`` when failed.
"""
if not self.solution_type == "EddyCurrent":
self.logger.error("RL Matrix can only be exported if solution type is Eddy Current.")
return False
matrix_list = [bound for bound in self.boundaries if isinstance(bound, MaxwellParameters)]
if matrix_name is None:
self.logger.error("Matrix name to be exported must be provided.")
return False
if matrix_list:
if not [
matrix
for matrix in matrix_list
if matrix.name == matrix_name or [x for x in matrix.available_properties if matrix_name in x]
]:
self.logger.error("Matrix name doesn't exist, provide and existing matrix name.")
return False
else:
self.logger.error("Matrix list parameters is empty, can't export a valid matrix.")
return False

if output_file is None:
self.logger.error("File path to export R/L matrix must be provided.")
return False
elif os.path.splitext(output_file)[1] != ".txt":
self.logger.error("File extension must be .txt")
return False

if setup is None:
setup = self.active_setup
if default_adaptive is None:
default_adaptive = self.design_solutions.default_adaptive
analysis_setup = setup + " : " + default_adaptive

if not self.available_variations.nominal_w_values_dict:
variations = ""
else:
variations = " ".join(
f"{key}=\\'{value}\\'" for key, value in self.available_variations.nominal_w_values_dict.items()
)

if not is_format_default:
try:
self.oanalysis.ExportSolnData(
analysis_setup,
matrix_name,
is_post_processed,
variations,
output_file,
-1,
is_format_default,
width,
precision,
is_exponential,
)
except Exception:
self.logger.error("Solutions are empty. Solve before exporting.")
return False
else:
try:
self.oanalysis.ExportSolnData(analysis_setup, matrix_name, is_post_processed, variations, output_file)
except Exception:
self.logger.error("Solutions are empty. Solve before exporting.")
return False

return True

@pyaedt_function_handler()
def change_property(self, aedt_object, tab_name, property_object, property_name, property_value):
"""Change a property.
Expand Down
8 changes: 4 additions & 4 deletions src/ansys/aedt/core/desktop.py
Original file line number Diff line number Diff line change
Expand Up @@ -1572,7 +1572,7 @@ def release_desktop(self, close_projects=True, close_on_exit=True):
Examples
--------
>>> import ansys.aedt.core
>>> desktop = ansys.aedt.core.Desktop("2021.2")
>>> desktop = ansys.aedt.core.Desktop("2025.1")
PyAEDT INFO: pyaedt v...
PyAEDT INFO: Python version ...
>>> desktop.release_desktop(close_projects=False, close_on_exit=False) # doctest: +SKIP
Expand Down Expand Up @@ -1631,7 +1631,7 @@ def close_desktop(self):
Examples
--------
>>> import ansys.aedt.core
>>> desktop = ansys.aedt.core.Desktop("2021.2")
>>> desktop = ansys.aedt.core.Desktop("2025.1")
PyAEDT INFO: pyaedt v...
PyAEDT INFO: Python version ...
>>> desktop.close_desktop() # doctest: +SKIP
Expand All @@ -1648,7 +1648,7 @@ def enable_autosave(self):
Examples
--------
>>> import ansys.aedt.core
>>> desktop = ansys.aedt.core.Desktop("2021.2")
>>> desktop = ansys.aedt.core.Desktop("2025.1")
PyAEDT INFO: pyaedt v...
PyAEDT INFO: Python version ...
>>> desktop.enable_autosave()
Expand All @@ -1662,7 +1662,7 @@ def disable_autosave(self):
Examples
--------
>>> import ansys.aedt.core
>>> desktop = ansys.aedt.core.Desktop("2021.2")
>>> desktop = ansys.aedt.core.Desktop("2025.1")
PyAEDT INFO: pyaedt v...
PyAEDT INFO: Python version ...
>>> desktop.disable_autosave()
Expand Down
2 changes: 1 addition & 1 deletion src/ansys/aedt/core/generic/aedt_versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ def get_version_env_variable(version_id):
Examples
--------
>>> from ansys.aedt.core import desktop
>>> desktop.get_version_env_variable("2021.2")
>>> desktop.get_version_env_variable("2025.1")
'ANSYSEM_ROOT212'
"""
Expand Down
8 changes: 4 additions & 4 deletions src/ansys/aedt/core/generic/design_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,19 +132,19 @@ def launch_desktop(
Examples
--------
Launch AEDT 2021 R1 in non-graphical mode and initialize HFSS.
Launch AEDT 2025 R1 in non-graphical mode and initialize HFSS.
>>> import ansys.aedt.core
>>> desktop = ansys.aedt.core.launch_desktop("2022.2", non_graphical=True)
>>> desktop = ansys.aedt.core.launch_desktop("2025.1", non_graphical=True)
PyAEDT INFO: pyaedt v...
PyAEDT INFO: Python version ...
>>> hfss = ansys.aedt.core.Hfss(design="HFSSDesign1")
PyAEDT INFO: Project...
PyAEDT INFO: Added design 'HFSSDesign1' of type HFSS.
Launch AEDT 2021 R1 in graphical mode and initialize HFSS.
Launch AEDT 2025 R1 in graphical mode and initialize HFSS.
>>> desktop = Desktop("2021.2")
>>> desktop = Desktop("2025.1")
PyAEDT INFO: pyaedt v...
PyAEDT INFO: Python version ...
>>> hfss = ansys.aedt.core.Hfss(design="HFSSDesign1")
Expand Down
16 changes: 8 additions & 8 deletions src/ansys/aedt/core/generic/general_methods.py
Original file line number Diff line number Diff line change
Expand Up @@ -601,8 +601,8 @@ def env_path(input_version):
Examples
--------
>>> env_path_student("2021.2")
"C:/Program Files/ANSYSEM/ANSYSEM2021.2/Win64"
>>> env_path_student("2025.1")
"C:/Program Files/ANSYSEM/ANSYSEM2025.1/Win64"
"""
return os.getenv(
f"ANSYSEM_ROOT{get_version_and_release(input_version)[0]}{get_version_and_release(input_version)[1]}", ""
Expand All @@ -625,8 +625,8 @@ def env_value(input_version):
Examples
--------
>>> env_value("2021.2")
"ANSYSEM_ROOT212"
>>> env_value(2025.1)
"ANSYSEM_ROOT251"
"""
return f"ANSYSEM_ROOT{get_version_and_release(input_version)[0]}{get_version_and_release(input_version)[1]}"

Expand All @@ -647,8 +647,8 @@ def env_path_student(input_version):
Examples
--------
>>> env_path_student("2021.2")
"C:/Program Files/ANSYSEM/ANSYSEM2021.2/Win64"
>>> env_path_student(2025.1)
"C:/Program Files/ANSYSEM/ANSYSEM2025.1/Win64"
"""
return os.getenv(
f"ANSYSEMSV_ROOT{get_version_and_release(input_version)[0]}{get_version_and_release(input_version)[1]}",
Expand All @@ -672,8 +672,8 @@ def env_value_student(input_version):
Examples
--------
>>> env_value_student("2021.2")
"ANSYSEMSV_ROOT212"
>>> env_value_student(2025.1)
"ANSYSEMSV_ROOT251"
"""
return f"ANSYSEMSV_ROOT{get_version_and_release(input_version)[0]}{get_version_and_release(input_version)[1]}"

Expand Down
Loading

0 comments on commit 27b6420

Please sign in to comment.