Panzer Version of the Day
Loading...
Searching...
No Matches
Panzer_Integrator_GradBasisDotVector_decl.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Panzer: A partial differential equation assembly
4// engine for strongly coupled complex multiphysics systems
5//
6// Copyright 2011 NTESS and the Panzer contributors.
7// SPDX-License-Identifier: BSD-3-Clause
8// *****************************************************************************
9// @HEADER
10
11#ifndef __Panzer_Integrator_GradBasisDotVector_decl_hpp__
12#define __Panzer_Integrator_GradBasisDotVector_decl_hpp__
13
15//
16// Include Files
17//
19
20// C++
21#include <string>
22
23// Panzer
26
27// Phalanx
28#include "Phalanx_Evaluator_Derived.hpp"
29#include "Phalanx_MDField.hpp"
30
31namespace panzer
32{
45 template<typename EvalT, typename Traits>
47 :
48 public panzer::EvaluatorWithBaseImpl<Traits>,
49 public PHX::EvaluatorDerived<EvalT, Traits>
50 {
51 public:
52
95 const std::string& resName,
96 const std::string& fluxName,
97 const panzer::BasisIRLayout& basis,
99 const double& multiplier = 1,
100 const std::vector<std::string>& fmNames =
101 std::vector<std::string>(),
102 const Teuchos::RCP<PHX::DataLayout>& vecDL = Teuchos::null);
103
150 Integrator_GradBasisDotVector(const Teuchos::ParameterList& p,
152
163 void
165 typename Traits::SetupData d,
167
177 void
179 typename Traits::EvalData d);
180
187 template<int NUM_FIELD_MULT>
188 struct FieldMultTag {};
189
195 template<int NUM_FIELD_MULT>
197
214 template<int NUM_FIELD_MULT>
215 KOKKOS_INLINE_FUNCTION
216 void
219 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team) const;
220
237 template<int NUM_FIELD_MULT>
238 KOKKOS_INLINE_FUNCTION
239 void
242 const Kokkos::TeamPolicy<PHX::exec_space>::member_type& team) const;
243
244 private:
245
256 Teuchos::RCP<Teuchos::ParameterList>
257 getValidParameters() const;
258
262 using ScalarT = typename EvalT::ScalarT;
263
265 using scratch_view = Kokkos::View<ScalarT* ,typename PHX::DevLayout<ScalarT>::type,typename PHX::exec_space::scratch_memory_space,Kokkos::MemoryUnmanaged>;
266
277
282 PHX::MDField<ScalarT, panzer::Cell, panzer::BASIS> field_;
283
288 PHX::MDField<const ScalarT, panzer::Cell, panzer::IP, panzer::Dim>
290
296
301 std::vector<PHX::MDField<const ScalarT, panzer::Cell, panzer::IP>>
303
309 PHX::View<PHX::UnmanagedView<const ScalarT**>* > kokkosFieldMults_;
310
314 std::string basisName_;
315
320 std::size_t basisIndex_;
321
326 PHX::MDField<double, panzer::Cell, panzer::BASIS, panzer::IP,
328
330 PHX::View<ScalarT*> tmp_;
331
332 }; // end of class Integrator_GradBasisDotVector
333
334} // end of namespace panzer
335
336#endif // __Panzer_Integrator_GradBasisDotVector_decl_hpp__
panzer::EvaluatorStyle evalStyle
The EvaluatorStyle of the parent Integrator_CurlBasisDotVector object.
double multiplier
The scalar multiplier out in front of the integral ( ).
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
PHX::View< ScalarT * > tmp_
Temporary used when shared memory is disabled.
PHX::MDField< ScalarT, panzer::Cell, panzer::BASIS > field_
A field to which we'll contribute, or in which we'll store, the result of computing this integral.
double multiplier_
The scalar multiplier out in front of the integral ( ).
Teuchos::RCP< Teuchos::ParameterList > getValidParameters() const
Get Valid Parameters.
std::vector< PHX::MDField< const ScalarT, panzer::Cell, panzer::IP > > fieldMults_
The (possibly empty) list of fields that are multipliers out in front of the integral ( ,...
Kokkos::View< ScalarT *,typename PHX::DevLayout< ScalarT >::type, typename PHX::exec_space::scratch_memory_space, Kokkos::MemoryUnmanaged > scratch_view
Type for shared memory.
void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &fm)
Post-Registration Setup.
PHX::MDField< const ScalarT, panzer::Cell, panzer::IP, panzer::Dim > vector_
A field representing the vector-valued function we're integrating ( ).
const panzer::EvaluatorStyle evalStyle_
An enum determining the behavior of this Evaluator.
std::string basisName_
The name of the basis we're using.
PHX::View< PHX::UnmanagedView< const ScalarT ** > * > kokkosFieldMults_
The PHX::View representation of the (possibly empty) list of fields that are multipliers out in front...
KOKKOS_INLINE_FUNCTION void operator()(const FieldMultTag< NUM_FIELD_MULT > &tag, const Kokkos::TeamPolicy< PHX::exec_space >::member_type &team) const
Perform the integration.
PHX::MDField< double, panzer::Cell, panzer::BASIS, panzer::IP, panzer::Dim > basis_
The gradient vector basis information necessary for integration.
void evaluateFields(typename Traits::EvalData d)
Evaluate Fields.
std::size_t basisIndex_
The index in the Workset bases for our particular BasisIRLayout name.
EvaluatorStyle
An indication of how an Evaluator will behave.
This empty struct allows us to optimize operator()() depending on the number of field multipliers....
This empty struct allows us to optimize operator()() depending on the number of field multipliers....