Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef PHAL_DOFGRAD_INTERPOLATION_HPP
00008 #define PHAL_DOFGRAD_INTERPOLATION_HPP
00009
00010 #include "Phalanx_ConfigDefs.hpp"
00011 #include "Phalanx_Evaluator_WithBaseImpl.hpp"
00012 #include "Phalanx_Evaluator_Derived.hpp"
00013 #include "Phalanx_MDField.hpp"
00014
00015 #include "Albany_Layouts.hpp"
00016
00017 namespace PHAL {
00025 template<typename EvalT, typename Traits>
00026 class DOFGradInterpolation : public PHX::EvaluatorWithBaseImpl<Traits>,
00027 public PHX::EvaluatorDerived<EvalT, Traits> {
00028
00029 public:
00030
00031 DOFGradInterpolation(const Teuchos::ParameterList& p,
00032 const Teuchos::RCP<Albany::Layouts>& dl);
00033
00034 void postRegistrationSetup(typename Traits::SetupData d,
00035 PHX::FieldManager<Traits>& vm);
00036
00037 void evaluateFields(typename Traits::EvalData d);
00038
00039 private:
00040
00041 typedef typename EvalT::ScalarT ScalarT;
00042 typedef typename EvalT::MeshScalarT MeshScalarT;
00043
00044
00046 PHX::MDField<ScalarT,Cell,Node> val_node;
00048 PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> GradBF;
00049
00050
00052 PHX::MDField<ScalarT,Cell,QuadPoint,Dim> grad_val_qp;
00053
00054 std::size_t numNodes;
00055 std::size_t numQPs;
00056 std::size_t numDims;
00057 };
00058
00059 template<typename Traits>
00060 class DOFGradInterpolation<PHAL::AlbanyTraits::Jacobian, Traits>
00061 : public PHX::EvaluatorWithBaseImpl<Traits>,
00062 public PHX::EvaluatorDerived<PHAL::AlbanyTraits::Jacobian, Traits> {
00063
00064 public:
00065
00066 DOFGradInterpolation(const Teuchos::ParameterList& p,
00067 const Teuchos::RCP<Albany::Layouts>& dl);
00068
00069 void postRegistrationSetup(typename Traits::SetupData d,
00070 PHX::FieldManager<Traits>& vm);
00071
00072 void evaluateFields(typename Traits::EvalData d);
00073
00074 private:
00075
00076 typedef PHAL::AlbanyTraits::Jacobian::ScalarT ScalarT;
00077 typedef PHAL::AlbanyTraits::Jacobian::MeshScalarT MeshScalarT;
00078
00079
00081 PHX::MDField<ScalarT,Cell,Node> val_node;
00083 PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> GradBF;
00084
00085
00087 PHX::MDField<ScalarT,Cell,QuadPoint,Dim> grad_val_qp;
00088
00089 std::size_t numNodes;
00090 std::size_t numQPs;
00091 std::size_t numDims;
00092 std::size_t offset;
00093 };
00094
00095
00096
00097 template<typename EvalT, typename Traits>
00098 class DOFGradInterpolation_noDeriv : public PHX::EvaluatorWithBaseImpl<Traits>,
00099 public PHX::EvaluatorDerived<EvalT, Traits> {
00100
00101 public:
00102
00103 DOFGradInterpolation_noDeriv(const Teuchos::ParameterList& p,
00104 const Teuchos::RCP<Albany::Layouts>& dl);
00105
00106 void postRegistrationSetup(typename Traits::SetupData d,
00107 PHX::FieldManager<Traits>& vm);
00108
00109 void evaluateFields(typename Traits::EvalData d);
00110
00111 private:
00112
00113 typedef typename EvalT::MeshScalarT MeshScalarT;
00114
00115
00117 PHX::MDField<RealType,Cell,Node> val_node;
00119 PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> GradBF;
00120
00121
00123 PHX::MDField<MeshScalarT,Cell,QuadPoint,Dim> grad_val_qp;
00124
00125 std::size_t numNodes;
00126 std::size_t numQPs;
00127 std::size_t numDims;
00128 };
00129 }
00130
00131 #endif