Panzer  Version of the Day
Panzer_ResponseEvaluatorFactory_Functional.hpp
Go to the documentation of this file.
1 #ifndef __Panzer_ResponseEvaluatorFactory_Functional_hpp__
2 #define __Panzer_ResponseEvaluatorFactory_Functional_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 
24  ResponseEvaluatorFactory_Functional(MPI_Comm comm, int cubatureDegree=1,bool requiresCellIntegral=true,const std::string & quadPointField="",
25  const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & linearObjFactory=Teuchos::null,
26  bool applyDirichletToDerivative=false)
27  : comm_(comm), cubatureDegree_(cubatureDegree), requiresCellIntegral_(requiresCellIntegral)
28  , quadPointField_(quadPointField), linearObjFactory_(linearObjFactory)
29  , applyDirichletToDerivative_(applyDirichletToDerivative)
30  { }
31 
33 
43  virtual Teuchos::RCP<ResponseBase> buildResponseObject(const std::string & responseName) const;
44 
45  virtual Teuchos::RCP<ResponseBase> buildResponseObject(const std::string & responseName,
46  const std::vector<WorksetDescriptor> & wkstDesc) const
47  { return buildResponseObject(responseName); }
48 
60  virtual void buildAndRegisterEvaluators(const std::string & responseName,
62  const panzer::PhysicsBlock & physicsBlock,
63  const Teuchos::ParameterList & user_data) const;
64 
72  virtual bool typeSupported() const;
73 
74 protected:
76  int getCubatureDegree() const { return cubatureDegree_; }
77 
78 private:
79  MPI_Comm comm_;
82  std::string quadPointField_;
83  Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > linearObjFactory_;
85 };
86 
87 template <typename LO,typename GO>
89  MPI_Comm comm;
92  std::string quadPointField;
93  bool applyDirichletToDerivative; // if this is set to true, then the dirichlet values will be zerod out in
94  // the DgDx vector
95 
97 
99 
100  void setDerivativeInformation(const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & in_linearObjFactory)
101  {
102  linearObjFactory = in_linearObjFactory;
103  }
104 
105  template <typename T>
106  Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> build() const
109 
110  virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildValueFactory() const
111  { return build<panzer::Traits::Residual>(); }
112 
113  virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildDerivativeFactory() const
114  { return build<panzer::Traits::Jacobian>(); }
115 
116  virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildTangentFactory() const
117  { return build<panzer::Traits::Tangent>(); }
118 
119 #ifdef Panzer_BUILD_HESSIAN_SUPPORT
120  virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildHessianFactory() const
121  { return build<panzer::Traits::Hessian>(); }
122 #endif
123 
124 private:
125  Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > linearObjFactory;
126 };
127 
128 
129 }
130 
132 
133 #endif
virtual Teuchos::RCP< ResponseBase > buildResponseObject(const std::string &responseName, const std::vector< WorksetDescriptor > &wkstDesc) const
void setDerivativeInformation(const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &in_linearObjFactory)
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildDerivativeFactory() const
Object that contains information on the physics and discretization of a block of elements with the SA...
int getCubatureDegree() const
Accessor method for Cubature degree (can be used by sub classes)
ResponseEvaluatorFactory_Functional(MPI_Comm comm, int cubatureDegree=1, bool requiresCellIntegral=true, const std::string &quadPointField="", const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &linearObjFactory=Teuchos::null, bool applyDirichletToDerivative=false)
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildValueFactory() const
virtual void buildAndRegisterEvaluators(const std::string &responseName, PHX::FieldManager< panzer::Traits > &fm, const panzer::PhysicsBlock &physicsBlock, const Teuchos::ParameterList &user_data) const
Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > linearObjFactory_
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildTangentFactory() const
Teuchos::RCP< const Teuchos::Comm< int > > comm
Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > build() const
virtual Teuchos::RCP< ResponseBase > buildResponseObject(const std::string &responseName) const
Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > linearObjFactory