43 #ifndef __Panzer_LinearObjFactory_hpp__ 44 #define __Panzer_LinearObjFactory_hpp__ 53 #include "Phalanx_Evaluator.hpp" 54 #include "Phalanx_Evaluator_Derived.hpp" 55 #include "Phalanx_TemplateManager.hpp" 58 #include "Teuchos_DefaultMpiComm.hpp" 65 class UniqueGlobalIndexerBase;
102 template <
typename Traits>
122 template <
typename BuilderT>
229 bool zeroVectorRows=
false,
bool adjustX=
false)
const = 0;
247 template <
typename EvalT>
248 Teuchos::RCP<PHX::Evaluator<Traits> >
buildScatter(
const Teuchos::ParameterList & pl)
const 249 {
return Teuchos::rcp_dynamic_cast<PHX::Evaluator<Traits> >(
scatterManager_->template getAsBase<EvalT>()->clone(pl)); }
252 template <
typename EvalT>
253 Teuchos::RCP<PHX::Evaluator<Traits> >
buildGather(
const Teuchos::ParameterList & pl)
const 254 {
return Teuchos::rcp_dynamic_cast<PHX::Evaluator<Traits> >(
gatherManager_->template getAsBase<EvalT>()->clone(pl)); }
257 template <
typename EvalT>
259 {
return Teuchos::rcp_dynamic_cast<PHX::Evaluator<Traits> >(
gatherTangentManager_->template getAsBase<EvalT>()->clone(pl)); }
262 template <
typename EvalT>
263 Teuchos::RCP<PHX::Evaluator<Traits> >
buildGatherDomain(
const Teuchos::ParameterList & pl)
const 264 {
return Teuchos::rcp_dynamic_cast<PHX::Evaluator<Traits> >(
gatherDomainManager_->template getAsBase<EvalT>()->clone(pl)); }
267 template <
typename EvalT>
269 {
return Teuchos::rcp_dynamic_cast<PHX::Evaluator<Traits> >(
gatherOrientManager_->template getAsBase<EvalT>()->clone(pl)); }
272 template <
typename EvalT>
274 {
return Teuchos::rcp_dynamic_cast<PHX::Evaluator<Traits> >(
scatterDirichletManager_->template getAsBase<EvalT>()->clone(pl)); }
292 PHX::EvaluatorDerived<_,Traits> >
303 template <
typename BuilderT>
310 template <
typename EvalT> Teuchos::RCP<panzer::CloneableEvaluator>
build()
const 311 {
return builder_->template buildScatter<EvalT>(); }
314 template <
typename BuilderT>
321 template <
typename EvalT> Teuchos::RCP<panzer::CloneableEvaluator>
build()
const 322 {
return builder_->template buildScatterDirichlet<EvalT>(); }
325 template <
typename BuilderT>
332 template <
typename EvalT> Teuchos::RCP<panzer::CloneableEvaluator>
build()
const 333 {
return builder_->template buildGather<EvalT>(); }
336 template <
typename BuilderT>
343 template <
typename EvalT> Teuchos::RCP<panzer::CloneableEvaluator>
build()
const 344 {
return builder_->template buildGatherTangent<EvalT>(); }
347 template <
typename BuilderT>
354 template <
typename EvalT> Teuchos::RCP<panzer::CloneableEvaluator>
build()
const 355 {
return builder_->template buildGatherDomain<EvalT>(); }
358 template <
typename BuilderT>
365 template <
typename EvalT> Teuchos::RCP<panzer::CloneableEvaluator>
build()
const 366 {
return builder_->template buildGatherOrientation<EvalT>(); }
370 template<
typename Traits>
371 template <
typename BuilderT>
376 using Teuchos::rcpFromRef;
399 #endif // __Panzer_LinearObjFactory_hpp__ Teuchos::RCP< PHX::Evaluator< Traits > > buildScatterDirichlet(const Teuchos::ParameterList &pl) const
Use preconstructed dirichlet scatter evaluators.
virtual Teuchos::MpiComm< int > getComm() const =0
Teuchos::RCP< Evaluator_TemplateManager > gatherManager_
GatherDomain_Builder(const Teuchos::RCP< const BuilderT > &builder)
Teuchos::RCP< panzer::CloneableEvaluator > build() const
Teuchos::RCP< Evaluator_TemplateManager > scatterDirichletManager_
Teuchos::RCP< const BuilderT > builder_
GatherOrientation_Builder(const Teuchos::RCP< const BuilderT > &builder)
Scatter_Builder(const Teuchos::RCP< const BuilderT > &builder)
Teuchos::RCP< panzer::CloneableEvaluator > build() const
virtual void adjustForDirichletConditions(const LinearObjContainer &localBCRows, const LinearObjContainer &globalBCRows, LinearObjContainer &ghostedObjs, bool zeroVectorRows=false, bool adjustX=false) const =0
Teuchos::RCP< const BuilderT > builder_
Teuchos::RCP< PHX::Evaluator< Traits > > buildGatherTangent(const Teuchos::ParameterList &pl) const
Use preconstructed gather evaluators.
Teuchos::RCP< panzer::CloneableEvaluator > build() const
virtual Teuchos::RCP< ReadOnlyVector_GlobalEvaluationData > buildReadOnlyDomainContainer() const =0
Teuchos::RCP< PHX::Evaluator< Traits > > buildGather(const Teuchos::ParameterList &pl) const
Use preconstructed gather evaluators.
virtual Teuchos::RCP< LinearObjContainer > buildPrimitiveGhostedLinearObjContainer() const =0
PHX::MDField< ScalarT, panzer::Cell, panzer::IP > result
A field that will be used to build up the result of the integral we're performing.
Teuchos::RCP< Evaluator_TemplateManager > gatherTangentManager_
Teuchos::RCP< const BuilderT > builder_
virtual void initializeContainer(int, LinearObjContainer &loc) const =0
virtual ~LinearObjFactory()
Teuchos::RCP< panzer::CloneableEvaluator > build() const
Teuchos::RCP< const BuilderT > builder_
virtual void applyDirichletBCs(const LinearObjContainer &counter, LinearObjContainer &result) const =0
virtual Teuchos::RCP< LinearObjContainer > buildLinearObjContainer() const =0
Teuchos::RCP< Evaluator_TemplateManager > gatherOrientManager_
PHX::TemplateManager< typename Traits::EvalTypes, panzer::CloneableEvaluator, PHX::EvaluatorDerived< _, Traits > > Evaluator_TemplateManager
Teuchos::RCP< const BuilderT > builder_
virtual Teuchos::RCP< const panzer::UniqueGlobalIndexerBase > getDomainGlobalIndexer() const =0
Get the domain global indexer object associated with this factory.
virtual Teuchos::RCP< const panzer::UniqueGlobalIndexerBase > getRangeGlobalIndexer() const =0
Get the range global indexer object associated with this factory.
Teuchos::RCP< PHX::Evaluator< Traits > > buildScatter(const Teuchos::ParameterList &pl) const
Use preconstructed scatter evaluators.
virtual void writeVector(const std::string &identifier, const LinearObjContainer &loc, int id) const =0
GatherTangent_Builder(const Teuchos::RCP< const BuilderT > &builder)
PANZER_DEPRECATED Teuchos::RCP< const panzer::UniqueGlobalIndexerBase > getUniqueGlobalIndexerBase() const
Get the range global indexer object associated with this factory.
virtual Teuchos::RCP< WriteVector_GlobalEvaluationData > buildWriteDomainContainer() const =0
virtual void readVector(const std::string &identifier, LinearObjContainer &loc, int id) const =0
Sacado::mpl::vector< Residual, Jacobian, Tangent, Hessian > EvalTypes
Teuchos::RCP< PHX::Evaluator< Traits > > buildGatherDomain(const Teuchos::ParameterList &pl) const
Use preconstructed gather evaluators.
virtual void endFill(LinearObjContainer &) const
Teuchos::RCP< Evaluator_TemplateManager > scatterManager_
Gather_Builder(const Teuchos::RCP< const BuilderT > &builder)
virtual Teuchos::RCP< LinearObjContainer > buildPrimitiveLinearObjContainer() const =0
virtual void globalToGhostContainer(const LinearObjContainer &container, LinearObjContainer &ghostContainer, int) const =0
virtual void initializeGhostedContainer(int, LinearObjContainer &loc) const =0
virtual Teuchos::RCP< LinearObjContainer > buildGhostedLinearObjContainer() const =0
Teuchos::RCP< panzer::CloneableEvaluator > build() const
void buildGatherScatterEvaluators(const BuilderT &builder)
Teuchos::RCP< Evaluator_TemplateManager > gatherDomainManager_
ScatterDirichlet_Builder(const Teuchos::RCP< const BuilderT > &builder)
Non-templated empty base class for template managers.
virtual void ghostToGlobalContainer(const LinearObjContainer &ghostContainer, LinearObjContainer &container, int) const =0
Teuchos::RCP< const BuilderT > builder_
Teuchos::RCP< PHX::Evaluator< Traits > > buildGatherOrientation(const Teuchos::ParameterList &pl) const
Use preconstructed gather evaluators.
virtual void beginFill(LinearObjContainer &) const
Teuchos::RCP< panzer::CloneableEvaluator > build() const