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