Skip to content

Commit e002a4c

Browse files
authored
assign force and torque implementation 2D and 3D (#1183)
* assign force and torque implementation 2D and 3D * update 3D tests
1 parent 14f4a27 commit e002a4c

File tree

4 files changed

+104
-57
lines changed

4 files changed

+104
-57
lines changed

_unittest/test_27_Maxwell2D.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,25 @@ def test_09_read_design_data(self):
101101

102102
@pyaedt_unittest_check_desktop_error
103103
def test_10_assign_torque(self):
104-
assert self.aedtapp.assign_torque("Rotor_Section1")
104+
T = self.aedtapp.assign_torque("Rotor_Section1")
105+
assert T.type == "Torque"
106+
assert T.props["Objects"][0] == "Rotor_Section1"
107+
assert T.props["Is Positive"]
108+
assert T.delete()
109+
T = self.aedtapp.assign_torque(input_object="Rotor_Section1", is_positive=False, torque_name="Torque_Test")
110+
assert T.name == "Torque_Test"
111+
assert not T.props["Is Positive"]
112+
assert T.props["Objects"][0] == "Rotor_Section1"
105113

106114
@pyaedt_unittest_check_desktop_error
107115
def test_11_assign_force(self):
108-
assert self.aedtapp.assign_force("Magnet2_Section1")
116+
F = self.aedtapp.assign_force("Magnet2_Section1")
117+
assert F.type == "Force"
118+
assert F.props["Objects"][0] == "Magnet2_Section1"
119+
assert F.props["Reference CS"] == "Global"
120+
assert F.delete()
121+
F = self.aedtapp.assign_force(input_object="Magnet2_Section1", force_name="Force_Test")
122+
assert F.name == "Force_Test"
109123

110124
@pyaedt_unittest_check_desktop_error
111125
def test_12_assign_current_source(self):

_unittest/test_28_Maxwell3D.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,10 +300,28 @@ def test_27_create_udm(self):
300300
)
301301

302302
def test_28_assign_torque(self):
303-
assert self.aedtapp.assign_torque("Coil")
303+
T = self.aedtapp.assign_torque("Coil")
304+
assert T.type == "Torque"
305+
assert T.props["Objects"][0] == "Coil"
306+
assert T.props["Is Positive"]
307+
assert T.props["Is Virtual"]
308+
assert T.props["Coordinate System"] == "Global"
309+
assert T.props["Axis"] == "Z"
310+
assert T.delete()
311+
T = self.aedtapp.assign_torque(input_object="Coil", is_positive=False, torque_name="Torque_Test")
312+
assert not T.props["Is Positive"]
313+
assert T.name == "Torque_Test"
304314

305315
def test_29_assign_force(self):
306-
assert self.aedtapp.assign_force("Coil")
316+
F = self.aedtapp.assign_force("Coil")
317+
assert F.type == "Force"
318+
assert F.props["Objects"][0] == "Coil"
319+
assert F.props["Reference CS"] == "Global"
320+
assert F.props["Is Virtual"]
321+
assert F.delete()
322+
F = self.aedtapp.assign_force(input_object="Coil", is_virtual=False, force_name="Force_Test")
323+
assert F.name == "Force_Test"
324+
assert not F.props["Is Virtual"]
307325

308326
def test_30_assign_movement(self):
309327
self.aedtapp.insert_design("Motion")

pyaedt/maxwell.py

