• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

PHAL_DOFGradInterpolation.hpp

Go to the documentation of this file.
00001 //*****************************************************************//
00002 //    Albany 2.0:  Copyright 2012 Sandia Corporation               //
00003 //    This Software is released under the BSD license detailed     //
00004 //    in the file "license.txt" in the top-level Albany directory  //
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   // Input:
00046   PHX::MDField<ScalarT,Cell,Node> val_node;
00048   PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> GradBF;
00049 
00050   // Output:
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   // Input:
00081   PHX::MDField<ScalarT,Cell,Node> val_node;
00083   PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> GradBF;
00084 
00085   // Output:
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 // Exact copy as above except data type is RealType instead of ScalarT
00096 // to interpolate quantities without derivative arrays
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   // Input:
00117   PHX::MDField<RealType,Cell,Node> val_node;
00119   PHX::MDField<MeshScalarT,Cell,Node,QuadPoint,Dim> GradBF;
00120 
00121   // Output:
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

Generated on Wed Mar 26 2014 18:36:41 for Albany: a Trilinos-based PDE code by  doxygen 1.7.1