Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FEAT: refactoring and implementation to export C matrix #5768

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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