mirror of
https://git.gfz-potsdam.de/naaice/poet.git
synced 2025-12-16 12:54:50 +01:00
Refactor initialization code for diffusion and grid
This commit is contained in:
parent
b0c65ddbda
commit
e3f002de49
@ -146,9 +146,12 @@ static Rcpp::List parseAlphas2D(const SEXP &input,
|
|||||||
return out_list;
|
return out_list;
|
||||||
}
|
}
|
||||||
void InitialList::initDiffusion(const Rcpp::List &diffusion_input) {
|
void InitialList::initDiffusion(const Rcpp::List &diffusion_input) {
|
||||||
const Rcpp::List &boundaries = diffusion_input["boundaries"];
|
const Rcpp::List &boundaries =
|
||||||
const SEXP &alpha_x = diffusion_input["alpha_x"];
|
diffusion_input[DIFFU_MEMBER_STR(DiffusionMembers::BOUNDARIES)];
|
||||||
const SEXP &alpha_y = diffusion_input["alpha_y"];
|
const Rcpp::NumericVector &alpha_x =
|
||||||
|
diffusion_input[DIFFU_MEMBER_STR(DiffusionMembers::ALPHA_X)];
|
||||||
|
const Rcpp::NumericVector &alpha_y =
|
||||||
|
diffusion_input[DIFFU_MEMBER_STR(DiffusionMembers::ALPHA_Y)];
|
||||||
|
|
||||||
std::vector<std::string> colnames =
|
std::vector<std::string> colnames =
|
||||||
Rcpp::as<std::vector<std::string>>(this->initial_grid.names());
|
Rcpp::as<std::vector<std::string>>(this->initial_grid.names());
|
||||||
|
|||||||
@ -100,29 +100,31 @@ void InitialList::initGrid(const Rcpp::List &grid_input) {
|
|||||||
std::string database;
|
std::string database;
|
||||||
|
|
||||||
if (grid_input.containsElementNamed(
|
if (grid_input.containsElementNamed(
|
||||||
getGridMemberString(GridMembers::PQC_SCRIPT_FILE))) {
|
GRID_MEMBER_STR(GridMembers::PQC_SCRIPT_FILE))) {
|
||||||
|
|
||||||
script = readFile(Rcpp::as<std::string>(
|
script = readFile(Rcpp::as<std::string>(
|
||||||
grid_input[getGridMemberString(GridMembers::PQC_SCRIPT_FILE)]));
|
grid_input[GRID_MEMBER_STR(GridMembers::PQC_SCRIPT_FILE)]));
|
||||||
} else {
|
} else {
|
||||||
script = Rcpp::as<std::string>(
|
script = Rcpp::as<std::string>(
|
||||||
grid_input[getGridMemberString(GridMembers::PQC_SCRIPT_STRING)]);
|
grid_input[GRID_MEMBER_STR(GridMembers::PQC_SCRIPT_STRING)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (grid_input.containsElementNamed(
|
if (grid_input.containsElementNamed(
|
||||||
getGridMemberString(GridMembers::PQC_DB_FILE))) {
|
GRID_MEMBER_STR(GridMembers::PQC_DB_FILE))) {
|
||||||
|
|
||||||
database = readFile(Rcpp::as<std::string>(
|
database = readFile(Rcpp::as<std::string>(
|
||||||
grid_input[getGridMemberString(GridMembers::PQC_DB_FILE)]));
|
grid_input[GRID_MEMBER_STR(GridMembers::PQC_DB_FILE)]));
|
||||||
} else {
|
} else {
|
||||||
database = Rcpp::as<std::string>(
|
database = Rcpp::as<std::string>(
|
||||||
grid_input[getGridMemberString(GridMembers::PQC_DB_STRING)]);
|
grid_input[GRID_MEMBER_STR(GridMembers::PQC_DB_STRING)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->database = database;
|
||||||
|
|
||||||
Rcpp::NumericMatrix grid_def =
|
Rcpp::NumericMatrix grid_def =
|
||||||
grid_input[getGridMemberString(GridMembers::GRID_DEF)];
|
grid_input[GRID_MEMBER_STR(GridMembers::GRID_DEF)];
|
||||||
Rcpp::NumericVector grid_size =
|
Rcpp::NumericVector grid_size =
|
||||||
grid_input[getGridMemberString(GridMembers::GRID_SIZE)];
|
grid_input[GRID_MEMBER_STR(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();
|
||||||
@ -155,6 +157,13 @@ void InitialList::initGrid(const Rcpp::List &grid_input) {
|
|||||||
|
|
||||||
this->module_sizes = getModuleSizes(phreeqc, this->initial_grid);
|
this->module_sizes = getModuleSizes(phreeqc, this->initial_grid);
|
||||||
|
|
||||||
|
std::vector<std::string> colnames =
|
||||||
|
Rcpp::as<std::vector<std::string>>(this->initial_grid.names());
|
||||||
|
|
||||||
|
this->to_transport = this->pqc_sol_order = std::vector<std::string>(
|
||||||
|
colnames.begin() + 1,
|
||||||
|
colnames.begin() + 1 + this->module_sizes[POET_SOL]);
|
||||||
|
|
||||||
// print module sizes
|
// print module sizes
|
||||||
for (std::size_t i = 0; i < this->module_sizes.size(); i++) {
|
for (std::size_t i = 0; i < this->module_sizes.size(); i++) {
|
||||||
std::cout << this->module_sizes[i] << std::endl;
|
std::cout << this->module_sizes[i] << std::endl;
|
||||||
|
|||||||
@ -51,7 +51,7 @@ private:
|
|||||||
"pqc_db_file", "grid_def", "grid_size",
|
"pqc_db_file", "grid_def", "grid_size",
|
||||||
"constant_cells", "porosity"};
|
"constant_cells", "porosity"};
|
||||||
|
|
||||||
constexpr const char *getGridMemberString(GridMembers member) const {
|
constexpr const char *GRID_MEMBER_STR(GridMembers member) const {
|
||||||
return GridMembersString[static_cast<std::size_t>(member)];
|
return GridMembersString[static_cast<std::size_t>(member)];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,20 +71,44 @@ private:
|
|||||||
// No export
|
// No export
|
||||||
Rcpp::NumericMatrix phreeqc_mat;
|
Rcpp::NumericMatrix phreeqc_mat;
|
||||||
|
|
||||||
// Initialized by grid, modified by chemistry
|
// Initialized by grid
|
||||||
std::map<int, std::string> pqc_raw_dumps;
|
std::map<int, std::string> pqc_raw_dumps;
|
||||||
|
|
||||||
// Chemistry members
|
// Chemistry members
|
||||||
IPhreeqcPOET::ModulesArray module_sizes;
|
IPhreeqcPOET::ModulesArray module_sizes;
|
||||||
|
|
||||||
// Diffusion members
|
// Diffusion members
|
||||||
|
|
||||||
static constexpr const char *diffusion_key = "Diffusion";
|
static constexpr const char *diffusion_key = "Diffusion";
|
||||||
|
|
||||||
|
enum class DiffusionMembers { BOUNDARIES, ALPHA_X, ALPHA_Y, ENUM_SIZE };
|
||||||
|
|
||||||
|
static constexpr std::size_t size_DiffusionMembers =
|
||||||
|
static_cast<std::size_t>(InitialList::DiffusionMembers::ENUM_SIZE);
|
||||||
|
|
||||||
|
static constexpr std::array<const char *, size_DiffusionMembers>
|
||||||
|
DiffusionMembersString = {"boundaries", "alpha_x", "alpha_y"};
|
||||||
|
|
||||||
|
constexpr const char *DIFFU_MEMBER_STR(DiffusionMembers member) const {
|
||||||
|
return DiffusionMembersString[static_cast<std::size_t>(member)];
|
||||||
|
}
|
||||||
|
|
||||||
void initDiffusion(const Rcpp::List &diffusion_input);
|
void initDiffusion(const Rcpp::List &diffusion_input);
|
||||||
Rcpp::List boundaries;
|
Rcpp::List boundaries;
|
||||||
|
|
||||||
Rcpp::List alpha_x;
|
Rcpp::List alpha_x;
|
||||||
Rcpp::List alpha_y;
|
Rcpp::List alpha_y;
|
||||||
|
|
||||||
|
std::vector<std::string> to_transport;
|
||||||
|
|
||||||
|
// Chemistry Members
|
||||||
|
static constexpr const char *chemistry_key = "Chemistry";
|
||||||
|
|
||||||
|
void initChemistry();
|
||||||
|
|
||||||
|
std::string database;
|
||||||
|
std::vector<std::string> pqc_scripts;
|
||||||
|
std::vector<int> pqc_ids;
|
||||||
|
|
||||||
|
std::vector<std::string> pqc_sol_order;
|
||||||
};
|
};
|
||||||
} // namespace poet
|
} // namespace poet
|
||||||
Loading…
x
Reference in New Issue
Block a user