Ifpack2 Templated Preconditioning Package  Version 1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
List of all members
Ifpack2::Details::MultiVectorLocalGatherScatter< MV_in, MV_out > Class Template Reference

Implementation detail of Ifpack2::Container subclasses. More...

#include <Ifpack2_Details_MultiVectorLocalGatherScatter.hpp>

Detailed Description

template<class MV_in, class MV_out>
class Ifpack2::Details::MultiVectorLocalGatherScatter< MV_in, MV_out >

Implementation detail of Ifpack2::Container subclasses.

Warning
This is an implementation detail of subclasses of Container. This class may cease to exist or change its interface at any time.

DenseContainer and SparseContainer use this class to copy data between the input ordering of the global operator's domain and range (of apply() and weightedApply()), and the ordering of the local operator. The latter ordering is a permuted subset of the former. Hence, we've chosen the terms "gather" and "scatter" to refer to the copy operation to resp. from the local operator's ordering.

MV_in and MV_out are possibly different specializations of Tpetra::MultiVector. MV_in corresponds to the input and output arguments of apply() and weightedApply() in Container, and MV_out to the input and output arguments of the local operator. The two specializations of Tpetra::MultiVector may have entirely different template parameters, even different Scalar, LocalOrdinal, or GlobalOrdinal types. This is a good way to experiment with mixed-precision computation, for example. Since MV_in and MV_out may be different types, it makes sense to implement "local gather / scatter" as a separate class that uses the public interface of Tpetra::MultiVector, rather than an instance method (which would have to be templated).


The documentation for this class was generated from the following file: