43 #ifndef __Panzer_STK_ParameterListCallbackBlocked_hpp__ 44 #define __Panzer_STK_ParameterListCallbackBlocked_hpp__ 46 #ifdef PANZER_HAVE_TEKO 48 #include "Teuchos_RCP.hpp" 49 #include "Teuchos_ParameterList.hpp" 51 #include "Teko_RequestCallback.hpp" 63 template <
typename GO>
class STKConnManager;
69 template <
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename Node=panzer::TpetraNodeType>
70 class ParameterListCallbackBlocked :
public Teko::RequestCallback<Teuchos::RCP<Teuchos::ParameterList> > {
76 Teuchos::RCP<Teuchos::ParameterList> request(
const Teko::RequestMesg & rm);
78 bool handlesRequest(
const Teko::RequestMesg & rm);
80 void preRequest(
const Teko::RequestMesg & rm);
84 bool isField(
const std::string&
field)
const 88 std::vector<Teuchos::RCP<panzer::UniqueGlobalIndexer<int, GlobalOrdinalT>>>
89 fieldDOFMngrs = blocked_ugi_->getFieldDOFManagers();
90 for (
int b(0); b < static_cast<int>(fieldDOFMngrs.size()); ++b)
92 for (
int f(0); f < fieldDOFMngrs[b]->getNumFields(); ++f)
94 if (fieldDOFMngrs[b]->getFieldString(f) ==
field)
99 return (aux_blocked_ugi_->getFieldNum(
field) != -1);
101 return (blocked_ugi_->getFieldNum(
field) != -1);
104 void buildArrayToVectorTpetra(
int block,
const std::string &
field,
const bool useAux =
false);
105 void buildArrayToVectorEpetra(
int block,
const std::string &
field,
const bool useAux =
false);
106 void buildCoordinatesTpetra(
const std::string &
field,
const bool useAux =
false);
107 void buildCoordinatesEpetra(
const std::string &
field,
const bool useAux =
false);
110 std::string getHandledField(
const Teuchos::ParameterList & pl)
const;
112 void setFieldByKey(
const std::string & key,
const std::string &
field,Teuchos::ParameterList & pl)
const;
116 const std::vector<double> & getCoordinateByField(
int dim,
const std::string &
field)
const;
120 Teuchos::RCP<const panzer::Intrepid2FieldPattern> getFieldPattern(
const std::string & fieldName,
const bool useAux =
false)
const;
123 Teuchos::RCP<const panzer_stk::STKConnManager<GlobalOrdinalT> > connManager_;
124 Teuchos::RCP<const panzer::BlockedDOFManager<int,GlobalOrdinalT> > blocked_ugi_;
125 Teuchos::RCP<const panzer::BlockedDOFManager<int,GlobalOrdinalT> > aux_blocked_ugi_;
127 std::map<std::string,Teuchos::RCP<const panzer::Intrepid2FieldPattern> > fieldPatterns_;
131 std::map<std::string,std::vector<double> > xcoords_;
132 std::map<std::string,std::vector<double> > ycoords_;
133 std::map<std::string,std::vector<double> > zcoords_;
135 mutable std::map<std::string,Teuchos::RCP<const panzer::ArrayToFieldVector<LocalOrdinalT,GlobalOrdinalT,Node> > > arrayToVectorTpetra_;
136 mutable std::map<std::string,Teuchos::RCP<const panzer::ArrayToFieldVectorEpetra<LocalOrdinalT,GlobalOrdinalT,Node> > > arrayToVectorEpetra_;
138 Teuchos::RCP<Tpetra::MultiVector<double,int,GlobalOrdinalT,Node> > coordsVecTp_;
139 Teuchos::RCP<Epetra_MultiVector> coordsVecEp_;
141 bool returnTpetraObjects_;
149 #endif // PANZER_HAVE_TEKO
PHX::MDField< ScalarT, panzer::Cell, panzer::BASIS > field
A field to which we'll contribute, or in which we'll store, the result of computing this integral...