Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef PHAL_DIRICHLET_HPP
00008 #define PHAL_DIRICHLET_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 PHAL {
00030
00031
00032
00033
00034 template<typename EvalT, typename Traits>
00035 class DirichletBase
00036 : public PHX::EvaluatorWithBaseImpl<Traits>,
00037 public PHX::EvaluatorDerived<EvalT, Traits>,
00038 public Sacado::ParameterAccessor<EvalT, SPL_Traits>
00039 {
00040
00041 private:
00042
00043
00044 typedef typename EvalT::ScalarT ScalarT;
00045
00046 public:
00047
00048 DirichletBase(Teuchos::ParameterList& p);
00049
00050 void postRegistrationSetup(typename Traits::SetupData d,
00051 PHX::FieldManager<Traits>& vm);
00052
00053
00054 void evaluateFields(typename Traits::EvalData d)=0;
00055
00056 virtual ScalarT& getValue(const std::string &n) { return value; }
00057
00058 protected:
00059 const int offset;
00060 ScalarT value;
00061 std::string nodeSetID;
00062 };
00063
00064
00065
00066
00067
00068
00069
00070 template<typename EvalT, typename Traits> class Dirichlet;
00071
00072
00073
00074
00075 template<typename Traits>
00076 class Dirichlet<PHAL::AlbanyTraits::Residual,Traits>
00077 : public DirichletBase<PHAL::AlbanyTraits::Residual, Traits> {
00078 public:
00079 Dirichlet(Teuchos::ParameterList& p);
00080 void evaluateFields(typename Traits::EvalData d);
00081 };
00082
00083
00084
00085
00086 template<typename Traits>
00087 class Dirichlet<PHAL::AlbanyTraits::Jacobian,Traits>
00088 : public DirichletBase<PHAL::AlbanyTraits::Jacobian, Traits> {
00089 public:
00090 Dirichlet(Teuchos::ParameterList& p);
00091 void evaluateFields(typename Traits::EvalData d);
00092 };
00093
00094
00095
00096
00097 template<typename Traits>
00098 class Dirichlet<PHAL::AlbanyTraits::Tangent,Traits>
00099 : public DirichletBase<PHAL::AlbanyTraits::Tangent, Traits> {
00100 public:
00101 Dirichlet(Teuchos::ParameterList& p);
00102 void evaluateFields(typename Traits::EvalData d);
00103 };
00104
00105
00106
00107
00108 #ifdef ALBANY_SG_MP
00109 template<typename Traits>
00110 class Dirichlet<PHAL::AlbanyTraits::SGResidual,Traits>
00111 : public DirichletBase<PHAL::AlbanyTraits::SGResidual, Traits> {
00112 public:
00113 Dirichlet(Teuchos::ParameterList& p);
00114 void evaluateFields(typename Traits::EvalData d);
00115 };
00116
00117
00118
00119
00120 template<typename Traits>
00121 class Dirichlet<PHAL::AlbanyTraits::SGJacobian,Traits>
00122 : public DirichletBase<PHAL::AlbanyTraits::SGJacobian, Traits> {
00123 public:
00124 Dirichlet(Teuchos::ParameterList& p);
00125 void evaluateFields(typename Traits::EvalData d);
00126 };
00127
00128
00129
00130
00131 template<typename Traits>
00132 class Dirichlet<PHAL::AlbanyTraits::SGTangent,Traits>
00133 : public DirichletBase<PHAL::AlbanyTraits::SGTangent, Traits> {
00134 public:
00135 Dirichlet(Teuchos::ParameterList& p);
00136 void evaluateFields(typename Traits::EvalData d);
00137 };
00138
00139
00140
00141
00142 template<typename Traits>
00143 class Dirichlet<PHAL::AlbanyTraits::MPResidual,Traits>
00144 : public DirichletBase<PHAL::AlbanyTraits::MPResidual, Traits> {
00145 public:
00146 Dirichlet(Teuchos::ParameterList& p);
00147 void evaluateFields(typename Traits::EvalData d);
00148 };
00149
00150
00151
00152
00153 template<typename Traits>
00154 class Dirichlet<PHAL::AlbanyTraits::MPJacobian,Traits>
00155 : public DirichletBase<PHAL::AlbanyTraits::MPJacobian, Traits> {
00156 public:
00157 Dirichlet(Teuchos::ParameterList& p);
00158 void evaluateFields(typename Traits::EvalData d);
00159 };
00160
00161
00162
00163
00164 template<typename Traits>
00165 class Dirichlet<PHAL::AlbanyTraits::MPTangent,Traits>
00166 : public DirichletBase<PHAL::AlbanyTraits::MPTangent, Traits> {
00167 public:
00168 Dirichlet(Teuchos::ParameterList& p);
00169 void evaluateFields(typename Traits::EvalData d);
00170 };
00171 #endif //ALBANY_SG_MP
00172
00173
00174
00175
00176
00177 template<typename EvalT, typename Traits>
00178 class DirichletAggregator
00179 : public PHX::EvaluatorWithBaseImpl<Traits>,
00180 public PHX::EvaluatorDerived<EvalT, Traits>
00181 {
00182 private:
00183
00184 typedef typename EvalT::ScalarT ScalarT;
00185
00186 public:
00187
00188 DirichletAggregator(Teuchos::ParameterList& p);
00189
00190 void postRegistrationSetup(typename Traits::SetupData d,
00191 PHX::FieldManager<Traits>& vm) {};
00192
00193
00194 void evaluateFields(typename Traits::EvalData d) {};
00195 };
00196 }
00197
00198 #endif