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 QCAD_RESPONSESAVEFIELD_HPP 00008 #define QCAD_RESPONSESAVEFIELD_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 QCAD { 00021 template<typename EvalT, typename Traits> 00022 class ResponseSaveField : 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 ResponseSaveField(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 void evaluateFields(typename Traits::EvalData d); 00036 00037 Teuchos::RCP<const PHX::FieldTag> getEvaluatedFieldTag() const { 00038 return response_field_tag; 00039 } 00040 00041 Teuchos::RCP<const PHX::FieldTag> getResponseFieldTag() const { 00042 return response_field_tag; 00043 } 00044 00045 private: 00046 Teuchos::RCP<const Teuchos::ParameterList> getValidResponseParameters() const; 00047 00048 std::string fieldName; 00049 std::string stateName; 00050 00051 std::size_t numQPs; 00052 std::size_t numDims; 00053 00054 PHX::MDField<MeshScalarT,Cell,QuadPoint> weights; 00055 PHX::MDField<ScalarT> field; 00056 00057 bool outputToExodus; 00058 bool outputCellAverage; 00059 bool memoryHolderOnly; 00060 bool isVectorField; 00061 00062 std::string vectorOp; 00063 00064 Teuchos::RCP< PHX::Tag<ScalarT> > response_field_tag; 00065 }; 00066 00067 00068 } 00069 00070 #endif