mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 08:38:23 +01:00
Merge commit 'febfa05e38044719e80b19c6a74a6070fce3c1e7'
This commit is contained in:
commit
6c9b8aaf07
@ -262,8 +262,9 @@ calc_SC(void)
|
|||||||
{
|
{
|
||||||
class species *s_ptr;
|
class species *s_ptr;
|
||||||
int i;
|
int i;
|
||||||
LDBLE ka, l_z, Dw, ff, sqrt_mu, a, a2, a3, av, v_Cl = 1;
|
LDBLE ka, l_z, Dw, ff, sqrt_mu, a, a2, a3, av, v_Cl = 1, Dw_SC;
|
||||||
SC = 0;
|
SC = 0;
|
||||||
|
Dw_SC = 1e4 * F_C_MOL * F_C_MOL / (R_KJ_DEG_MOL * 298.15e3); // for recalculating Dw to ll0
|
||||||
sqrt_mu = sqrt(mu_x);
|
sqrt_mu = sqrt(mu_x);
|
||||||
bool Falk = false;
|
bool Falk = false;
|
||||||
s_ptr = s_search("H+");
|
s_ptr = s_search("H+");
|
||||||
@ -347,9 +348,9 @@ calc_SC(void)
|
|||||||
if (correct_Dw)
|
if (correct_Dw)
|
||||||
s_x[i]->dw_corr = Dw;
|
s_x[i]->dw_corr = Dw;
|
||||||
s_x[i]->dw_t_SC = s_x[i]->moles / mass_water_aq_x * l_z * l_z * Dw;
|
s_x[i]->dw_t_SC = s_x[i]->moles / mass_water_aq_x * l_z * l_z * Dw;
|
||||||
|
s_x[i]->dw_t_SC *= 1e3 * Dw_SC;
|
||||||
SC += s_x[i]->dw_t_SC;
|
SC += s_x[i]->dw_t_SC;
|
||||||
}
|
}
|
||||||
SC *= 1e7 * F_C_MOL * F_C_MOL / (R_KJ_DEG_MOL * 298150.0);
|
|
||||||
return (SC);
|
return (SC);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -364,7 +365,7 @@ calc_SC(void)
|
|||||||
Dw dw_t a a2 visc a3 = (0) or >5
|
Dw dw_t a a2 visc a3 = (0) or >5
|
||||||
-dw 1.03e-9 -14 4.03 0.8341 1.679 # Li+, ka = DH_B * a * (1 + (vm - v0))^a2 * mu^0.5
|
-dw 1.03e-9 -14 4.03 0.8341 1.679 # Li+, ka = DH_B * a * (1 + (vm - v0))^a2 * mu^0.5
|
||||||
*/
|
*/
|
||||||
LDBLE q, sqrt_q, B1, B2, m_plus, m_min, eq_plus, eq_min, eq_dw_plus, eq_dw_min, z_plus, z_min, t1, Dw_SC;
|
LDBLE q, sqrt_q, B1, B2, m_plus, m_min, eq_plus, eq_min, eq_dw_plus, eq_dw_min, z_plus, z_min, t1;
|
||||||
|
|
||||||
m_plus = m_min = eq_plus = eq_min = eq_dw_plus = eq_dw_min = z_plus = z_min = 0;
|
m_plus = m_min = eq_plus = eq_min = eq_dw_plus = eq_dw_min = z_plus = z_min = 0;
|
||||||
SC = 0;
|
SC = 0;
|
||||||
@ -432,7 +433,7 @@ calc_SC(void)
|
|||||||
mu_min = 3 * m_min * (z_min - 1) + m_min;
|
mu_min = 3 * m_min * (z_min - 1) + m_min;
|
||||||
mu_plus = 3 * m_plus * (z_plus - 1) + m_plus;
|
mu_plus = 3 * m_plus * (z_plus - 1) + m_plus;
|
||||||
|
|
||||||
Dw_SC = 1e4 * F_C_MOL * F_C_MOL / (R_KJ_DEG_MOL * 298.15e3); // for recalculating Dw to ll0
|
//Dw_SC = 1e4 * F_C_MOL * F_C_MOL / (R_KJ_DEG_MOL * 298.15e3); // for recalculating Dw to ll0
|
||||||
t1 = calc_solution_volume();
|
t1 = calc_solution_volume();
|
||||||
ll_SC = 0.5e3 * (eq_plus + eq_min) / t1 * mass_water_aq_x / t1; // recalculates ll to SC in uS/cm, with mu in mol/kgw
|
ll_SC = 0.5e3 * (eq_plus + eq_min) / t1 * mass_water_aq_x / t1; // recalculates ll to SC in uS/cm, with mu in mol/kgw
|
||||||
|
|
||||||
@ -466,7 +467,8 @@ calc_SC(void)
|
|||||||
if (correct_Dw)
|
if (correct_Dw)
|
||||||
s_x[i]->dw_corr = Dw;
|
s_x[i]->dw_corr = Dw;
|
||||||
s_x[i]->dw_t_SC = s_x[i]->moles / mass_water_aq_x * l_z * l_z * Dw;
|
s_x[i]->dw_t_SC = s_x[i]->moles / mass_water_aq_x * l_z * l_z * Dw;
|
||||||
SC += s_x[i]->dw_t_SC * 1e3 * Dw_SC;
|
s_x[i]->dw_t_SC *= 1e3 * Dw_SC;
|
||||||
|
SC += s_x[i]->dw_t_SC;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -520,7 +522,7 @@ calc_SC(void)
|
|||||||
a = (lz > 0 ? mu_plus / (eq_plus * a2) : mu_min / (eq_min * a2));
|
a = (lz > 0 ? mu_plus / (eq_plus * a2) : mu_min / (eq_min * a2));
|
||||||
t1 *= s_x[i]->moles * l_z * l_z / a;
|
t1 *= s_x[i]->moles * l_z * l_z / a;
|
||||||
t1 *= ll_SC;
|
t1 *= ll_SC;
|
||||||
s_x[i]->dw_t_SC = t1 / (1e3 * Dw_SC);
|
s_x[i]->dw_t_SC = t1;
|
||||||
SC += t1;
|
SC += t1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1270,8 +1272,7 @@ calc_t_sc(const char* name)
|
|||||||
calc_SC();
|
calc_SC();
|
||||||
if (!SC)
|
if (!SC)
|
||||||
return (0);
|
return (0);
|
||||||
LDBLE t = s_ptr->dw_t_SC * 1e7 * F_C_MOL * F_C_MOL / (R_KJ_DEG_MOL * 298150.0);
|
return s_ptr->dw_t_SC / SC;
|
||||||
return (t / SC);
|
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -224,6 +224,7 @@ main_method(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
#ifdef NPP
|
#ifdef NPP
|
||||||
#ifdef DOS
|
#ifdef DOS
|
||||||
|
SetConsoleOutputCP(CP_UTF8);
|
||||||
write_banner();
|
write_banner();
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
@ -295,64 +296,6 @@ main_method(int argc, char *argv[])
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif //TEST_COPY
|
#endif //TEST_COPY
|
||||||
#ifdef NPP
|
|
||||||
/* ---------------------------------------------------------------------- */
|
|
||||||
int Phreeqc::
|
|
||||||
write_banner(void)
|
|
||||||
/* ---------------------------------------------------------------------- */
|
|
||||||
{
|
|
||||||
#ifdef TESTING
|
|
||||||
return OK;
|
|
||||||
#endif
|
|
||||||
#ifndef NO_UTF8_ENCODING
|
|
||||||
char buffer[80];
|
|
||||||
int len, indent;
|
|
||||||
screen_msg(
|
|
||||||
" ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ\n");
|
|
||||||
screen_msg(
|
|
||||||
" º º\n");
|
|
||||||
|
|
||||||
/* version */
|
|
||||||
#ifdef NPP
|
|
||||||
len = sprintf(buffer, "* PHREEQC-%s *", "3.8.0");
|
|
||||||
#else
|
|
||||||
len = sprintf(buffer, "* PHREEQC-%s *", "@VERSION@");
|
|
||||||
#endif
|
|
||||||
indent = (49 - len) / 2;
|
|
||||||
screen_msg(sformatf("%14cº%*c%s%*cº\n", ' ', indent, ' ', buffer,
|
|
||||||
49 - indent - len, ' '));
|
|
||||||
|
|
||||||
screen_msg(
|
|
||||||
" º º\n");
|
|
||||||
screen_msg(
|
|
||||||
" º A hydrogeochemical transport model º\n");
|
|
||||||
screen_msg(
|
|
||||||
" º º\n");
|
|
||||||
screen_msg(
|
|
||||||
" º by º\n");
|
|
||||||
screen_msg(
|
|
||||||
" º D.L. Parkhurst and C.A.J. Appelo º\n");
|
|
||||||
screen_msg(
|
|
||||||
" º º\n");
|
|
||||||
|
|
||||||
|
|
||||||
/* date */
|
|
||||||
#ifdef NPP
|
|
||||||
len = sprintf(buffer, "%s", "August 27, 2024, with bug-fixes and new items");
|
|
||||||
#else
|
|
||||||
len = sprintf(buffer, "%s", "@VER_DATE@");
|
|
||||||
#endif
|
|
||||||
indent = (49 - len) / 2;
|
|
||||||
screen_msg(sformatf("%14cº%*c%s%*cº\n", ' ', indent, ' ', buffer,
|
|
||||||
49 - indent - len, ' '));
|
|
||||||
|
|
||||||
screen_msg(
|
|
||||||
" ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ\n\n");
|
|
||||||
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
int Phreeqc::
|
int Phreeqc::
|
||||||
write_banner(void)
|
write_banner(void)
|
||||||
@ -370,7 +313,11 @@ write_banner(void)
|
|||||||
" ║ ║\n");
|
" ║ ║\n");
|
||||||
|
|
||||||
/* version */
|
/* version */
|
||||||
|
#ifdef NPP
|
||||||
|
len = snprintf(buffer, sizeof(buffer), "* PHREEQC-%s *", "3.8.7");
|
||||||
|
#else
|
||||||
len = snprintf(buffer, sizeof(buffer), "* PHREEQC-%s *", "@VERSION@");
|
len = snprintf(buffer, sizeof(buffer), "* PHREEQC-%s *", "@VERSION@");
|
||||||
|
#endif
|
||||||
indent = (44 - len) / 2;
|
indent = (44 - len) / 2;
|
||||||
screen_msg(sformatf("%14c║%*c%s%*c║\n", ' ', indent, ' ', buffer,
|
screen_msg(sformatf("%14c║%*c%s%*c║\n", ' ', indent, ' ', buffer,
|
||||||
44 - indent - len, ' '));
|
44 - indent - len, ' '));
|
||||||
@ -390,7 +337,11 @@ write_banner(void)
|
|||||||
|
|
||||||
|
|
||||||
/* date */
|
/* date */
|
||||||
|
#ifdef NPP
|
||||||
|
len = snprintf(buffer, sizeof(buffer), "%s", "February 25, 2025");
|
||||||
|
#else
|
||||||
len = snprintf(buffer, sizeof(buffer), "%s", "@VER_DATE@");
|
len = snprintf(buffer, sizeof(buffer), "%s", "@VER_DATE@");
|
||||||
|
#endif
|
||||||
indent = (44 - len) / 2;
|
indent = (44 - len) / 2;
|
||||||
screen_msg(sformatf("%14c║%*c%s%*c║\n", ' ', indent, ' ', buffer,
|
screen_msg(sformatf("%14c║%*c%s%*c║\n", ' ', indent, ' ', buffer,
|
||||||
44 - indent - len, ' '));
|
44 - indent - len, ' '));
|
||||||
@ -400,7 +351,6 @@ write_banner(void)
|
|||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
int Phreeqc::
|
int Phreeqc::
|
||||||
|
|||||||
@ -1469,6 +1469,40 @@ print_species(void)
|
|||||||
if (pr.species == FALSE || pr.all == FALSE)
|
if (pr.species == FALSE || pr.all == FALSE)
|
||||||
return (OK);
|
return (OK);
|
||||||
min = -1000;
|
min = -1000;
|
||||||
|
#ifdef NPP
|
||||||
|
print_centered("Distribution and properties of species");
|
||||||
|
if (pitzer_model == TRUE)
|
||||||
|
{
|
||||||
|
if (ICON == TRUE)
|
||||||
|
{
|
||||||
|
output_msg(sformatf("%40s%10s\n", "MacInnes", "MacInnes"));
|
||||||
|
output_msg(sformatf(" %-13s%11s%13s%9s%10s%10s%8s\n",
|
||||||
|
"Species", "Molality", "Activity", "Gamma", "mole V", "f_VISC¹", "t_SC²"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
output_msg(sformatf("%40s%10s\n", "Unscaled", "Unscaled"));
|
||||||
|
output_msg(sformatf(" %-13s%11s%13s%9s%10s%10s%8s\n",
|
||||||
|
"Species", "Molality", "Activity", "Gamma", "mole V", "f_VISC¹", "t_SC²"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (SC)
|
||||||
|
{
|
||||||
|
output_msg(sformatf(" %-13s%11s%13s%9s%10s%10s%8s\n",
|
||||||
|
"Species", "Molality", "Activity", "Gamma", "mole V", "f_VISC¹", "t_SC²"));
|
||||||
|
output_msg(sformatf("%27s%-14s%-9s%11s%-9s%-9s\n\n",
|
||||||
|
"mol/kgw", " -", " -", "cm³/mol", " %", " %"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
output_msg(sformatf("%50s%10s%10s%10s\n", "Log", "Log", "Log", "mole V"));
|
||||||
|
output_msg(sformatf(" %-13s%12s%12s%10s%10s%10s%10s\n\n",
|
||||||
|
"Species", "Molality", "Activity", "Molality", "Activity", "Gamma", "cm³/mol"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
print_centered("Distribution of species");
|
print_centered("Distribution of species");
|
||||||
/*
|
/*
|
||||||
* Heading for species
|
* Heading for species
|
||||||
@ -1499,6 +1533,7 @@ print_species(void)
|
|||||||
output_msg(sformatf(" %-13s%12s%12s%10s%10s%10s%11s\n\n", "Species",
|
output_msg(sformatf(" %-13s%12s%12s%10s%10s%10s%11s\n\n", "Species",
|
||||||
"Molality", "Activity", "Molality", "Activity", "Gamma", "cm³/mol"));
|
"Molality", "Activity", "Molality", "Activity", "Gamma", "cm³/mol"));
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* Print list of species
|
* Print list of species
|
||||||
*/
|
*/
|
||||||
@ -1506,7 +1541,7 @@ print_species(void)
|
|||||||
name = s_hplus->secondary->elt->name;
|
name = s_hplus->secondary->elt->name;
|
||||||
for (i = 0; i < (int)species_list.size(); i++)
|
for (i = 0; i < (int)species_list.size(); i++)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Get name of master species
|
* Get name of master species
|
||||||
*/
|
*/
|
||||||
if (species_list[i].s->type == EX)
|
if (species_list[i].s->type == EX)
|
||||||
@ -1523,14 +1558,14 @@ print_species(void)
|
|||||||
master_ptr = species_list[i].master_s->primary;
|
master_ptr = species_list[i].master_s->primary;
|
||||||
name1 = species_list[i].master_s->primary->elt->name;
|
name1 = species_list[i].master_s->primary->elt->name;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Check if new master species, print total molality
|
* Check if new master species, print total molality
|
||||||
*/
|
*/
|
||||||
if (name1 != name)
|
if (name1 != name)
|
||||||
{
|
{
|
||||||
name = name1;
|
name = name1;
|
||||||
output_msg(sformatf("%-11s%12.3e\n", name,
|
output_msg(sformatf("%-11s%12.3e\n", name,
|
||||||
(double) (master_ptr->total / mass_water_aq_x)));
|
(double)(master_ptr->total / mass_water_aq_x)));
|
||||||
min = censor * master_ptr->total / mass_water_aq_x;
|
min = censor * master_ptr->total / mass_water_aq_x;
|
||||||
if (min > 0)
|
if (min > 0)
|
||||||
{
|
{
|
||||||
@ -1541,7 +1576,7 @@ print_species(void)
|
|||||||
min = -1000.;
|
min = -1000.;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Print species data
|
* Print species data
|
||||||
*/
|
*/
|
||||||
if (species_list[i].s->lm > min)
|
if (species_list[i].s->lm > min)
|
||||||
@ -1554,25 +1589,67 @@ print_species(void)
|
|||||||
{
|
{
|
||||||
lm = species_list[i].s->lm;
|
lm = species_list[i].s->lm;
|
||||||
}
|
}
|
||||||
|
#ifdef NPP
|
||||||
|
if (SC)
|
||||||
|
{
|
||||||
|
output_msg(sformatf(
|
||||||
|
" %-13s%12.3e%13.3e%9.3f",
|
||||||
|
species_list[i].s->name,
|
||||||
|
(double)((species_list[i].s->moles) / mass_water_aq_x),
|
||||||
|
(double)under(species_list[i].s->lm + species_list[i].s->lg),
|
||||||
|
(double)pow(10, species_list[i].s->lg)));
|
||||||
|
if (species_list[i].s->logk[vm_tc] || species_list[i].s == s_hplus)
|
||||||
|
output_msg(sformatf("%10.2f", (double)species_list[i].s->logk[vm_tc]));
|
||||||
|
else
|
||||||
|
output_msg(sformatf(" (0) "));
|
||||||
|
if (species_list[i].s->dw_t_visc || !strcmp(species_list[i].s->name, "Cl-"))
|
||||||
|
output_msg(sformatf("%9.2f", (double)100 * species_list[i].s->dw_t_visc));
|
||||||
|
else
|
||||||
|
output_msg(sformatf(" (0) "));
|
||||||
|
if (species_list[i].s->dw_t_SC)
|
||||||
|
output_msg(sformatf("%9.2f\n", (double)100 * species_list[i].s->dw_t_SC / SC));
|
||||||
|
else
|
||||||
|
output_msg(sformatf(" (0)\n"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
output_msg(sformatf(
|
output_msg(sformatf(
|
||||||
" %-13s%12.3e%12.3e%10.3f%10.3f%10.3f",
|
" %-13s%12.3e%12.3e%10.3f%10.3f%10.3f",
|
||||||
species_list[i].s->name,
|
species_list[i].s->name,
|
||||||
(double) ((species_list[i].s->moles) /
|
(double)((species_list[i].s->moles) / mass_water_aq_x),
|
||||||
mass_water_aq_x),
|
(double)under(species_list[i].s->lm + species_list[i].s->lg), (double)lm,
|
||||||
(double) under(species_list[i].s->lm +
|
(double)(species_list[i].s->lm + species_list[i].s->lg),
|
||||||
species_list[i].s->lg), (double) lm,
|
(double)species_list[i].s->lg));
|
||||||
(double) (species_list[i].s->lm +
|
if (species_list[i].s->logk[vm_tc] || species_list[i].s == s_hplus)
|
||||||
species_list[i].s->lg),
|
output_msg(sformatf("%10.2f", (double)species_list[i].s->logk[vm_tc]));
|
||||||
(double) species_list[i].s->lg));
|
else
|
||||||
|
output_msg(sformatf(" (0) "));
|
||||||
|
output_msg(sformatf("\n"));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
output_msg(sformatf(
|
||||||
|
" %-13s%12.3e%12.3e%10.3f%10.3f%10.3f",
|
||||||
|
species_list[i].s->name,
|
||||||
|
(double)((species_list[i].s->moles) / mass_water_aq_x),
|
||||||
|
(double)under(species_list[i].s->lm + species_list[i].s->lg), (double)lm,
|
||||||
|
(double)(species_list[i].s->lm + species_list[i].s->lg),
|
||||||
|
(double)species_list[i].s->lg));
|
||||||
//if (species_list[i].s->logk[vm_tc] || !strcmp(species_list[i].s->name, "H+"))
|
//if (species_list[i].s->logk[vm_tc] || !strcmp(species_list[i].s->name, "H+"))
|
||||||
if (species_list[i].s->logk[vm_tc] || species_list[i].s == s_hplus)
|
if (species_list[i].s->logk[vm_tc] || species_list[i].s == s_hplus)
|
||||||
output_msg(sformatf("%10.2f\n",
|
output_msg(sformatf("%10.2f\n", (double)species_list[i].s->logk[vm_tc]));
|
||||||
(double) species_list[i].s->logk[vm_tc]));
|
|
||||||
else
|
else
|
||||||
output_msg(sformatf(" (0) \n"));
|
output_msg(sformatf(" (0) \n"));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output_msg(sformatf("\n"));
|
output_msg(sformatf("\n"));
|
||||||
|
#ifdef NPP
|
||||||
|
if (SC)
|
||||||
|
{
|
||||||
|
output_msg(sformatf(" ¹: Contribution to the relative viscosity change ((viscos / viscos_0 - 1) x 100).\n"));
|
||||||
|
output_msg(sformatf(" ²: Contribution to the specific conductance (Transport Number x 100).\n\n"));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return (OK);
|
return (OK);
|
||||||
}
|
}
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user