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 #ifndef TIMETRACBC_HPP 00008 #define TIMETRACBC_HPP 00009 00010 #include "PHAL_Neumann.hpp" 00011 00012 #include "Teuchos_TwoDArray.hpp" 00013 00014 namespace LCM { 00015 00020 template<typename EvalT, typename Traits> 00021 class TimeTracBC_Base : public PHAL::Neumann<EvalT, Traits> { 00022 00023 public: 00024 00025 typedef typename EvalT::ScalarT ScalarT; 00026 typedef typename EvalT::MeshScalarT MeshScalarT; 00027 00028 TimeTracBC_Base(Teuchos::ParameterList& p); 00029 00030 void computeVal(RealType time); 00031 void computeCoordVal(RealType time); 00032 00033 protected: 00034 00035 std::vector< RealType > timeValues; 00036 Teuchos::TwoDArray< RealType > BCValues; 00037 00038 }; 00039 00040 template<typename EvalT, typename Traits> 00041 class TimeTracBC : public TimeTracBC_Base<EvalT, Traits> { 00042 00043 public: 00044 TimeTracBC(Teuchos::ParameterList& p); 00045 void evaluateFields(typename Traits::EvalData d); 00046 private: 00047 typedef typename EvalT::ScalarT ScalarT; 00048 }; 00049 00050 00051 } 00052 00053 #endif