1 #ifndef VERTEXCFD_BOUNDARYCONDITION_BOUNDARYFLUXBASE_HPP
2 #define VERTEXCFD_BOUNDARYCONDITION_BOUNDARYFLUXBASE_HPP
4 #include <Panzer_BCStrategy.hpp>
5 #include <Panzer_Evaluator_WithBaseImpl.hpp>
6 #include <Panzer_GlobalDataAcceptor_DefaultImpl.hpp>
7 #include <Panzer_PhysicsBlock.hpp>
8 #include <Panzer_Traits.hpp>
10 #include <Phalanx_Evaluator_WithBaseImpl.hpp>
11 #include <Phalanx_FieldManager.hpp>
12 #include <Phalanx_MDField.hpp>
14 #include <Teuchos_RCP.hpp>
18 namespace BoundaryCondition
21 template<
class EvalType,
int NumSpaceDim>
23 public panzer::GlobalDataAcceptorDefaultImpl,
24 public panzer::EvaluatorWithBaseImpl<panzer::Traits>
28 static constexpr
int num_space_dim = NumSpaceDim;
31 const Teuchos::RCP<panzer::GlobalData>& global_data);
33 virtual void setup(
const panzer::PhysicsBlock& side_pb,
34 const Teuchos::ParameterList& user_data)
37 virtual void buildAndRegisterEvaluators(
38 PHX::FieldManager<panzer::Traits>& fm,
39 const panzer::PhysicsBlock& side_pb,
40 const panzer::ClosureModelFactory_TemplateManager<panzer::Traits>& factory,
41 const Teuchos::ParameterList& models,
42 const Teuchos::ParameterList& user_data)
const
45 virtual void buildAndRegisterScatterEvaluators(
46 PHX::FieldManager<panzer::Traits>& fm,
47 const panzer::PhysicsBlock& side_pb,
48 const panzer::LinearObjFactory<panzer::Traits>& lof,
49 const Teuchos::ParameterList& user_data)
const
52 virtual void buildAndRegisterGatherAndOrientationEvaluators(
53 PHX::FieldManager<panzer::Traits>& fm,
54 const panzer::PhysicsBlock& side_pb,
55 const panzer::LinearObjFactory<panzer::Traits>& lof,
56 const Teuchos::ParameterList& user_data)
const
59 virtual void postRegistrationSetup(
typename panzer::Traits::SetupData d,
60 PHX::FieldManager<panzer::Traits>& vm)
63 virtual void evaluateFields(
typename panzer::Traits::EvalData d) = 0;
66 void initialize(
const panzer::PhysicsBlock& side_pb,
67 std::unordered_map<std::string, std::string>& dof_eq_map);
69 void getModelID(
const Teuchos::ParameterList& bc_params,
70 const panzer::PhysicsBlock& side_pb,
71 std::string& model_id,
72 Teuchos::ParameterList& side_pb_list)
const;
75 const std::string& dof_name)
const;
77 void registerDOFsGradient(PHX::FieldManager<panzer::Traits>& fm,
78 const panzer::PhysicsBlock& side_pb,
79 const std::string& dof_name)
const;
81 void registerSideNormals(PHX::FieldManager<panzer::Traits>& fm,
82 const panzer::PhysicsBlock& side_pb)
const;
84 void registerConvectionTypeFluxOperator(
85 std::pair<const std::string, std::string> dof_eq_pair,
86 std::unordered_map<std::string, std::vector<std::string>>& eq_vct_map,
87 const std::string& closure_name,
88 PHX::FieldManager<panzer::Traits>& fm,
89 const panzer::PhysicsBlock& side_pb,
90 const double& multiplier)
const;
92 void registerPenaltyAndViscousGradientOperator(
93 std::pair<const std::string, std::string> dof_eq_pair,
94 PHX::FieldManager<panzer::Traits>& fm,
95 const panzer::PhysicsBlock& side_pb,
96 const Teuchos::ParameterList& bc_params)
const;
98 void registerViscousTypeFluxOperator(
99 std::pair<const std::string, std::string> dof_eq_pair,
100 std::unordered_map<std::string, std::vector<std::string>>& eq_vct_map,
101 const std::string closure_name,
102 PHX::FieldManager<panzer::Traits>& fm,
103 const panzer::PhysicsBlock& side_pb,
104 const double& multiplier)
const;
106 void registerResidual(
107 std::pair<const std::string, std::string> dof_eq_pair,
108 std::unordered_map<std::string, std::vector<std::string>>& eq_vct_map,
109 PHX::FieldManager<panzer::Traits>& fm,
110 const panzer::PhysicsBlock& side_pb)
const;
113 std::pair<const std::string, std::string> dof_eq_pair,
114 PHX::FieldManager<panzer::Traits>& fm,
115 const panzer::PhysicsBlock& side_pb,
116 const panzer::LinearObjFactory<panzer::Traits>& lof)
const;
118 auto integrationRule()
const {
return _ir; }
121 std::string _model_id;
122 Teuchos::ParameterList _side_pb_list;
123 Teuchos::ParameterList _bc_params;
124 std::unordered_map<std::string, std::string> bnd_prefix;
125 std::unordered_map<std::string, Teuchos::RCP<panzer::PureBasis>>
129 Teuchos::RCP<panzer::IntegrationRule> _ir;
137 #endif // end VERTEXCFD_BOUNDARYCONDITION_BOUNDARYFLUXBASE_HPP