Skip to content

Commit

Permalink
Subdivide settings parsing function in dict and args
Browse files Browse the repository at this point in the history
  • Loading branch information
lorenzovecchietti committed Apr 24, 2024
1 parent 6b4bc81 commit 37fdc11
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 11 deletions.
4 changes: 2 additions & 2 deletions pyaedt/generic/configurations.py
Original file line number Diff line number Diff line change
Expand Up @@ -1673,7 +1673,7 @@ def _export_objects_properties(self, dict_out):
def _export_mesh_operations(self, dict_out):
dict_out["mesh"] = {}
args = ["NAME:Settings"]
args += self._app.mesh.global_mesh_region.settings.parse_settings()
args += self._app.mesh.global_mesh_region.settings.parse_settings_as_args()
mop = OrderedDict({})
_arg2dict(args, mop)
dict_out["mesh"]["Settings"] = mop["Settings"]
Expand All @@ -1683,7 +1683,7 @@ def _export_mesh_operations(self, dict_out):
args = ["NAME:Settings"]
else:
args = ["NAME:" + mesh.name, "Enable:=", mesh.Enable]
args += mesh.settings.parse_settings()
args += mesh.settings.parse_settings_as_args()
args += getattr(mesh, "_parse_assignment_value")()
args += ["UserSpecifiedSettings:=", not mesh.manual_settings]
mop = OrderedDict({})
Expand Down
56 changes: 47 additions & 9 deletions pyaedt/modules/MeshIcepak.py
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,12 @@ def parts(self, parts):


class MeshSettings(object):
"""
Class for managing mesh settings.
It can be used like a dictionary. Available keys change according
to the type of settings chosen (manual or automatic).
"""

_automatic_mesh_settings = {"MeshRegionResolution": 3} # min: 1, max: 5
_common_mesh_settings = {
"ProximitySizeFunction": True,
Expand Down Expand Up @@ -465,14 +471,14 @@ def _dim_arg(self, value):
else:
return _dim_arg(value, getattr(self._mesh_class, "_model_units"))

def parse_settings(self):
def parse_settings_as_args(self):
"""
Parse mesh region settings.
Returns
-------
dict
List of strings containing all the parts that must be included in the subregion.
List
Arguments to be passed to native APIs.
"""
out = []
for k, v in self._instance_settings.items():
Expand All @@ -482,6 +488,22 @@ def parse_settings(self):
out.append(v)
return out

def parse_settings_as_dictionary(self):
"""
Parse mesh region settings.
Returns
-------
dict
Settings of the subregion.
"""
out = {}
for k, v in self._instance_settings.items():
if k in ["MaxElementSizeX", "MaxElementSizeY", "MaxElementSizeZ", "MinGapX", "MinGapY", "MinGapZ"]:
v = self._dim_arg(v)
out[k] = v
return out

def _key_in_dict(self, key):
if self._mesh_class.manual_settings:
ref_dict = self._manual_mesh_settings
Expand All @@ -490,13 +512,29 @@ def _key_in_dict(self, key):
return key in ref_dict or key in self._common_mesh_settings

def keys(self):
return self.parse_settings().keys()
"""
Get mesh region settings keys.
Returns
-------
dict_keys
Available settings keys.
"""
return self.parse_settings_as_dictionary().keys()

def values(self):
return self.parse_settings().values()
"""
Get mesh region settings values.
Returns
-------
dict_values
Settings values.
"""
return self.parse_settings_as_dictionary().values()

def __repr__(self):
return repr(self.parse_settings())
return repr(self.parse_settings_as_dictionary())

def __getitem__(self, key):
if key == "Level":
Expand Down Expand Up @@ -629,7 +667,7 @@ def update(self):
>>> oModule.EditGlobalMeshRegion
"""
args = ["NAME:Settings"]
args += self.settings.parse_settings()
args += self.settings.parse_settings_as_args()
args += ["UserSpecifiedSettings:=", self.manual_settings]
try:
self._app.omeshmodule.EditGlobalMeshRegion(args)
Expand Down Expand Up @@ -755,7 +793,7 @@ def update(self):
>>> oModule.EditMeshRegion
"""
args = ["NAME:" + self.name, "Enable:=", self.enable]
args += self.settings.parse_settings()
args += self.settings.parse_settings_as_args()
args += self._parse_assignment_value()
args += ["UserSpecifiedSettings:=", self.manual_settings]
try:
Expand Down Expand Up @@ -855,7 +893,7 @@ def create(self):
self._app.logger.error("Cannot create a new mesh region with this Name")
return False
args = ["NAME:" + self.name, "Enable:=", self.enable]
args += self.settings.parse_settings()
args += self.settings.parse_settings_as_args()
args += ["UserSpecifiedSettings:=", not self.manual_settings]
args += self._parse_assignment_value()
self._app.omeshmodule.AssignMeshRegion(args)
Expand Down

0 comments on commit 37fdc11

Please sign in to comment.