PhreeqcRM
PhreeqcRM.h
Go to the documentation of this file.
1 
4 #if !defined(PHREEQCRM_H_INCLUDED)
5 #define PHREEQCRM_H_INCLUDED
6 #ifdef USE_MPI
7 #include "mpi.h"
8 #define MP_TYPE MPI_Comm
9 #else
10 #define MP_TYPE int
11 #endif
12 class IPhreeqcPhast;
13 
14 class cxxStorageBin;
15 //class cxxNameDouble;
16 #include "NameDouble.h"
17 class cxxSolution;
18 class PHRQ_io;
19 #include <vector>
20 #include <list>
21 #include <set>
22 #include <map>
23 #include <string>
24 
25 #if defined(_WINDLL)
26 #define IRM_DLL_EXPORT __declspec(dllexport)
27 #else
28 #define IRM_DLL_EXPORT
29 #endif
30 
31 class PHRQ_io;
32 class IPhreeqc;
39 class IRM_DLL_EXPORT PhreeqcRMStop : public std::exception
40 {
41 public:
42  const char *what() const throw () {return "Failure in PhreeqcRM\n";}
43 };
44 
47 #include "IrmResult.h"
48 enum {
49  METHOD_CREATEMAPPING,
50  METHOD_DUMPMODULE,
51  METHOD_FINDCOMPONENTS,
52  METHOD_GETCONCENTRATIONS,
53  METHOD_GETDENSITY,
54  METHOD_GETERRORSTRING,
55  METHOD_GETPRESSURE,
56  METHOD_GETSATURATION,
57  METHOD_GETSELECTEDOUTPUT,
58  METHOD_GETSOLUTIONVOLUME,
59  METHOD_GETSPECIESCONCENTRATIONS,
60  METHOD_GETTEMPERATURE,
61  METHOD_INITIALPHREEQC2MODULE,
62  METHOD_INITIALPHREEQCCELL2MODULE,
63  METHOD_LOADDATABASE,
64  METHOD_MPIWORKERBREAK,
65  METHOD_RUNCELLS,
66  METHOD_RUNFILE,
67  METHOD_RUNSTRING,
68  METHOD_SETCOMPONENTH2O,
69  METHOD_SETCONCENTRATIONS,
70  METHOD_SETDENSITY,
71  METHOD_SETERRORHANDLERMODE,
72  METHOD_SETFILEPREFIX,
73  METHOD_SETPARTITIONUZSOLIDS,
74  METHOD_SETPOROSITY,
75  METHOD_SETPRESSURE,
76  METHOD_SETPRINTCHEMISTRYON,
77  METHOD_SETPRINTCHEMISTRYMASK,
78  METHOD_SETREBALANCEBYCELL,
79  METHOD_SETREBALANCEFRACTION,
80  METHOD_SETREPRESENTATIVEVOLUME,
81  METHOD_SETSATURATION,
82  METHOD_SETSELECTEDOUTPUTON,
83  METHOD_SETSPECIESSAVEON,
84  METHOD_SETTEMPERATURE,
85  METHOD_SETTIME,
86  METHOD_SETTIMECONVERSION,
87  METHOD_SETTIMESTEP,
88  METHOD_SETUNITSEXCHANGE,
89  METHOD_SETUNITSGASPHASE,
90  METHOD_SETUNITSKINETICS,
91  METHOD_SETUNITSPPASSEMBLAGE,
92  METHOD_SETUNITSSOLUTION,
93  METHOD_SETUNITSSSASSEMBLAGE,
94  METHOD_SETUNITSSURFACE,
95  METHOD_SPECIESCONCENTRATIONS2MODULE,
96  METHOD_USESOLUTIONDENSITYVOLUME
97 } /* MPI_METHOD */;
98 
119 class IRM_DLL_EXPORT PhreeqcRM
120 {
121 public:
122  static void CleanupReactionModuleInstances(void);
123  static int CreateReactionModule(int nxyz, MP_TYPE nthreads);
124  static IRM_RESULT DestroyReactionModule(int n);
125  static PhreeqcRM * GetInstance(int n);
126 
167  PhreeqcRM(int nxyz, MP_TYPE thread_count_or_communicator, PHRQ_io * io=NULL);
168  ~PhreeqcRM(void);
184  IRM_RESULT CloseFiles(void);
231  IPhreeqc * Concentrations2Utility(std::vector<double> &c,
232  std::vector<double> tc, std::vector<double> p_atm);
268  IRM_RESULT CreateMapping(std::vector<int> &grid2chem);
302  void DecodeError(int result);
324  IRM_RESULT DumpModule(bool dump_on, bool append = false);
347  void ErrorHandler(int result, const std::string &e_string);
364  void ErrorMessage(const std::string &error_string, bool prepend = true);
415  int FindComponents();
441  const std::vector < std::vector <int> > & GetBackwardMapping(void) {return this->backward_mapping;}
464  int GetChemistryCellCount(void) const {return this->count_chemistry;}
484  int GetComponentCount(void) const {return (int) this->components.size();}
509  const std::vector<std::string> & GetComponents(void) const {return this->components;}
548  IRM_RESULT GetConcentrations(std::vector<double> &c);
566  std::string GetDatabaseFileName(void) {return this->database_file_name;}
591  IRM_RESULT GetDensity(std::vector<double> & density);
627  const std::vector < int> & GetEndCell(void) const {return this->end_cell;}
648  int GetErrorHandlerMode(void) {return this->error_handler_mode;}
667  std::string GetErrorString(void);
685  std::string GetFilePrefix(void) {return this->file_prefix;}
706  const std::vector < int > & GetForwardMapping(void) {return this->forward_mapping_root;}
733  const std::vector < double > & GetGfw(void) {return this->gfw;}
755  int GetGridCellCount(void) {return this->nxyz;}
782  IPhreeqc * GetIPhreeqcPointer(int i);
807  int GetMpiMyself(void) const {return this->mpi_myself;}
833  int GetMpiTasks(void) const {return this->mpi_tasks;}
871  int GetNthSelectedOutputUserNumber(int n);
904  bool GetPartitionUZSolids(void) const {return this->partition_uz_solids;}
905 #ifdef USE_RV
906 
926  std::vector<double> & GetPoreVolume(void) {return this->pore_volume;}
927 #endif
928 
949  const std::vector<double> & GetPressure(void);
970  const std::vector<int> & GetPrintChemistryMask (void) {return this->print_chem_mask_root;}
999  const std::vector <bool> & GetPrintChemistryOn(void) const {return this->print_chemistry_on;}
1023  bool GetRebalanceByCell(void) const {return this->rebalance_by_cell;}
1048  double GetRebalanceFraction(void) const {return this->rebalance_fraction;}
1079 IRM_RESULT GetSaturation(std::vector<double> & sat);
1111  IRM_RESULT GetSelectedOutput(std::vector<double> &so);
1150  int GetSelectedOutputColumnCount(void);
1177  int GetSelectedOutputCount(void);
1214  IRM_RESULT GetSelectedOutputHeading(int icol, std::string &heading);
1233  bool GetSelectedOutputOn(void) {return this->selected_output_on;}
1273  int GetSelectedOutputRowCount(void);
1294  const std::vector<double> & GetSolutionVolume(void);
1338  IRM_RESULT GetSpeciesConcentrations(std::vector<double> & species_conc);
1368  int GetSpeciesCount(void) {return (int) this->species_names.size();}
1401  const std::vector<double> & GetSpeciesD25(void) {return this->species_d_25;}
1433  const std::vector<std::string> & GetSpeciesNames(void) {return this->species_names;}
1469  bool GetSpeciesSaveOn(void) {return this->species_save_on;}
1470 
1518  const std::vector<cxxNameDouble> & GetSpeciesStoichiometry(void) {return this->species_stoichiometry;}
1548  const std::vector<double> & GetSpeciesZ(void) {return this->species_z;}
1583  const std::vector < int> & GetStartCell(void) const {return this->start_cell;}
1604  //const std::vector<double> & GetTemperature(void) {return this->tempc;}
1605  const std::vector<double> & GetTemperature(void);
1626  int GetThreadCount() {return this->nthreads;}
1649  double GetTime(void) const {return this->time;}
1674  double GetTimeConversion(void) {return this->time_conversion;}
1698  double GetTimeStep(void) {return this->time_step;}
1723  int GetUnitsExchange(void) {return this->units_Exchange;}
1748  int GetUnitsGasPhase(void) {return this->units_GasPhase;}
1773  int GetUnitsKinetics(void) {return this->units_Kinetics;}
1798  int GetUnitsPPassemblage(void) {return this->units_PPassemblage;}
1852  int GetUnitsSolution(void) {return this->units_Solution;}
1877  int GetUnitsSSassemblage(void) {return this->units_SSassemblage;}
1902  int GetUnitsSurface(void) {return this->units_Surface;}
1925  const std::vector<IPhreeqcPhast *> & GetWorkers() {return this->workers;}
1953  IRM_RESULT InitialPhreeqc2Concentrations(
1954  std::vector < double > & destination_c,
1955  std::vector < int > & boundary_solution1);
1994  IRM_RESULT InitialPhreeqc2Concentrations(
1995  std::vector < double > & destination_c,
1996  std::vector < int > & boundary_solution1,
1997  std::vector < int > & boundary_solution2,
1998  std::vector < double > & fraction1);
2039  IRM_RESULT InitialPhreeqc2Module(std::vector < int > & initial_conditions1);
2102  IRM_RESULT InitialPhreeqc2Module(
2103  std::vector < int > & initial_conditions1,
2104  std::vector < int > & initial_conditions2,
2105  std::vector < double > & fraction1);
2135  IRM_RESULT InitialPhreeqc2SpeciesConcentrations(
2136  std::vector < double > & destination_c,
2137  std::vector < int > & boundary_solution1);
2177  IRM_RESULT InitialPhreeqc2SpeciesConcentrations(
2178  std::vector < double > & destination_c,
2179  std::vector < int > & boundary_solution1,
2180  std::vector < int > & boundary_solution2,
2181  std::vector < double > & fraction1);
2208  IRM_RESULT InitialPhreeqcCell2Module(int n, const std::vector<int> &cell_numbers);
2225  IRM_RESULT LoadDatabase(const std::string &database);
2244  void LogMessage(const std::string &str);
2259  int MpiAbort();
2305  IRM_RESULT MpiWorker();
2327  IRM_RESULT MpiWorkerBreak();
2346  IRM_RESULT OpenFiles(void);
2372  void OutputMessage(const std::string &str);
2405  IRM_RESULT RunCells(void);
2426  IRM_RESULT ReturnHandler(IRM_RESULT result, const std::string &e_string);
2451  IRM_RESULT RunFile(bool workers, bool initial_phreeqc, bool utility, const std::string & chemistry_name);
2478  IRM_RESULT RunString(bool workers, bool initial_phreeqc, bool utility, const std::string & input_string);
2501  void ScreenMessage(const std::string &str);
2530  IRM_RESULT SetComponentH2O(bool tf);
2568  IRM_RESULT SetConcentrations(const std::vector<double> &c);
2600  IRM_RESULT SetCurrentSelectedOutputUserNumber(int n_user);
2625  IRM_RESULT SetDensity(const std::vector<double> &density);
2645  IRM_RESULT SetDumpFileName(const std::string & dump_name);
2666  IRM_RESULT SetErrorHandlerMode(int mode);
2685  IRM_RESULT SetFilePrefix(const std::string & prefix);
2781  IRM_RESULT SetMpiWorkerCallbackC(int (*fcn)(int *method, void * cookie));
2852  IRM_RESULT SetMpiWorkerCallbackCookie(void * cookie);
2857  IRM_RESULT SetMpiWorkerCallbackFortran(int (*fcn)(int *method));
2893  IRM_RESULT SetPartitionUZSolids(bool tf);
2916  IRM_RESULT SetPorosity(const std::vector<double> &por);
2917 
2938  IRM_RESULT SetPressure(const std::vector<double> &p);
2965  IRM_RESULT SetPrintChemistryMask(std::vector<int> & cell_mask);
3000  IRM_RESULT SetPrintChemistryOn(bool workers, bool initial_phreeqc, bool utility);
3025  IRM_RESULT SetRebalanceByCell(bool tf);
3054  IRM_RESULT SetRebalanceFraction(double f);
3086  IRM_RESULT SetRepresentativeVolume(const std::vector<double> &rv);
3115  IRM_RESULT SetSaturation(const std::vector<double> &sat);
3135  IRM_RESULT SetScreenOn(bool tf);
3157  IRM_RESULT SetSelectedOutputOn(bool tf);
3191  IRM_RESULT SetSpeciesSaveOn(bool save_on);
3217  IRM_RESULT SetTemperature(const std::vector<double> &t);
3235  IRM_RESULT SetTime(double time);
3254  IRM_RESULT SetTimeConversion(double conv_factor);
3274  IRM_RESULT SetTimeStep(double time_step);
3307  IRM_RESULT SetUnitsExchange(int option);
3341  IRM_RESULT SetUnitsGasPhase(int option);
3389  IRM_RESULT SetUnitsKinetics(int option);
3422  IRM_RESULT SetUnitsPPassemblage(int option);
3474  IRM_RESULT SetUnitsSolution(int option);
3507  IRM_RESULT SetUnitsSSassemblage(int option);
3540  IRM_RESULT SetUnitsSurface(int option);
3586  IRM_RESULT SpeciesConcentrations2Module(std::vector<double> & species_conc);
3622 void UseSolutionDensityVolume(bool tf);
3639  void WarningMessage(const std::string &warnstr);
3640 
3641  // Utilities
3642  static std::string Char2TrimString(const char * str, size_t l = 0);
3643  static bool FileExists(const std::string &name);
3644  static void FileRename(const std::string &temp_name, const std::string &name,
3645  const std::string &backup_name);
3646  static IRM_RESULT Int2IrmResult(int r, bool positive_ok);
3647 protected:
3648  IRM_RESULT CellInitialize(
3649  int i,
3650  int n_user_new,
3651  int *initial_conditions1,
3652  int *initial_conditions2,
3653  double *fraction1,
3654  std::set<std::string> &error_set);
3655  IRM_RESULT CheckCells();
3656  int CheckSelectedOutput();
3657  //void Collapse2Nchem(double *d_in, double *d_out);
3658  //void Collapse2Nchem(int *i_in, int *i_out);
3659  IPhreeqc * Concentrations2UtilityH2O(std::vector<double> &c_in,
3660  std::vector<double> &t_in, std::vector<double> &p_in);
3661  IPhreeqc * Concentrations2UtilityNoH2O(std::vector<double> &c_in,
3662  std::vector<double> &t_in, std::vector<double> &p_in);
3663  void Concentrations2Solutions(int n, std::vector<double> &c);
3664  void Concentrations2SolutionsH2O(int n, std::vector<double> &c);
3665  void Concentrations2SolutionsNoH2O(int n, std::vector<double> &c);
3666  void cxxSolution2concentration(cxxSolution * cxxsoln_ptr, std::vector<double> & d, double v, double dens);
3667  void cxxSolution2concentrationH2O(cxxSolution * cxxsoln_ptr, std::vector<double> & d, double v, double dens);
3668  void cxxSolution2concentrationNoH2O(cxxSolution * cxxsoln_ptr, std::vector<double> & d, double v, double dens);
3669  void GatherNchem(std::vector<double> &source, std::vector<double> &destination);
3670  cxxStorageBin & Get_phreeqc_bin(void) {return *this->phreeqc_bin;}
3671  IRM_RESULT HandleErrorsInternal(std::vector< int > & r);
3672  void PartitionUZ(int n, int iphrq, int ihst, double new_frac);
3673  void RebalanceLoad(void);
3674  void RebalanceLoadPerCell(void);
3675  IRM_RESULT RunCellsThread(int i);
3676  IRM_RESULT RunFileThread(int n);
3677  IRM_RESULT RunStringThread(int n, std::string & input);
3678  IRM_RESULT RunCellsThreadNoPrint(int n);
3679  void Scale_solids(int n, int iphrq, double frac);
3680  void ScatterNchem(double *d_array);
3681  void ScatterNchem(int *i_array);
3682  void ScatterNchem(std::vector<double> &source, std::vector<double> &destination);
3683  void ScatterNchem(std::vector<int> &source, std::vector<int> &destination);
3684  IRM_RESULT SetChemistryFileName(const char * prefix = NULL);
3685  IRM_RESULT SetDatabaseFileName(const char * db = NULL);
3686  void SetEndCells(void);
3687  void SetEndCellsHeterogeneous(void);
3688  double TimeStandardTask(void);
3689  IRM_RESULT TransferCells(cxxStorageBin &t_bin, int old, int nnew);
3690  IRM_RESULT TransferCellsUZ(std::ostringstream &raw_stream, int old, int nnew);
3691 
3692 private:
3693  //IRM_RESULT SetGeneric(std::vector<double> &destination, int newSize, const std::vector<double> &origin, int mpiMethod, const std::string &name, const double newValue = 0.0);
3694  IRM_RESULT SetGeneric(const std::vector<double> &source, std::vector<double> &destination_root, std::vector<double> &destination_worker, int mpiMethod, const std::string &name);
3695 protected:
3696 
3697 #if defined(_MSC_VER)
3698 /* disable warning C4251: 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2' */
3699 #pragma warning(disable:4251)
3700 #endif
3701 
3702  bool component_h2o; // true: use H2O, excess H, excess O, and charge;
3703  // false total H, total O, and charge
3704  std::string database_file_name;
3705  std::string chemistry_file_name;
3706  std::string dump_file_name;
3707  std::string file_prefix;
3708  cxxStorageBin * phreeqc_bin;
3709  int mpi_myself;
3710  int mpi_tasks;
3711  std::vector <std::string> components; // list of components to be transported
3712  std::vector <double> gfw; // gram formula weights converting mass to moles (1 for each component)
3713  double gfw_water; // gfw of water
3714  bool partition_uz_solids;
3715  int nxyz; // number of nodes
3716  int count_chemistry; // number of cells for chemistry
3717  double time; // time from transport, sec
3718  double time_step; // time step from transport, sec
3719  double time_conversion; // time conversion factor, multiply to convert to preferred time unit for output
3720  std::vector <double> old_saturation_root; // saturation fraction from previous step
3721  std::vector <double> old_saturation_worker;
3722  std::vector<double> saturation_root; // nxyz saturation fraction
3723  std::vector<double> saturation_worker; // nchem on workers saturation fraction
3724  std::vector<double> pressure_root; // nxyz on root current pressure
3725  std::vector<double> pressure_worker; // nchem on workers current pressure
3726  std::vector<double> rv_root; // nxyz on root representative volume
3727  std::vector<double> rv_worker; // nchem on workers representative volume
3728  std::vector<double> porosity_root; // nxyz porosity
3729  std::vector<double> porosity_worker; // nchem on workers porosity
3730  std::vector<double> tempc_root; // nxyz on root temperature Celsius
3731  std::vector<double> tempc_worker; // nchem on workers temperature Celsius
3732  std::vector<double> density_root; // nxyz density
3733  std::vector<double> density_worker; // nchem on workers density
3734  std::vector<double> solution_volume_root; // nxyz on root solution volume
3735  std::vector<double> solution_volume_worker; // nchem on workers solution_volume
3736  std::vector<int> print_chem_mask_root; // nxyz print flags for output file
3737  std::vector<int> print_chem_mask_worker; // nchem print flags for output file
3738  bool rebalance_by_cell; // rebalance method 0 std, 1 by_cell
3739  double rebalance_fraction; // parameter for rebalancing process load for parallel
3740  int units_Solution; // 1 mg/L, 2 mol/L, 3 kg/kgs
3741  int units_PPassemblage; // 0, mol/L cell; 1, mol/L water; 2 mol/L rock
3742  int units_Exchange; // 0, mol/L cell; 1, mol/L water; 2 mol/L rock
3743  int units_Surface; // 0, mol/L cell; 1, mol/L water; 2 mol/L rock
3744  int units_GasPhase; // 0, mol/L cell; 1, mol/L water; 2 mol/L rock
3745  int units_SSassemblage; // 0, mol/L cell; 1, mol/L water; 2 mol/L rock
3746  int units_Kinetics; // 0, mol/L cell; 1, mol/L water; 2 mol/L rock
3747  std::vector <int> forward_mapping_root; // mapping from nxyz cells to count_chem chemistry cells
3748  std::vector <std::vector <int> > backward_mapping; // mapping from count_chem chemistry cells to nxyz cells
3749  bool use_solution_density_volume;
3750 
3751  // print flags
3752  std::vector<bool> print_chemistry_on; // print flag for chemistry output file
3753  bool selected_output_on; // create selected output
3754 
3755  int error_count;
3756  int error_handler_mode; // 0, return code; 1, throw; 2 exit;
3757  bool need_error_check;
3758  std::string phreeqcrm_error_string;
3759 
3760  // threading
3761  int nthreads;
3762  std::vector<IPhreeqcPhast *> workers;
3763  std::vector<int> start_cell;
3764  std::vector<int> end_cell;
3765  PHRQ_io *phreeqcrm_io;
3766  bool delete_phreeqcrm_io;
3767 
3768  // mpi
3769 #ifdef USE_MPI
3770  MPI_Comm phreeqcrm_comm; // MPI communicator
3771 #endif
3772  int (*mpi_worker_callback_fortran) (int *method);
3773  int (*mpi_worker_callback_c) (int *method, void *cookie);
3774  void *mpi_worker_callback_cookie;
3775 
3776  // mcd
3777  bool species_save_on;
3778  std::vector <std::string> species_names;
3779  std::vector <double> species_z;
3780  std::vector <double> species_d_25;
3781  std::vector <cxxNameDouble> species_stoichiometry;
3782  std::map<int, int> s_num2rm_species_num;
3783  std::vector<double> standard_task_vector; // root only
3784 
3785 private:
3786  //friend class RM_interface;
3787  static std::map<size_t, PhreeqcRM*> Instances;
3788  static size_t InstancesIndex;
3789 
3790 #if defined(_MSC_VER)
3791 /* reset warning C4251 */
3792 #pragma warning(default:4251)
3793 #endif
3794 
3795 };
3796 #endif // !defined(PHREEQCRM_H_INCLUDED)
int GetUnitsExchange(void)
Definition: PhreeqcRM.h:1723
const std::vector< std::vector< int > > & GetBackwardMapping(void)
Definition: PhreeqcRM.h:441
int GetUnitsGasPhase(void)
Definition: PhreeqcRM.h:1748
int GetUnitsSurface(void)
Definition: PhreeqcRM.h:1902
int GetGridCellCount(void)
Definition: PhreeqcRM.h:755
std::string GetFilePrefix(void)
Definition: PhreeqcRM.h:685
int GetChemistryCellCount(void) const
Definition: PhreeqcRM.h:464
int GetUnitsSolution(void)
Definition: PhreeqcRM.h:1852
const std::vector< double > & GetSpeciesZ(void)
Definition: PhreeqcRM.h:1548
bool GetSelectedOutputOn(void)
Definition: PhreeqcRM.h:1233
const std::vector< std::string > & GetSpeciesNames(void)
Definition: PhreeqcRM.h:1433
Geochemical reaction module.
Definition: PhreeqcRM.h:119
std::string GetDatabaseFileName(void)
Definition: PhreeqcRM.h:566
int GetUnitsSSassemblage(void)
Definition: PhreeqcRM.h:1877
double GetTimeStep(void)
Definition: PhreeqcRM.h:1698
int GetErrorHandlerMode(void)
Definition: PhreeqcRM.h:648
int GetSpeciesCount(void)
Definition: PhreeqcRM.h:1368
const std::vector< int > & GetForwardMapping(void)
Definition: PhreeqcRM.h:706
const std::vector< int > & GetStartCell(void) const
Definition: PhreeqcRM.h:1583
double GetRebalanceFraction(void) const
Definition: PhreeqcRM.h:1048
This class is derived from std::exception and is thrown when an unrecoverable error has occured...
Definition: PhreeqcRM.h:39
const std::vector< double > & GetSpeciesD25(void)
Definition: PhreeqcRM.h:1401
const std::vector< int > & GetPrintChemistryMask(void)
Definition: PhreeqcRM.h:970
int GetMpiMyself(void) const
Definition: PhreeqcRM.h:807
bool GetSpeciesSaveOn(void)
Definition: PhreeqcRM.h:1469
const std::vector< double > & GetGfw(void)
Definition: PhreeqcRM.h:733
double GetTime(void) const
Definition: PhreeqcRM.h:1649
IRM_RESULT
Enumeration for PhreeqcRM function return codes.
Definition: IrmResult.h:8
const std::vector< int > & GetEndCell(void) const
Definition: PhreeqcRM.h:627
const std::vector< std::string > & GetComponents(void) const
Definition: PhreeqcRM.h:509
int GetComponentCount(void) const
Definition: PhreeqcRM.h:484
int GetUnitsPPassemblage(void)
Definition: PhreeqcRM.h:1798
double GetTimeConversion(void)
Definition: PhreeqcRM.h:1674
Enumeration used to return error codes.
bool GetRebalanceByCell(void) const
Definition: PhreeqcRM.h:1023
const std::vector< bool > & GetPrintChemistryOn(void) const
Definition: PhreeqcRM.h:999
const std::vector< IPhreeqcPhast * > & GetWorkers()
Definition: PhreeqcRM.h:1925
int GetThreadCount()
Definition: PhreeqcRM.h:1626
const std::vector< cxxNameDouble > & GetSpeciesStoichiometry(void)
Definition: PhreeqcRM.h:1518
int GetMpiTasks(void) const
Definition: PhreeqcRM.h:833
int GetUnitsKinetics(void)
Definition: PhreeqcRM.h:1773
bool GetPartitionUZSolids(void) const
Definition: PhreeqcRM.h:904