def __init__(self, name, **kwargs: Dict): super().__init__() self.name = name """ Name of the variable """ self.metadata: Dict = {} """ Dictionary for metadata of the variable """ # Initialize class attributes once at first instantiation ------------- if not self._variable_descriptions: # Class attribute, but it's safer to initialize it at first instantiation with open_text(resources, DESCRIPTION_FILENAME) as desc_io: vars_descs = np.genfromtxt(desc_io, delimiter="\t", dtype=str) self.__class__._variable_descriptions.update(vars_descs) if not self._base_metadata: # Get variable base metadata from an ExplicitComponent comp = om.ExplicitComponent() # get attributes metadata = comp.add_output(name="a") self.__class__._base_metadata = metadata self.__class__._base_metadata["value"] = 1.0 self.__class__._base_metadata["tags"] = set() self.__class__._base_metadata["shape"] = None # Done with class attributes ------------------------------------------ self.metadata = self.__class__._base_metadata.copy() self.metadata.update(kwargs) self._set_default_shape() # If no description, add one from DESCRIPTION_FILE_PATH, if available if not self.description and self.name in self._variable_descriptions: self.description = self._variable_descriptions[self.name]
def test_comp_has_no_outputs(self): p = om.Problem() root = p.model root.add_subsystem("indep", om.IndepVarComp('x', 1.0)) comp1 = root.add_subsystem("comp1", om.ExplicitComponent()) comp1.add_input('x', val=0.) root.connect('indep.x', 'comp1.x') testlogger = TestLogger() p.setup(check=True, logger=testlogger) p.final_setup() expected = ("The following Components do not have any outputs:\n" " comp1\n") testlogger.find_in('warning', expected)
def __init__(self, name, **kwargs): super().__init__() self.name = name """ Name of the variable """ self.metadata: Dict = {} """ Dictionary for metadata of the variable """ # Initialize class attributes once at first instantiation ------------- if not self._base_metadata: # Get variable base metadata from an ExplicitComponent comp = om.ExplicitComponent() # get attributes metadata = comp.add_output(name="a") self.__class__._base_metadata = metadata self.__class__._base_metadata["val"] = 1.0 self.__class__._base_metadata["tags"] = set() self.__class__._base_metadata["shape"] = None # Done with class attributes ------------------------------------------ # Feed self.metadata with kwargs, but remove first attributes with "Unavailable" as # value, which is a value that can be provided by OpenMDAO. self.metadata = self.__class__._base_metadata.copy() self.metadata.update({ key: value for key, value in kwargs.items() # The isinstance check is needed if value is a numpy array. In this case, a # FutureWarning is issued because it is compared to a scalar. if not isinstance(value, str) or value != "Unavailable" }) if "value" in self.metadata: self.metadata["val"] = self.metadata.pop("value") if "description" in self.metadata: self.metadata["desc"] = self.metadata.pop("description") self._set_default_shape() # If no description, use the one from self._variable_descriptions, if available if not self.description and self.name in self._variable_descriptions: self.description = self._variable_descriptions[self.name]
def __init__(self, name, **kwargs): super().__init__() self.name = name """ Name of the variable """ self.metadata: Dict = {} """ Dictionary for metadata of the variable """ # Initialize class attributes once at first instantiation ------------- if not self._variable_descriptions: # Class attribute, but it's safer to initialize it at first instantiation with open_text(resources, DESCRIPTION_FILENAME) as desc_io: vars_descs = np.genfromtxt(desc_io, delimiter="\t", dtype=str) self.__class__._variable_descriptions.update(vars_descs) if not self._base_metadata: # Get variable base metadata from an ExplicitComponent comp = om.ExplicitComponent() # get attributes metadata = comp.add_output(name="a") self.__class__._base_metadata = metadata self.__class__._base_metadata["value"] = 1.0 self.__class__._base_metadata["tags"] = set() self.__class__._base_metadata["shape"] = None # Done with class attributes ------------------------------------------ # Feed self.metadata with kwargs, but remove first attributes with "Unavailable" as # value, which is a value that can be provided by OpenMDAO. self.metadata = self.__class__._base_metadata.copy() self.metadata.update({ key: value for key, value in kwargs.items() # The isinstance check is needed if value is a numpy array. In this case, a # FutureWarning is issued because it is compared to a scalar. if not isinstance(value, str) or value != "Unavailable" }) self._set_default_shape() # If no description, add one from DESCRIPTION_FILE_PATH, if available if not self.description and self.name in self._variable_descriptions: self.description = self._variable_descriptions[self.name]