hummingbird
Solving the self-adjoint angular flux transport equation using spectral elements on Cartesian geometry
Loading...
Searching...
No Matches
source_bank.cc
Go to the documentation of this file.
1#include "banks/source_bank.h"
2
3namespace hummingbird {
4
5SourceBank::SourceBank(const json& json_input) { Build(json_input); }
6
7void SourceBank::Build(const json& json_input) {
8 int id = 0;
9 id_object_map_.emplace(id, std::make_unique<ConstantVolumetricSource>(0.0));
10 name_id_map_.emplace(std::string("none"), id);
11 id++;
12
13 for (const auto& [name, source_json] : json_input.at("sources").items()) {
14 if (source_json.at("type").get<std::string>() == "parsed_function") {
15 id_object_map_.emplace(
16 id, std::make_unique<ParsedVolumetricSource>(
17 source_json.at("expression").get<std::string>()));
18 name_id_map_.emplace(name, id);
19 id++;
20 } else if (source_json.at("type").get<std::string>() == "constant") {
21 id_object_map_.emplace(id, std::make_unique<ConstantVolumetricSource>(
22 source_json.at("strength").get<double>()));
23 name_id_map_.emplace(name, id);
24 id++;
25 }
26 }
27}
28} // namespace hummingbird
std::unordered_map< std::string, int > name_id_map_
Definition bank_base.h:56
std::unordered_map< int, std::unique_ptr< SourceBase > > id_object_map_
Definition bank_base.h:53
void Build(const json &json_input)
Build internal maps based on JSON input.
Definition source_bank.cc:7
SourceBank(const json &json_input)
Construct a new Source Bank object. Source structs are build using the JSON input file.
Definition source_bank.cc:5