VertexCFD  0.0-dev
VertexCFD_Closure_ConductionVolumetricSource.hpp
1 #ifndef VERTEXCFD_CLOSURE_CONDUCTIONVOLUMETRICSOURCE_HPP
2 #define VERTEXCFD_CLOSURE_CONDUCTIONVOLUMETRICSOURCE_HPP
3 
4 #include <Panzer_Dimension.hpp>
5 #include <Panzer_Evaluator_WithBaseImpl.hpp>
6 #include <Panzer_IntegrationRule.hpp>
7 
8 #include <Phalanx_Evaluator_Derived.hpp>
9 #include <Phalanx_KokkosDeviceTypes.hpp>
10 #include <Phalanx_MDField.hpp>
11 
12 #include <Kokkos_Core.hpp>
13 
14 #include <string>
15 
16 namespace VertexCFD
17 {
18 namespace ClosureModel
19 {
20 //---------------------------------------------------------------------------//
21 // Volumetric source/sink for conduction.
22 //---------------------------------------------------------------------------//
23 
35 template<class EvalType, class Traits>
37  : public panzer::EvaluatorWithBaseImpl<Traits>,
38  public PHX::EvaluatorDerived<EvalType, Traits>
39 {
40  public:
41  using scalar_type = typename EvalType::ScalarT;
42 
55  ConductionVolumetricSource(const panzer::IntegrationRule& ir,
56  const Teuchos::ParameterList& closure_params);
57 
67  void postRegistrationSetup(typename Traits::SetupData sd,
68  PHX::FieldManager<Traits>& fm) override;
69 
79  void evaluateFields(typename Traits::EvalData workset) override;
80 
89  KOKKOS_INLINE_FUNCTION
90  void operator()(
91  const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team) const;
92 
99  PHX::MDField<scalar_type, panzer::Cell, panzer::Point> _source;
100 
101  private:
103  int _num_space_dim;
104 
106  int _ir_degree;
107 
109  double _q;
110 
112  double _x_left;
113 
115  double _x_right;
116 
118  int _ir_index;
119 
121  PHX::MDField<const double, panzer::Cell, panzer::Point, panzer::Dim> _ip_coords;
122 
124  enum HeatSourceType
125  {
127  constant,
129  xlinear
130  };
131 
133  HeatSourceType _heat_source_type;
134 };
135 
136 //---------------------------------------------------------------------------//
137 
138 } // end namespace ClosureModel
139 } // end namespace VertexCFD
140 
141 #endif // end VERTEXCFD_CLOSURE_CONDUCTIONVOLUMETRICSOURCE_HPP
VertexCFD::ClosureModel::ConductionVolumetricSource::evaluateFields
void evaluateFields(typename Traits::EvalData workset) override
Compute the source term at each integration point.
Definition: VertexCFD_Closure_ConductionVolumetricSource_impl.hpp:62
VertexCFD
Definition: tstMethodManufacturedSolutionBC.cpp:23
VertexCFD::ClosureModel::ConductionVolumetricSource
Evaluator that adds a volumetric heat source (or sink) to the energy equation for conduction problems...
Definition: VertexCFD_Closure_ConductionVolumetricSource.hpp:39
VertexCFD::ClosureModel::ConductionVolumetricSource::operator()
KOKKOS_INLINE_FUNCTION void operator()(const Kokkos::TeamPolicy< PHX::exec_space >::member_type &team) const
Kokkos functor for parallel evaluation over teams.
Definition: VertexCFD_Closure_ConductionVolumetricSource_impl.hpp:75
VertexCFD::ClosureModel::ConductionVolumetricSource::ConductionVolumetricSource
ConductionVolumetricSource(const panzer::IntegrationRule &ir, const Teuchos::ParameterList &closure_params)
Constructor.
Definition: VertexCFD_Closure_ConductionVolumetricSource_impl.hpp:15
VertexCFD::ClosureModel::ConductionVolumetricSource::_source
PHX::MDField< scalar_type, panzer::Cell, panzer::Point > _source
MDField that holds the evaluated source term.
Definition: VertexCFD_Closure_ConductionVolumetricSource.hpp:99
VertexCFD::ClosureModel::ConductionVolumetricSource::postRegistrationSetup
void postRegistrationSetup(typename Traits::SetupData sd, PHX::FieldManager< Traits > &fm) override
Register fields with the FieldManager after construction.
Definition: VertexCFD_Closure_ConductionVolumetricSource_impl.hpp:54