Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef PHAL_DOFVECGRAD_INTERPOLATION_HPP
00008 #define PHAL_DOFVECGRAD_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 DOFVecGradInterpolation : public PHX::EvaluatorWithBaseImpl<Traits>,
00027 public PHX::EvaluatorDerived<EvalT, Traits> {
00028
00029 public:
00030
00031 DOFVecGradInterpolation(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
00045
00047 PHX::MDField<ScalarT,Cell,Node,VecDim> val_node;
00049 PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> GradBF;
00050
00051
00053 PHX::MDField<ScalarT,Cell,QuadPoint,VecDim,Dim> grad_val_qp;
00054
00055 std::size_t numNodes;
00056 std::size_t numQPs;
00057 std::size_t numDims;
00058 std::size_t vecDim;
00059
00060 };
00061
00063 template<typename Traits>
00064 class DOFVecGradInterpolation<PHAL::AlbanyTraits::Jacobian, Traits>\
00065 : public PHX::EvaluatorWithBaseImpl<Traits>,
00066 public PHX::EvaluatorDerived<PHAL::AlbanyTraits::Jacobian, Traits> {
00067
00068 public:
00069
00070 DOFVecGradInterpolation(const Teuchos::ParameterList& p,
00071 const Teuchos::RCP<Albany::Layouts>& dl);
00072
00073 void postRegistrationSetup(typename Traits::SetupData d,
00074 PHX::FieldManager<Traits>& vm);
00075
00076 void evaluateFields(typename Traits::EvalData d);
00077
00078 private:
00079
00080 typedef PHAL::AlbanyTraits::Jacobian::ScalarT ScalarT;
00081 typedef PHAL::AlbanyTraits::Jacobian::MeshScalarT MeshScalarT;
00082
00083
00084
00086 PHX::MDField<ScalarT,Cell,Node,VecDim> val_node;
00088 PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> GradBF;
00089
00090
00092 PHX::MDField<ScalarT,Cell,QuadPoint,VecDim,Dim> grad_val_qp;
00093
00094 std::size_t numNodes;
00095 std::size_t numQPs;
00096 std::size_t numDims;
00097 std::size_t vecDim;
00098 std::size_t offset;
00099 };
00100
00101
00102 }
00103
00104 #endif