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