Example #1
0
    def __init__(self, name="", desc="", machine=-1, input=-1, init_dict=None):
        """Constructor of the class. Can be use in two ways :
        - __init__ (arg1 = 1, arg3 = 5) every parameters have name and default values
            for Matrix, None will initialise the property with an empty Matrix
            for pyleecan type, None will call the default constructor
        - __init__ (init_dict = d) d must be a dictionnary wiht every properties as keys

        ndarray or list can be given for Vector and Matrix
        object or dict can be given for pyleecan Object"""

        if machine == -1:
            machine = Machine()
        if input == -1:
            input = Input()
        if init_dict is not None:  # Initialisation by dict
            check_init_dict(init_dict, ["name", "desc", "machine", "input"])
            # Overwrite default value with init_dict content
            if "name" in list(init_dict.keys()):
                name = init_dict["name"]
            if "desc" in list(init_dict.keys()):
                desc = init_dict["desc"]
            if "machine" in list(init_dict.keys()):
                machine = init_dict["machine"]
            if "input" in list(init_dict.keys()):
                input = init_dict["input"]
        # Initialisation by argument
        self.parent = None
        self.name = name
        self.desc = desc
        # machine can be None, a Machine object or a dict
        if isinstance(machine, dict):
            # Call the correct constructor according to the dict
            load_dict = {
                "MachineSync": MachineSync,
                "MachineAsync": MachineAsync,
                "MachineSCIM": MachineSCIM,
                "MachineDFIM": MachineDFIM,
                "MachineSIPMSM": MachineSIPMSM,
                "MachineIPMSM": MachineIPMSM,
                "MachineWRSM": MachineWRSM,
                "MachineSyRM": MachineSyRM,
                "Machine": Machine,
            }
            obj_class = machine.get("__class__")
            if obj_class is None:
                self.machine = Machine(init_dict=machine)
            elif obj_class in list(load_dict.keys()):
                self.machine = load_dict[obj_class](init_dict=machine)
            else:  # Avoid generation error or wrong modification in json
                raise InitUnKnowClassError(
                    "Unknow class name in init_dict for machine")
        else:
            self.machine = machine
        # input can be None, a Input object or a dict
        if isinstance(input, dict):
            # Call the correct constructor according to the dict
            load_dict = {"InCurrent": InCurrent, "Input": Input}
            obj_class = input.get("__class__")
            if obj_class is None:
                self.input = Input(init_dict=input)
            elif obj_class in list(load_dict.keys()):
                self.input = load_dict[obj_class](init_dict=input)
            else:  # Avoid generation error or wrong modification in json
                raise InitUnKnowClassError(
                    "Unknow class name in init_dict for input")
        else:
            self.input = input

        # The class is frozen, for now it's impossible to add new properties
        self._freeze()
Example #2
0
    def __init__(self, name="", desc="", machine=-1, input=-1, init_dict=None):
        """Constructor of the class. Can be use in two ways :
        - __init__ (arg1 = 1, arg3 = 5) every parameters have name and default values
            for Matrix, None will initialise the property with an empty Matrix
            for pyleecan type, None will call the default constructor
        - __init__ (init_dict = d) d must be a dictionnary wiht every properties as keys

        ndarray or list can be given for Vector and Matrix
        object or dict can be given for pyleecan Object"""

        if machine == -1:
            machine = Machine()
        if input == -1:
            input = Input()
        if init_dict is not None:  # Initialisation by dict
            check_init_dict(init_dict, ["name", "desc", "machine", "input"])
            # Overwrite default value with init_dict content
            if "name" in list(init_dict.keys()):
                name = init_dict["name"]
            if "desc" in list(init_dict.keys()):
                desc = init_dict["desc"]
            if "machine" in list(init_dict.keys()):
                machine = init_dict["machine"]
            if "input" in list(init_dict.keys()):
                input = init_dict["input"]
        # Initialisation by argument
        self.parent = None
        self.name = name
        self.desc = desc
        # machine can be None, a Machine object or a dict
        if isinstance(machine, dict):
            # Check that the type is correct (including daughter)
            class_name = machine.get("__class__")
            if class_name not in [
                "Machine",
                "MachineAsync",
                "MachineDFIM",
                "MachineIPMSM",
                "MachineSCIM",
                "MachineSIPMSM",
                "MachineSRM",
                "MachineSyRM",
                "MachineSync",
                "MachineWRSM",
            ]:
                raise InitUnKnowClassError(
                    "Unknow class name " + class_name + " in init_dict for machine"
                )
            # Dynamic import to call the correct constructor
            module = __import__("pyleecan.Classes." + class_name, fromlist=[class_name])
            class_obj = getattr(module, class_name)
            self.machine = class_obj(init_dict=machine)
        else:
            self.machine = machine
        # input can be None, a Input object or a dict
        if isinstance(input, dict):
            # Check that the type is correct (including daughter)
            class_name = input.get("__class__")
            if class_name not in ["Input", "InCurrent", "InFlux", "InForce"]:
                raise InitUnKnowClassError(
                    "Unknow class name " + class_name + " in init_dict for input"
                )
            # Dynamic import to call the correct constructor
            module = __import__("pyleecan.Classes." + class_name, fromlist=[class_name])
            class_obj = getattr(module, class_name)
            self.input = class_obj(init_dict=input)
        else:
            self.input = input

        # The class is frozen, for now it's impossible to add new properties
        self._freeze()