VertexCFD  0.0-dev
VertexCFD_PhysicsManager.hpp
1 #ifndef VERTEXCFD_PHYSICSMANAGER_HPP
2 #define VERTEXCFD_PHYSICSMANAGER_HPP
3 
4 #include "VertexCFD_MeshManager.hpp"
5 
6 #include "parameters/VertexCFD_ParameterDatabase.hpp"
7 
8 #include <Panzer_BCStrategy_Factory.hpp>
9 #include <Panzer_ClosureModel_Factory.hpp>
10 #include <Panzer_EquationSet_Factory.hpp>
11 #include <Panzer_EquationSet_Factory_Composite.hpp>
12 #include <Panzer_GlobalData.hpp>
13 #include <Panzer_GlobalIndexer.hpp>
14 #include <Panzer_LinearObjFactory.hpp>
15 #include <Panzer_ModelEvaluator.hpp>
16 #include <Panzer_PhysicsBlock.hpp>
17 #include <Panzer_WorksetContainer.hpp>
18 
19 #include <Teuchos_RCP.hpp>
20 
21 #include <type_traits>
22 #include <unordered_map>
23 #include <vector>
24 
25 namespace VertexCFD
26 {
27 //---------------------------------------------------------------------------//
29 {
30  public:
31  template<int NumSpaceDim>
32  PhysicsManager(const std::integral_constant<int, NumSpaceDim>&,
33  const Teuchos::RCP<Parameter::ParameterDatabase>& parameter_db,
34  const Teuchos::RCP<MeshManager>& mesh_manager,
35  const double initial_time = 0.0);
36 
37  // Add a scalar parameter and an initial value for the parameter. Return
38  // the parameter index.
39  int addScalarParameter(const std::string& name, const double value);
40 
41  // Get the index of a parameter with the given name.
42  int getParameterIndex(const std::string& name) const;
43 
44  // Setup the model after all physics responses and parameters have been
45  // added.
46  void setupModel();
47 
48  // Data accessors.
49  Teuchos::RCP<MeshManager> meshManager() const;
50  Teuchos::RCP<panzer::GlobalData> globalData() const;
51  Teuchos::RCP<panzer::EquationSetFactory> equationSetFactory() const;
52  const std::vector<Teuchos::RCP<panzer::PhysicsBlock>>&
53  physicsBlocks() const;
54  int integrationOrder() const;
55  Teuchos::RCP<panzer::GlobalIndexer> dofManager() const;
56  Teuchos::RCP<panzer::LinearObjFactory<panzer::Traits>>
57  linearObjectFactory() const;
58  Teuchos::RCP<panzer::WorksetContainer> worksetContainer() const;
59  const std::vector<panzer::BC>& boundaryConditions() const;
60  Teuchos::RCP<panzer::BCStrategyFactory> boundaryConditionFactory() const;
61  Teuchos::RCP<panzer::ClosureModelFactory_TemplateManager<panzer::Traits>>
62  closureModelFactory() const;
63  Teuchos::RCP<panzer::ModelEvaluator<double>> modelEvaluator() const;
64 
65  private:
66  Teuchos::RCP<Parameter::ParameterDatabase> _parameter_db;
67  Teuchos::RCP<MeshManager> _mesh_manager;
68  double _t_init;
69  Teuchos::RCP<panzer::GlobalData> _global_data;
70  Teuchos::RCP<panzer::EquationSet_FactoryComposite> _eq_set_factory;
71  std::vector<Teuchos::RCP<panzer::PhysicsBlock>> _physics_blocks;
72  int _integration_order;
73  Teuchos::RCP<panzer::GlobalIndexer> _dof_manager;
74  Teuchos::RCP<panzer::LinearObjFactory<panzer::Traits>> _linear_object_factory;
75  Teuchos::RCP<panzer::WorksetContainer> _workset_container;
76  std::vector<panzer::BC> _boundary_conditions;
77  Teuchos::RCP<panzer::BCStrategyFactory> _bc_factory;
78  Teuchos::RCP<panzer::ClosureModelFactory_TemplateManager<panzer::Traits>>
79  _cm_factory;
80  Teuchos::RCP<panzer::ModelEvaluator<double>> _model_evaluator;
81  std::unordered_map<std::string, int> _parameter_indices;
82 };
83 
84 } // end namespace VertexCFD
85 
86 #endif // end VERTEXCFD_PHYSICSMANAGER_HPP
VertexCFD
Definition: tstMethodManufacturedSolutionBC.cpp:23
VertexCFD::PhysicsManager
Definition: VertexCFD_PhysicsManager.hpp:29