Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include <fstream>
00008 #include "Teuchos_TestForException.hpp"
00009 #include "Phalanx_DataLayout.hpp"
00010 #include "Sacado_ParameterRegistration.hpp"
00011 #include "Albany_Utils.hpp"
00012
00013 namespace LCM {
00014
00015 template<typename EvalT, typename Traits>
00016 Time<EvalT, Traits>::
00017 Time(Teuchos::ParameterList& p) :
00018 time (p.get<std::string>("Time Name"),
00019 p.get<Teuchos::RCP<PHX::DataLayout> >("Workset Scalar Data Layout")),
00020 deltaTime (p.get<std::string>("Delta Time Name"),
00021 p.get<Teuchos::RCP<PHX::DataLayout> >("Workset Scalar Data Layout")),
00022 timeValue(0.0)
00023 {
00024 if (p.isType<bool>("Disable Transient"))
00025 enableTransient = !p.get<bool>("Disable Transient");
00026 else enableTransient = true;
00027
00028
00029 Teuchos::RCP<ParamLib> paramLib =
00030 p.get< Teuchos::RCP<ParamLib> >("Parameter Library", Teuchos::null);
00031 new Sacado::ParameterRegistration<EvalT, SPL_Traits>("Time", this, paramLib);
00032
00033 this->addEvaluatedField(time);
00034 this->addEvaluatedField(deltaTime);
00035
00036 timeName = p.get<std::string>("Time Name")+"_old";;
00037 this->setName("Time"+PHX::TypeString<EvalT>::value);
00038 }
00039
00040
00041 template<typename EvalT, typename Traits>
00042 void Time<EvalT, Traits>::
00043 postRegistrationSetup(typename Traits::SetupData d,
00044 PHX::FieldManager<Traits>& fm)
00045 {
00046 this->utils.setFieldData(time,fm);
00047 this->utils.setFieldData(deltaTime,fm);
00048 }
00049
00050
00051 template<typename EvalT, typename Traits>
00052 void Time<EvalT, Traits>::
00053 evaluateFields(typename Traits::EvalData workset)
00054 {
00055 time(0) = workset.current_time;
00056
00057 Albany::MDArray timeOld = (*workset.stateArrayPtr)[timeName];
00058 deltaTime(0) = time(0) - timeOld(0);
00059
00060 }
00061
00062
00063 template<typename EvalT,typename Traits>
00064 typename Time<EvalT,Traits>::ScalarT&
00065 Time<EvalT,Traits>::getValue(const std::string &n)
00066 {
00067 return timeValue;
00068 }
00069
00070
00071
00072 }
00073