mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 08:38:23 +01:00
The formula was not correct when converted to a phreeqcpp class, only the last instance of an element was kept and the rest were lost. Modified NameDouble to accumulate the sum of coefficients for each element when converting from a PHREEQC structure. The order of the kinetics components was not maintained when converted to a phreeqcpp class. Components were in alphabetical order. This posed a problem with get and put statements because the gets could end up before the puts. Changed from map of components to list of components, which should maintain the order correctly. Problems with modify solution and redox elements. Laurin pointed out that adding N may leave all the N(x) in place, which increases the total N. Revised read_solution to merge the valence states. If N defined, then all N(x) are removed. If N() defined, then N is removed. Still need to test. git-svn-id: svn://136.177.114.72/svn_GW/phreeqcpp/trunk@3927 1feff8c3-07ed-0310-ac33-dd36852eb9cd
61 lines
1.4 KiB
C++
61 lines
1.4 KiB
C++
#if !defined(KINETICSCOMP_H_INCLUDED)
|
|
#define KINETICSCOMP_H_INCLUDED
|
|
|
|
#include <cassert> // assert
|
|
#include <map> // std::map
|
|
#include <string> // std::string
|
|
#include <list> // std::list
|
|
#include <vector> // std::vector
|
|
|
|
#include "NameDouble.h"
|
|
|
|
class cxxKineticsComp
|
|
{
|
|
|
|
public:
|
|
cxxKineticsComp();
|
|
cxxKineticsComp(struct kinetics_comp *);
|
|
~cxxKineticsComp();
|
|
|
|
static struct kinetics_comp *cxxKineticsComp2kinetics_comp(PHREEQC_PTR_ARG_COMMA std::list < cxxKineticsComp > &el);
|
|
|
|
void dump_xml(std::ostream & os, unsigned int indent = 0) const;
|
|
|
|
void dump_raw(std::ostream & s_oss, unsigned int indent) const;
|
|
|
|
void read_raw(PHREEQC_PTR_ARG_COMMA CParser & parser, bool check = true);
|
|
|
|
const std::string &get_rate_name() const
|
|
{
|
|
return this->rate_name;
|
|
}
|
|
void set_rate_name(char * s)
|
|
{
|
|
if (s != NULL)
|
|
this->rate_name = std::string(s);
|
|
else
|
|
this->rate_name.clear();
|
|
}
|
|
|
|
#ifdef USE_MPI
|
|
void mpi_unpack(int *ints, int *ii, double *doubles, int *dd);
|
|
void mpi_pack(std::vector < int >&ints, std::vector < double >&doubles);
|
|
#endif
|
|
void add(const cxxKineticsComp & comp, double extensive);
|
|
void multiply(double extensive);
|
|
|
|
protected:
|
|
std::string rate_name;
|
|
cxxNameDouble namecoef; //stoichiometry of reaction
|
|
double tol;
|
|
double m;
|
|
double m0;
|
|
double moles;
|
|
std::vector < double >d_params;
|
|
|
|
public:
|
|
|
|
};
|
|
|
|
#endif // !defined(KINETICSCOMP_H_INCLUDED)
|