Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef PHAL_SAVENODALFIELD_HPP
00008 #define PHAL_SAVENODALFIELD_HPP
00009
00010 #include "Phalanx_Evaluator_WithBaseImpl.hpp"
00011 #include "Phalanx_Evaluator_Derived.hpp"
00012 #include "Phalanx_MDField.hpp"
00013 #include "Phalanx_DataLayout.hpp"
00014 #include "Teuchos_ParameterList.hpp"
00015 #include "Albany_ProblemUtils.hpp"
00016
00017 namespace PHAL {
00021 template<typename EvalT, typename Traits>
00022 class SaveNodalFieldBase :
00023 public PHX::EvaluatorWithBaseImpl<Traits>,
00024 public PHX::EvaluatorDerived<EvalT, Traits>
00025 {
00026 public:
00027 typedef typename EvalT::ScalarT ScalarT;
00028 typedef typename EvalT::MeshScalarT MeshScalarT;
00029 SaveNodalFieldBase(Teuchos::ParameterList& p,
00030 const Teuchos::RCP<Albany::Layouts>& dl);
00031
00032 void postRegistrationSetup(typename Traits::SetupData d,
00033 PHX::FieldManager<Traits>& vm);
00034
00035
00036 void preEvaluate(typename Traits::PreEvalData d) = 0;
00037 void postEvaluate(typename Traits::PostEvalData d) = 0;
00038 void evaluateFields(typename Traits::EvalData d) = 0;
00039
00040 Teuchos::RCP<const PHX::FieldTag> getEvaluatedFieldTag() const {
00041 return nodal_field_tag;
00042 }
00043
00044 Teuchos::RCP<const PHX::FieldTag> getResponseFieldTag() const {
00045 return nodal_field_tag;
00046 }
00047
00048 protected:
00049
00050 std::string xName;
00051 std::string xdotName;
00052 std::string xdotdotName;
00053 static const std::string className;
00054
00055 Teuchos::RCP< PHX::Tag<ScalarT> > nodal_field_tag;
00056 Albany::StateManager* pStateMgr;
00057
00058 };
00059
00060 template<typename EvalT, typename Traits>
00061 class SaveNodalField
00062 : public SaveNodalFieldBase<EvalT, Traits> {
00063 public:
00064 SaveNodalField(Teuchos::ParameterList& p,
00065 const Teuchos::RCP<Albany::Layouts>& dl) :
00066 SaveNodalFieldBase<EvalT, Traits>(p, dl){}
00067 void preEvaluate(typename Traits::PreEvalData d){}
00068 void postEvaluate(typename Traits::PostEvalData d){}
00069 void evaluateFields(typename Traits::EvalData d){}
00070 };
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 template<typename Traits>
00082 class SaveNodalField<PHAL::AlbanyTraits::Residual,Traits>
00083 : public SaveNodalFieldBase<PHAL::AlbanyTraits::Residual, Traits> {
00084 public:
00085 SaveNodalField(Teuchos::ParameterList& p,
00086 const Teuchos::RCP<Albany::Layouts>& dl);
00087 void preEvaluate(typename Traits::PreEvalData d);
00088 void postEvaluate(typename Traits::PostEvalData d);
00089 void evaluateFields(typename Traits::EvalData d);
00090 };
00091
00092 }
00093
00094 #endif // Adapt_SaveNodalField.hpp