43 #ifndef __Panzer_ResponseMESupport_Default_impl_hpp__ 44 #define __Panzer_ResponseMESupport_Default_impl_hpp__ 48 #ifdef PANZER_HAVE_EPETRA_STACK 49 template <
typename EvalT>
51 getEpetraVector()
const 53 TEUCHOS_ASSERT(useEpetra());
59 template <
typename EvalT>
63 TEUCHOS_ASSERT(useThyra());
65 Teuchos::ArrayRCP<double> data;
66 Teuchos::rcp_dynamic_cast<Thyra::SpmdVectorBase<double> >(tVector_,
true)->getNonconstLocalData(Teuchos::outArg(data));
71 #ifdef PANZER_HAVE_EPETRA_STACK 72 template <
typename EvalT>
76 TEUCHOS_TEST_FOR_EXCEPTION(useThyra_,std::logic_error,
77 "Reponse field \"" << this->getName() <<
"\" has previously been initialized as a " 78 "Thyra object, now trying to initalize as a Epetra! Error!");
81 if(map_==Teuchos::null) {
82 if(this->vectorIsDistributed())
83 map_ = Teuchos::rcp(
new Epetra_Map(-1,(
int) this->localSizeRequired(),0,eComm_));
85 map_ = Teuchos::rcp(
new Epetra_LocalMap((
int) this->localSizeRequired(),0,eComm_));
91 template <
typename EvalT>
93 setVector(
const Teuchos::RCP<Epetra_Vector> & destVec)
95 TEUCHOS_TEST_FOR_EXCEPTION(useThyra_,std::logic_error,
96 "Reponse field \"" << this->getName() <<
"\" has previously been initialized as a " 97 "Thyra object, now trying to initalize as a Epetra! Error!");
105 template <
typename EvalT>
109 TEUCHOS_TEST_FOR_EXCEPTION(useEpetra_,std::logic_error,
110 "Reponse field \"" << this->getName() <<
"\" has previously been initialized as an " 111 "Epetra object, now trying to initalize as a Thyra object! Error!");
114 if(vSpace_==Teuchos::null) {
115 if(this->vectorIsDistributed())
116 vSpace_ = Thyra::defaultSpmdVectorSpace<double>(tComm_,this->localSizeRequired(),-1);
118 vSpace_ = Thyra::locallyReplicatedDefaultSpmdVectorSpace<double>(tComm_,this->localSizeRequired());
124 template <
typename EvalT>
128 TEUCHOS_TEST_FOR_EXCEPTION(useEpetra_,std::logic_error,
129 "Reponse field \"" << this->getName() <<
"\" has previously been initialized as an " 130 "Epetra object, now trying to initalize as a Thyra object! Error!");
Teuchos::RCP< const Thyra::VectorSpaceBase< double > > getVectorSpace() const
Get the vector space for this response, vector space is constructed lazily.
Thyra::ArrayRCP< double > getThyraVector() const
Access the thyra vector.
void setVector(const Teuchos::RCP< Thyra::VectorBase< double > > &destVec)