Skip to content

Commit f3911d3

Browse files
authored
Added post processing variables to Variable Manager (#981)
* Added post processing variables * Added post processing variables * Added post processing variables Co-authored-by: maxcapodi78 <Shark78>
1 parent d83e6d0 commit f3911d3

File tree

3 files changed

+37
-12
lines changed

3 files changed

+37
-12
lines changed

_unittest/test_09_VariableManager.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from pyaedt.application.Variables import decompose_variable_value
77
from pyaedt.application.Variables import Variable
88
from pyaedt.generic.general_methods import isclose
9+
from pyaedt.modeler.GeometryOperators import GeometryOperators
910

1011
# Import required modules
1112

@@ -335,3 +336,11 @@ def test_12_decompose_variable_value(self):
335336
assert decompose_variable_value("3.123456Nm-2") == (3.123456, "Nm-2")
336337
assert decompose_variable_value("3.123456kg2m2") == (3.123456, "kg2m2")
337338
assert decompose_variable_value("3.123456kgm2") == (3.123456, "kgm2")
339+
340+
def test_13_postprocessing(self):
341+
v1 = self.aedtapp.variable_manager.set_variable("test_post1", 10, postprocessing=True)
342+
assert v1
343+
assert not self.aedtapp.variable_manager.set_variable("test2", "v1+1")
344+
assert self.aedtapp.variable_manager.set_variable("test2", "test_post1+1", postprocessing=True)
345+
x1 = GeometryOperators.parse_dim_arg(self.aedtapp["test2"], variable_manager=self.aedtapp.variable_manager)
346+
assert x1 == 11

pyaedt/application/Variables.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,14 @@ def aedt_object(self, variable):
693693

694694
@pyaedt_function_handler()
695695
def set_variable(
696-
self, variable_name, expression=None, readonly=False, hidden=False, description=None, overwrite=True
696+
self,
697+
variable_name,
698+
expression=None,
699+
readonly=False,
700+
hidden=False,
701+
description=None,
702+
overwrite=True,
703+
postprocessing=False,
697704
):
698705
"""Set the value of a design property or project variable.
699706
@@ -763,9 +770,9 @@ def set_variable(
763770
test = desktop_object.GetName()
764771
proj_name = self._oproject.GetName()
765772
var_type = "Project" if "$" in variable_name[0] else "Local"
766-
767773
prop_type = "VariableProp"
768-
774+
if postprocessing or "post" in variable_name.lower()[0:5]:
775+
prop_type = "PostProcessingVariableProp"
769776
if isinstance(expression, str):
770777
# Handle string type variable (including arbitrary expression)# Handle input type variable
771778
variable = expression
@@ -789,16 +796,13 @@ def set_variable(
789796
except:
790797
pass
791798
else:
792-
raise Exception("Unhandled input type to the design property or project variable.")
793-
794-
if "post" in variable_name.lower()[0:5]:
795-
prop_type = "PostProcessingVariableProp"
799+
raise Exception("Unhandled input type to the design property or project variable.") # pragma: no cover
796800

797801
# Get all design and project variables in lower case for a case-sensitive comparison
798802
if self._app._is_object_oriented_enabled():
799803
var_list = list(desktop_object.GetChildObject("Variables").GetChildNames())
800804
else:
801-
var_list = list(desktop_object.GetVariables())
805+
var_list = list(desktop_object.GetVariables()) # pragma: no cover
802806
lower_case_vars = [var_name.lower() for var_name in var_list]
803807

804808
if variable_name.lower() not in lower_case_vars:
@@ -880,7 +884,13 @@ def set_variable(
880884
],
881885
]
882886
)
883-
887+
if self._app._is_object_oriented_enabled():
888+
var_list = list(desktop_object.GetChildObject("Variables").GetChildNames())
889+
else:
890+
var_list = list(desktop_object.GetVariables()) # pragma: no cover
891+
lower_case_vars = [var_name.lower() for var_name in var_list]
892+
if variable_name not in lower_case_vars:
893+
return False
884894
return True
885895

886896
@pyaedt_function_handler()
@@ -950,7 +960,7 @@ def delete_variable(self, var_name):
950960
if self._app._is_object_oriented_enabled():
951961
var_list = list(desktop_object.GetChildObject("Variables").GetChildNames())
952962
else:
953-
var_list = list(desktop_object.GetVariables())
963+
var_list = list(desktop_object.GetVariables()) # pragma: no cover
954964
lower_case_vars = [var_name.lower() for var_name in var_list]
955965

956966
if var_name.lower() in lower_case_vars:

pyaedt/modeler/GeometryOperators.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,14 @@ def parse_dim_arg(string, scale_to_unit=None, variable_manager=None):
9999
else:
100100
scaling_factor = scale_units(m.group("unit"))
101101
return float(m.group("number")) * scaling_factor / sunit
102-
else: # pragma: no cover
103-
raise TypeError("String is no number")
102+
else:
103+
if variable_manager:
104+
if not variable_manager.set_variable("temp_var", string):
105+
if not variable_manager.set_variable("temp_var", string, postprocessing=True):
106+
return string
107+
value = variable_manager["temp_var"].value
108+
del variable_manager["temp_var"]
109+
return value
104110

105111
@staticmethod
106112
@pyaedt_function_handler()

0 commit comments

Comments
 (0)