58RCP<TpetraVectorSpace<Scalar,LocalOrdinal,GlobalOrdinal,Node> >
158 if (!tpetraMap_->isDistributed()) {
160 if (tpetraMV_.is_null() || (tpetraMV_->getNumVectors() !=
size_t (
raw_mv.numSubCols()))) {
161 if (!tpetraMV_.is_null())
165 "Cannot use the cached vector simultaneously more than once.");
166 using IST =
typename Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>::impl_scalar_type;
167 using DT =
typename Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>::device_type;
168 auto dv = ::Tpetra::Details::getStatic2dDualView<IST, DT> (tpetraMap_->getGlobalNumElements(),
raw_mv.numSubCols());
169 tpetraMV_ =
Teuchos::rcp(
new Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>(tpetraMap_,
dv));
171 Teuchos::set_extra_data(
inUse,
"inUse",Teuchos::outArg(tpetraMV_));
174 if (tpetraDomainSpace_.is_null() ||
raw_mv.numSubCols() != tpetraDomainSpace_->localSubDim())
175 tpetraDomainSpace_ =
tpetraVectorSpace<Scalar>(Tpetra::createLocalMapWithNode<LocalOrdinal, GlobalOrdinal, Node>(
raw_mv.numSubCols(), tpetraMap_->getComm()));
179 mv = this->createMembers(
raw_mv.numSubCols());
182 Teuchos::set_extra_data(
inUse,
"inUse",Teuchos::outArg(
tmv));
186 mv->acquireDetachedView(Range1D(),Range1D(),&
smv);
187 RTOpPack::assign_entries<Scalar>(
191 mv->commitDetachedView(&
smv);
193 Teuchos::set_extra_data(
196 "CopyTpetraMultiVectorViewBack",
214 if (!tpetraMap_->isDistributed()) {
215 if (tpetraMV_.is_null() || (tpetraMV_->getNumVectors() !=
size_t (
raw_mv.numSubCols()))) {
216 if (!tpetraMV_.is_null())
220 "Cannot use the cached vector simultaneously more than once.");
221 using IST =
typename Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>::impl_scalar_type;
222 using DT =
typename Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>::device_type;
223 auto dv = ::Tpetra::Details::getStatic2dDualView<IST, DT> (tpetraMap_->getGlobalNumElements(),
raw_mv.numSubCols());
224 tpetraMV_ =
Teuchos::rcp(
new Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>(tpetraMap_,
dv));
226 Teuchos::set_extra_data(
inUse,
"inUse",Teuchos::outArg(tpetraMV_));
229 if (tpetraDomainSpace_.is_null() ||
raw_mv.numSubCols() != tpetraDomainSpace_->localSubDim())
230 tpetraDomainSpace_ =
tpetraVectorSpace<Scalar>(Tpetra::createLocalMapWithNode<LocalOrdinal, GlobalOrdinal, Node>(
raw_mv.numSubCols(), tpetraMap_->getComm()));
234 mv = this->createMembers(
raw_mv.numSubCols());
237 Teuchos::set_extra_data(
inUse,
"inUse",Teuchos::outArg(
tmv));
241 mv->acquireDetachedView(Range1D(),Range1D(),&
smv);
242 RTOpPack::assign_entries<Scalar>(
245 mv->commitDetachedView(&
smv);