42 #ifndef TPETRA_FEMULTIVECTOR_DECL_HPP
43 #define TPETRA_FEMULTIVECTOR_DECL_HPP
60 template <
class Scalar = ::Tpetra::Details::DefaultTypes::scalar_type,
62 class GlobalOrdinal = ::Tpetra::Details::DefaultTypes::global_ordinal_type,
65 public MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
68 friend ::Tpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>;
74 typedef Scalar scalar_type;
78 typedef GlobalOrdinal global_ordinal_type;
104 typedef MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> base_type;
119 FEMultiVector(
const Teuchos::RCP<
const Map<LocalOrdinal,GlobalOrdinal,Node> > & map,
120 const Teuchos::RCP<
const Import<LocalOrdinal,GlobalOrdinal,Node> >& importer,
121 const size_t numVecs,
122 const bool zeroOut =
true);
132 void globalAssemble() {endFill();}
137 if(*activeMultiVector_ == FE_ACTIVE_TARGET) {
139 switchActiveMultiVector();
142 throw std::runtime_error(
"FEMultiVector: Source MultiVector already active. Cannot endFill()");
150 if(*activeMultiVector_ == FE_ACTIVE_SOURCE) {
151 switchActiveMultiVector();
167 void switchActiveMultiVector();
181 void replaceMap (
const Teuchos::RCP<const map_type>& map);
192 Teuchos::RCP< MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> > inactiveMultiVector_;
194 Teuchos::RCP<FEWhichActive> activeMultiVector_;
197 Teuchos::RCP<const Import<LocalOrdinal,GlobalOrdinal,Node> > importer_;
205 #endif // TPETRA_FEMULTIVECTOR_DECL_HPP