Go to the documentation of this file.00001
00002
00003
00004
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
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
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
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
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
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
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
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
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
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
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