def _setup_variables(self, compute_indices=False):
        self._params_dict = params_dict = OrderedDict()
        self._unknowns_dict = unknowns_dict = OrderedDict()

        self._sysdata._params_dict = params_dict
        self._sysdata._unknowns_dict = unknowns_dict

        self._data_xfer = OrderedDict()

        to_prom_name = self._sysdata.to_prom_name = {}
        to_abs_uname = self._sysdata.to_abs_uname = {}
        to_abs_pnames = self._sysdata.to_abs_pnames = OrderedDict()
        to_prom_uname = self._sysdata.to_prom_uname = OrderedDict()
        to_prom_pname = self._sysdata.to_prom_pname = OrderedDict()

        for sub in itervalues(self._subsystems):
            subparams, subunknowns = sub._setup_variables(compute_indices)
            for p, meta in iteritems(subparams):
                prom = self._promoted_name(sub._sysdata.to_prom_pname[p], sub)
                params_dict[p] = meta
                to_abs_pnames.setdefault(prom, []).append(p)
                to_prom_pname[p] = prom

            for u, meta in iteritems(subunknowns):
                prom = self._promoted_name(sub._sysdata.to_prom_uname[u], sub)
                unknowns_dict[u] = meta
                if prom in to_abs_uname:
                    raise RuntimeError("'%s': promoted name '%s' matches "
                                       "multiple unknowns: %s" %
                                       (self.pathname, prom,
                                        (to_abs_uname[prom], u)))

                to_abs_uname[prom] = u
                to_prom_uname[u] = prom

            to_prom_name.update(to_prom_uname)
            to_prom_name.update(to_prom_pname)

            # check for any promotes that didn't match a variable
            sub._check_promotes()

        return self._params_dict, self._unknowns_dict
Create dictionaries of metadata for parameters and for unknowns for
dataset/ETHPy150Open OpenMDAO/OpenMDAO/openmdao/core/group.py/Group._setup_variables