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

QCAD_ResponseFieldValue.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_RESPONSEFIELDVALUE_HPP
00008 #define QCAD_RESPONSEFIELDVALUE_HPP
00009 
00010 #include "QCAD_MeshRegion.hpp"
00011 #include "QCAD_MaterialDatabase.hpp"
00012 #include "PHAL_ScatterScalarResponse.hpp"
00013 
00014 namespace QCAD {
00015 
00016   template<typename EvalT, typename Traits> 
00017   class FieldValueScatterScalarResponse : 
00018     public PHAL::ScatterScalarResponse<EvalT,Traits>  {
00019   
00020   public:
00021   
00022     FieldValueScatterScalarResponse(const Teuchos::ParameterList& p,
00023             const Teuchos::RCP<Albany::Layouts>& dl) :
00024       PHAL::ScatterScalarResponse<EvalT,Traits>(p,dl) {}
00025   
00026   protected:
00027 
00028     // Default constructor for child classes
00029     FieldValueScatterScalarResponse() :
00030       PHAL::ScatterScalarResponse<EvalT,Traits>() {}
00031 
00032     // Child classes should call setup once p is filled out
00033     void setup(const Teuchos::ParameterList& p,
00034          const Teuchos::RCP<Albany::Layouts>& dl) {
00035       PHAL::ScatterScalarResponse<EvalT,Traits>::setup(p,dl);
00036     }
00037 
00038     // Set NodeID structure for cell corrsponding to max/min
00039     void setNodeID(const Teuchos::ArrayRCP<Teuchos::ArrayRCP<int> >&) {}
00040 
00041     Teuchos::Array<int> field_components;
00042   };
00043 
00044 
00045   template<typename Traits> 
00046   class FieldValueScatterScalarResponse<PHAL::AlbanyTraits::Jacobian,Traits> : 
00047     public PHAL::ScatterScalarResponseBase<PHAL::AlbanyTraits::Jacobian,Traits> {
00048   
00049   public:
00050     typedef PHAL::AlbanyTraits::Jacobian EvalT;
00051     typedef typename EvalT::ScalarT ScalarT;
00052 
00053     FieldValueScatterScalarResponse(const Teuchos::ParameterList& p,
00054             const Teuchos::RCP<Albany::Layouts>& dl) :
00055       PHAL::ScatterScalarResponseBase<EvalT,Traits>(p,dl) {}
00056 
00057     void preEvaluate(typename Traits::PreEvalData d) {}
00058     void evaluateFields(typename Traits::EvalData d) {}
00059     void postEvaluate(typename Traits::PostEvalData d);
00060   
00061   protected:
00062 
00063     // Default constructor for child classes
00064     FieldValueScatterScalarResponse() :
00065       PHAL::ScatterScalarResponseBase<EvalT,Traits>() {}
00066 
00067     // Child classes should call setup once p is filled out
00068     void setup(const Teuchos::ParameterList& p,
00069          const Teuchos::RCP<Albany::Layouts>& dl) {
00070       PHAL::ScatterScalarResponseBase<EvalT,Traits>::setup(p,dl);
00071       numNodes = dl->node_scalar->dimension(1);
00072     }
00073 
00074     // Set NodeID structure for cell corrsponding to max/min
00075     void setNodeID(const Teuchos::ArrayRCP<Teuchos::ArrayRCP<int> >& nodeID_) {
00076       nodeID = nodeID_;
00077     }
00078 
00079     Teuchos::Array<int> field_components;
00080 
00081   private:
00082 
00083     Teuchos::ArrayRCP<Teuchos::ArrayRCP<int> > nodeID;
00084     int numNodes;
00085   };
00086 
00087 #ifdef ALBANY_SG_MP
00088   template<typename Traits> 
00089   class FieldValueScatterScalarResponse<PHAL::AlbanyTraits::SGJacobian,Traits> : 
00090     public PHAL::ScatterScalarResponseBase<PHAL::AlbanyTraits::SGJacobian,Traits> {
00091   
00092   public:
00093     typedef PHAL::AlbanyTraits::SGJacobian EvalT;
00094     typedef typename EvalT::ScalarT ScalarT;
00095 
00096     FieldValueScatterScalarResponse(const Teuchos::ParameterList& p,
00097             const Teuchos::RCP<Albany::Layouts>& dl) :
00098       PHAL::ScatterScalarResponseBase<EvalT,Traits>(p,dl) {}
00099 
00100     void preEvaluate(typename Traits::PreEvalData d) {}
00101     void evaluateFields(typename Traits::EvalData d) {}
00102     void postEvaluate(typename Traits::PostEvalData d);
00103   
00104   protected:
00105 
00106     // Default constructor for child classes
00107     FieldValueScatterScalarResponse() :
00108       PHAL::ScatterScalarResponseBase<EvalT,Traits>() {}
00109 
00110     // Child classes should call setup once p is filled out
00111     void setup(const Teuchos::ParameterList& p,
00112          const Teuchos::RCP<Albany::Layouts>& dl) {
00113       PHAL::ScatterScalarResponseBase<EvalT,Traits>::setup(p,dl);
00114       numNodes = dl->node_scalar->dimension(1);
00115     }
00116 
00117     // Set NodeID structure for cell corrsponding to max/min
00118     void setNodeID(const Teuchos::ArrayRCP<Teuchos::ArrayRCP<int> >& nodeID_) {
00119       nodeID = nodeID_;
00120     }
00121 
00122     Teuchos::Array<int> field_components;
00123 
00124   private:
00125 
00126     Teuchos::ArrayRCP<Teuchos::ArrayRCP<int> > nodeID;
00127     int numNodes;
00128   };
00129 
00130   template<typename Traits> 
00131   class FieldValueScatterScalarResponse<PHAL::AlbanyTraits::MPJacobian,Traits> : 
00132     public PHAL::ScatterScalarResponseBase<PHAL::AlbanyTraits::MPJacobian,Traits> {
00133   
00134   public:
00135     typedef PHAL::AlbanyTraits::MPJacobian EvalT;
00136     typedef typename EvalT::ScalarT ScalarT;
00137 
00138     FieldValueScatterScalarResponse(const Teuchos::ParameterList& p,
00139             const Teuchos::RCP<Albany::Layouts>& dl) :
00140       PHAL::ScatterScalarResponseBase<EvalT,Traits>(p,dl) {}
00141 
00142     void preEvaluate(typename Traits::PreEvalData d) {}
00143     void evaluateFields(typename Traits::EvalData d) {}
00144     void postEvaluate(typename Traits::PostEvalData d);
00145   
00146   protected:
00147 
00148     // Default constructor for child classes
00149     FieldValueScatterScalarResponse() :
00150       PHAL::ScatterScalarResponseBase<EvalT,Traits>() {}
00151 
00152     // Child classes should call setup once p is filled out
00153     void setup(const Teuchos::ParameterList& p,
00154          const Teuchos::RCP<Albany::Layouts>& dl) {
00155       PHAL::ScatterScalarResponseBase<EvalT,Traits>::setup(p,dl);
00156       numNodes = dl->node_scalar->dimension(1);
00157     }
00158 
00159     // Set NodeID structure for cell corrsponding to max/min
00160     void setNodeID(const Teuchos::ArrayRCP<Teuchos::ArrayRCP<int> >& nodeID_) {
00161       nodeID = nodeID_;
00162     }
00163 
00164     Teuchos::Array<int> field_components;
00165 
00166   private:
00167 
00168     Teuchos::ArrayRCP<Teuchos::ArrayRCP<int> > nodeID;
00169     int numNodes;
00170   };
00171 #endif //ALBANY_SG_MP
00172 
00176   template<typename EvalT, typename Traits>
00177   class ResponseFieldValue : 
00178     public FieldValueScatterScalarResponse<EvalT, Traits>
00179   {
00180   public:
00181     typedef typename EvalT::ScalarT ScalarT;
00182     typedef typename EvalT::MeshScalarT MeshScalarT;
00183     
00184     ResponseFieldValue(Teuchos::ParameterList& p,
00185            const Teuchos::RCP<Albany::Layouts>& dl);
00186   
00187     void postRegistrationSetup(typename Traits::SetupData d,
00188              PHX::FieldManager<Traits>& vm);
00189   
00190     void preEvaluate(typename Traits::PreEvalData d);
00191   
00192     void evaluateFields(typename Traits::EvalData d);
00193 
00194     void postEvaluate(typename Traits::PostEvalData d);
00195     
00196   private:
00197     Teuchos::RCP<const Teuchos::ParameterList> getValidResponseParameters() const;
00198 
00199     std::size_t numQPs;
00200     std::size_t numDims;
00201     
00202     PHX::MDField<ScalarT> opField;
00203     PHX::MDField<ScalarT> retField;
00204     PHX::MDField<MeshScalarT,Cell,QuadPoint,Dim> coordVec;
00205     PHX::MDField<MeshScalarT,Cell,QuadPoint> weights;
00206     Teuchos::ArrayRCP<Teuchos::ArrayRCP<int> > max_nodeID;
00207     //Teuchos::Array<int> field_components;
00208     
00209     bool bOpFieldIsVector, bRetFieldIsVector;
00210 
00211     std::string operation;
00212     std::string opFieldName;
00213     std::string retFieldName;
00214 
00215     bool bReturnOpField;
00216     bool opX, opY, opZ;
00217 
00218     Teuchos::RCP< MeshRegion<EvalT, Traits> > opRegion;
00219 
00220     Teuchos::Array<double> initVals;
00221 
00223     Teuchos::RCP<QCAD::MaterialDatabase> materialDB;
00224   };
00225   
00226 }
00227 
00228 #endif

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