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

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

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