diff --git a/_unittest/test_32_RMxprt.py b/_unittest/test_32_RMxprt.py index 1462bf7e5b6..977a93fa8e7 100644 --- a/_unittest/test_32_RMxprt.py +++ b/_unittest/test_32_RMxprt.py @@ -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 diff --git a/pyaedt/application/design_solutions.py b/pyaedt/application/design_solutions.py index 7c574cf5edc..5203c4ae414 100644 --- a/pyaedt/application/design_solutions.py +++ b/pyaedt/application/design_solutions.py @@ -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}, @@ -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}, diff --git a/pyaedt/generic/constants.py b/pyaedt/generic/constants.py index 8fc5f16bd86..12102369672 100644 --- a/pyaedt/generic/constants.py +++ b/pyaedt/generic/constants.py @@ -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): diff --git a/pyaedt/modules/SetupTemplates.py b/pyaedt/modules/SetupTemplates.py index b85e7875de5..40f6de2ef55 100644 --- a/pyaedt/modules/SetupTemplates.py +++ b/pyaedt/modules/SetupTemplates.py @@ -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 = [] @@ -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 = [ @@ -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", ] diff --git a/pyaedt/rmxprt.py b/pyaedt/rmxprt.py index 208bf8b2801..a884588100f 100644 --- a/pyaedt/rmxprt.py +++ b/pyaedt/rmxprt.py @@ -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.