VertexCFD  0.0-dev
VertexCFD_ScalarParameterManager_impl.hpp
1 #ifndef VERTEXCFD_SCALARPARAMETERMANAGER_IMPL_HPP
2 #define VERTEXCFD_SCALARPARAMETERMANAGER_IMPL_HPP
3 
4 #include <utility>
5 
6 namespace VertexCFD
7 {
8 namespace Parameter
9 {
10 //---------------------------------------------------------------------------//
11 template<class EvalType>
12 ScalarParameterManager<EvalType>::ScalarParameterManager(
13  const ParameterDatabase& parameter_db)
14 {
15  // Extract the general_scalar parameters from the input.
16  auto general_scalar_params = parameter_db.generalScalarParameters();
17  if (Teuchos::nonnull(general_scalar_params))
18  {
19  // Loop through parameters
20  for (const auto& gp : *general_scalar_params)
21  {
22  // Loop through block values
23  std::unordered_map<std::string, double> block_values;
24  auto param_values = general_scalar_params->sublist(gp.first);
25  for (const auto& bv : param_values)
26  {
27  // Insert block name and value.
28  block_values.emplace(bv.first, bv.second.getValue<double>(0));
29  }
30 
31  // Insert parameter name and block values.
32  _general_parameter_data.emplace(gp.first, std::move(block_values));
33  }
34  }
35 }
36 
37 //---------------------------------------------------------------------------//
38 template<class EvalType>
39 void ScalarParameterManager<EvalType>::addObserver(
40  const Teuchos::RCP<ScalarParameterObserver<EvalType>>& observer)
41 {
42  _observers.emplace_back(observer);
43 }
44 
45 //---------------------------------------------------------------------------//
46 template<class EvalType>
47 void ScalarParameterManager<EvalType>::update(
48  const panzer::GlobalData& global_data, const panzer::Workset& workset)
49 {
50  for (auto& o : _observers)
51  {
52  o->update(global_data, workset, _general_parameter_data);
53  }
54 }
55 
56 //---------------------------------------------------------------------------//
57 
58 } // namespace Parameter
59 } // namespace VertexCFD
60 
61 #endif // end VERTEXCFD_SCALARPARAMETERMANAGER_IMPL_HPP
VertexCFD
Definition: tstMethodManufacturedSolutionBC.cpp:23