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

QCAD_ResponseSaddleValue.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 QCAD_RESPONSESADDLEVALUE_HPP
00008 #define QCAD_RESPONSESADDLEVALUE_HPP
00009 
00010 #include "PHAL_SeparableScatterScalarResponse.hpp"
00011 #include "QCAD_EvaluatorTools.hpp"
00012 #include "QCAD_SaddleValueResponseFunction.hpp"
00013 #include "QCAD_MaterialDatabase.hpp"
00014 
00015 
00019 namespace QCAD 
00020 {
00021   template<typename EvalT, typename Traits>
00022   class ResponseSaddleValue : 
00023     public PHAL::SeparableScatterScalarResponse<EvalT,Traits>,
00024     public EvaluatorTools<EvalT, Traits>
00025   {
00026   public:
00027     typedef typename EvalT::ScalarT ScalarT;
00028     typedef typename EvalT::MeshScalarT MeshScalarT;
00029     
00030     ResponseSaddleValue(Teuchos::ParameterList& p,
00031       const Teuchos::RCP<Albany::Layouts>& dl);
00032   
00033     void postRegistrationSetup(typename Traits::SetupData d,
00034              PHX::FieldManager<Traits>& vm);
00035   
00036     void preEvaluate(typename Traits::PreEvalData d);
00037   
00038     void evaluateFields(typename Traits::EvalData d);
00039 
00040     void postEvaluate(typename Traits::PostEvalData d);
00041 
00042     /*int numResponses() const {  // I don't think this is needed anymore (egn)
00043       return 5; 
00044       }*/
00045     
00046   private:
00047     Teuchos::RCP<const Teuchos::ParameterList> getValidResponseParameters() const;
00048     void getCellQuantities(const std::size_t cell, ScalarT& cellVol, 
00049          typename EvalT::ScalarT& fieldVal, typename EvalT::ScalarT& retFieldVal, 
00050          std::vector<typename EvalT::ScalarT>& fieldGrad) const;
00051     void getCellArea(const std::size_t cell, typename EvalT::ScalarT& cellArea) const;
00052     void getAvgCellCoordinates(PHX::MDField<MeshScalarT,Cell,QuadPoint,Dim> coordVec,
00053              const std::size_t cell, double* dblAvgCoords, double& dblMaxZ) const;
00054 
00055     std::size_t numQPs;
00056     std::size_t numDims;
00057     std::size_t numVertices;
00058   
00059     Teuchos::RCP<QCAD::SaddleValueResponseFunction> svResponseFn;
00060   
00061     PHX::MDField<ScalarT> field;
00062     PHX::MDField<ScalarT> fieldGradient;
00063     PHX::MDField<ScalarT> retField;
00064     PHX::MDField<MeshScalarT,Cell,QuadPoint,Dim> coordVec;
00065     PHX::MDField<MeshScalarT,Cell,Node,Dim> coordVec_vertices; //not currently needed
00066     PHX::MDField<MeshScalarT,Cell,QuadPoint> weights;
00067     
00068     std::string fieldName;
00069     std::string fieldGradientName;
00070     std::string retFieldName;
00071     
00072     bool bReturnSameField;
00073     double scaling, gradScaling, retScaling;
00074     double lattTemp; 
00075     
00076     Teuchos::RCP<QCAD::MaterialDatabase> materialDB;
00077 
00078   };
00079   
00080 }
00081 
00082 #endif

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