def _setup_vectors(self, param_owners, parent,
                       top_unknowns=None, impl=None, alloc_derivs=True):
        """
        Set up local `VecWrappers` to store this component's variables.

        Args
        ----
        param_owners : dict
            a dictionary mapping `System` pathnames to the pathnames of
            parameters they are reponsible for propagating. (ignored)

        parent : `Group`
            The parent `Group`.

        top_unknowns : `VecWrapper`, optional
            the `Problem` level unknowns `VecWrapper`

        impl : an implementation factory, optional
            Specifies the factory object used to create `VecWrapper` objects.

        alloc_derivs : bool(True)
            If True, allocate the derivative vectors.
        """
        self.params = self.unknowns = self.resids = None
        self.dumat, self.dpmat, self.drmat = OrderedDict(), OrderedDict(), OrderedDict()
        self.connections = self._probdata.connections

        relevance = self._probdata.relevance

        if not self.is_active():
            return

        self._setup_prom_map()

        self._impl = impl

        # create map of relative name in parent to relative name in child
        self._relname_map = self._get_relname_map(parent._sysdata.to_prom_name)

        # at the Group level, we create a set of arrays for each variable of
        # interest, and we make them all subviews of the same shared array in
        # order to conserve memory. Components don't actually own their params,
        # so we just use an empty shared array for dp (with an offset of 0)
        self._shared_dp_vec = empty_arr
        self._shared_p_offsets = { None:0 }
        for vois in chain(relevance.inputs, relevance.outputs):
            for voi in vois:
                self._shared_p_offsets[voi] = 0

        # we don't get non-deriv vecs (u, p, r) unless we have a None group,
        # so force their creation here
        self._create_views(top_unknowns, parent, [], None)

        all_vois = set([None])
        if self._probdata.top_lin_gs: # only need voi vecs for lings
            # create storage for the relevant vecwrappers, keyed by
            # variable_of_interest
            for vois in relevance.groups:
                all_vois.update(vois)
                for voi in vois:
                    self._create_views(top_unknowns, parent, [], voi)

        # create params vec entries for any unconnected params
        for meta in itervalues(self._params_dict):
            pathname = meta['pathname']
            name = self._sysdata._scoped_abs_name(pathname)
            if name not in self.params:
                self.params._add_unconnected_var(pathname, meta)
dataset/ETHPy150Open OpenMDAO/OpenMDAO/openmdao/core/component.py/Component._setup_vectors/original