4#if !defined(BMIPHREEQCRM_H_INCLUDED)
5#define BMIPHREEQCRM_H_INCLUDED
8#if defined(WITH_PYBIND11)
9#include <pybind11/pybind11.h>
10#include <pybind11/numpy.h>
11#include <pybind11/stl.h>
12#include <pybind11/stl_bind.h>
14namespace py = pybind11;
16class NotIntialized :
public std::runtime_error {
18 NotIntialized() : std::runtime_error(
"must call initialize first") { };
23#include "BMIVariant.h"
25#include "VarManager.h"
567 int GetVarGrid(
const std::string name)
override {
return 0; }
720 std::string
GetVarLocation(
const std::string name)
override {
return "Unknown"; }
870 void GetValue(
const std::string name,
void* dest)
override;
874 void GetValue(
const std::string name,
bool& OUTPUT);
878 void GetValue(
const std::string name,
bool* OUTPUT);
882 void GetValue(
const std::string name,
double& OUTPUT);
886 void GetValue(
const std::string name,
double* OUTPUT);
890 void GetValue(
const std::string name,
int& OUTPUT);
894 void GetValue(
const std::string name,
int* OUTPUT);
898 void GetValue(
const std::string name, std::string& OUTPUT);
902 void GetValue(
const std::string name, std::vector<double>& OUTPUT);
906 void GetValue(
const std::string name, std::vector<int>& OUTPUT);
910 void GetValue(
const std::string name, std::vector<std::string>& OUTPUT);
994 void SetValue(
const std::string name,
void* src)
override;
1002 void SetValue(
const std::string name,
const char* src);
1014 void SetValue(
const std::string name,
const std::string src);
1018 void SetValue(
const std::string name, std::vector<double> src);
1022 void SetValue(
const std::string name, std::vector<int> src);
1026 void SetValue(
const std::string name, std::vector<std::string> src);
1247#if defined(WITH_PYBIND11)
1249 py::array BMIPhreeqcRM::get_value(std::string name, py::array arr);
1253 py::array get_value_ptr(std::string name);
1255 void set_value(std::string name, py::array src);
1257 py::array get_value_at_indices(std::string name, py::array dest, py::array indices);
1259 void set_value_at_indices(std::string name, py::array indices, py::array src);
1261 py::sequence process_sequence(py::sequence seq);
1266#if defined(SWIG) || defined(swig_python_EXPORTS)
1267 void get_value_ptr_double(std::string var,
double** ARGOUTVIEW_ARRAY1,
int* DIM1);
1268 void get_value_ptr_int(std::string var,
int** ARGOUTVIEW_ARRAY1,
int* DIM1);
1269 std::vector<std::string>& get_value_ptr_vector_strings(std::string var);
1277 VarManager* var_man;
1278 bool constructed =
false;
1280 void ClearBMISelectedOutput()
override;
1281 void GenerateAutoOutputVars()
override;
1282 void UpdateBMI(RMVARS v_enum)
override;
1283 void UpdateVariables();
1284 RMVARS GetEnum(
const std::string name);
IRM_RESULT
Enumeration for PhreeqcRM function return codes.
Definition IrmResult.h:8
@ IRM_OK
Definition IrmResult.h:9
C++ header file for PhreeqcRM.
#define MP_TYPE
Definition PhreeqcRM.h:15
Basic Model Interface implementation of the geochemical reaction module PhreeqcRM.
Definition BMIPhreeqcRM.h:44
double GetCurrentTime() override
std::vector< std::string > GetInputVarNames() override
int GetGridEdgeCount(const int grid) override
Definition BMIPhreeqcRM.h:1115
std::string GetVarUnits(const std::string name) override
void SetValue(const std::string name, const char *src)
int GetVarNbytes(const std::string name) override
void GetGridFaceNodes(const int grid, int *face_nodes) override
Definition BMIPhreeqcRM.h:1143
std::string GetVarLocation(const std::string name) override
Definition BMIPhreeqcRM.h:720
void SetValue(const std::string name, double src)
IRM_RESULT SetLanguage(const char *string)
Definition BMIPhreeqcRM.h:1237
std::vector< std::string > GetPointableVarNames()
void SetValue(const std::string name, int src)
void GetValue(const std::string name, std::vector< int > &OUTPUT)
static void CleanupBMIModuleInstances(void)
int GetGridSize(const int grid) override
void GetValue(const std::string name, double *OUTPUT)
void GetGridShape(const int grid, int *shape) override
Definition BMIPhreeqcRM.h:1066
void GetValue(const std::string name, std::vector< std::string > &OUTPUT)
int GetVarGrid(const std::string name) override
Definition BMIPhreeqcRM.h:567
void SetValue(const std::string name, std::vector< std::string > src)
void GetValue(const std::string name, bool *OUTPUT)
std::string GetTimeUnits() override
Definition BMIPhreeqcRM.h:804
double GetTimeStep() override
Definition BMIPhreeqcRM.h:805
static int CreateBMIModule(int nxyz, int nthreads)
void SetValue(const std::string name, bool src)
void SetValueAtIndices(std::string name, int *inds, int count, void *src) override
Definition BMIPhreeqcRM.h:1030
void AddOutputVars(std::string option, std::string def) override
std::string language
Definition BMIPhreeqcRM.h:1239
void GetValue(const std::string name, std::vector< double > &OUTPUT)
double GetEndTime() override
void GetGridY(const int grid, double *y) override
Definition BMIPhreeqcRM.h:1094
void Construct(Initializer initializer) override
static IRM_RESULT DestroyBMIModule(int n)
std::string GetVarType(const std::string name) override
void GetValue(const std::string name, bool &OUTPUT)
void GetGridFaceEdges(const int grid, int *face_edges) override
Definition BMIPhreeqcRM.h:1136
double GetStartTime() override
static BMIPhreeqcRM * GetInstance(int n)
int GetPointableItemCount()
void * GetValuePtr(std::string name) override
void GetValue(const std::string name, void *dest) override
void GetGridSpacing(const int grid, double *spacing) override
Definition BMIPhreeqcRM.h:1073
void GetValue(const std::string name, int &OUTPUT)
static int CreateBMIModule()
std::vector< std::string > GetReadOnlyVarNames()
std::string GetGridType(const int grid) override
void GetValue(const std::string name, int *OUTPUT)
void GetGridX(const int grid, double *x) override
Definition BMIPhreeqcRM.h:1087
int GetOutputItemCount() override
void SetValue(const std::string name, std::vector< int > src)
int GetGridRank(const int grid) override
void Initialize(std::string config_file="") override
void GetValueAtIndices(std::string name, void *dest, int *inds, int count) override
Definition BMIPhreeqcRM.h:941
std::vector< std::string > GetOutputVarNames() override
int GetGridFaceCount(const int grid) override
Definition BMIPhreeqcRM.h:1122
void GetValue(const std::string name, std::string &OUTPUT)
BMIPhreeqcRM(int ngrid, int nthreads)
std::string GetComponentName() override
Definition BMIPhreeqcRM.h:323
void UpdateUntil(double end_time) override
int GetGridNodeCount(const int grid) override
Definition BMIPhreeqcRM.h:1108
void SetValue(const std::string name, const std::string src)
void SetValue(const std::string name, void *src) override
int GetVarItemsize(const std::string name) override
void SetValue(const std::string name, std::vector< double > src)
void GetGridZ(const int grid, double *z) override
Definition BMIPhreeqcRM.h:1101
void GetGridOrigin(const int grid, double *origin) override
Definition BMIPhreeqcRM.h:1080
void GetGridEdgeNodes(const int grid, int *edge_nodes) override
Definition BMIPhreeqcRM.h:1129
void GetGridNodesPerFace(const int grid, int *nodes_per_face) override
Definition BMIPhreeqcRM.h:1150
int GetInputItemCount() override
void GetValue(const std::string name, double &OUTPUT)
Throws an exception for Basic Model Interface methods that are not implemented in BMIPhreeqcRM.
Definition BMIPhreeqcRM.h:32
NotImplemented()
Definition BMIPhreeqcRM.h:34
Geochemical reaction module.
Definition PhreeqcRM.h:267
double GetTimeStep(void)
Definition PhreeqcRM.h:3022