mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-15 16:18:22 +01:00
Merge commit '7ec217d47bfff56057000e1ac954d46b31417083'
This commit is contained in:
commit
b15a6bded7
@ -262,8 +262,9 @@ calc_SC(void)
|
||||
{
|
||||
class species *s_ptr;
|
||||
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;
|
||||
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);
|
||||
bool Falk = false;
|
||||
s_ptr = s_search("H+");
|
||||
@ -347,9 +348,9 @@ calc_SC(void)
|
||||
if (correct_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 *= 1e3 * Dw_SC;
|
||||
SC += s_x[i]->dw_t_SC;
|
||||
}
|
||||
SC *= 1e7 * F_C_MOL * F_C_MOL / (R_KJ_DEG_MOL * 298150.0);
|
||||
return (SC);
|
||||
}
|
||||
else
|
||||
@ -364,7 +365,7 @@ calc_SC(void)
|
||||
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
|
||||
*/
|
||||
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;
|
||||
SC = 0;
|
||||
@ -432,7 +433,7 @@ calc_SC(void)
|
||||
mu_min = 3 * m_min * (z_min - 1) + m_min;
|
||||
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();
|
||||
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)
|
||||
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;
|
||||
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
|
||||
{
|
||||
@ -520,11 +522,11 @@ calc_SC(void)
|
||||
a = (lz > 0 ? mu_plus / (eq_plus * a2) : mu_min / (eq_min * a2));
|
||||
t1 *= s_x[i]->moles * l_z * l_z / a;
|
||||
t1 *= ll_SC;
|
||||
s_x[i]->dw_t_SC = t1 / (1e3 * Dw_SC);
|
||||
s_x[i]->dw_t_SC = t1;
|
||||
SC += t1;
|
||||
}
|
||||
}
|
||||
return SC;
|
||||
return SC;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1270,8 +1272,7 @@ calc_t_sc(const char* name)
|
||||
calc_SC();
|
||||
if (!SC)
|
||||
return (0);
|
||||
LDBLE t = s_ptr->dw_t_SC * 1e7 * F_C_MOL * F_C_MOL / (R_KJ_DEG_MOL * 298150.0);
|
||||
return (t / SC);
|
||||
return s_ptr->dw_t_SC / SC;
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
@ -224,6 +224,7 @@ main_method(int argc, char *argv[])
|
||||
}
|
||||
#ifdef NPP
|
||||
#ifdef DOS
|
||||
SetConsoleOutputCP(CP_UTF8);
|
||||
write_banner();
|
||||
#endif
|
||||
#else
|
||||
@ -295,64 +296,6 @@ main_method(int argc, char *argv[])
|
||||
return 0;
|
||||
}
|
||||
#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::
|
||||
write_banner(void)
|
||||
@ -370,7 +313,11 @@ write_banner(void)
|
||||
" ║ ║\n");
|
||||
|
||||
/* version */
|
||||
#ifdef NPP
|
||||
len = snprintf(buffer, sizeof(buffer), "* PHREEQC-%s *", "3.8.7");
|
||||
#else
|
||||
len = snprintf(buffer, sizeof(buffer), "* PHREEQC-%s *", "@VERSION@");
|
||||
#endif
|
||||
indent = (44 - len) / 2;
|
||||
screen_msg(sformatf("%14c║%*c%s%*c║\n", ' ', indent, ' ', buffer,
|
||||
44 - indent - len, ' '));
|
||||
@ -390,7 +337,11 @@ write_banner(void)
|
||||
|
||||
|
||||
/* date */
|
||||
#ifdef NPP
|
||||
len = snprintf(buffer, sizeof(buffer), "%s", "February 25, 2025");
|
||||
#else
|
||||
len = snprintf(buffer, sizeof(buffer), "%s", "@VER_DATE@");
|
||||
#endif
|
||||
indent = (44 - len) / 2;
|
||||
screen_msg(sformatf("%14c║%*c%s%*c║\n", ' ', indent, ' ', buffer,
|
||||
44 - indent - len, ' '));
|
||||
@ -400,7 +351,6 @@ write_banner(void)
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
int Phreeqc::
|
||||
|
||||
@ -1469,35 +1469,70 @@ print_species(void)
|
||||
if (pr.species == FALSE || pr.all == FALSE)
|
||||
return (OK);
|
||||
min = -1000;
|
||||
print_centered("Distribution of species");
|
||||
/*
|
||||
* Heading for species
|
||||
*/
|
||||
#ifdef NPP
|
||||
print_centered("Distribution and properties of species");
|
||||
if (pitzer_model == TRUE)
|
||||
{
|
||||
if (ICON == TRUE)
|
||||
{
|
||||
output_msg(sformatf("%60s%10s\n", "MacInnes", "MacInnes"));
|
||||
output_msg(sformatf("%40s%10s%10s%10s%10s\n",
|
||||
"MacInnes", "Log", "Log", "Log", "mole V"));
|
||||
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("%60s%10s\n", "Unscaled", "Unscaled"));
|
||||
output_msg(sformatf("%40s%10s%10s%10s%10s\n",
|
||||
"Unscaled", "Log", "Log", "Log", "mole V"));
|
||||
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
|
||||
{
|
||||
output_msg(sformatf("%50s%10s%10s%10s\n", "Log", "Log", "Log", "mole V"));
|
||||
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"));
|
||||
}
|
||||
}
|
||||
#ifdef NO_UTF8_ENCODING
|
||||
output_msg(sformatf(" %-13s%12s%12s%10s%10s%10s%10s\n\n", "Species",
|
||||
"Molality", "Activity", "Molality", "Activity", "Gamma", "cm3/mol"));
|
||||
#else
|
||||
output_msg(sformatf(" %-13s%12s%12s%10s%10s%10s%11s\n\n", "Species",
|
||||
"Molality", "Activity", "Molality", "Activity", "Gamma", "cm³/mol"));
|
||||
print_centered("Distribution of species");
|
||||
/*
|
||||
* Heading for species
|
||||
*/
|
||||
if (pitzer_model == TRUE)
|
||||
{
|
||||
if (ICON == TRUE)
|
||||
{
|
||||
output_msg(sformatf("%60s%10s\n", "MacInnes", "MacInnes"));
|
||||
output_msg(sformatf("%40s%10s%10s%10s%10s\n",
|
||||
"MacInnes", "Log", "Log", "Log", "mole V"));
|
||||
}
|
||||
else
|
||||
{
|
||||
output_msg(sformatf("%60s%10s\n", "Unscaled", "Unscaled"));
|
||||
output_msg(sformatf("%40s%10s%10s%10s%10s\n",
|
||||
"Unscaled", "Log", "Log", "Log", "mole V"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
output_msg(sformatf("%50s%10s%10s%10s\n", "Log", "Log", "Log", "mole V"));
|
||||
}
|
||||
#ifdef NO_UTF8_ENCODING
|
||||
output_msg(sformatf(" %-13s%12s%12s%10s%10s%10s%10s\n\n", "Species",
|
||||
"Molality", "Activity", "Molality", "Activity", "Gamma", "cm3/mol"));
|
||||
#else
|
||||
output_msg(sformatf(" %-13s%12s%12s%10s%10s%10s%11s\n\n", "Species",
|
||||
"Molality", "Activity", "Molality", "Activity", "Gamma", "cm³/mol"));
|
||||
#endif
|
||||
#endif
|
||||
/*
|
||||
* Print list of species
|
||||
@ -1506,9 +1541,9 @@ print_species(void)
|
||||
name = s_hplus->secondary->elt->name;
|
||||
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)
|
||||
continue;
|
||||
if (species_list[i].s->type == SURF)
|
||||
@ -1523,14 +1558,14 @@ print_species(void)
|
||||
master_ptr = species_list[i].master_s->primary;
|
||||
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)
|
||||
{
|
||||
name = name1;
|
||||
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;
|
||||
if (min > 0)
|
||||
{
|
||||
@ -1541,9 +1576,9 @@ print_species(void)
|
||||
min = -1000.;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Print species data
|
||||
*/
|
||||
/*
|
||||
* Print species data
|
||||
*/
|
||||
if (species_list[i].s->lm > min)
|
||||
{
|
||||
if (species_list[i].s == s_h2o)
|
||||
@ -1554,25 +1589,67 @@ print_species(void)
|
||||
{
|
||||
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(
|
||||
" %-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] || species_list[i].s == s_hplus)
|
||||
output_msg(sformatf("%10.2f", (double)species_list[i].s->logk[vm_tc]));
|
||||
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));
|
||||
" %-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] || species_list[i].s == s_hplus)
|
||||
output_msg(sformatf("%10.2f\n",
|
||||
(double) species_list[i].s->logk[vm_tc]));
|
||||
output_msg(sformatf("%10.2f\n", (double)species_list[i].s->logk[vm_tc]));
|
||||
else
|
||||
output_msg(sformatf(" (0) \n"));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user