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

QCAD_EvaluatorTools_Def.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 #include <fstream>
00008 #include "Teuchos_TestForException.hpp"
00009 
00010 //#define MESH_SCALAR_IS_AD_TYPE
00011 
00012 // **********************************************************************
00013 //   RESIDUAL
00014 // **********************************************************************
00015 
00016 template<typename Traits>
00017 QCAD::EvaluatorTools<PHAL::AlbanyTraits::Residual,Traits>::
00018 EvaluatorTools()
00019 {
00020 }
00021 
00022 template<typename Traits>
00023 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::Residual, Traits>::
00024 getDoubleValue(const ScalarT& t) const
00025 {
00026   return t;
00027 }
00028 
00029 template<typename Traits>
00030 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::Residual, Traits>::
00031 getMeshDoubleValue(const MeshScalarT& t) const
00032 {
00033   return t;
00034 }
00035 
00036 template<typename Traits>
00037 std::string QCAD::EvaluatorTools<PHAL::AlbanyTraits::Residual, Traits>::
00038 getEvalType() const
00039 {
00040   return "Residual";
00041 }
00042 
00043 
00044 // **********************************************************************
00045 //   JACOBIAN
00046 // **********************************************************************
00047 
00048 template<typename Traits>
00049 QCAD::EvaluatorTools<PHAL::AlbanyTraits::Jacobian,Traits>::
00050 EvaluatorTools()
00051 {
00052 }
00053 
00054 template<typename Traits>
00055 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::Jacobian, Traits>::
00056 getDoubleValue(const ScalarT& t) const
00057 {
00058   return t.val();
00059 }
00060 
00061 template<typename Traits>
00062 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::Jacobian, Traits>::
00063 getMeshDoubleValue(const MeshScalarT& t) const
00064 {
00065   #ifdef MESH_SCALAR_IS_AD_TYPE
00066     return t.val();
00067   #else
00068     return t;
00069   #endif
00070 }
00071 
00072 template<typename Traits>
00073 std::string QCAD::EvaluatorTools<PHAL::AlbanyTraits::Jacobian, Traits>::
00074 getEvalType() const
00075 {
00076   return "Jacobian";
00077 }
00078 
00079 
00080 
00081 // **********************************************************************
00082 //   TANGENT
00083 // **********************************************************************
00084 
00085 template<typename Traits>
00086 QCAD::EvaluatorTools<PHAL::AlbanyTraits::Tangent,Traits>::
00087 EvaluatorTools()
00088 {
00089 }
00090 
00091 template<typename Traits>
00092 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::Tangent, Traits>::
00093 getDoubleValue(const ScalarT& t) const
00094 {
00095   return t.val();
00096 }
00097 
00098 template<typename Traits>
00099 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::Tangent, Traits>::
00100 getMeshDoubleValue(const MeshScalarT& t) const
00101 {
00102   #ifdef MESH_SCALAR_IS_AD_TYPE
00103     return t.val();
00104   #else
00105     return 0.0;
00106     //return t;  //Error about mesh scalar type not convertable to double -- EGN needs to talk with Andy here.
00107   #endif
00108 }
00109 
00110 template<typename Traits>
00111 std::string QCAD::EvaluatorTools<PHAL::AlbanyTraits::Tangent, Traits>::
00112 getEvalType() const
00113 {
00114   return "Tangent";
00115 }
00116 
00117 // **********************************************************************
00118 //  STOCHASTIC GALERKIN RESIDUAL
00119 // **********************************************************************
00120 
00121 #ifdef ALBANY_SG_MP
00122 template<typename Traits>
00123 QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGResidual,Traits>::
00124 EvaluatorTools()
00125 {
00126 }
00127 
00128 template<typename Traits>
00129 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGResidual, Traits>::
00130 getDoubleValue(const ScalarT& t) const
00131 {
00132   return t.val();
00133 }
00134 
00135 template<typename Traits>
00136 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGResidual, Traits>::
00137 getMeshDoubleValue(const MeshScalarT& t) const
00138 {
00139   #ifdef MESH_SCALAR_IS_AD_TYPE
00140     return t.val();
00141   #else
00142     return t;
00143   #endif
00144 }
00145 
00146 template<typename Traits>
00147 std::string QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGResidual, Traits>::
00148 getEvalType() const
00149 {
00150   return "SGResidual";
00151 }
00152 
00153 
00154 // **********************************************************************
00155 //   STOCHASTIC GALERKIN JACOBIAN
00156 // **********************************************************************
00157 
00158 template<typename Traits>
00159 QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGJacobian,Traits>::
00160 EvaluatorTools()
00161 {
00162 }
00163 
00164 template<typename Traits>
00165 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGJacobian, Traits>::
00166 getDoubleValue(const ScalarT& t) const
00167 {
00168   return t.val().val();
00169 }
00170 
00171 template<typename Traits>
00172 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGJacobian, Traits>::
00173 getMeshDoubleValue(const MeshScalarT& t) const
00174 {
00175   #ifdef MESH_SCALAR_IS_AD_TYPE
00176     return t.val().val();
00177   #else
00178     return t;
00179   #endif
00180 }
00181 
00182 template<typename Traits>
00183 std::string QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGJacobian, Traits>::
00184 getEvalType() const
00185 {
00186   return "SGJacobian";
00187 }
00188 
00189 
00190 // **********************************************************************
00191 //   STOCHASTIC GALERKIN TANGENT
00192 // **********************************************************************
00193 
00194 template<typename Traits>
00195 QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGTangent,Traits>::
00196 EvaluatorTools()
00197 {
00198 }
00199 
00200 template<typename Traits>
00201 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGTangent, Traits>::
00202 getDoubleValue(const ScalarT& t) const
00203 {
00204   return t.val().val();
00205 }
00206 
00207 template<typename Traits>
00208 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGTangent, Traits>::
00209 getMeshDoubleValue(const MeshScalarT& t) const
00210 {
00211   #ifdef MESH_SCALAR_IS_AD_TYPE
00212     return t.val().val();
00213   #else
00214     return t;
00215   #endif
00216 }
00217 
00218 template<typename Traits>
00219 std::string QCAD::EvaluatorTools<PHAL::AlbanyTraits::SGTangent, Traits>::
00220 getEvalType() const
00221 {
00222   return "SGTangent";
00223 }
00224 
00225 
00226 // **********************************************************************
00227 //   MULTI-POINT RESIDUAL
00228 // **********************************************************************
00229 
00230 template<typename Traits>
00231 QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPResidual,Traits>::
00232 EvaluatorTools()
00233 {
00234 }
00235 
00236 template<typename Traits>
00237 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPResidual, Traits>::
00238 getDoubleValue(const ScalarT& t) const
00239 {
00240   return t.val(); 
00241 }
00242 
00243 template<typename Traits>
00244 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPResidual, Traits>::
00245 getMeshDoubleValue(const MeshScalarT& t) const
00246 {
00247   #ifdef MESH_SCALAR_IS_AD_TYPE
00248     return t.val();
00249   #else
00250     return t;
00251   #endif
00252 }
00253 
00254 template<typename Traits>
00255 std::string QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPResidual, Traits>::
00256 getEvalType() const
00257 {
00258   return "MPResidual";
00259 }
00260 
00261 
00262 // **********************************************************************
00263 //   MULTI-POINT JACOBIAN
00264 // **********************************************************************
00265 
00266 template<typename Traits>
00267 QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPJacobian,Traits>::
00268 EvaluatorTools()
00269 {
00270 }
00271 
00272 template<typename Traits>
00273 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPJacobian, Traits>::
00274 getDoubleValue(const ScalarT& t) const
00275 {
00276   return t.val().val(); 
00277 }
00278 
00279 template<typename Traits>
00280 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPJacobian, Traits>::
00281 getMeshDoubleValue(const MeshScalarT& t) const
00282 {
00283   #ifdef MESH_SCALAR_IS_AD_TYPE
00284     return t.val().val();
00285   #else
00286     return t;
00287   #endif
00288 }
00289 
00290 template<typename Traits>
00291 std::string QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPJacobian, Traits>::
00292 getEvalType() const
00293 {
00294   return "MPJacobian";
00295 }
00296 
00297 
00298 // **********************************************************************
00299 //   MULTI-POINT TANGENT
00300 // **********************************************************************
00301 
00302 template<typename Traits>
00303 QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPTangent,Traits>::
00304 EvaluatorTools()
00305 {
00306 }
00307 
00308 template<typename Traits>
00309 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPTangent, Traits>::
00310 getDoubleValue(const ScalarT& t) const
00311 {
00312   return t.val().val();
00313 }
00314 
00315 template<typename Traits>
00316 double QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPTangent, Traits>::
00317 getMeshDoubleValue(const MeshScalarT& t) const
00318 {
00319   #ifdef MESH_SCALAR_IS_AD_TYPE
00320     return t.val().val();
00321   #else
00322     return t;
00323   #endif
00324 }
00325 
00326 template<typename Traits>
00327 std::string QCAD::EvaluatorTools<PHAL::AlbanyTraits::MPTangent, Traits>::
00328 getEvalType() const
00329 {
00330   return "MPTangent";
00331 }
00332 
00333 #endif //ALBANY_SG_MP
00334 
00335 // **********************************************************************
00336 

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