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