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

IPtoNodalField.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 #if !defined(LCM_IPtoNodalField_hpp)
00008 #define LCM_IPtoNodalField_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 LCM
00018 {
00022 template<typename EvalT, typename Traits>
00023 class IPtoNodalFieldBase : 
00024     public PHX::EvaluatorWithBaseImpl<Traits>,
00025     public PHX::EvaluatorDerived<EvalT, Traits>
00026 {
00027 public:
00028   typedef typename EvalT::ScalarT ScalarT;
00029   typedef typename EvalT::MeshScalarT MeshScalarT;
00030 
00034   IPtoNodalFieldBase(Teuchos::ParameterList& p,
00035                      const Teuchos::RCP<Albany::Layouts>& dl);
00036   
00040   void postRegistrationSetup(typename Traits::SetupData d,
00041                              PHX::FieldManager<Traits>& vm);
00042 
00046   void preEvaluate(typename Traits::PreEvalData d) = 0;
00047   void postEvaluate(typename Traits::PostEvalData d) = 0;
00048   void evaluateFields(typename Traits::EvalData d) = 0;
00049 
00050   Teuchos::RCP<const PHX::FieldTag> getEvaluatedFieldTag() const {
00051     return field_tag_;
00052   }
00053 
00054   Teuchos::RCP<const PHX::FieldTag> getResponseFieldTag() const {
00055     return field_tag_;
00056   }
00057     
00058 protected:
00059 
00060   Teuchos::RCP<const Teuchos::ParameterList> getValidIPtoNodalFieldParameters() const;
00061 
00062   int number_of_fields_;
00063 
00064   std::vector<std::string> ip_field_names_;
00065   std::vector<std::string> ip_field_layouts_;
00066   std::vector<std::string> nodal_field_names_;
00067 
00068   std::string nodal_weights_name_;
00069     
00070   std::size_t num_pts_;
00071   std::size_t num_dims_;
00072   std::size_t num_nodes_;
00073   std::size_t num_vertices_;
00074     
00075   PHX::MDField<MeshScalarT,Cell,QuadPoint> weights_;
00076   std::vector<PHX::MDField<ScalarT> > ip_fields_;
00077 
00078   bool output_to_exodus_;
00079   bool output_node_data_;
00080 
00081   Teuchos::RCP< PHX::Tag<ScalarT> > field_tag_;
00082   Albany::StateManager* p_state_mgr_;
00083 
00084 };
00085 
00086 template<typename EvalT, typename Traits>
00087 class IPtoNodalField
00088   : public IPtoNodalFieldBase<EvalT, Traits> {
00089 public:
00090   IPtoNodalField(Teuchos::ParameterList& p,
00091                    const Teuchos::RCP<Albany::Layouts>& dl) :
00092     IPtoNodalFieldBase<EvalT, Traits>(p, dl){}
00093   void preEvaluate(typename Traits::PreEvalData d){}
00094   void postEvaluate(typename Traits::PostEvalData d){}
00095   void evaluateFields(typename Traits::EvalData d){}
00096 };
00097 
00098   // **************************************************************
00099   // **************************************************************
00100   // * Specializations
00101   // **************************************************************
00102   // **************************************************************
00103 
00104 // **************************************************************
00105 // Residual 
00106 // **************************************************************
00107 template<typename Traits>
00108 class IPtoNodalField<PHAL::AlbanyTraits::Residual,Traits>
00109   : public IPtoNodalFieldBase<PHAL::AlbanyTraits::Residual, Traits> {
00110 public:
00111   IPtoNodalField(Teuchos::ParameterList& p,
00112                    const Teuchos::RCP<Albany::Layouts>& dl);
00113   void preEvaluate(typename Traits::PreEvalData d);
00114   void postEvaluate(typename Traits::PostEvalData d);
00115   void evaluateFields(typename Traits::EvalData d);
00116 };
00117 }
00118 
00119 #endif  // IPtoNodalField.hpp

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