VertexCFD  0.0-dev
VertexCFD_Closure_ConstantVectorField_impl.hpp
1 #ifndef VERTEXCFD_CLOSURE_CONSTANTVECTORFIELD_IMPL_HPP
2 #define VERTEXCFD_CLOSURE_CONSTANTVECTORFIELD_IMPL_HPP
3 
4 #include "utils/VertexCFD_Utils_VectorField.hpp"
5 
6 #include <Panzer_HierarchicParallelism.hpp>
7 
8 #include <string>
9 
10 namespace VertexCFD
11 {
12 namespace ClosureModel
13 {
14 //---------------------------------------------------------------------------//
15 template<class EvalType, class Traits, int NumSpaceDim>
16 ConstantVectorField<EvalType, Traits, NumSpaceDim>::ConstantVectorField(
17  const panzer::IntegrationRule& ir,
18  const Teuchos::ParameterList& closure_params)
19  : _ir_degree(ir.cubature_degree)
20  , _vec_field_name(closure_params.get<std::string>("Vector Field Name"))
21 {
22  // Get vector field value
23  const auto vector
24  = closure_params.get<Teuchos::Array<double>>("Vector Field Value");
25  for (int dim = 0; dim < num_space_dim; ++dim)
26  {
27  _vector[dim] = vector[dim];
28  }
29 
30  // Evaluated fields
31  Utils::addEvaluatedVectorField(
32  *this, ir.dl_scalar, _vector_field, _vec_field_name + "_");
33 
34  this->setName("Constant Vector Field \"" + _vec_field_name + "_" + "\"");
35 }
36 
37 template<class EvalType, class Traits, int NumSpaceDim>
38 void ConstantVectorField<EvalType, Traits, NumSpaceDim>::evaluateFields(
39  typename Traits::EvalData /* workset */)
40 {
41  for (int dim = 0; dim < num_space_dim; ++dim)
42  Kokkos::deep_copy(_vector_field[dim].get_view(), _vector[dim]);
43 }
44 
45 //---------------------------------------------------------------------------//
46 
47 } // end namespace ClosureModel
48 } // end namespace VertexCFD
49 
50 #endif // end VERTEXCFD_CLOSURE_CONSTANTVECTORFIELD_IMPL_HPP
VertexCFD
Definition: tstMethodManufacturedSolutionBC.cpp:23