Skip to content

Commit 9a7cd94

Browse files
RMxprt Setup templates added for multiple machine types (#1033)
* RMxprt Setup templates added for multiple machine types. * Fix documentation string formating for added RMxprt Setup templates. * Update _unittest/test_32_RMxprt.py * Add unittest check for RMxprt Setup template properties. Co-authored-by: Maxime Rey <[email protected]>
1 parent 1bd32d1 commit 9a7cd94

File tree

5 files changed

+185
-22
lines changed

5 files changed

+185
-22
lines changed

_unittest/test_32_RMxprt.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,31 @@ def test_02_changeesolution(self):
2828
assert self.aedtapp.disable_modelcreation("LSSM")
2929
assert self.aedtapp.enable_modelcreation("WRIM")
3030

31-
def test_06a_create_setup(self):
31+
def test_03_getchangeproperty(self):
32+
# test increment statorOD by 1mm
33+
self.aedtapp.disable_modelcreation("ASSM")
34+
statorOD = self.aedtapp.stator["Outer Diameter"]
35+
assert statorOD
36+
self.aedtapp.stator["Outer Diameter"] = statorOD + "+1mm"
37+
38+
def test_04_create_setup(self):
39+
# first test GRM (use Inner-Rotor Induction Machine)
40+
assert self.aedtapp.enable_modelcreation("IRIM")
3241
mysetup = self.aedtapp.create_setup()
42+
assert mysetup.props["RatedOutputPower"]
3343
mysetup.props["RatedOutputPower"] = "100W"
34-
assert mysetup.update()
44+
assert mysetup.update() # update only needed for assertion
45+
# second test ASSM setup
46+
self.aedtapp.delete_setup(mysetup.name)
47+
assert self.aedtapp.disable_modelcreation("ASSM")
48+
mysetup = self.aedtapp.create_setup()
49+
assert mysetup.props["RatedSpeed"]
50+
mysetup.props["RatedSpeed"] = "3600rpm"
51+
assert mysetup.update() # update only needed for assertion
52+
# third test TPSM/SYNM setup
53+
self.aedtapp.delete_setup(mysetup.name)
54+
assert self.aedtapp.disable_modelcreation("TPSM")
55+
mysetup = self.aedtapp.create_setup()
56+
assert mysetup.props["RatedVoltage"]
57+
mysetup.props["RatedVoltage"] = "208V"
58+
assert mysetup.update() # update only needed for assertion

pyaedt/application/design_solutions.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@
345345
"ORIM": {"name": "ORIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
346346
"SRIM": {"name": "SRIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
347347
"WRIM": {"name": "WRIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
348-
"DFIG": {"name": "DFIG", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
348+
"DFIG": {"name": "DFIG", "options": None, "report_type": None, "default_setup": 43, "default_adaptive": None},
349349
"AFIM": {"name": "AFIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
350350
"HM": {"name": "HM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
351351
"RFSM": {"name": "RFSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
@@ -355,18 +355,18 @@
355355
"APSM": {"name": "APSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
356356
"IBDM": {"name": "IBDM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
357357
"ABDM": {"name": "ABDM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
358-
"TPIM": {"name": "TPIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
359-
"SPIM": {"name": "SPIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
360-
"TPSM": {"name": "TPSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
361-
"BLDC": {"name": "BLDC", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
362-
"ASSM": {"name": "ASSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
363-
"PMDC": {"name": "PMDC", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
364-
"SRM": {"name": "SRM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
365-
"LSSM": {"name": "LSSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
366-
"UNIM": {"name": "UNIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
367-
"DCM": {"name": "DCM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
368-
"CPSM": {"name": "CPSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
369-
"NSSM": {"name": "NSSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
358+
"TPIM": {"name": "TPIM", "options": None, "report_type": None, "default_setup": 44, "default_adaptive": None},
359+
"SPIM": {"name": "SPIM", "options": None, "report_type": None, "default_setup": 45, "default_adaptive": None},
360+
"TPSM": {"name": "SYNM", "options": None, "report_type": None, "default_setup": 46, "default_adaptive": None},
361+
"BLDC": {"name": "BLDC", "options": None, "report_type": None, "default_setup": 47, "default_adaptive": None},
362+
"ASSM": {"name": "ASSM", "options": None, "report_type": None, "default_setup": 48, "default_adaptive": None},
363+
"PMDC": {"name": "PMDC", "options": None, "report_type": None, "default_setup": 49, "default_adaptive": None},
364+
"SRM": {"name": "SRM", "options": None, "report_type": None, "default_setup": 50, "default_adaptive": None},
365+
"LSSM": {"name": "LSSM", "options": None, "report_type": None, "default_setup": 51, "default_adaptive": None},
366+
"UNIM": {"name": "UNIM", "options": None, "report_type": None, "default_setup": 52, "default_adaptive": None},
367+
"DCM": {"name": "DCM", "options": None, "report_type": None, "default_setup": 53, "default_adaptive": None},
368+
"CPSM": {"name": "CPSM", "options": None, "report_type": None, "default_setup": 54, "default_adaptive": None},
369+
"NSSM": {"name": "NSSM", "options": None, "report_type": None, "default_setup": 55, "default_adaptive": None},
370370
},
371371
"ModelCreation": {
372372
"GRM": {"name": "GRM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},

pyaedt/generic/constants.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,20 @@ class SETUPS(object):
675675
TransientTemperatureAndFlow,
676676
TransientTemperatureOnly,
677677
TransientFlowOnly,
678-
) = range(0, 39)
678+
DFIG,
679+
TPIM,
680+
SPIM,
681+
TPSM,
682+
BLDC,
683+
ASSM,
684+
PMDC,
685+
SRM,
686+
LSSM,
687+
UNIM,
688+
DCM,
689+
CPSM,
690+
NSSM,
691+
) = range(0, 52)
679692

680693

681694
class CoordinateSystemAxis(object):

pyaedt/modules/SetupTemplates.py

Lines changed: 123 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,19 +1171,110 @@ def HFSS3DLayout_AdaptiveFrequencyData(freq):
11711171

11721172
# TODO complete the list of templates for other Solvers
11731173

1174-
GRM = [
1174+
RmxprtDefault = [
11751175
("Enabled", True),
1176-
("MeshLink", meshlink),
1177-
("RatedOutputPower", "1W"),
1178-
("RatedVoltage", "208V"),
1179-
("RatedSpeed", "3600rpm"),
1180-
("OperatingTemperature", "75cel"),
11811176
("OperationType", "Motor"),
11821177
("LoadType", "ConstPower"),
1178+
("RatedOutputPower", "1kW"),
1179+
("RatedVoltage", "100V"),
1180+
("RatedSpeed", "1000rpm"),
1181+
("OperatingTemperature", "75cel"),
1182+
]
1183+
"""RMxprt Default setup properties and default values."""
1184+
1185+
GRM = RmxprtDefault + [
1186+
("RatedPowerFactor", "0.8"),
1187+
("Frequency", "60Hz"),
1188+
("CapacitivePowerFactor", False),
1189+
]
1190+
"""RMxprt GRM (Generic Rotating Machine) setup properties and default values."""
1191+
1192+
DFIG = [
1193+
("Enabled", True),
1194+
("RatedOutputPower", "1kW"),
1195+
("RatedVoltage", "100V"),
1196+
("RatedSpeed", "1000rpm"),
1197+
("OperatingTemperature", "75cel"),
1198+
("OperationType", "Wind Generator"),
1199+
("LoadType", "InfiniteBus"),
11831200
("RatedPowerFactor", "0.8"),
11841201
("Frequency", "60Hz"),
11851202
("CapacitivePowerFactor", False),
11861203
]
1204+
"""RMxprt DFIG (Doubly-fed induction generator) setup properties."""
1205+
1206+
TPIM = RmxprtDefault + [("Frequency", "60Hz"), ("WindingConnection", 0)]
1207+
"""RMxprt TPIM (Three-Phase Induction Machine) setup properties."""
1208+
1209+
SPIM = RmxprtDefault + [
1210+
("Frequency", "60Hz"),
1211+
]
1212+
"""RMxprt SPIM (Single-Phase Induction Machine setup properties."""
1213+
1214+
TPSM = [
1215+
("Enabled", True),
1216+
("RatedOutputPower", "100"),
1217+
("RatedVoltage", "100V"),
1218+
("RatedSpeed", "1000rpm"),
1219+
("OperatingTemperature", "75cel"),
1220+
("OperationType", "Generator"),
1221+
("LoadType", "InfiniteBus"),
1222+
("RatedPowerFactor", 0.8),
1223+
("WindingConnection", False),
1224+
("ExciterEfficiency", 90),
1225+
("StartingFieldResistance", "0ohm"),
1226+
("InputExcitingCurrent", False),
1227+
("ExcitingCurrent", "0A"),
1228+
]
1229+
"""RMxprt TPSM=SYNM (Three-phase Synchronous Machine/Generator) setup properties."""
1230+
1231+
NSSM = TPSM # Non-salient Synchronous Machine defaults, same as salient synch mach
1232+
1233+
ASSM = BLDC = PMDC = SRM = RmxprtDefault
1234+
# --- ALL USING RMxprt DEFAULT VALUES --- #
1235+
# ASSM = Adjustable-speed Synchronous Machine
1236+
# BLDC = Brushless DC Machine
1237+
# PMDC = Permanent Magnet DC Machine
1238+
# SRM = Switched Reluctance Machine
1239+
1240+
LSSM = RmxprtDefault + [
1241+
("WindingConnection", False),
1242+
]
1243+
"""RMxprt LSSM (Line-start Synchronous Machine) setup properties."""
1244+
1245+
UNIM = RmxprtDefault + [
1246+
("Frequency", "60Hz"),
1247+
]
1248+
"""RMxprt UNIM (Universal Machine) setup properties."""
1249+
1250+
DCM = [
1251+
("Enabled", True),
1252+
("RatedOutputPower", "1kW"),
1253+
("RatedVoltage", "100V"),
1254+
("RatedSpeed", "1000rpm"),
1255+
("OperatingTemperature", "75cel"),
1256+
("OperationType", "Generator"),
1257+
("LoadType", "InfiniteBus"),
1258+
("FieldExcitingType", False),
1259+
("DeterminedbyRatedSpeed", False),
1260+
("ExcitingVoltage", "100V"),
1261+
("SeriesResistance", "1ohm"),
1262+
]
1263+
"""RMxprt DCM (DC Machine/Generator) setup properties."""
1264+
1265+
CPSM = [
1266+
("Enabled", True),
1267+
("RatedOutputPower", "100"),
1268+
("RatedVoltage", "100V"),
1269+
("RatedSpeed", "1000rpm"),
1270+
("OperatingTemperature", "75cel"),
1271+
("OperationType", "Generator"),
1272+
("LoadType", "InfiniteBus"),
1273+
("RatedPowerFactor", "0.8"),
1274+
("InputExcitingCurrent", False),
1275+
("ExcitingCurrent", "0A"),
1276+
]
1277+
"""RMxprt CPSM (Claw-pole synchronous machine/generator) setup properties."""
11871278

11881279
TR = []
11891280

@@ -1838,6 +1929,19 @@ class SetupKeys(object):
18381929
40: SiwaveDC3DLayout,
18391930
41: SiwaveAC3DLayout,
18401931
42: LNA3DLayout,
1932+
43: DFIG,
1933+
44: TPIM,
1934+
45: SPIM,
1935+
46: TPSM,
1936+
47: BLDC,
1937+
48: ASSM,
1938+
49: PMDC,
1939+
50: SRM,
1940+
51: LSSM,
1941+
52: UNIM,
1942+
53: DCM,
1943+
54: CPSM,
1944+
55: NSSM,
18411945
}
18421946

18431947
SetupNames = [
@@ -1884,6 +1988,19 @@ class SetupKeys(object):
18841988
"SiwaveDC3DLayout",
18851989
"SiwaveAC3DLayout",
18861990
"LNA3DLayout",
1991+
"GRM", # DFIG
1992+
"TPIM",
1993+
"SPIM",
1994+
"SYNM", # TPSM/SYNM
1995+
"BLDC",
1996+
"ASSM",
1997+
"PMDC",
1998+
"SRM",
1999+
"LSSM",
2000+
"UNIM",
2001+
"DCM",
2002+
"CPSM",
2003+
"NSSM",
18872004
]
18882005

18892006

pyaedt/rmxprt.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,15 @@ def __setitem__(self, parameter_name, value):
4545
self.set_rmxprt_parameter(parameter_name, value)
4646
return True
4747

48+
@pyaedt_function_handler()
49+
def __getitem__(self, parameter_name):
50+
prop_server = self.get_prop_server(parameter_name)
51+
separator = ":" if prop_server else ""
52+
val = self._oeditor.GetPropertyValue(
53+
self.component, "{0}{1}{2}".format(self.component, separator, prop_server), parameter_name
54+
)
55+
return val
56+
4857
@pyaedt_function_handler()
4958
def set_rmxprt_parameter(self, parameter_name, value):
5059
"""Modify a parameter value.

0 commit comments

Comments
 (0)