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()
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()
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()