def METHOD_NAME(self, systems: Sequence):
    """
    This function takes system collection and allocates the vector variables for
    block-structure and references allocated vector variables back to the systems.
    Parameters
    ----------
    systems
    Returns
    -------
    """
    # Things in rigid bodies that are vectors
    #           0 ("position_collection", float64[:,:])
    #           1 ("external_forces", float64[:,:])
    #           2 ("external_torques", float64[:,:])
    map_vector_dofs_in_rigid_bodies = {
        "position_collection": 0,
        "external_forces": 1,
        "external_torques": 2,
    }
    self.vector_dofs_in_rigid_bodies = np.zeros(
        (len(map_vector_dofs_in_rigid_bodies), 3 * self.n_elems)
    )
    for k, v in map_vector_dofs_in_rigid_bodies.items():
        self.__dict__[k] = np.lib.stride_tricks.as_strided(
            self.vector_dofs_in_rigid_bodies[v], (3, self.n_elems)
        )
    for k, v in map_vector_dofs_in_rigid_bodies.items():
        for system_idx, system in enumerate(systems):
            self.__dict__[k][..., system_idx : system_idx + 1] = system.__dict__[
                k
            ].copy()
            system.__dict__[k] = np.ndarray.view(
                self.__dict__[k][..., system_idx : system_idx + 1]
            )