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

TimeDepBC.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 TIMEDEPBC_HPP
00008 #define TIMEDEPBC_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 #include "PHAL_Dirichlet.hpp"
00021 #include <vector>
00022 
00023 namespace LCM {
00029 // **************************************************************
00030 // **************************************************************
00031 // * Specialization of the DirichletBase class
00032 // **************************************************************
00033 // **************************************************************
00034 
00035 template<typename EvalT, typename Traits> class TimeDepBC;
00036 
00037 template <typename EvalT, typename Traits> 
00038 class TimeDepBC_Base : public PHAL::DirichletBase<EvalT, Traits> {
00039 public:
00040   typedef typename EvalT::ScalarT ScalarT;
00041   TimeDepBC_Base(Teuchos::ParameterList& p);
00042   ScalarT computeVal(RealType time);
00043 
00044 protected:
00045   const int offset;
00046   std::vector< RealType > timeValues;
00047   std::vector< RealType > BCValues;
00048 };
00049 
00050 // **************************************************************
00051 // Residual 
00052 // **************************************************************
00053 template<typename Traits>
00054 class TimeDepBC<PHAL::AlbanyTraits::Residual,Traits>
00055   : public TimeDepBC_Base<PHAL::AlbanyTraits::Residual, Traits> {
00056 public:
00057   TimeDepBC(Teuchos::ParameterList& p);
00058   typedef typename PHAL::AlbanyTraits::Residual::ScalarT ScalarT;
00059   void evaluateFields(typename Traits::EvalData d);
00060 };
00061 
00062 // **************************************************************
00063 // Jacobian
00064 // **************************************************************
00065 template<typename Traits>
00066 class TimeDepBC<PHAL::AlbanyTraits::Jacobian,Traits>
00067    : public TimeDepBC_Base<PHAL::AlbanyTraits::Jacobian, Traits> {
00068 public:
00069   TimeDepBC(Teuchos::ParameterList& p);
00070   typedef typename PHAL::AlbanyTraits::Jacobian::ScalarT ScalarT;
00071   void evaluateFields(typename Traits::EvalData d);
00072 };
00073 
00074 // **************************************************************
00075 // Tangent
00076 // **************************************************************
00077 template<typename Traits>
00078 class TimeDepBC<PHAL::AlbanyTraits::Tangent,Traits>
00079    : public TimeDepBC_Base<PHAL::AlbanyTraits::Tangent, Traits> {
00080 public:
00081   TimeDepBC(Teuchos::ParameterList& p);
00082   typedef typename PHAL::AlbanyTraits::Tangent::ScalarT ScalarT;
00083   void evaluateFields(typename Traits::EvalData d);
00084 };
00085 
00086 // **************************************************************
00087 // Stochastic Galerkin Residual 
00088 // **************************************************************
00089 #ifdef ALBANY_SG_MP
00090 template<typename Traits>
00091 class TimeDepBC<PHAL::AlbanyTraits::SGResidual,Traits>
00092    : public TimeDepBC_Base<PHAL::AlbanyTraits::SGResidual, Traits> {
00093 public:
00094   TimeDepBC(Teuchos::ParameterList& p);
00095   typedef typename PHAL::AlbanyTraits::SGResidual::ScalarT ScalarT;
00096   void evaluateFields(typename Traits::EvalData d);
00097 };
00098 
00099 // **************************************************************
00100 // Stochastic Galerkin Jacobian
00101 // **************************************************************
00102 template<typename Traits>
00103 class TimeDepBC<PHAL::AlbanyTraits::SGJacobian,Traits>
00104    : public TimeDepBC_Base<PHAL::AlbanyTraits::SGJacobian, Traits> {
00105 public:
00106   TimeDepBC(Teuchos::ParameterList& p);
00107   typedef typename PHAL::AlbanyTraits::SGJacobian::ScalarT ScalarT;
00108   void evaluateFields(typename Traits::EvalData d);
00109 };
00110 
00111 // **************************************************************
00112 // Stochastic Galerkin Tangent
00113 // **************************************************************
00114 template<typename Traits>
00115 class TimeDepBC<PHAL::AlbanyTraits::SGTangent,Traits>
00116    : public TimeDepBC_Base<PHAL::AlbanyTraits::SGTangent, Traits> {
00117 public:
00118   TimeDepBC(Teuchos::ParameterList& p);
00119   typedef typename PHAL::AlbanyTraits::SGTangent::ScalarT ScalarT;
00120   void evaluateFields(typename Traits::EvalData d);
00121 };
00122 
00123 // **************************************************************
00124 // Multi-point Residual 
00125 // **************************************************************
00126 template<typename Traits>
00127 class TimeDepBC<PHAL::AlbanyTraits::MPResidual,Traits>
00128    : public TimeDepBC_Base<PHAL::AlbanyTraits::MPResidual, Traits> {
00129 public:
00130   TimeDepBC(Teuchos::ParameterList& p);
00131   typedef typename PHAL::AlbanyTraits::MPResidual::ScalarT ScalarT;
00132   void evaluateFields(typename Traits::EvalData d);
00133 };
00134 
00135 // **************************************************************
00136 // Multi-point Jacobian
00137 // **************************************************************
00138 template<typename Traits>
00139 class TimeDepBC<PHAL::AlbanyTraits::MPJacobian,Traits>
00140    : public TimeDepBC_Base<PHAL::AlbanyTraits::MPJacobian, Traits> {
00141 public:
00142   TimeDepBC(Teuchos::ParameterList& p);
00143   typedef typename PHAL::AlbanyTraits::MPJacobian::ScalarT ScalarT;
00144   void evaluateFields(typename Traits::EvalData d);
00145 };
00146 
00147 // **************************************************************
00148 // Multi-point Tangent
00149 // **************************************************************
00150 template<typename Traits>
00151 class TimeDepBC<PHAL::AlbanyTraits::MPTangent,Traits>
00152    : public TimeDepBC_Base<PHAL::AlbanyTraits::MPTangent, Traits> {
00153 public:
00154   TimeDepBC(Teuchos::ParameterList& p);
00155   typedef typename PHAL::AlbanyTraits::MPTangent::ScalarT ScalarT;
00156   void evaluateFields(typename Traits::EvalData d);
00157 };
00158 #endif //ALBANY_SG_MP
00159 
00160 }
00161 
00162 #endif

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