1 #ifndef VERTEXCFD_SCALARPARAMETEROBSERVER_IMPL_HPP
2 #define VERTEXCFD_SCALARPARAMETEROBSERVER_IMPL_HPP
4 #include "VertexCFD_GeneralScalarParameterInput.hpp"
5 #include "VertexCFD_ScalarParameterInput.hpp"
12 template<
class EvalType>
13 void ScalarParameterObserver<EvalType>::registerParameter(
14 const std::string& name,
15 const double default_value,
16 const Teuchos::ParameterList& plist,
17 scalar_type& ref_to_parameter)
32 if (plist.isType<ScalarParameterInput>(name))
34 auto param_input = plist.get<ScalarParameterInput>(name);
35 _scalar_parameters.emplace_back(param_input.parameter_name,
37 ref_to_parameter = default_value;
52 else if (plist.isType<GeneralScalarParameterInput>(name))
54 auto param_input = plist.get<GeneralScalarParameterInput>(name);
55 _general_parameters.emplace_back(param_input.parameter_name,
57 ref_to_parameter = default_value;
61 else if (plist.isType<
double>(name))
63 ref_to_parameter = plist.get<
double>(name);
69 ref_to_parameter = default_value;
74 template<
class EvalType>
75 void ScalarParameterObserver<EvalType>::update(
76 const panzer::GlobalData& global_data,
77 const panzer::Workset& workset,
78 const std::unordered_map<std::string, std::unordered_map<std::string, double>>&
79 general_parameter_data)
81 for (
auto& p : _scalar_parameters)
83 p.update(global_data);
85 for (
auto& p : _general_parameters)
87 p.update(workset, general_parameter_data);
89 this->updateStateWithNewParameters();
97 #endif // end VERTEXCFD_SCALARPARAMETEROBSERVER_IMPL_HPP