mirror of
https://git.gfz-potsdam.de/naaice/poet.git
synced 2025-12-16 04:48:23 +01:00
Refactor grid initialization and update member access in InitialList
This commit is contained in:
parent
8d6aafbec4
commit
8328fd1390
@ -4,8 +4,6 @@
|
||||
#include <RInside.h>
|
||||
#include <Rcpp/Function.h>
|
||||
#include <Rcpp/vector/instantiation.h>
|
||||
#include <algorithm>
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <regex>
|
||||
#include <string>
|
||||
@ -77,8 +75,10 @@ getModuleSizes(IPhreeqcPOET &phreeqc, const Rcpp::List &initial_grid) {
|
||||
|
||||
void InitialList::initGrid(const Rcpp::List &grid_input) {
|
||||
// parse input values
|
||||
const std::string script = Rcpp::as<std::string>(grid_input["pqc_in"]);
|
||||
const std::string database = Rcpp::as<std::string>(grid_input["pqc_db"]);
|
||||
const std::string script = Rcpp::as<std::string>(
|
||||
grid_input[getGridMemberString(GridMembers::PQC_SCRIPT_FILE)]);
|
||||
const std::string database = Rcpp::as<std::string>(
|
||||
grid_input[getGridMemberString(GridMembers::PQC_DB_FILE)]);
|
||||
|
||||
std::string script_rp(PATH_MAX, '\0');
|
||||
std::string database_rp(PATH_MAX, '\0');
|
||||
@ -93,8 +93,10 @@ void InitialList::initGrid(const Rcpp::List &grid_input) {
|
||||
database);
|
||||
}
|
||||
|
||||
Rcpp::NumericMatrix grid_def = grid_input["grid_def"];
|
||||
Rcpp::NumericVector grid_size = grid_input["grid_size"];
|
||||
Rcpp::NumericMatrix grid_def =
|
||||
grid_input[getGridMemberString(GridMembers::GRID_DEF)];
|
||||
Rcpp::NumericVector grid_size =
|
||||
grid_input[getGridMemberString(GridMembers::GRID_SIZE)];
|
||||
// Rcpp::NumericVector constant_cells = grid["constant_cells"].;
|
||||
|
||||
this->n_rows = grid_def.nrow();
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
namespace poet {
|
||||
void InitialList::initializeFromList(const Rcpp::List &setup) {
|
||||
initGrid(setup["grid"]);
|
||||
initDiffusion(setup["diffusion"]);
|
||||
initGrid(setup[grid_key]);
|
||||
initDiffusion(setup[diffusion_key]);
|
||||
}
|
||||
} // namespace poet
|
||||
@ -3,9 +3,12 @@
|
||||
#include <RInside.h>
|
||||
#include <Rcpp.h>
|
||||
#include <Rcpp/vector/instantiation.h>
|
||||
#include <array>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
#include <IPhreeqcPOET.hpp>
|
||||
#include <map>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
@ -26,6 +29,32 @@ private:
|
||||
RInside &R;
|
||||
|
||||
// Grid members
|
||||
static constexpr const char *grid_key = "Grid";
|
||||
|
||||
enum class GridMembers {
|
||||
PQC_SCRIPT_STRING,
|
||||
PQC_SCRIPT_FILE,
|
||||
PQC_DB_STRING,
|
||||
PQC_DB_FILE,
|
||||
GRID_DEF,
|
||||
GRID_SIZE,
|
||||
CONSTANT_CELLS,
|
||||
POROSITY,
|
||||
ENUM_SIZE
|
||||
};
|
||||
|
||||
static constexpr std::size_t size_GridMembers =
|
||||
static_cast<std::size_t>(InitialList::GridMembers::ENUM_SIZE);
|
||||
|
||||
static constexpr std::array<const char *, size_GridMembers>
|
||||
GridMembersString = {"pqc_in_string", "pqc_in_file", "pqc_db_string",
|
||||
"pqc_db_file", "grid_def", "grid_size",
|
||||
"constant_cells", "porosity"};
|
||||
|
||||
constexpr const char *getGridMemberString(GridMembers member) const {
|
||||
return GridMembersString[static_cast<std::size_t>(member)];
|
||||
}
|
||||
|
||||
void initGrid(const Rcpp::List &grid_input);
|
||||
std::uint8_t dim;
|
||||
|
||||
@ -49,6 +78,9 @@ private:
|
||||
IPhreeqcPOET::ModulesArray module_sizes;
|
||||
|
||||
// Diffusion members
|
||||
|
||||
static constexpr const char *diffusion_key = "Diffusion";
|
||||
|
||||
void initDiffusion(const Rcpp::List &diffusion_input);
|
||||
Rcpp::List boundaries;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user