Skip to content

RMxprt Setup templates added for multiple machine types #1033

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 4 commits into from
Apr 13, 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
28 changes: 26 additions & 2 deletions _unittest/test_32_RMxprt.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,31 @@ def test_02_changeesolution(self):
assert self.aedtapp.disable_modelcreation("LSSM")
assert self.aedtapp.enable_modelcreation("WRIM")

def test_06a_create_setup(self):
def test_03_getchangeproperty(self):
# test increment statorOD by 1mm
self.aedtapp.disable_modelcreation("ASSM")
statorOD = self.aedtapp.stator["Outer Diameter"]
assert statorOD
self.aedtapp.stator["Outer Diameter"] = statorOD + "+1mm"

def test_04_create_setup(self):
# first test GRM (use Inner-Rotor Induction Machine)
assert self.aedtapp.enable_modelcreation("IRIM")
mysetup = self.aedtapp.create_setup()
assert mysetup.props["RatedOutputPower"]
mysetup.props["RatedOutputPower"] = "100W"
assert mysetup.update()
assert mysetup.update() # update only needed for assertion
# second test ASSM setup
self.aedtapp.delete_setup(mysetup.name)
assert self.aedtapp.disable_modelcreation("ASSM")
mysetup = self.aedtapp.create_setup()
assert mysetup.props["RatedSpeed"]
mysetup.props["RatedSpeed"] = "3600rpm"
assert mysetup.update() # update only needed for assertion
# third test TPSM/SYNM setup
self.aedtapp.delete_setup(mysetup.name)
assert self.aedtapp.disable_modelcreation("TPSM")
mysetup = self.aedtapp.create_setup()
assert mysetup.props["RatedVoltage"]
mysetup.props["RatedVoltage"] = "208V"
assert mysetup.update() # update only needed for assertion
26 changes: 13 additions & 13 deletions pyaedt/application/design_solutions.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@
"ORIM": {"name": "ORIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"SRIM": {"name": "SRIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"WRIM": {"name": "WRIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"DFIG": {"name": "DFIG", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"DFIG": {"name": "DFIG", "options": None, "report_type": None, "default_setup": 43, "default_adaptive": None},
"AFIM": {"name": "AFIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"HM": {"name": "HM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"RFSM": {"name": "RFSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
Expand All @@ -355,18 +355,18 @@
"APSM": {"name": "APSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"IBDM": {"name": "IBDM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"ABDM": {"name": "ABDM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"TPIM": {"name": "TPIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"SPIM": {"name": "SPIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"TPSM": {"name": "TPSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"BLDC": {"name": "BLDC", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"ASSM": {"name": "ASSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"PMDC": {"name": "PMDC", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"SRM": {"name": "SRM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"LSSM": {"name": "LSSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"UNIM": {"name": "UNIM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"DCM": {"name": "DCM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"CPSM": {"name": "CPSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"NSSM": {"name": "NSSM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
"TPIM": {"name": "TPIM", "options": None, "report_type": None, "default_setup": 44, "default_adaptive": None},
"SPIM": {"name": "SPIM", "options": None, "report_type": None, "default_setup": 45, "default_adaptive": None},
"TPSM": {"name": "SYNM", "options": None, "report_type": None, "default_setup": 46, "default_adaptive": None},
"BLDC": {"name": "BLDC", "options": None, "report_type": None, "default_setup": 47, "default_adaptive": None},
"ASSM": {"name": "ASSM", "options": None, "report_type": None, "default_setup": 48, "default_adaptive": None},
"PMDC": {"name": "PMDC", "options": None, "report_type": None, "default_setup": 49, "default_adaptive": None},
"SRM": {"name": "SRM", "options": None, "report_type": None, "default_setup": 50, "default_adaptive": None},
"LSSM": {"name": "LSSM", "options": None, "report_type": None, "default_setup": 51, "default_adaptive": None},
"UNIM": {"name": "UNIM", "options": None, "report_type": None, "default_setup": 52, "default_adaptive": None},
"DCM": {"name": "DCM", "options": None, "report_type": None, "default_setup": 53, "default_adaptive": None},
"CPSM": {"name": "CPSM", "options": None, "report_type": None, "default_setup": 54, "default_adaptive": None},
"NSSM": {"name": "NSSM", "options": None, "report_type": None, "default_setup": 55, "default_adaptive": None},
},
"ModelCreation": {
"GRM": {"name": "GRM", "options": None, "report_type": None, "default_setup": 34, "default_adaptive": None},
Expand Down
15 changes: 14 additions & 1 deletion pyaedt/generic/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -675,7 +675,20 @@ class SETUPS(object):
TransientTemperatureAndFlow,
TransientTemperatureOnly,
TransientFlowOnly,
) = range(0, 39)
DFIG,
TPIM,
SPIM,
TPSM,
BLDC,
ASSM,
PMDC,
SRM,
LSSM,
UNIM,
DCM,
CPSM,
NSSM,
) = range(0, 52)


class CoordinateSystemAxis(object):
Expand Down
129 changes: 123 additions & 6 deletions pyaedt/modules/SetupTemplates.py
Original file line number Diff line number Diff line change
Expand Up @@ -1171,19 +1171,110 @@ def HFSS3DLayout_AdaptiveFrequencyData(freq):

# TODO complete the list of templates for other Solvers

GRM = [
RmxprtDefault = [
("Enabled", True),
("MeshLink", meshlink),
("RatedOutputPower", "1W"),
("RatedVoltage", "208V"),
("RatedSpeed", "3600rpm"),
("OperatingTemperature", "75cel"),
("OperationType", "Motor"),
("LoadType", "ConstPower"),
("RatedOutputPower", "1kW"),
("RatedVoltage", "100V"),
("RatedSpeed", "1000rpm"),
("OperatingTemperature", "75cel"),
]
"""RMxprt Default setup properties and default values."""

GRM = RmxprtDefault + [
("RatedPowerFactor", "0.8"),
("Frequency", "60Hz"),
("CapacitivePowerFactor", False),
]
"""RMxprt GRM (Generic Rotating Machine) setup properties and default values."""

DFIG = [
("Enabled", True),
("RatedOutputPower", "1kW"),
("RatedVoltage", "100V"),
("RatedSpeed", "1000rpm"),
("OperatingTemperature", "75cel"),
("OperationType", "Wind Generator"),
("LoadType", "InfiniteBus"),
("RatedPowerFactor", "0.8"),
("Frequency", "60Hz"),
("CapacitivePowerFactor", False),
]
"""RMxprt DFIG (Doubly-fed induction generator) setup properties."""

TPIM = RmxprtDefault + [("Frequency", "60Hz"), ("WindingConnection", 0)]
"""RMxprt TPIM (Three-Phase Induction Machine) setup properties."""

SPIM = RmxprtDefault + [
("Frequency", "60Hz"),
]
"""RMxprt SPIM (Single-Phase Induction Machine setup properties."""

TPSM = [
("Enabled", True),
("RatedOutputPower", "100"),
("RatedVoltage", "100V"),
("RatedSpeed", "1000rpm"),
("OperatingTemperature", "75cel"),
("OperationType", "Generator"),
("LoadType", "InfiniteBus"),
("RatedPowerFactor", 0.8),
("WindingConnection", False),
("ExciterEfficiency", 90),
("StartingFieldResistance", "0ohm"),
("InputExcitingCurrent", False),
("ExcitingCurrent", "0A"),
]
"""RMxprt TPSM=SYNM (Three-phase Synchronous Machine/Generator) setup properties."""

NSSM = TPSM # Non-salient Synchronous Machine defaults, same as salient synch mach

ASSM = BLDC = PMDC = SRM = RmxprtDefault
# --- ALL USING RMxprt DEFAULT VALUES --- #
# ASSM = Adjustable-speed Synchronous Machine
# BLDC = Brushless DC Machine
# PMDC = Permanent Magnet DC Machine
# SRM = Switched Reluctance Machine

LSSM = RmxprtDefault + [
("WindingConnection", False),
]
"""RMxprt LSSM (Line-start Synchronous Machine) setup properties."""

UNIM = RmxprtDefault + [
("Frequency", "60Hz"),
]
"""RMxprt UNIM (Universal Machine) setup properties."""

DCM = [
("Enabled", True),
("RatedOutputPower", "1kW"),
("RatedVoltage", "100V"),
("RatedSpeed", "1000rpm"),
("OperatingTemperature", "75cel"),
("OperationType", "Generator"),
("LoadType", "InfiniteBus"),
("FieldExcitingType", False),
("DeterminedbyRatedSpeed", False),
("ExcitingVoltage", "100V"),
("SeriesResistance", "1ohm"),
]
"""RMxprt DCM (DC Machine/Generator) setup properties."""

CPSM = [
("Enabled", True),
("RatedOutputPower", "100"),
("RatedVoltage", "100V"),
("RatedSpeed", "1000rpm"),
("OperatingTemperature", "75cel"),
("OperationType", "Generator"),
("LoadType", "InfiniteBus"),
("RatedPowerFactor", "0.8"),
("InputExcitingCurrent", False),
("ExcitingCurrent", "0A"),
]
"""RMxprt CPSM (Claw-pole synchronous machine/generator) setup properties."""

TR = []

Expand Down Expand Up @@ -1838,6 +1929,19 @@ class SetupKeys(object):
40: SiwaveDC3DLayout,
41: SiwaveAC3DLayout,
42: LNA3DLayout,
43: DFIG,
44: TPIM,
45: SPIM,
46: TPSM,
47: BLDC,
48: ASSM,
49: PMDC,
50: SRM,
51: LSSM,
52: UNIM,
53: DCM,
54: CPSM,
55: NSSM,
}

SetupNames = [
Expand Down Expand Up @@ -1884,6 +1988,19 @@ class SetupKeys(object):
"SiwaveDC3DLayout",
"SiwaveAC3DLayout",
"LNA3DLayout",
"GRM", # DFIG
"TPIM",
"SPIM",
"SYNM", # TPSM/SYNM
"BLDC",
"ASSM",
"PMDC",
"SRM",
"LSSM",
"UNIM",
"DCM",
"CPSM",
"NSSM",
]


Expand Down
9 changes: 9 additions & 0 deletions pyaedt/rmxprt.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@ def __setitem__(self, parameter_name, value):
self.set_rmxprt_parameter(parameter_name, value)
return True

@pyaedt_function_handler()
def __getitem__(self, parameter_name):
prop_server = self.get_prop_server(parameter_name)
separator = ":" if prop_server else ""
val = self._oeditor.GetPropertyValue(
self.component, "{0}{1}{2}".format(self.component, separator, prop_server), parameter_name
)
return val

@pyaedt_function_handler()
def set_rmxprt_parameter(self, parameter_name, value):
"""Modify a parameter value.
Expand Down