Skip to content

Added Optimization Properties to Variables #1237

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

Merged
merged 1 commit into from
Jun 1, 2022
Merged
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
84 changes: 84 additions & 0 deletions _unittest/test_09_VariableManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -395,3 +395,87 @@ def test_17_project_sweep_variable(self):
assert self.aedtapp.variable_manager["$my_proj_test3"].numeric_value == 2.0
self.aedtapp.materials.add_material_sweep(["copper", "aluminum"], "sweep_alu")
assert "$sweep_alupermittivity" in self.aedtapp.variable_manager.dependent_variables

def test_18_test_optimization_properties(self):
var = "v1"
self.aedtapp[var] = "10mm"

v = self.aedtapp.variable_manager
assert not v[var].is_optimization_enabled
v[var].is_optimization_enabled = True
assert v[var].is_optimization_enabled
assert v[var].optimization_min_value == "5mm"
v[var].optimization_min_value = "4mm"
assert v[var].optimization_min_value == "4mm"
assert v[var].optimization_max_value == "15mm"
v[var].optimization_max_value = "14mm"
assert v[var].optimization_max_value == "14mm"
assert not v[var].is_tuning_enabled
v[var].is_tuning_enabled = True
assert v[var].is_tuning_enabled
assert v[var].tuning_min_value == "5mm"
v[var].tuning_min_value = "4mm"
assert v[var].tuning_min_value == "4mm"
assert v[var].tuning_max_value == "15mm"
v[var].tuning_max_value = "14mm"
assert v[var].tuning_max_value == "14mm"
assert v[var].tuning_step_value == "1mm"
v[var].tuning_step_value = "0.5mm"
assert v[var].tuning_step_value == "0.5mm"
assert not v[var].is_statistical_enabled
v[var].is_statistical_enabled = True
assert v[var].is_statistical_enabled
assert not v[var].is_sensitivity_enabled
v[var].is_sensitivity_enabled = True
assert v[var].is_sensitivity_enabled
assert v[var].sensitivity_min_value == "5mm"
v[var].sensitivity_min_value = "4mm"
assert v[var].sensitivity_min_value == "4mm"
assert v[var].sensitivity_max_value == "15mm"
v[var].sensitivity_max_value = "14mm"
assert v[var].sensitivity_max_value == "14mm"
assert v[var].sensitivity_initial_disp == "1mm"
v[var].sensitivity_initial_disp = "0.5mm"
assert v[var].sensitivity_initial_disp == "0.5mm"

def test_19_test_optimization_global_properties(self):

var = "$v1"
self.aedtapp[var] = "10mm"
v = self.aedtapp.variable_manager
assert not v[var].is_optimization_enabled
v[var].is_optimization_enabled = True
assert v[var].is_optimization_enabled
assert v[var].optimization_min_value == "5mm"
v[var].optimization_min_value = "4mm"
assert v[var].optimization_min_value == "4mm"
assert v[var].optimization_max_value == "15mm"
v[var].optimization_max_value = "14mm"
assert v[var].optimization_max_value == "14mm"
assert not v[var].is_tuning_enabled
v[var].is_tuning_enabled = True
assert v[var].is_tuning_enabled
assert v[var].tuning_min_value == "5mm"
v[var].tuning_min_value = "4mm"
assert v[var].tuning_min_value == "4mm"
assert v[var].tuning_max_value == "15mm"
v[var].tuning_max_value = "14mm"
assert v[var].tuning_max_value == "14mm"
assert v[var].tuning_step_value == "1mm"
v[var].tuning_step_value = "0.5mm"
assert v[var].tuning_step_value == "0.5mm"
assert not v[var].is_statistical_enabled
v[var].is_statistical_enabled = True
assert v[var].is_statistical_enabled
assert not v[var].is_sensitivity_enabled
v[var].is_sensitivity_enabled = True
assert v[var].is_sensitivity_enabled
assert v[var].sensitivity_min_value == "5mm"
v[var].sensitivity_min_value = "4mm"
assert v[var].sensitivity_min_value == "4mm"
assert v[var].sensitivity_max_value == "15mm"
v[var].sensitivity_max_value = "14mm"
assert v[var].sensitivity_max_value == "14mm"
assert v[var].sensitivity_initial_disp == "1mm"
v[var].sensitivity_initial_disp = "0.5mm"
assert v[var].sensitivity_initial_disp == "0.5mm"
205 changes: 205 additions & 0 deletions pyaedt/application/Variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -1080,6 +1080,7 @@ def __init__(
self._postprocessing = postprocessing
self._circuit_parameter = circuit_parameter
self._description = description
self._is_optimization_included = None
if units:
if unit_system(units):
specified_units = units
Expand Down Expand Up @@ -1143,6 +1144,210 @@ def name(self, value):
if self._app:
self._app.logger.error('"Failed to update property "name".')

@property
def is_optimization_enabled(self):
""" "Check if optimization is enabled."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Optimization/Included")
return

@is_optimization_enabled.setter
def is_optimization_enabled(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Optimization/Included", value)

@property
def optimization_min_value(self):
""" "Optimization min value."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Optimization/Min")
return

@optimization_min_value.setter
def optimization_min_value(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Optimization/Min", value)

@property
def optimization_max_value(self):
""" "Optimization max value."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Optimization/Max")
return

@optimization_max_value.setter
def optimization_max_value(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Optimization/Max", value)

@property
def is_sensitivity_enabled(self):
"""Check if Sensitivity is enabled."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Sensitivity/Included")
return

@is_sensitivity_enabled.setter
def is_sensitivity_enabled(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Sensitivity/Included", value)

@property
def sensitivity_min_value(self):
""" "Sensitivity min value."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Sensitivity/Min")
return

@sensitivity_min_value.setter
def sensitivity_min_value(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Sensitivity/Min", value)

@property
def sensitivity_max_value(self):
""" "Sensitivity max value."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Sensitivity/Max")
return

@sensitivity_max_value.setter
def sensitivity_max_value(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Sensitivity/Max", value)

@property
def sensitivity_initial_disp(self):
""" "Sensitivity initial value."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Sensitivity/IDisp")
return

@sensitivity_initial_disp.setter
def sensitivity_initial_disp(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Sensitivity/IDisp", value)

@property
def is_tuning_enabled(self):
"""Check if tuning is enabled."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Tuning/Included")
return

@is_tuning_enabled.setter
def is_tuning_enabled(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Tuning/Included", value)

@property
def tuning_min_value(self):
""" "Tuning min value."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Tuning/Min")
return

@tuning_min_value.setter
def tuning_min_value(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Tuning/Min", value)

@property
def tuning_max_value(self):
""" "Tuning max value."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Tuning/Max")
return

@tuning_max_value.setter
def tuning_max_value(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Tuning/Max", value)

@property
def tuning_step_value(self):
""" "Tuning Step value."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Tuning/Step")
return

@tuning_step_value.setter
def tuning_step_value(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Tuning/Step", value)

@property
def is_statistical_enabled(self):
"""Check if statistical is enabled."""

if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
return oo.GetChildObject(self._variable_name).GetPropValue("Statistical/Included")
return

@is_statistical_enabled.setter
def is_statistical_enabled(self, value):
if self._app:
oo = self._app.get_oo_object(self._aedt_obj, "Variables")
if oo:
oo.GetChildObject(self._variable_name).SetPropValue("Statistical/Included", value)

@property
def read_only(self):
"""Read-only flag value."""
Expand Down