Panzer Version of the Day
Loading...
Searching...
No Matches
Panzer_ResponseEvaluatorFactory_Probe.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Panzer: A partial differential equation assembly
4// engine for strongly coupled complex multiphysics systems
5//
6// Copyright 2011 NTESS and the Panzer contributors.
7// SPDX-License-Identifier: BSD-3-Clause
8// *****************************************************************************
9// @HEADER
10
11#ifndef __Panzer_ResponseEvaluatorFactory_Probe_hpp__
12#define __Panzer_ResponseEvaluatorFactory_Probe_hpp__
13
14#include <string>
15
16#include "PanzerDiscFE_config.hpp"
18#include "Panzer_BC.hpp"
19#include "Panzer_Traits.hpp"
23
24#include <mpi.h>
25
26namespace panzer {
27
30template <typename EvalT,typename LO,typename GO>
32public:
33
35 MPI_Comm comm,
36 const Teuchos::Array<double>& point,
37 int fieldComponent = 0,
38 int cubatureDegree=1,
39 const std::string & fieldName="",
40 const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & linearObjFactory=Teuchos::null,
41 const Teuchos::RCP<const panzer::GlobalIndexer> & globalIndexer=Teuchos::null,
42 bool applyDirichletToDerivative=false)
43 : comm_(comm), point_(point), fieldComponent_(fieldComponent), cubatureDegree_(cubatureDegree)
44 , fieldName_(fieldName), linearObjFactory_(linearObjFactory), globalIndexer_(globalIndexer)
45 , applyDirichletToDerivative_(applyDirichletToDerivative)
46 {
47 TEUCHOS_ASSERT((linearObjFactory==Teuchos::null && globalIndexer==Teuchos::null) ||
48 (linearObjFactory!=Teuchos::null && globalIndexer!=Teuchos::null));
49 }
50
52
62 virtual Teuchos::RCP<ResponseBase> buildResponseObject(const std::string & responseName) const;
63
64 virtual Teuchos::RCP<ResponseBase> buildResponseObject(const std::string & responseName,
65 const std::vector<WorksetDescriptor> & wkstDesc) const
66 { return buildResponseObject(responseName); }
67
79 virtual void buildAndRegisterEvaluators(const std::string & responseName,
81 const panzer::PhysicsBlock & physicsBlock,
82 const Teuchos::ParameterList & user_data) const;
83
91 virtual bool typeSupported() const;
92
93protected:
95 int getCubatureDegree() const { return cubatureDegree_; }
96
97private:
98 MPI_Comm comm_;
99 Teuchos::Array<double> point_;
102 std::string fieldName_;
103 Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > linearObjFactory_;
104 Teuchos::RCP<const panzer::GlobalIndexer> globalIndexer_;
105 bool applyDirichletToDerivative_; // do we need this???
106};
107
108template <typename LO,typename GO>
110 MPI_Comm comm;
111 Teuchos::Array<double> point;
114 std::string fieldName;
115 bool applyDirichletToDerivative; // if this is set to true, then the dirichlet values will be zerod out in
116 // the DgDx vector
117
119
121
122 void setDerivativeInformation(const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & in_linearObjFactory,
123 const Teuchos::RCP<const panzer::GlobalIndexer> & in_globalIndexer)
124 {
125 linearObjFactory = in_linearObjFactory;
126 globalIndexer = in_globalIndexer;
127
128 TEUCHOS_ASSERT((linearObjFactory==Teuchos::null && globalIndexer==Teuchos::null) ||
129 (linearObjFactory!=Teuchos::null && globalIndexer!=Teuchos::null));
130 }
131
132 virtual void setDerivativeInformation(const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & in_linearObjFactory)
133 {
134 using Teuchos::rcp_dynamic_cast;
135
136 setDerivativeInformation(in_linearObjFactory,
137 rcp_dynamic_cast<const panzer::GlobalIndexer>(in_linearObjFactory->getDomainGlobalIndexer(),true));
138 }
139
140 template <typename T>
141 Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> build() const
145
146 virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildValueFactory() const
148
149 virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildDerivativeFactory() const
151
152 virtual Teuchos::RCP<panzer::ResponseEvaluatorFactoryBase> buildTangentFactory() const
154
155private:
156 Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > linearObjFactory;
157 Teuchos::RCP<const panzer::GlobalIndexer> globalIndexer;
158};
159
160
161}
162
164
165#endif
Object that contains information on the physics and discretization of a block of elements with the SA...
Teuchos::RCP< const panzer::GlobalIndexer > globalIndexer_
int getCubatureDegree() const
Accessor method for Cubature degree (can be used by sub classes)
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< ResponseBase > buildResponseObject(const std::string &responseName, const std::vector< WorksetDescriptor > &wkstDesc) const
Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > linearObjFactory_
virtual Teuchos::RCP< ResponseBase > buildResponseObject(const std::string &responseName) 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::GlobalIndexer > &globalIndexer=Teuchos::null, bool applyDirichletToDerivative=false)
Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > ResponseMESupportBuilderBase::build< panzer::Traits::Tangent >() const
Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > ResponseMESupportBuilderBase::build< panzer::Traits::Residual >() const
Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > ResponseMESupportBuilderBase::build< panzer::Traits::Jacobian >() const
Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > build() const
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildDerivativeFactory() const
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildValueFactory() const
void setDerivativeInformation(const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &in_linearObjFactory, const Teuchos::RCP< const panzer::GlobalIndexer > &in_globalIndexer)
virtual Teuchos::RCP< panzer::ResponseEvaluatorFactoryBase > buildTangentFactory() const
Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > linearObjFactory
Teuchos::RCP< const panzer::GlobalIndexer > globalIndexer
virtual void setDerivativeInformation(const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &in_linearObjFactory)