Panzer  Version of the Day
Panzer_ResponseEvaluatorFactory_Probe.hpp
Go to the documentation of this file.
1 #ifndef __Panzer_ResponseEvaluatorFactory_Probe_hpp__
2 #define __Panzer_ResponseEvaluatorFactory_Probe_hpp__
3 
4 #include <string>
5 
6 #include "PanzerDiscFE_config.hpp"
8 #include "Panzer_BC.hpp"
9 #include "Panzer_Traits.hpp"
13 
14 #include <mpi.h>
15 
16 namespace panzer {
17 
20 template <typename EvalT,typename LO,typename GO>
22 public:
23 
25  MPI_Comm comm,
26  const Teuchos::Array<double>& point,
27  int fieldComponent = 0,
28  int cubatureDegree=1,
29  const std::string & fieldName="",
30  const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & linearObjFactory=Teuchos::null,
31  const Teuchos::RCP<const panzer::UniqueGlobalIndexer<LO,GO> > & globalIndexer=Teuchos::null,
32  bool applyDirichletToDerivative=false)
33  : comm_(comm), point_(point), fieldComponent_(fieldComponent), cubatureDegree_(cubatureDegree)
34  , fieldName_(fieldName), linearObjFactory_(linearObjFactory), globalIndexer_(globalIndexer)
35  , applyDirichletToDerivative_(applyDirichletToDerivative)
36  {
37  TEUCHOS_ASSERT((linearObjFactory==Teuchos::null && globalIndexer==Teuchos::null) ||
38  (linearObjFactory!=Teuchos::null && globalIndexer!=Teuchos::null));
39  }
40 
42 
52  virtual Teuchos::RCP<ResponseBase> buildResponseObject(const std::string & responseName) const;
53 
54  virtual Teuchos::RCP<ResponseBase> buildResponseObject(const std::string & responseName,
55  const std::vector<WorksetDescriptor> & wkstDesc) const
56  { return buildResponseObject(responseName); }
57 
69  virtual void buildAndRegisterEvaluators(const std::string & responseName,
71  const panzer::PhysicsBlock & physicsBlock,
72  const Teuchos::ParameterList & user_data) const;
73 
81  virtual bool typeSupported() const;
82 
83 protected:
85  int getCubatureDegree() const { return cubatureDegree_; }
86 
87 private:
88  MPI_Comm comm_;
89  Teuchos::Array<double> point_;
92  std::string fieldName_;
93  Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > linearObjFactory_;
94  Teuchos::RCP<const panzer::UniqueGlobalIndexer<LO,GO> > globalIndexer_;
95  bool applyDirichletToDerivative_; // do we need this???
96 };
97 
98 template <typename LO,typename GO>
100  MPI_Comm comm;
101  Teuchos::Array<double> point;
104  std::string fieldName;
105  bool applyDirichletToDerivative; // if this is set to true, then the dirichlet values will be zerod out in
106  // the DgDx vector
107 
109 
111 
112  void setDerivativeInformation(const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & in_linearObjFactory,
113  const Teuchos::RCP<const panzer::UniqueGlobalIndexer<LO,GO> > & in_globalIndexer)
114  {
115  linearObjFactory = in_linearObjFactory;
116  globalIndexer = in_globalIndexer;
117 
118  TEUCHOS_ASSERT((linearObjFactory==Teuchos::null && globalIndexer==Teuchos::null) ||
119  (linearObjFactory!=Teuchos::null && globalIndexer!=Teuchos::null));
120  }
121 
122  virtual void setDerivativeInformation(const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & in_linearObjFactory)
123  {
124  using Teuchos::rcp_dynamic_cast;
125 
126  setDerivativeInformation(in_linearObjFactory,
127  rcp_dynamic_cast<const panzer::UniqueGlobalIndexer<LO,GO> >(in_linearObjFactory->getDomainGlobalIndexer(),true));
128  }
129 
130  template <typename T>
131  Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> build() const
135 
136  virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildValueFactory() const
137  { return build<panzer::Traits::Residual>(); }
138 
139  virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildDerivativeFactory() const
140  { return build<panzer::Traits::Jacobian>(); }
141 
142  virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildTangentFactory() const
143  { return build<panzer::Traits::Tangent>(); }
144 
145 private:
146  Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > linearObjFactory;
147  Teuchos::RCP<const panzer::UniqueGlobalIndexer<LO,GO> > globalIndexer;
148 };
149 
150 
151 }
152 
154 
155 #endif
virtual Teuchos::RCP< ResponseBase > buildResponseObject(const std::string &responseName, const std::vector< WorksetDescriptor > &wkstDesc) const
ResponseEvaluatorFactory_Probe(MPI_Comm comm, const Teuchos::Array< double > &point, int fieldComponent=0, int cubatureDegree=1, const std::string &fieldName="", const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &linearObjFactory=Teuchos::null, const Teuchos::RCP< const panzer::UniqueGlobalIndexer< LO, GO > > &globalIndexer=Teuchos::null, bool applyDirichletToDerivative=false)
Object that contains information on the physics and discretization of a block of elements with the SA...
Teuchos::RCP< const panzer::UniqueGlobalIndexer< LO, GO > > globalIndexer_
void setDerivativeInformation(const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &in_linearObjFactory, const Teuchos::RCP< const panzer::UniqueGlobalIndexer< LO, GO > > &in_globalIndexer)
virtual void buildAndRegisterEvaluators(const std::string &responseName, PHX::FieldManager< panzer::Traits > &fm, const panzer::PhysicsBlock &physicsBlock, const Teuchos::ParameterList &user_data) const
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildTangentFactory() const
Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > build() const
virtual Teuchos::RCP< ResponseBase > buildResponseObject(const std::string &responseName) const
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildDerivativeFactory() const
int getCubatureDegree() const
Accessor method for Cubature degree (can be used by sub classes)
Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > linearObjFactory
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildValueFactory() const
virtual void setDerivativeInformation(const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &in_linearObjFactory)
Teuchos::RCP< const Teuchos::Comm< int > > comm
Teuchos::RCP< const panzer::UniqueGlobalIndexer< LO, GO > > globalIndexer
Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > linearObjFactory_