#include "InitialList.hpp" #include #include namespace poet { void InitialList::initChemistry(const Rcpp::List &chem) { if (chem.containsElementNamed("dht_species")) { this->dht_species = Rcpp::as>(chem["dht_species"]); } if (chem.containsElementNamed("pht_species")) { this->interp_species = Rcpp::as>(chem["pht_species"]); } if (chem.containsElementNamed("hooks")) { this->chem_hooks = Rcpp::List(chem["hooks"]); std::vector hook_names = this->chem_hooks.names(); for (const auto &name : hook_names) { if (this->hook_name_list.find(name) == this->hook_name_list.end()) { Rcpp::Rcerr << "Unknown chemistry hook: " << name << std::endl; } } } } InitialList::ChemistryInit InitialList::getChemistryInit() const { ChemistryInit chem_init; chem_init.total_grid_cells = this->n_cols * this->n_rows; chem_init.database = database; chem_init.pqc_scripts = pqc_scripts; chem_init.pqc_ids = pqc_ids; chem_init.pqc_sol_order = pqc_sol_order; chem_init.dht_species = dht_species; chem_init.interp_species = interp_species; if (this->chem_hooks.size() > 0) { chem_init.hooks.dht_fill = this->chem_hooks["dht_fill"]; chem_init.hooks.dht_fuzz = this->chem_hooks["dht_fuzz"]; chem_init.hooks.interp_pre = this->chem_hooks["interp_pre"]; chem_init.hooks.interp_post = this->chem_hooks["interp_post"]; } return chem_init; } } // namespace poet