mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 00:28:23 +01:00
Merge commit 'b518cad5a5fe5b1b5d09f49058fd096810d6688a'
This commit is contained in:
commit
c49952b695
@ -1,11 +1,34 @@
|
|||||||
Version @PHREEQC_VER@: @PHREEQC_DATE@
|
Version @PHREEQC_VER@: @PHREEQC_DATE@
|
||||||
|
-----------------
|
||||||
|
April 3, 2023
|
||||||
|
-----------------
|
||||||
|
The viscosity of multi-species solutions is calculated with a (modified)
|
||||||
|
Jones-Dole equation:
|
||||||
|
|
||||||
|
viscos / viscos_0 = 1 + A Sum(0.5 z_i m_i) + fan (B_i m_i + D_i m_i n_i)
|
||||||
|
|
||||||
|
Parameters SOLUTION_SPECIES definitions are for calculating the B and D terms:
|
||||||
|
-viscosity 9.35e-2 -8.31e-2 2.487e-2 4.49e-4 2.01e-2 1.570 0
|
||||||
|
b0 b1 b2 d1 d2 d3 tan
|
||||||
|
|
||||||
|
z_i is absolute charge number, m_i is molality of i
|
||||||
|
B_i = b0 + b1 exp(-b2 * tc)
|
||||||
|
fan = (2 - tan V_i / V_Cl-), corrects for the volume of anions
|
||||||
|
D_i = d1 + exp(-d2 tc)
|
||||||
|
n_i = ((1 + fI)^d3 + ((z_i^2 + z_i) / 2 · m_i)d^3 / (2 + fI), fI is an ionic strength term.
|
||||||
|
For details, consult
|
||||||
|
Appelo and Parkhurst in prep., for details see subroutine viscosity in transport.cpp
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
February 28, 2023
|
February 28, 2023
|
||||||
-----------------
|
-----------------
|
||||||
PhreeqcRM: Revised names for PhreeqcRM test case source and output
|
PhreeqcRM: Revised names for PhreeqcRM test case source and output
|
||||||
files (Tests subdirectory of distribution). Added tests SimpleAdvect_cpp
|
files (Tests subdirectory of distribution). Added tests SimpleAdvect_cpp,
|
||||||
and SimpleAdvect_f90, which produce the same results as Advect_cpp
|
SimpleAdvect_c and SimpleAdvect_f90. All transport results are the same for
|
||||||
and Advect_f90, but with a minimal set of PhreeqcRM method calls.
|
Advect_cpp, Advect_c, and Advect_f90, SimpleAdvect_cpp,
|
||||||
|
SimpleAdvect_c and SimpleAdvect_f90; however, the SimpleAdvect cases use
|
||||||
|
a minimal set of method calls, whereas the other cases demonstrate most
|
||||||
|
of the features of PhreeqcRM.
|
||||||
|
|
||||||
-----------------
|
-----------------
|
||||||
February 26, 2023
|
February 26, 2023
|
||||||
@ -36,14 +59,19 @@ Version @PHREEQC_VER@: @PHREEQC_DATE@
|
|||||||
-----------------
|
-----------------
|
||||||
February 26, 2023
|
February 26, 2023
|
||||||
-----------------
|
-----------------
|
||||||
PhreeqcRM: Added a rudimentary BMI (Basic Model Interface) for C++.
|
PhreeqcRM: Added a BMI (Basic Model Interface) for C++.
|
||||||
The interface adds minimal capabilities to the other methods of
|
The interface is a repackaging of the available methods of
|
||||||
PhreeqcRM. The only new capabilities are (1) the capability to
|
PhreeqcRM. All PhreeqcRM methods are available, in addition
|
||||||
|
to the BMI methods.
|
||||||
|
|
||||||
|
New capabilities include (1) the capability to
|
||||||
retrieve units for the variables for BMI_GetValues and BMI_SetValues,
|
retrieve units for the variables for BMI_GetValues and BMI_SetValues,
|
||||||
and (2) the capability to use YAML (YAML ain't Markup Language)
|
(2) the capability to use YAML (YAML ain't Markup Language)
|
||||||
to initialize a PhreeqcRM instance with the method BMI_Initialize
|
to initialize a PhreeqcRM instance with the method BMI_Initialize
|
||||||
(which is equivalent to the method InitializeYAML). The YAML
|
(which is equivalent to the method InitializeYAML), and (3) the availability
|
||||||
capability would be especially useful if a GUI (Graphical User Interface)
|
of pointers that always point to current variable values.
|
||||||
|
|
||||||
|
The YAML capability would be especially useful if a GUI (Graphical User Interface)
|
||||||
is used to set up model initial conditions. The GUI could write a YAML file
|
is used to set up model initial conditions. The GUI could write a YAML file
|
||||||
that contains directives for PhreeqcRM methods that need to be run and
|
that contains directives for PhreeqcRM methods that need to be run and
|
||||||
the corresonding data needed to initialize a PhreeqcRM instance--for example,
|
the corresonding data needed to initialize a PhreeqcRM instance--for example,
|
||||||
@ -54,7 +82,8 @@ Version @PHREEQC_VER@: @PHREEQC_DATE@
|
|||||||
the YAML file with BMI_Initialize to execute the specified PhreeqcRM methods
|
the YAML file with BMI_Initialize to execute the specified PhreeqcRM methods
|
||||||
to apply the data specified in the YAML file.
|
to apply the data specified in the YAML file.
|
||||||
|
|
||||||
The following is represents complete sequential, noniterative transport calculation:
|
The following is represents the way BMI methods would be used to implement
|
||||||
|
a sequential, noniterative transport calculation:
|
||||||
|
|
||||||
PhreeqcRM phreeqc_rm(nxyz, nthreads);
|
PhreeqcRM phreeqc_rm(nxyz, nthreads);
|
||||||
phreeqc_rm.BMI_Initialize("myfile.yaml");
|
phreeqc_rm.BMI_Initialize("myfile.yaml");
|
||||||
@ -75,7 +104,7 @@ Version @PHREEQC_VER@: @PHREEQC_DATE@
|
|||||||
phreeqc_rm.BMI_GetValue("Concentrations", c.data());
|
phreeqc_rm.BMI_GetValue("Concentrations", c.data());
|
||||||
}
|
}
|
||||||
|
|
||||||
The complete set of BMI methods is as follows:
|
The set of BMI methods is as follows:
|
||||||
|
|
||||||
std::string BMI_GetComponentName()
|
std::string BMI_GetComponentName()
|
||||||
Returns "PhreeqcRM".
|
Returns "PhreeqcRM".
|
||||||
@ -109,7 +138,11 @@ Version @PHREEQC_VER@: @PHREEQC_DATE@
|
|||||||
Returns "seconds".
|
Returns "seconds".
|
||||||
|
|
||||||
void BMI_GetValue(std::string name, void* dest)
|
void BMI_GetValue(std::string name, void* dest)
|
||||||
Returns a value or vector of values for the variable identified by name.
|
Returns a value or vector of values for the variable identified by name
|
||||||
|
|
||||||
|
void BMI_GetValuePtr(std::string name, void* dest)
|
||||||
|
Returns a pointer to current values of a variable. This method
|
||||||
|
is available for selected variables.
|
||||||
|
|
||||||
int BMI_GetVarItemsize(std::string name)
|
int BMI_GetVarItemsize(std::string name)
|
||||||
Returns the number of bytes needed for one element of the variable
|
Returns the number of bytes needed for one element of the variable
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user