9#if !defined(PHREEQCRM_H_INCLUDED)
10#define PHREEQCRM_H_INCLUDED
13#define MP_TYPE MPI_Comm
21#include "NameDouble.h"
32#include "irm_dll_export.h"
50 const char *
what()
const throw () {
return "Failure in PhreeqcRM\n";}
152 return search->second;
157 template<
typename Derived>
164 if (Derived* derived =
dynamic_cast<Derived*
>(search->second))
177 assert(
dynamic_cast<T*
>(search->second));
178 delete search->second;
205 assert(
dynamic_cast<T*
>(pair.second));
206 items.push_back(pair.second);
208 for (
auto item : items)
273 virtual void AddOutputVars(std::string option, std::string def);
274 virtual void ClearBMISelectedOutput();
275 virtual void GenerateAutoOutputVars();
276 virtual void UpdateBMI(RMVARS v_enum);
371 PhreeqcRM(
int nxyz,
MP_TYPE thread_count_or_communicator, PHRQ_io * io=NULL,
bool delay_construct=
false);
436 const std::vector< double > &tc,
const std::vector< double > &p_atm);
568 void ErrorMessage(
const std::string &error_string,
bool prepend =
true);
678 void GetBackwardMappingSWIG(std::vector<int>& nback_output, std::vector<int>& cellnumbers_output);
747const std::vector< std::string > &
GetComponents(
void)
const {
return this->components;}
919 const std::vector < int> &
GetEndCell(
void) {
return this->end_cell;}
1056const std::vector< std::string > &
GetExchangeNames(
void)
const {
return this->ExchangeNamesList; }
1091const std::vector< std::string > &
GetExchangeSpecies(
void)
const {
return this->ExchangeSpeciesNamesList; }
1195const std::vector< std::string > &
GetGasComponents(
void)
const {
return this->GasComponentsList; }
1387 const std::vector < double > &
GetGfw(
void) {
return this->gfw;}
1704 std::vector< double > & GetPoreVolume(
void) {
return this->pore_volume;}
2200int GetSICount(
void)
const {
return (
int) this->SINamesList.size(); }
2234const std::vector< std::string > &
GetSINames(
void)
const {
return this->SINamesList; }
2685 void GetSpeciesStoichiometrySWIG(std::vector<std::string>& species_output,
2686 std::vector<int>& nelt_output, std::vector<std::string>& elts_output, std::vector<double>& coef_output);
2719 const std::vector< double > &
GetSpeciesZ(
void) {
return this->species_z;}
2792const std::vector< std::string > &
GetSurfaceNames(
void)
const {
return this->SurfaceNamesList; }
2829const std::vector< std::string > &
GetSurfaceSpecies(
void)
const {
return this->SurfaceSpeciesNamesList; }
2903const std::vector< std::string > &
GetSurfaceTypes(
void)
const {
return this->SurfaceTypesList; }
3272 const std::vector<IPhreeqcPhast *> &
GetWorkers() {
return this->workers;}
3423 const std::vector < int > & boundary_solution1);
3463 std::vector < double > & destination_c,
3464 const std::vector < int > & boundary_solution1,
3465 const std::vector < int > & boundary_solution2,
3466 const std::vector < double > & fraction1);
3689 const std::vector < int >& initial_conditions1,
3690 const std::vector < int >& initial_conditions2,
3691 const std::vector < double >& fraction1);
3722 const std::vector < int >& boundary_solution1);
3763 const std::vector < int >& boundary_solution1,
3764 const std::vector < int >& boundary_solution2,
3765 const std::vector < double >& fraction1);
3793 const std::vector< int >& cell_numbers);
4128 IRM_RESULT RunFile(
bool workers,
bool initial_phreeqc,
bool utility,
const std::string & chemistry_name);
5633 static void FileRename(
const std::string &temp_name,
const std::string &name,
5634 const std::string &backup_name);
5640 const int *initial_conditions1,
5641 const int *initial_conditions2,
5643 std::set<std::string> &error_set);
5645 int CheckSelectedOutput();
5648 IPhreeqc * Concentrations2UtilityH2O(
const std::vector< double > &c_in,
5649 const std::vector< double > &t_in,
const std::vector< double > &p_in);
5650 IPhreeqc * Concentrations2UtilityNoH2O(
const std::vector< double > &c_in,
5651 const std::vector< double > &t_in,
const std::vector< double > &p_in);
5652 void Concentrations2Solutions(
int n, std::vector< double > &c);
5653 void Concentrations2SolutionsH2O(
int n, std::vector< double > &c);
5654 void Concentrations2SolutionsNoH2O(
int n, std::vector< double > &c);
5655 void cxxSolution2concentration(cxxSolution * cxxsoln_ptr, std::vector< double > & d,
double v,
double dens);
5656 void cxxSolution2concentrationH2O(cxxSolution * cxxsoln_ptr, std::vector< double > & d,
double v,
double dens);
5657 void cxxSolution2concentrationNoH2O(cxxSolution * cxxsoln_ptr, std::vector< double > & d,
double v,
double dens);
5658 void GatherNchem(std::vector< double > &source, std::vector< double > &destination);
5659 cxxStorageBin & Get_phreeqc_bin(
void) {
return *this->phreeqc_bin;}
5660 IRM_RESULT HandleErrorsInternal(std::vector< int > & r);
5661 void PartitionUZ(
int n,
int iphrq,
int ihst,
double new_frac);
5662 void RebalanceLoad(
void);
5663 void RebalanceLoadPerCell(
void);
5666 IRM_RESULT RunStringThread(
int n, std::string & input);
5668 void Scale_solids(
int n,
int iphrq,
double frac);
5669 void ScatterNchem(
double *d_array);
5670 void ScatterNchem(
int *i_array);
5671 void ScatterNchem(std::vector< double > &source, std::vector< double > &destination);
5672 void ScatterNchem(std::vector< int > &source, std::vector< int > &destination);
5673 IRM_RESULT SetChemistryFileName(
const char * prefix = NULL);
5674 IRM_RESULT SetDatabaseFileName(
const char * db = NULL);
5675 void SetEndCells(
void);
5676 void SetEndCellsHeterogeneous(
void);
5677 double TimeStandardTask(
void);
5678 IRM_RESULT TransferCells(cxxStorageBin &t_bin,
int old,
int nnew);
5679 IRM_RESULT TransferCellsUZ(std::ostringstream &raw_stream,
int old,
int nnew);
5683 IRM_RESULT SetGeneric(
const std::vector< double > &source, std::vector< double > &destination_root, std::vector< double > &destination_worker,
int mpiMethod,
const std::string &name);
5688#if defined(_MSC_VER)
5690#pragma warning(disable:4251)
5695 std::string database_file_name;
5696 std::string chemistry_file_name;
5697 std::string dump_file_name;
5698 std::string file_prefix;
5699 cxxStorageBin * phreeqc_bin;
5702 std::vector <std::string> components;
5703 std::vector <double> gfw;
5705 bool partition_uz_solids;
5707 int count_chemistry;
5710 double time_conversion;
5711 std::vector <double> CurrentConcentrations;
5712 std::vector <double> CurrentSpeciesConcentrations;
5713 std::vector <double> IthCurrentConcentrations;
5714 std::vector <double> IthCurrentSpeciesConcentrations;
5715 std::set<int> IthConcentrationSet;
5716 std::set<int> IthSpeciesConcentrationSet;
5717 std::vector <double> old_saturation_root;
5718 std::vector <double> old_saturation_worker;
5719 std::vector< double > saturation_root;
5720 std::vector< double > saturation_worker;
5721 std::vector< double > pressure_root;
5722 std::vector< double > pressure_worker;
5723 std::vector< double > rv_root;
5724 std::vector< double > rv_worker;
5725 std::vector< double > porosity_root;
5726 std::vector< double > porosity_worker;
5727 std::vector< double > tempc_root;
5728 std::vector< double > tempc_worker;
5729 std::vector< double > density_root;
5730 std::vector< double > density_worker;
5731 std::vector< double > viscosity_root;
5732 std::vector< double > viscosity_worker;
5733 std::vector< double > solution_volume_root;
5734 std::vector< double > solution_volume_worker;
5735 std::vector< int > print_chem_mask_root;
5736 std::vector< int > print_chem_mask_worker;
5737 bool rebalance_by_cell;
5738 double rebalance_fraction;
5740 int units_PPassemblage;
5744 int units_SSassemblage;
5746 std::vector <int> forward_mapping_root;
5747 std::vector <std::vector <int> > backward_mapping;
5748 bool use_solution_density_volume;
5749 bool worker_waiting;
5751 std::vector< bool > print_chemistry_on;
5752 bool selected_output_on;
5755 int error_handler_mode;
5756 bool need_error_check;
5757 std::string phreeqcrm_error_string;
5759 std::map<std::string, int> method_map;
5762 std::vector<IPhreeqcPhast *> workers;
5765 PHRQ_io *phreeqcrm_io;
5766 bool delete_phreeqcrm_io;
5770 MPI_Comm phreeqcrm_comm;
5772 int (*mpi_worker_callback_fortran) (
int *method);
5773 int (*mpi_worker_callback_c) (
int *method,
void *cookie);
5774 void *mpi_worker_callback_cookie;
5777 bool species_save_on;
5778 std::vector <std::string> species_names;
5779 std::vector <double> species_z;
5780 std::vector <double> species_d_25;
5781 std::vector <cxxNameDouble> species_stoichiometry;
5782 std::map<int, int> s_num2rm_species_num;
5783 std::vector< double > standard_task_vector;
5785 std::vector< int > start_cell;
5786 std::vector< int > end_cell;
5788 std::vector <std::string> ExchangeSpeciesNamesList;
5789 std::vector <std::string> ExchangeNamesList;
5790 std::vector <std::string> SurfaceSpeciesNamesList;
5791 std::vector <std::string> SurfaceTypesList;
5792 std::vector <std::string> SurfaceNamesList;
5794 std::vector <std::string> EquilibriumPhasesList;
5795 std::vector <std::string> GasComponentsList;
5796 std::vector <std::string> KineticReactionsList;
5797 std::vector <std::string> SolidSolutionComponentsList;
5798 std::vector <std::string> SolidSolutionNamesList;
5799 std::vector <std::string> SINamesList;
5800 std::set <std::string> ElementRedoxSet;
5803 static const int default_nxyz = 10;
5804 static const MP_TYPE default_data_for_parallel_processing;
5805 struct Initializer {
5807 MP_TYPE data_for_parallel_processing;
5811 : nxyz_arg(default_nxyz) , data_for_parallel_processing(default_data_for_parallel_processing), io(NULL) {}
5813 Initializer(
int nxyz_arg,
MP_TYPE data_for_parallel_processing, PHRQ_io *io)
5814 : nxyz_arg(nxyz_arg) , data_for_parallel_processing(data_for_parallel_processing), io(io) {}
5818 virtual void Construct(Initializer initializer);
5824 friend class VarManager;
5826#if defined(_MSC_VER)
5828#pragma warning(default:4251)
Enumeration used to return error codes.
IRM_RESULT
Enumeration for PhreeqcRM function return codes.
Definition IrmResult.h:8
@ IRM_BADINSTANCE
Definition IrmResult.h:15
@ IRM_OK
Definition IrmResult.h:9
@ METHOD_GETSPECIESLOG10GAMMAS
Definition PhreeqcRM.h:76
@ METHOD_SETCONCENTRATIONS
Definition PhreeqcRM.h:88
@ METHOD_STATEDELETE
Definition PhreeqcRM.h:119
@ METHOD_RUNCELLS
Definition PhreeqcRM.h:84
@ METHOD_CONSTRUCT
Definition PhreeqcRM.h:60
@ METHOD_SETSELECTEDOUTPUTON
Definition PhreeqcRM.h:103
@ METHOD_SETTEMPERATURE
Definition PhreeqcRM.h:105
@ METHOD_SETCOMPONENTH2O
Definition PhreeqcRM.h:87
@ METHOD_GETSATURATIONCALCULATED
Definition PhreeqcRM.h:72
@ METHOD_GETSPECIESCONCENTRATIONS
Definition PhreeqcRM.h:75
@ METHOD_SETUNITSGASPHASE
Definition PhreeqcRM.h:110
@ METHOD_SETSPECIESSAVEON
Definition PhreeqcRM.h:104
@ METHOD_FINDCOMPONENTS
Definition PhreeqcRM.h:63
@ METHOD_CREATEMAPPING
Definition PhreeqcRM.h:61
@ METHOD_SETPOROSITY
Definition PhreeqcRM.h:95
@ METHOD_GETSPECIESLOG10MOLALITIES
Definition PhreeqcRM.h:77
@ METHOD_GETPRESSURE
Definition PhreeqcRM.h:71
@ METHOD_RUNSTRING
Definition PhreeqcRM.h:86
@ METHOD_GETCONCENTRATIONS
Definition PhreeqcRM.h:64
@ METHOD_SETPRINTCHEMISTRYON
Definition PhreeqcRM.h:97
@ METHOD_GETGASCOMPPHI
Definition PhreeqcRM.h:69
@ METHOD_GETGASCOMPPRESSURES
Definition PhreeqcRM.h:68
@ METHOD_SETUNITSKINETICS
Definition PhreeqcRM.h:111
@ METHOD_SETFILEPREFIX
Definition PhreeqcRM.h:91
@ METHOD_INITIALPHREEQCCELL2MODULE
Definition PhreeqcRM.h:81
@ METHOD_SETSATURATIONUSER
Definition PhreeqcRM.h:102
@ METHOD_GETGASCOMPMOLES
Definition PhreeqcRM.h:67
@ METHOD_INITIALPHREEQC2MODULE
Definition PhreeqcRM.h:80
@ METHOD_SETREBALANCEFRACTION
Definition PhreeqcRM.h:100
@ METHOD_GETTEMPERATURE
Definition PhreeqcRM.h:78
@ METHOD_SETUNITSEXCHANGE
Definition PhreeqcRM.h:109
@ METHOD_RUNFILE
Definition PhreeqcRM.h:85
@ METHOD_SETPARTITIONUZSOLIDS
Definition PhreeqcRM.h:94
@ METHOD_SETTIMESTEP
Definition PhreeqcRM.h:108
@ METHOD_GETERRORSTRING
Definition PhreeqcRM.h:66
@ METHOD_GETVISCOSITY
Definition PhreeqcRM.h:79
@ METHOD_SETUNITSPPASSEMBLAGE
Definition PhreeqcRM.h:112
@ METHOD_GETSOLUTIONVOLUME
Definition PhreeqcRM.h:74
@ METHOD_SETGASCOMPMOLES
Definition PhreeqcRM.h:92
@ METHOD_SETTIMECONVERSION
Definition PhreeqcRM.h:107
@ METHOD_STATESAVE
Definition PhreeqcRM.h:117
@ METHOD_SETGASPHASEVOLUME
Definition PhreeqcRM.h:93
@ METHOD_GETGASPHASEVOLUME
Definition PhreeqcRM.h:70
@ METHOD_SETUNITSSOLUTION
Definition PhreeqcRM.h:113
@ METHOD_SETREPRESENTATIVEVOLUME
Definition PhreeqcRM.h:101
@ METHOD_SETTIME
Definition PhreeqcRM.h:106
@ METHOD_MPIWORKERBREAK
Definition PhreeqcRM.h:83
@ METHOD_GETDENSITYCALCULATED
Definition PhreeqcRM.h:65
@ METHOD_SETERRORHANDLERMODE
Definition PhreeqcRM.h:90
@ METHOD_SETREBALANCEBYCELL
Definition PhreeqcRM.h:99
@ METHOD_SETUNITSSURFACE
Definition PhreeqcRM.h:115
@ METHOD_SETUNITSSSASSEMBLAGE
Definition PhreeqcRM.h:114
@ METHOD_LOADDATABASE
Definition PhreeqcRM.h:82
@ METHOD_SETPRINTCHEMISTRYMASK
Definition PhreeqcRM.h:98
@ METHOD_USESOLUTIONDENSITYVOLUME
Definition PhreeqcRM.h:120
@ METHOD_GETSELECTEDOUTPUT
Definition PhreeqcRM.h:73
@ METHOD_SETDENSITYUSER
Definition PhreeqcRM.h:89
@ METHOD_SETPRESSURE
Definition PhreeqcRM.h:96
@ METHOD_DUMPMODULE
Definition PhreeqcRM.h:62
@ METHOD_SPECIESCONCENTRATIONS2MODULE
Definition PhreeqcRM.h:116
@ METHOD_STATEAPPLY
Definition PhreeqcRM.h:118
#define MP_TYPE
Definition PhreeqcRM.h:15
Basic Model Interface implementation of the geochemical reaction module PhreeqcRM.
Definition BMIPhreeqcRM.h:44
This class is derived from std::exception and is thrown when an unrecoverable error has occurred.
Definition PhreeqcRM.h:48
const char * what() const
Definition PhreeqcRM.h:50
Geochemical reaction module.
Definition PhreeqcRM.h:267
IRM_RESULT CloseFiles(void)
const std::vector< double > & GetGfw(void)
Definition PhreeqcRM.h:1387
IRM_RESULT GetSaturation(std::vector< double > &sat_output)
int GetExchangeSpeciesCount(void) const
Definition PhreeqcRM.h:1123
IRM_RESULT SetNthSelectedOutput(int n)
IRM_RESULT RunCells(void)
IRM_RESULT SetUnitsKinetics(int option)
static IRM_RESULT Int2IrmResult(int r, bool positive_ok)
IRM_RESULT SetScreenOn(bool tf)
IRM_RESULT GetIthSpeciesConcentration(int i, std::vector< double > &c_output)
int GetSolidSolutionComponentsCount(void) const
Definition PhreeqcRM.h:2304
IRM_RESULT SetMpiWorkerCallbackFortran(int(*fcn)(int *method))
IRM_RESULT SetPrintChemistryOn(bool workers, bool initial_phreeqc, bool utility)
static IRM_RESULT DestroyReactionModule(int n)
IRM_RESULT InitialSolidSolutions2Module(const std::vector< int > &solid_solutions)
const std::vector< int > & GetPrintChemistryMask(void)
Definition PhreeqcRM.h:1768
IRM_RESULT SetFilePrefix(const std::string &prefix)
IRM_RESULT InitialEquilibriumPhases2Module(const std::vector< int > &equilibrium_phases)
IRM_RESULT GetSelectedOutputHeadings(std::vector< std::string > &headings)
IRM_RESULT GetDensityCalculated(std::vector< double > &d_output)
int GetSelectedOutputCount(void)
IRM_RESULT GetSaturationCalculated(std::vector< double > &sat_output)
void LogMessage(const std::string &str)
bool GetRebalanceByCell(void) const
Definition PhreeqcRM.h:1821
IPhreeqc * Concentrations2Utility(const std::vector< double > &c, const std::vector< double > &tc, const std::vector< double > &p_atm)
const std::vector< double > & GetTemperature(void)
int GetUnitsKinetics(void)
Definition PhreeqcRM.h:3097
const std::vector< std::string > & GetKineticReactions(void) const
Definition PhreeqcRM.h:1524
int GetUnitsSSassemblage(void)
Definition PhreeqcRM.h:3202
int GetChemistryCellCount(void) const
Definition PhreeqcRM.h:702
IRM_RESULT SetUnitsSSassemblage(int option)
const std::vector< double > & GetSpeciesD25(void)
Definition PhreeqcRM.h:2477
IRM_RESULT SetPorosity(const std::vector< double > &por)
int GetCurrentSelectedOutputUserNumber(void)
const std::vector< std::string > & GetGasComponents(void) const
Definition PhreeqcRM.h:1195
IRM_RESULT InitialGasPhases2Module(const std::vector< int > &gas_phases)
const std::vector< cxxNameDouble > & GetSpeciesStoichiometry(void)
Definition PhreeqcRM.h:2683
const std::vector< std::string > & GetExchangeNames(void) const
Definition PhreeqcRM.h:1056
IRM_RESULT SetDumpFileName(const std::string &dump_name)
IRM_RESULT SetErrorOn(bool tf)
void ScreenMessage(const std::string &str)
static int GetGridCellCountYAML(const char *YAML_file)
bool GetSpeciesSaveOn(void)
Definition PhreeqcRM.h:2632
const std::vector< std::string > & GetExchangeSpecies(void) const
Definition PhreeqcRM.h:1091
IRM_RESULT SetSelectedOutputOn(bool tf)
const std::vector< std::string > & GetSpeciesNames(void)
Definition PhreeqcRM.h:2596
IRM_RESULT InitialPhreeqc2SpeciesConcentrations(std::vector< double > &destination_c, const std::vector< int > &boundary_solution1)
IRM_RESULT InitialPhreeqc2SpeciesConcentrations(std::vector< double > &destination_c, const std::vector< int > &boundary_solution1, const std::vector< int > &boundary_solution2, const std::vector< double > &fraction1)
int GetUnitsPPassemblage(void)
Definition PhreeqcRM.h:3122
IRM_RESULT SetUnitsPPassemblage(int option)
const std::vector< int > & GetEndCell(void)
Definition PhreeqcRM.h:919
int GetThreadCount()
Definition PhreeqcRM.h:2950
IRM_RESULT InitialPhreeqc2Module(const std::vector< int > &initial_conditions1, const std::vector< int > &initial_conditions2, const std::vector< double > &fraction1)
IRM_RESULT StateSave(int istate)
const std::vector< double > & GetPorosity(void)
IRM_RESULT SetTime(double time)
int GetComponentCount(void) const
Definition PhreeqcRM.h:722
IRM_RESULT RunString(bool workers, bool initial_phreeqc, bool utility, const std::string &input_string)
IRM_RESULT SetPartitionUZSolids(bool tf)
const std::vector< std::string > & GetSolidSolutionComponents(void) const
Definition PhreeqcRM.h:2271
std::string GetDatabaseFileName(void)
Definition PhreeqcRM.h:855
IRM_RESULT RunFile(bool workers, bool initial_phreeqc, bool utility, const std::string &chemistry_name)
PhreeqcRM(int nxyz, int thread_count_or_communicator, PHRQ_io *io=NULL, bool delay_construct=false)
IRM_RESULT GetGasPhaseVolume(std::vector< double > &gas_volume_output)
IRM_RESULT InitialPhreeqc2Concentrations(std::vector< double > &destination_c, const std::vector< int > &boundary_solution1, const std::vector< int > &boundary_solution2, const std::vector< double > &fraction1)
IRM_RESULT GetSpeciesConcentrations(std::vector< double > &species_conc_output)
const std::vector< std::string > & GetSurfaceNames(void) const
Definition PhreeqcRM.h:2792
static std::string Char2TrimString(const char *str, size_t l=0)
IRM_RESULT GetSpeciesLog10Gammas(std::vector< double > &species_log10gammas)
IRM_RESULT SetIthSpeciesConcentration(int i, std::vector< double > &c)
IRM_RESULT SetPrintChemistryMask(const std::vector< int > &cell_mask)
IRM_RESULT GetConcentrations(std::vector< double > &c_output)
IRM_RESULT SpeciesConcentrations2Module(const std::vector< double > &species_conc)
int GetSelectedOutputRowCount(void)
IRM_RESULT GetSelectedOutputHeading(int icol, std::string &heading)
void DecodeError(int result)
bool GetPartitionUZSolids(void) const
Definition PhreeqcRM.h:1682
IRM_RESULT GetGasCompPhi(std::vector< double > &gas_phi)
int GetMpiMyself(void) const
Definition PhreeqcRM.h:1578
const std::vector< std::string > & GetSolidSolutionNames(void) const
Definition PhreeqcRM.h:2342
const std::vector< std::string > & GetComponents(void) const
Definition PhreeqcRM.h:747
IRM_RESULT InitialSolutions2Module(const std::vector< int > &solutions)
double GetTime(void) const
Definition PhreeqcRM.h:2973
int GetEquilibriumPhasesCount(void) const
Definition PhreeqcRM.h:977
int GetMpiTasks(void) const
Definition PhreeqcRM.h:1604
IRM_RESULT SetGasPhaseVolume(const std::vector< double > &gas_volume)
IRM_RESULT StateApply(int istate)
int GetSpeciesCount(void)
Definition PhreeqcRM.h:2442
IRM_RESULT SetMpiWorkerCallbackCookie(void *cookie)
static void FileRename(const std::string &temp_name, const std::string &name, const std::string &backup_name)
const std::vector< double > & GetPressure(void)
int GetNthSelectedOutputUserNumber(int n)
const std::vector< int > & GetForwardMapping(void)
Definition PhreeqcRM.h:1164
int GetSelectedOutputColumnCount(void)
IRM_RESULT InitializeYAML(std::string yamlfile)
IRM_RESULT SetUnitsExchange(int option)
std::string GetErrorString(void)
int GetGridCellCount(void)
Definition PhreeqcRM.h:1409
IRM_RESULT GetSpeciesLog10Molalities(std::vector< double > &species_log10molalities)
IRM_RESULT ReturnHandler(IRM_RESULT result, const std::string &e_string)
IRM_RESULT InitialPhreeqc2Concentrations(std::vector< double > &destination_c, const std::vector< int > &boundary_solution1)
const std::vector< std::string > & GetSINames(void) const
Definition PhreeqcRM.h:2234
void ErrorMessage(const std::string &error_string, bool prepend=true)
const std::vector< int > & GetStartCell(void)
Definition PhreeqcRM.h:2754
int GetErrorHandlerMode(void)
Definition PhreeqcRM.h:1000
bool GetSelectedOutputOn(void)
Definition PhreeqcRM.h:2124
static int CreateReactionModule(int nxyz, int nthreads)
void OutputMessage(const std::string &str)
IRM_RESULT SetSpeciesSaveOn(bool save_on)
IRM_RESULT OpenFiles(void)
IRM_RESULT SetRebalanceFraction(double f)
int GetKineticReactionsCount(void) const
Definition PhreeqcRM.h:1552
IRM_RESULT LoadDatabase(const std::string &database)
IRM_RESULT SetSaturation(const std::vector< double > &sat)
IRM_RESULT SetMpiWorkerCallbackC(int(*fcn)(int *method, void *cookie))
IRM_RESULT SetTemperature(const std::vector< double > &t)
IPhreeqc * GetIPhreeqcPointer(int i)
IRM_RESULT InitialPhreeqc2Module(const std::vector< int > &initial_conditions1)
IRM_RESULT SetPressure(const std::vector< double > &p)
const std::vector< std::vector< int > > & GetBackwardMapping(void)
Definition PhreeqcRM.h:676
IRM_RESULT SetUnitsSolution(int option)
IRM_RESULT InitialSurfaces2Module(const std::vector< int > &surfaces)
double GetTimeStep(void)
Definition PhreeqcRM.h:3022
int GetUnitsExchange(void)
Definition PhreeqcRM.h:3047
static void CleanupReactionModuleInstances(void)
IRM_RESULT SetIthConcentration(int i, std::vector< double > &c)
IRM_RESULT SetTimeStep(double time_step)
const std::vector< IPhreeqcPhast * > & GetWorkers()
Definition PhreeqcRM.h:3272
IRM_RESULT SetDensityUser(const std::vector< double > &density)
IRM_RESULT CreateMapping(const std::vector< int > &grid2chem)
std::string GetFilePrefix(void)
Definition PhreeqcRM.h:1143
const std::vector< double > & GetSpeciesZ(void)
Definition PhreeqcRM.h:2719
IRM_RESULT SetCurrentSelectedOutputUserNumber(int n_user)
int GetSICount(void) const
Definition PhreeqcRM.h:2200
IRM_RESULT SetUnitsSurface(int option)
double GetTimeConversion(void)
Definition PhreeqcRM.h:2998
IRM_RESULT GetDensity(std::vector< double > &d_output)
double GetRebalanceFraction(void) const
Definition PhreeqcRM.h:1846
void WarningMessage(const std::string &warnstr)
const std::vector< double > & GetSolutionVolume(void)
IRM_RESULT SetErrorHandlerMode(int mode)
int GetGasComponentsCount(void) const
Definition PhreeqcRM.h:1223
IRM_RESULT SetSaturationUser(const std::vector< double > &sat)
const std::vector< std::string > & GetSurfaceTypes(void) const
Definition PhreeqcRM.h:2903
IRM_RESULT InitialKinetics2Module(const std::vector< int > &kinetics)
IRM_RESULT SetGasCompMoles(const std::vector< double > &gas_moles)
IRM_RESULT GetSelectedOutput(std::vector< double > &s_output)
const std::vector< std::string > & GetEquilibriumPhases(void) const
Definition PhreeqcRM.h:949
IRM_RESULT GetGasCompMoles(std::vector< double > &gas_moles_output)
IRM_RESULT SetRebalanceByCell(bool tf)
IRM_RESULT InitialExchanges2Module(const std::vector< int > &exchanges)
IRM_RESULT SetComponentH2O(bool tf)
IRM_RESULT InitialPhreeqcCell2Module(int n, const std::vector< int > &cell_numbers)
IRM_RESULT SetTimeConversion(double conv_factor)
IRM_RESULT StateDelete(int istate)
IRM_RESULT SetRepresentativeVolume(const std::vector< double > &rv)
void UseSolutionDensityVolume(bool tf)
const std::vector< double > & GetViscosity()
const std::vector< bool > & GetPrintChemistryOn(void)
Definition PhreeqcRM.h:1797
const std::vector< std::string > & GetSurfaceSpecies(void) const
Definition PhreeqcRM.h:2829
static bool FileExists(const std::string &name)
IRM_RESULT GetGasCompPressures(std::vector< double > &gas_pressure)
IRM_RESULT SetConcentrations(const std::vector< double > &c)
IRM_RESULT GetIthConcentration(int i, std::vector< double > &c_output)
IRM_RESULT MpiWorkerBreak()
IRM_RESULT DumpModule(bool dump_on, bool append=false)
void ErrorHandler(int result, const std::string &e_string)
int GetUnitsSurface(void)
Definition PhreeqcRM.h:3227
int GetSurfaceSpeciesCount(void) const
Definition PhreeqcRM.h:2863
int GetUnitsSolution(void)
Definition PhreeqcRM.h:3177
IRM_RESULT SetDensity(const std::vector< double > &density)
int GetUnitsGasPhase(void)
Definition PhreeqcRM.h:3072
IRM_RESULT SetUnitsGasPhase(int option)
Definition PhreeqcRM.h:126
static std::map< size_t, T * > _Instances
Definition PhreeqcRM.h:242
static IRM_RESULT Destroy(int id)
Definition PhreeqcRM.h:172
static Derived * GetInstance(int id)
Definition PhreeqcRM.h:158
static size_t _InstancesIndex
Definition PhreeqcRM.h:243
size_t _Index
Definition PhreeqcRM.h:239
StaticIndexer(T *self)
Definition PhreeqcRM.h:128
int GetIndex()
Definition PhreeqcRM.h:233
~StaticIndexer()
Definition PhreeqcRM.h:135
static void DestroyAll()
Definition PhreeqcRM.h:200
static std::mutex _InstancesLock
Definition PhreeqcRM.h:241
static T * GetInstance(int id)
Definition PhreeqcRM.h:146