Lines changed: 61 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,26 +1056,35 @@ def assign_force(self, input_object, reference_cs="Global", is_virtual=True, for
10561056
10571057
>>> oModule.AssignForce
10581058
"""
1059-
input_object = self.modeler.convert_to_selections(input_object, True)
1060-
if not force_name:
1061-
force_name = generate_unique_name("Force")
1062-
if self.design_type == "Maxwell 3D":
1063-
self.o_maxwell_parameters.AssignForce(
1064-
[
1065-
"NAME:" + force_name,
1066-
"Reference CS:=",
1067-
reference_cs,
1068-
"Is Virtual:=",
1069-
is_virtual,
1070-
"Objects:=",
1071-
input_object,
1072-
]
1073-
)
1059+
if self.solution_type not in ["ACConduction", "DCConduction"]:
1060+
input_object = self.modeler.convert_to_selections(input_object, True)
1061+
if not force_name:
1062+
force_name = generate_unique_name("Force")
1063+
if self.design_type == "Maxwell 3D":
1064+
prop = OrderedDict(
1065+
{
1066+
"Name": force_name,
1067+
"Reference CS": reference_cs,
1068+
"Is Virtual": is_virtual,
1069+
"Objects": input_object,
1070+
}
1071+
)
1072+
else:
1073+
prop = OrderedDict(
1074+
{
1075+
"Name": force_name,
1076+
"Reference CS": reference_cs,
1077+
"Objects": input_object,
1078+
}
1079+
)
1080+
1081+
bound = MaxwellParameters(self, force_name, prop, "Force")
1082+
if bound.create():
1083+
self.boundaries.append(bound)
1084+
return bound
10741085
else:
1075-
self.o_maxwell_parameters.AssignForce(
1076-
["NAME:" + force_name, "Reference CS:=", reference_cs, "Objects:=", input_object]
1077-
)
1078-
return True
1086+
self.logger.error("Solution Type has not Matrix Parameter")
1087+
return False
10791088

10801089
@pyaedt_function_handler()
10811090
def assign_torque(
@@ -1108,38 +1117,40 @@ def assign_torque(
11081117
11091118
>>> oModule.AssignTorque
11101119
"""
1111-
input_object = self.modeler.convert_to_selections(input_object, True)
1112-
if not torque_name:
1113-
torque_name = generate_unique_name("Torque")
1114-
if self.design_type == "Maxwell 3D":
1115-
self.o_maxwell_parameters.AssignTorque(
1116-
[
1117-
"NAME:" + torque_name,
1118-
"Is Virtual:=",
1119-
is_virtual,
1120-
"Coordinate System:=",
1121-
reference_cs,
1122-
"Axis:=",
1123-
axis,
1124-
"Is Positive:=",
1125-
is_positive,
1126-
"Objects:=",
1127-
input_object,
1128-
]
1129-
)
1120+
if self.solution_type not in ["ACConduction", "DCConduction"]:
1121+
if self.solution_type is "Transient":
1122+
is_virtual = True
1123+
input_object = self.modeler.convert_to_selections(input_object, True)
1124+
if not torque_name:
1125+
torque_name = generate_unique_name("Torque")
1126+
if self.design_type == "Maxwell 3D":
1127+
prop = OrderedDict(
1128+
{
1129+
"Name": torque_name,
1130+
"Is Virtual": is_virtual,
1131+
"Coordinate System": reference_cs,
1132+
"Axis": axis,
1133+
"Is Positive": is_positive,
1134+
"Objects": input_object,
1135+
}
1136+
)
1137+
else:
1138+
prop = OrderedDict(
1139+
{
1140+
"Name": torque_name,
1141+
"Coordinate System": reference_cs,
1142+
"Is Positive": is_positive,
1143+
"Objects": input_object,
1144+
}
1145+
)
1146+
1147+
bound = MaxwellParameters(self, torque_name, prop, "Torque")
1148+
if bound.create():
1149+
self.boundaries.append(bound)
1150+
return bound
11301151
else:
1131-
self.o_maxwell_parameters.AssignTorque(
1132-
[
1133-
"NAME:" + torque_name,
1134-
"Coordinate System:=",
1135-
reference_cs,
1136-
"Is Positive:=",
1137-
is_positive,
1138-
"Objects:=",
1139-
input_object,
1140-
]
1141-
)
1142-
return True
1152+
self.logger.error("Solution Type has not Matrix Parameter")
1153+
return False
11431154

11441155
@pyaedt_function_handler()
11451156
def solve_inside(self, name, activate=True):

pyaedt/modules/Boundary.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def delete(self):
8484
``True`` when successful, ``False`` when failed.
8585
8686
"""
87-
if self.type == "Matrix":
87+
if self.type == "Matrix" or self.type == "Force" or self.type == "Torque":
8888
self._app.o_maxwell_parameters.DeleteParameters([self.name])
8989
else:
9090
self._app.oboundary.DeleteBoundaries([self.name])
@@ -694,9 +694,9 @@ def create(self):
694694
if self.type == "Matrix":
695695
self._app.o_maxwell_parameters.AssignMatrix(self._get_args())
696696
elif self.type == "Torque":
697-
self._app.oboundary.AssignPerfectH(self._get_args())
697+
self._app.o_maxwell_parameters.AssignTorque(self._get_args())
698698
elif self.type == "Force":
699-
self._app.oboundary.AssignAperture(self._get_args())
699+
self._app.o_maxwell_parameters.AssignForce(self._get_args())
700700
else:
701701
return False
702702
return True
@@ -713,6 +713,10 @@ def update(self):
713713
"""
714714
if self.type == "Matrix":
715715
self._app.o_maxwell_parameters.EditMatrix(self._boundary_name, self._get_args())
716+
elif self.type == "Force":
717+
self._app.o_maxwell_parameters.EditForce(self._boundary_name, self._get_args())
718+
elif self.type == "Torque":
719+
self._app.o_maxwell_parameters.EditTorque(self._boundary_name, self._get_args())
716720
else:
717721
return False
718722
self._boundary_name = self.name

0 commit comments

Comments
 (0)