43#ifndef PANZER_FIELD_MANAGER_BUILDER_HPP
44#define PANZER_FIELD_MANAGER_BUILDER_HPP
49#include "Teuchos_RCP.hpp"
59 struct EquationSetFactory;
60 struct BCStrategyFactory;
65 template<
typename T>
class FieldManager;
87 FieldManagerBuilder(
bool disablePhysicsBlockScatter=
false,
bool disablePhysicsBlockGather=
false);
89 void print(std::ostream& os)
const;
103 const std::vector< Teuchos::RCP< PHX::FieldManager<panzer::Traits> > >&
107 Teuchos::RCP< PHX::FieldManager<panzer::Traits> >
111 std::vector<WorksetDescriptor>::const_iterator itr = std::find(wkstDesc.begin(),wkstDesc.end(),wd);
112 TEUCHOS_ASSERT(itr!=wkstDesc.end());
115 int index = itr - wkstDesc.begin();
119 const std::vector<WorksetDescriptor> &
123 std::map<unsigned,PHX::FieldManager<panzer::Traits> >,
138 const Teuchos::ParameterList& closure_models,
140 const Teuchos::ParameterList& user_data);
143 const std::vector<WorksetDescriptor> & wkstDesc,
145 const Teuchos::ParameterList& closure_models,
147 const Teuchos::ParameterList& user_data,
149 bool closureModelByEBlock=
false);
154 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
158 const Teuchos::ParameterList& closure_models,
160 const Teuchos::ParameterList& user_data)
161 {
setupBCFieldManagers(bcs,physicsBlocks,Teuchos::ptrFromRef(eqset_factory),cm_factory,bc_factory,closure_models,lo_factory,user_data); }
164 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
167 const Teuchos::ParameterList& closure_models,
169 const Teuchos::ParameterList& user_data)
170 {
setupBCFieldManagers(bcs,physicsBlocks,Teuchos::null,cm_factory,bc_factory,closure_models,lo_factory,user_data); }
173 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks)
const;
178 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks)
const;
192 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
193 const Teuchos::Ptr<const panzer::EquationSetFactory> & eqset_factory,
196 const Teuchos::ParameterList& closure_models,
198 const Teuchos::ParameterList& user_data);
202 const Teuchos::ParameterList& user_data,
206 std::vector< Teuchos::RCP< PHX::FieldManager<panzer::Traits> > >
221 std::map<unsigned,PHX::FieldManager<panzer::Traits> >,
Stores input information for a boundary condition.
bool registerEvaluators(PHX::FieldManager< panzer::Traits > &, const WorksetDescriptor &, const PhysicsBlock &) const
bool disablePhysicsBlockGather_
void setupVolumeFieldManagers(const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_models, const LinearObjFactory< panzer::Traits > &lo_factory, const Teuchos::ParameterList &user_data)
void writeBCGraphvizDependencyFiles(std::string filename_prefix) const
std::vector< bool > active_evaluation_types_
Entries correspond to evaluation type mpl vector in traits. A value of true means the evaluation type...
void setWorksetContainer(const Teuchos::RCP< WorksetContainer > &wc)
const std::vector< Teuchos::RCP< PHX::FieldManager< panzer::Traits > > > & getVolumeFieldManagers() const
void setupBCFieldManagers(const std::vector< panzer::BC > &bcs, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const panzer::BCStrategyFactory &bc_factory, const Teuchos::ParameterList &closure_models, const LinearObjFactory< panzer::Traits > &lo_factory, const Teuchos::ParameterList &user_data)
void writeVolumeGraphvizDependencyFiles(std::string filename_prefix, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks) const
Teuchos::RCP< WorksetContainer > worksetContainer_
std::vector< Teuchos::RCP< PHX::FieldManager< panzer::Traits > > > phx_volume_field_managers_
Phalanx volume field managers for each element block.
void writeBCTextDependencyFiles(std::string filename_prefix) const
std::vector< WorksetDescriptor > volume_workset_desc_
Matches volume field managers so you can determine the appropriate set of worksets for each field man...
const std::map< panzer::BC, std::map< unsigned, PHX::FieldManager< panzer::Traits > >, panzer::LessBC > & getBCFieldManagers() const
std::map< unsigned, panzer::Workset > BCFaceWorksetMap
std::map< panzer::BC, std::map< unsigned, PHX::FieldManager< panzer::Traits > >, panzer::LessBC > bc_field_managers_
Field managers for the boundary conditions.
const std::vector< WorksetDescriptor > & getVolumeWorksetDescriptors() const
void setActiveEvaluationTypes(const std::vector< bool > &aet)
Set a vector of active evaluation types to allocate.
bool physicsBlockGatherDisabled() const
Teuchos::RCP< WorksetContainer > getWorksetContainer() const
bool physicsBlockScatterDisabled() const
void print(std::ostream &os) const
void setupBCFieldManagers(const std::vector< panzer::BC > &bcs, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::EquationSetFactory &eqset_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const panzer::BCStrategyFactory &bc_factory, const Teuchos::ParameterList &closure_models, const LinearObjFactory< panzer::Traits > &lo_factory, const Teuchos::ParameterList &user_data)
Teuchos::RCP< PHX::FieldManager< panzer::Traits > > getVolumeFieldManager(const WorksetDescriptor &wd) const
Look up field manager by an element block ID.
void clearVolumeFieldManagers(bool clearVolumeWorksets=true)
Delete all volume field managers, retaining the BC ones.
void writeVolumeTextDependencyFiles(std::string filename_prefix, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks) const
bool disablePhysicsBlockScatter_
void setKokkosExtendedDataTypeDimensions(const std::string &eblock, const panzer::GlobalIndexer &globalIndexer, const Teuchos::ParameterList &user_data, PHX::FieldManager< panzer::Traits > &fm) const
virtual bool registerEvaluators(PHX::FieldManager< panzer::Traits > &fm, const WorksetDescriptor &wd, const PhysicsBlock &pb) const =0
Object that contains information on the physics and discretization of a block of elements with the SA...
std::ostream & operator<<(std::ostream &os, const AssemblyEngineInArgs &in)
Interface for constructing a BCStrategy_TemplateManager.
Allocates and initializes an equation set template manager.