Example #1
0
    def __init__(
        self,
        name="M400-50A",
        is_isotropic=False,
        electrical=-1,
        magnetics=-1,
        mechanics=-1,
        thermics=-1,
        economical=-1,
        desc="Lamination M400-50A",
        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 electrical == -1:
            electrical = MatElectrical()
        if magnetics == -1:
            magnetics = MatMagnetics()
        if mechanics == -1:
            mechanics = MatMechanics()
        if thermics == -1:
            thermics = MatThermics()
        if economical == -1:
            economical = MatEconomical()
        if init_dict is not None:  # Initialisation by dict
            check_init_dict(
                init_dict,
                [
                    "name",
                    "is_isotropic",
                    "electrical",
                    "magnetics",
                    "mechanics",
                    "thermics",
                    "economical",
                    "desc",
                ],
            )
            # Overwrite default value with init_dict content
            if "name" in list(init_dict.keys()):
                name = init_dict["name"]
            if "is_isotropic" in list(init_dict.keys()):
                is_isotropic = init_dict["is_isotropic"]
            if "electrical" in list(init_dict.keys()):
                electrical = init_dict["electrical"]
            if "magnetics" in list(init_dict.keys()):
                magnetics = init_dict["magnetics"]
            if "mechanics" in list(init_dict.keys()):
                mechanics = init_dict["mechanics"]
            if "thermics" in list(init_dict.keys()):
                thermics = init_dict["thermics"]
            if "economical" in list(init_dict.keys()):
                economical = init_dict["economical"]
            if "desc" in list(init_dict.keys()):
                desc = init_dict["desc"]
        # Initialisation by argument
        self.parent = None
        self.name = name
        self.is_isotropic = is_isotropic
        # electrical can be None, a MatElectrical object or a dict
        if isinstance(electrical, dict):
            self.electrical = MatElectrical(init_dict=electrical)
        else:
            self.electrical = electrical
        # magnetics can be None, a MatMagnetics object or a dict
        if isinstance(magnetics, dict):
            # Call the correct constructor according to the dict
            load_dict = {
                "MatLamination": MatLamination,
                "MatMagnet": MatMagnet,
                "MatMagnetics": MatMagnetics,
            }
            obj_class = magnetics.get("__class__")
            if obj_class is None:
                self.magnetics = MatMagnetics(init_dict=magnetics)
            elif obj_class in list(load_dict.keys()):
                self.magnetics = load_dict[obj_class](init_dict=magnetics)
            else:  # Avoid generation error or wrong modification in json
                raise InitUnKnowClassError(
                    "Unknow class name in init_dict for magnetics")
        else:
            self.magnetics = magnetics
        # mechanics can be None, a MatMechanics object or a dict
        if isinstance(mechanics, dict):
            self.mechanics = MatMechanics(init_dict=mechanics)
        else:
            self.mechanics = mechanics
        # thermics can be None, a MatThermics object or a dict
        if isinstance(thermics, dict):
            self.thermics = MatThermics(init_dict=thermics)
        else:
            self.thermics = thermics
        # economical can be None, a MatEconomical object or a dict
        if isinstance(economical, dict):
            self.economical = MatEconomical(init_dict=economical)
        else:
            self.economical = economical
        self.desc = desc

        # The class is frozen, for now it's impossible to add new properties
        self._freeze()
Example #2
0
    def __init__(
        self,
        name="M400-50A",
        is_isotropic=False,
        elec=-1,
        mag=-1,
        struct=-1,
        HT=-1,
        eco=-1,
        desc="Lamination M400-50A",
        path="",
        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 elec == -1:
            elec = MatElectrical()
        if mag == -1:
            mag = MatMagnetics()
        if struct == -1:
            struct = MatStructural()
        if HT == -1:
            HT = MatHT()
        if eco == -1:
            eco = MatEconomical()
        if init_dict is not None:  # Initialisation by dict
            check_init_dict(
                init_dict,
                [
                    "name",
                    "is_isotropic",
                    "elec",
                    "mag",
                    "struct",
                    "HT",
                    "eco",
                    "desc",
                    "path",
                ],
            )
            # Overwrite default value with init_dict content
            if "name" in list(init_dict.keys()):
                name = init_dict["name"]
            if "is_isotropic" in list(init_dict.keys()):
                is_isotropic = init_dict["is_isotropic"]
            if "elec" in list(init_dict.keys()):
                elec = init_dict["elec"]
            if "mag" in list(init_dict.keys()):
                mag = init_dict["mag"]
            if "struct" in list(init_dict.keys()):
                struct = init_dict["struct"]
            if "HT" in list(init_dict.keys()):
                HT = init_dict["HT"]
            if "eco" in list(init_dict.keys()):
                eco = init_dict["eco"]
            if "desc" in list(init_dict.keys()):
                desc = init_dict["desc"]
            if "path" in list(init_dict.keys()):
                path = init_dict["path"]
        # Initialisation by argument
        self.parent = None
        self.name = name
        self.is_isotropic = is_isotropic
        # elec can be None, a MatElectrical object or a dict
        if isinstance(elec, dict):
            self.elec = MatElectrical(init_dict=elec)
        else:
            self.elec = elec
        # mag can be None, a MatMagnetics object or a dict
        if isinstance(mag, dict):
            # Check that the type is correct (including daughter)
            class_name = mag.get("__class__")
            if class_name not in [
                    "MatMagnetics", "MatLamination", "MatMagnet"
            ]:
                raise InitUnKnowClassError("Unknow class name " + class_name +
                                           " in init_dict for mag")
            # Dynamic import to call the correct constructor
            module = __import__("pyleecan.Classes." + class_name,
                                fromlist=[class_name])
            class_obj = getattr(module, class_name)
            self.mag = class_obj(init_dict=mag)
        else:
            self.mag = mag
        # struct can be None, a MatStructural object or a dict
        if isinstance(struct, dict):
            self.struct = MatStructural(init_dict=struct)
        else:
            self.struct = struct
        # HT can be None, a MatHT object or a dict
        if isinstance(HT, dict):
            self.HT = MatHT(init_dict=HT)
        else:
            self.HT = HT
        # eco can be None, a MatEconomical object or a dict
        if isinstance(eco, dict):
            self.eco = MatEconomical(init_dict=eco)
        else:
            self.eco = eco
        self.desc = desc
        self.path = path

        # The class is frozen, for now it's impossible to add new properties
        self._freeze()
Example #3
0
    def __init__(
        self,
        name="M400-50A",
        is_isotropic=False,
        elec=-1,
        mag=-1,
        struct=-1,
        HT=-1,
        eco=-1,
        desc="Lamination M400-50A",
        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 elec == -1:
            elec = MatElectrical()
        if mag == -1:
            mag = MatMagnetics()
        if struct == -1:
            struct = MatStructural()
        if HT == -1:
            HT = MatHT()
        if eco == -1:
            eco = MatEconomical()
        if init_dict is not None:  # Initialisation by dict
            check_init_dict(
                init_dict,
                [
                    "name", "is_isotropic", "elec", "mag", "struct", "HT",
                    "eco", "desc"
                ],
            )
            # Overwrite default value with init_dict content
            if "name" in list(init_dict.keys()):
                name = init_dict["name"]
            if "is_isotropic" in list(init_dict.keys()):
                is_isotropic = init_dict["is_isotropic"]
            if "elec" in list(init_dict.keys()):
                elec = init_dict["elec"]
            if "mag" in list(init_dict.keys()):
                mag = init_dict["mag"]
            if "struct" in list(init_dict.keys()):
                struct = init_dict["struct"]
            if "HT" in list(init_dict.keys()):
                HT = init_dict["HT"]
            if "eco" in list(init_dict.keys()):
                eco = init_dict["eco"]
            if "desc" in list(init_dict.keys()):
                desc = init_dict["desc"]
        # Initialisation by argument
        self.parent = None
        self.name = name
        self.is_isotropic = is_isotropic
        # elec can be None, a MatElectrical object or a dict
        if isinstance(elec, dict):
            self.elec = MatElectrical(init_dict=elec)
        else:
            self.elec = elec
        # mag can be None, a MatMagnetics object or a dict
        if isinstance(mag, dict):
            # Call the correct constructor according to the dict
            load_dict = {
                "MatLamination": MatLamination,
                "MatMagnet": MatMagnet,
                "MatMagnetics": MatMagnetics,
            }
            obj_class = mag.get("__class__")
            if obj_class is None:
                self.mag = MatMagnetics(init_dict=mag)
            elif obj_class in list(load_dict.keys()):
                self.mag = load_dict[obj_class](init_dict=mag)
            else:  # Avoid generation error or wrong modification in json
                raise InitUnKnowClassError(
                    "Unknow class name in init_dict for mag")
        else:
            self.mag = mag
        # struct can be None, a MatStructural object or a dict
        if isinstance(struct, dict):
            self.struct = MatStructural(init_dict=struct)
        else:
            self.struct = struct
        # HT can be None, a MatHT object or a dict
        if isinstance(HT, dict):
            self.HT = MatHT(init_dict=HT)
        else:
            self.HT = HT
        # eco can be None, a MatEconomical object or a dict
        if isinstance(eco, dict):
            self.eco = MatEconomical(init_dict=eco)
        else:
            self.eco = eco
        self.desc = desc

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