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" 62 template <
typename GO>
class STKConnManager;
68 template <
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename Node=panzer::TpetraNodeType>
69 class ParameterListCallbackBlocked :
public Teko::RequestCallback<Teuchos::RCP<Teuchos::ParameterList> > {
74 Teuchos::RCP<Teuchos::ParameterList> request(
const Teko::RequestMesg & rm);
76 bool handlesRequest(
const Teko::RequestMesg & rm);
78 void preRequest(
const Teko::RequestMesg & rm);
82 bool isField(
const std::string &
field)
const 83 {
return blocked_ugi_->getFieldNum(
field) != -1; }
85 void buildCoordinates(
const std::string &
field);
86 void buildArrayToVector(
int block,
const std::string &
field);
89 std::string getHandledField(
const Teuchos::ParameterList & pl)
const;
91 void setFieldByKey(
const std::string & key,
const std::string &
field,Teuchos::ParameterList & pl)
const;
95 const std::vector<double> & getCoordinateByField(
int dim,
const std::string &
field)
const;
99 Teuchos::RCP<const panzer::Intrepid2FieldPattern> getFieldPattern(
const std::string & fieldName)
const;
102 Teuchos::RCP<const panzer_stk::STKConnManager<GlobalOrdinalT> > connManager_;
103 Teuchos::RCP<const panzer::BlockedDOFManager<int,GlobalOrdinalT> > blocked_ugi_;
105 std::map<std::string,Teuchos::RCP<const panzer::Intrepid2FieldPattern> > fieldPatterns_;
109 std::map<std::string,std::vector<double> > xcoords_;
110 std::map<std::string,std::vector<double> > ycoords_;
111 std::map<std::string,std::vector<double> > zcoords_;
113 mutable std::map<std::string,Teuchos::RCP<const panzer::ArrayToFieldVector<LocalOrdinalT,GlobalOrdinalT,Node> > > arrayToVector_;
115 Teuchos::RCP<Tpetra::MultiVector<double,int,GlobalOrdinalT,Node> > coordsVec_;
123 #endif // PANZER_HAVE_TEKO
PHX::MDField< const ScalarT, Cell, IP > field