fastoad.openmdao.variables.variable_list module

Class for managing a list of OpenMDAO variables.

class fastoad.openmdao.variables.variable_list.VariableList(iterable=(), /)[source]

Bases: list

Class for storing OpenMDAO variables.

A list of Variable instances, but items can also be accessed through variable names. It also has utilities to be converted from/to some other data structures (python dict, OpenMDAO IndepVarComp, pandas DataFrame)

See documentation of Variable to see how to manipulate each element.

There are several ways for adding variables:

# Assuming these Python variables are ready...
var_1 = Variable('var/1', value=0.)
metadata_2 = {'value': 1., 'units': 'm'}

# ... a VariableList instance can be populated like this:
vars_A = VariableList()
vars_A.append(var_1)              # Adds directly a Variable instance
vars_A['var/2'] = metadata_2      # Adds the variable with given name and given metadata

Note

Adding a Variable instance with a name that is already in the VariableList instance will replace the previous Variable instance instead of adding a new one.

# It is also possible to instantiate a VariableList instance from another VariableList
# instance or a simple list of Variable instances
vars_B = VariableList(vars_A)
vars_C = VariableList([var_1])

# An existing VariableList instance can also receive the content of another VariableList
# instance.
vars_C.update(vars_A)             # variables in vars_A will overwrite variables with same
                                  # name in vars_C

After that, following equalities are True:

print( var_1 in vars_A )
print( 'var/1' in vars_A.names() )
print( 'var/2' in vars_A.names() )
names() List[str][source]
Returns

names of variables

metadata_keys() List[str][source]
Returns

the metadata keys that are common to all variables in the list

append(var: Variable) None[source]

Append var to the end of the list, unless its name is already used. In that case, var will replace the previous Variable instance with the same name.

update(other_var_list: list, add_variables: bool = True)[source]

Uses variables in other_var_list to update the current VariableList instance.

For each Variable instance in other_var_list:
  • if a Variable instance with same name exists, it is replaced by the one in other_var_list (special case: if one in other_var_list has an empty description, the original description is kept)

  • if not, Variable instance from other_var_list will be added only if add_variables==True

Parameters
  • other_var_list – source for new Variable data

  • add_variables – if True, unknown variables are also added

to_ivc() IndepVarComp[source]
Returns

an OpenMDAO IndepVarComp instance with all variables from current list

to_dataframe() DataFrame[source]

Creates a DataFrame instance from a VariableList instance.

Column names are “name” + the keys returned by Variable.get_openmdao_keys(). Values in Series “value” are floats or lists (numpy arrays are converted).

Returns

a pandas DataFrame instance with all variables from current list

classmethod from_dict(var_dict: Union[Mapping[str, dict], Iterable[Tuple[str, dict]]]) VariableList[source]

Creates a VariableList instance from a dict-like object.

Parameters

var_dict

Returns

a VariableList instance

classmethod from_ivc(ivc: IndepVarComp) VariableList[source]

Creates a VariableList instance from an OpenMDAO IndepVarComp instance

Parameters

ivc – an IndepVarComp instance

Returns

a VariableList instance

classmethod from_dataframe(df: DataFrame) VariableList[source]

Creates a VariableList instance from a pandas DataFrame instance.

The DataFrame instance is expected to have column names “name” + some keys among the ones given by Variable.get_openmdao_keys().

Parameters

df – a DataFrame instance

Returns

a VariableList instance

classmethod from_problem(problem: Problem, use_initial_values: bool = False, get_promoted_names: bool = True, promoted_only: bool = True, io_status: str = 'all') VariableList[source]

Creates a VariableList instance containing inputs and outputs of an OpenMDAO Problem.

The inputs (is_input=True) correspond to the variables of IndepVarComp components and all the unconnected variables.

Note

Variables from _auto_ivc are ignored.

Parameters
  • problem – OpenMDAO Problem instance to inspect

  • use_initial_values – if True, or if problem has not been run, returned instance will contain values before computation

  • get_promoted_names – if True, promoted names will be returned instead of absolute ones (if no promotion, absolute name will be returned)

  • promoted_only – if True, only promoted variable names will be returned

  • io_status – to choose with type of variable we return (“all”, “inputs, “outputs”)

Returns

VariableList instance

classmethod from_unconnected_inputs(problem: Problem, with_optional_inputs: bool = False) VariableList[source]

Creates a VariableList instance containing unconnected inputs of an OpenMDAO Problem.

Warning

problem.setup() must have been run.

If optional_inputs is False, only inputs that have numpy.nan as default value (hence considered as mandatory) will be in returned instance. Otherwise, all unconnected inputs will be in returned instance.

Parameters
  • problem – OpenMDAO Problem instance to inspect

  • with_optional_inputs – If True, returned instance will contain all unconnected inputs. Otherwise, it will contain only mandatory ones.

Returns

VariableList instance