Panzer Version of the Day
Loading...
Searching...
No Matches
Panzer_DOFCurl.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_EVALUATOR_DOF_CURL_DECL_HPP
12#define PANZER_EVALUATOR_DOF_CURL_DECL_HPP
13
14#include "Phalanx_Evaluator_Macros.hpp"
15#include "Phalanx_MDField.hpp"
17
18namespace panzer {
19
21template<typename EvalT, typename TRAITS>
22class DOFCurl : public panzer::EvaluatorWithBaseImpl<TRAITS>,
23 public PHX::EvaluatorDerived<EvalT, TRAITS> {
24public:
25
26 DOFCurl(const Teuchos::ParameterList& p);
27
36 DOFCurl(const PHX::FieldTag & input,
37 const PHX::FieldTag & output,
38 const panzer::BasisDescriptor & bd,
40 int basis_dim);
41
42 void postRegistrationSetup(typename TRAITS::SetupData d,
44
45 void evaluateFields(typename TRAITS::EvalData d);
46
47private:
48
49 typedef typename EvalT::ScalarT ScalarT;
50
54
55 PHX::MDField<const ScalarT,Cell,Point> dof_value;
56
57 PHX::MDField<ScalarT,Cell,Point> dof_curl_scalar;
58 PHX::MDField<ScalarT,Cell,Point,Dim> dof_curl_vector;
59
60 std::string basis_name;
61 std::size_t basis_index;
63};
64
65// Specitialization for the Jacobian
66template<typename TRAITS>
67class DOFCurl<typename TRAITS::Jacobian,TRAITS> :
68 public panzer::EvaluatorWithBaseImpl<TRAITS>,
69 public PHX::EvaluatorDerived<typename TRAITS::Jacobian, TRAITS> {
70public:
71
72 DOFCurl(const Teuchos::ParameterList& p);
73
74 DOFCurl(const PHX::FieldTag & input,
75 const PHX::FieldTag & output,
76 const panzer::BasisDescriptor & bd,
78 int basis_dim);
79
80 void postRegistrationSetup(typename TRAITS::SetupData d,
82
83 void evaluateFields(typename TRAITS::EvalData d);
84
85private:
86
88
92
93 PHX::MDField<const ScalarT,Cell,Point> dof_value;
94
95 PHX::MDField<ScalarT,Cell,Point> dof_curl_scalar;
96 PHX::MDField<ScalarT,Cell,Point,Dim> dof_curl_vector;
97
98 PHX::View<const int*> offsets_array;
99 std::vector<int> offsets;
100
101 std::string basis_name;
102 std::size_t basis_index;
104
106};
107
108
109
110}
111
112#endif
void evaluateFields(typename TRAITS::EvalData d)
PHX::MDField< ScalarT, Cell, Point, Dim > dof_curl_vector
PHX::MDField< ScalarT, Cell, Point > dof_curl_scalar
PHX::MDField< const ScalarT, Cell, Point > dof_value
void postRegistrationSetup(typename TRAITS::SetupData d, PHX::FieldManager< TRAITS > &fm)
DOFCurl(const PHX::FieldTag &input, const PHX::FieldTag &output, const panzer::BasisDescriptor &bd, const panzer::IntegrationDescriptor &id, int basis_dim)
Interpolates basis DOF values to IP DOF Curl values.
PHX::MDField< ScalarT, Cell, Point > dof_curl_scalar
panzer::IntegrationDescriptor id_
std::size_t basis_index
void evaluateFields(typename TRAITS::EvalData d)
PHX::MDField< const ScalarT, Cell, Point > dof_value
std::string basis_name
void postRegistrationSetup(typename TRAITS::SetupData d, PHX::FieldManager< TRAITS > &fm)
EvalT::ScalarT ScalarT
panzer::BasisDescriptor bd_
PHX::MDField< ScalarT, Cell, Point, Dim > dof_curl_vector
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.