Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include <vector>
00008 #include <string>
00009
00010 #include "Teuchos_TestForException.hpp"
00011 #include "Phalanx_DataLayout.hpp"
00012 #include "Sacado_ParameterRegistration.hpp"
00013
00014 namespace PHAL {
00015
00016 template<typename EvalT, typename Traits>
00017 SharedParameter<EvalT, Traits>::
00018 SharedParameter(const Teuchos::ParameterList& p)
00019 {
00020 paramName = p.get<std::string>("Parameter Name");
00021 paramValue = p.get<double>("Parameter Value");
00022
00023 Teuchos::RCP<PHX::DataLayout> layout =
00024 p.get< Teuchos::RCP<PHX::DataLayout> >("Data Layout");
00025
00027 PHX::MDField<ScalarT,Dim> f(paramName, layout);
00028 paramAsField = f;
00029
00030
00031 Teuchos::RCP<ParamLib> paramLib =
00032 p.get< Teuchos::RCP<ParamLib> >("Parameter Library");
00033 new Sacado::ParameterRegistration<EvalT, SPL_Traits>(
00034 paramName, this, paramLib);
00035
00036 this->addEvaluatedField(paramAsField);
00037 this->setName("Shared Parameter"+PHX::TypeString<EvalT>::value);
00038 }
00039
00040
00041 template<typename EvalT, typename Traits>
00042 void SharedParameter<EvalT, Traits>::postRegistrationSetup(typename Traits::SetupData d,
00043 PHX::FieldManager<Traits>& fm)
00044 {
00045 this->utils.setFieldData(paramAsField,fm);
00046 }
00047
00048
00049 template<typename EvalT, typename Traits>
00050 void SharedParameter<EvalT, Traits>::evaluateFields(typename Traits::EvalData workset)
00051 {
00052 paramAsField(0) = paramValue;
00053 }
00054
00055
00056 template<typename EvalT,typename Traits>
00057 typename SharedParameter<EvalT,Traits>::ScalarT&
00058 SharedParameter<EvalT,Traits>::getValue(const std::string &n)
00059 {
00060 TEUCHOS_TEST_FOR_EXCEPT(n != paramName);
00061 return paramValue;
00062 }
00063
00064
00065 }
00066
00067