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

QCAD_SchrodingerDirichlet.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_SCHRODINGERDIRICHLET_HPP
00008 #define QCAD_SCHRODINGERDIRICHLET_HPP
00009 
00010 #include "Phalanx_ConfigDefs.hpp"
00011 #include "Phalanx_Evaluator_WithBaseImpl.hpp"
00012 #include "Phalanx_Evaluator_Derived.hpp"
00013 #include "Phalanx_MDField.hpp"
00014 
00015 #include "Teuchos_ParameterList.hpp"
00016 #include "Epetra_Vector.h"
00017 
00018 #include "Sacado_ParameterAccessor.hpp"
00019 #include "PHAL_AlbanyTraits.hpp"
00020 
00021 namespace QCAD {
00027 // **************************************************************
00028 // Generic Template Impelementation for constructor and PostReg
00029 // **************************************************************
00030 
00031 template<typename EvalT, typename Traits>
00032 class SchrodingerDirichletBase
00033   : public PHX::EvaluatorWithBaseImpl<Traits>,
00034     public PHX::EvaluatorDerived<EvalT, Traits>,
00035     public Sacado::ParameterAccessor<EvalT, SPL_Traits>  
00036    {
00037   
00038 private:
00039 
00040   //typedef typename Traits::Residual::ScalarT ScalarT;
00041   typedef typename EvalT::ScalarT ScalarT;
00042 
00043 public:
00044   
00045   SchrodingerDirichletBase(Teuchos::ParameterList& p);
00046   
00047   void postRegistrationSetup(typename Traits::SetupData d,
00048                              PHX::FieldManager<Traits>& vm);
00049   
00050   // This function will be overloaded with template specialized code
00051   void evaluateFields(typename Traits::EvalData d)=0;
00052   
00053   virtual ScalarT& getValue(const std::string &n) { return value; }
00054 
00055 protected:
00056   const int offset;
00057   ScalarT value;
00058   std::string nodeSetID;
00059 };
00060 
00061 // **************************************************************
00062 // **************************************************************
00063 // * Specializations
00064 // **************************************************************
00065 // **************************************************************
00066 
00067 template<typename EvalT, typename Traits> class SchrodingerDirichlet;
00068 
00069 // **************************************************************
00070 // Residual 
00071 // **************************************************************
00072 template<typename Traits>
00073 class SchrodingerDirichlet<PHAL::AlbanyTraits::Residual,Traits>
00074    : public SchrodingerDirichletBase<PHAL::AlbanyTraits::Residual, Traits> {
00075 public:
00076   SchrodingerDirichlet(Teuchos::ParameterList& p);
00077   void evaluateFields(typename Traits::EvalData d);
00078 };
00079 
00080 // **************************************************************
00081 // Jacobian
00082 // **************************************************************
00083 template<typename Traits>
00084 class SchrodingerDirichlet<PHAL::AlbanyTraits::Jacobian,Traits>
00085    : public SchrodingerDirichletBase<PHAL::AlbanyTraits::Jacobian, Traits> {
00086 public:
00087   SchrodingerDirichlet(Teuchos::ParameterList& p);
00088   void evaluateFields(typename Traits::EvalData d);
00089 };
00090 
00091 // **************************************************************
00092 // Tangent
00093 // **************************************************************
00094 template<typename Traits>
00095 class SchrodingerDirichlet<PHAL::AlbanyTraits::Tangent,Traits>
00096    : public SchrodingerDirichletBase<PHAL::AlbanyTraits::Tangent, Traits> {
00097 public:
00098   SchrodingerDirichlet(Teuchos::ParameterList& p);
00099   void evaluateFields(typename Traits::EvalData d);
00100 };
00101 
00102 // **************************************************************
00103 // Stochastic Galerkin Residual 
00104 // **************************************************************
00105 #ifdef ALBANY_SG_MP
00106 template<typename Traits>
00107 class SchrodingerDirichlet<PHAL::AlbanyTraits::SGResidual,Traits>
00108    : public SchrodingerDirichletBase<PHAL::AlbanyTraits::SGResidual, Traits> {
00109 public:
00110   SchrodingerDirichlet(Teuchos::ParameterList& p);
00111   void evaluateFields(typename Traits::EvalData d);
00112 };
00113 
00114 // **************************************************************
00115 // Stochastic Galerkin Jacobian
00116 // **************************************************************
00117 template<typename Traits>
00118 class SchrodingerDirichlet<PHAL::AlbanyTraits::SGJacobian,Traits>
00119    : public SchrodingerDirichletBase<PHAL::AlbanyTraits::SGJacobian, Traits> {
00120 public:
00121   SchrodingerDirichlet(Teuchos::ParameterList& p);
00122   void evaluateFields(typename Traits::EvalData d);
00123 };
00124 
00125 // **************************************************************
00126 // Stochastic Galerkin Tangent
00127 // **************************************************************
00128 template<typename Traits>
00129 class SchrodingerDirichlet<PHAL::AlbanyTraits::SGTangent,Traits>
00130    : public SchrodingerDirichletBase<PHAL::AlbanyTraits::SGTangent, Traits> {
00131 public:
00132   SchrodingerDirichlet(Teuchos::ParameterList& p);
00133   void evaluateFields(typename Traits::EvalData d);
00134 };
00135 
00136 // **************************************************************
00137 // Multi-point Residual 
00138 // **************************************************************
00139 template<typename Traits>
00140 class SchrodingerDirichlet<PHAL::AlbanyTraits::MPResidual,Traits>
00141    : public SchrodingerDirichletBase<PHAL::AlbanyTraits::MPResidual, Traits> {
00142 public:
00143   SchrodingerDirichlet(Teuchos::ParameterList& p);
00144   void evaluateFields(typename Traits::EvalData d);
00145 };
00146 
00147 // **************************************************************
00148 // Multi-point Jacobian
00149 // **************************************************************
00150 template<typename Traits>
00151 class SchrodingerDirichlet<PHAL::AlbanyTraits::MPJacobian,Traits>
00152    : public SchrodingerDirichletBase<PHAL::AlbanyTraits::MPJacobian, Traits> {
00153 public:
00154   SchrodingerDirichlet(Teuchos::ParameterList& p);
00155   void evaluateFields(typename Traits::EvalData d);
00156 };
00157 
00158 // **************************************************************
00159 // Multi-point Tangent
00160 // **************************************************************
00161 template<typename Traits>
00162 class SchrodingerDirichlet<PHAL::AlbanyTraits::MPTangent,Traits>
00163    : public SchrodingerDirichletBase<PHAL::AlbanyTraits::MPTangent, Traits> {
00164 public:
00165   SchrodingerDirichlet(Teuchos::ParameterList& p);
00166   void evaluateFields(typename Traits::EvalData d);
00167 };
00168 #endif //ALBANY_SG_MP
00169 
00170 // **************************************************************
00171 // **************************************************************
00172 // Evaluator to aggregate all SchrodingerDirichlet BCs into one "field"
00173 // **************************************************************
00174 template<typename EvalT, typename Traits>
00175 class SchrodingerDirichletAggregator
00176   : public PHX::EvaluatorWithBaseImpl<Traits>,
00177     public PHX::EvaluatorDerived<EvalT, Traits>
00178 {
00179 private:
00180 
00181   typedef typename EvalT::ScalarT ScalarT;
00182 
00183 public:
00184   
00185   SchrodingerDirichletAggregator(Teuchos::ParameterList& p);
00186   
00187   void postRegistrationSetup(typename Traits::SetupData d,
00188                              PHX::FieldManager<Traits>& vm) {};
00189   
00190   // This function will be overloaded with template specialized code
00191   void evaluateFields(typename Traits::EvalData d) {};
00192 };
00193 }
00194 
00195 #endif

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