Merge commit 'febfa05e38044719e80b19c6a74a6070fce3c1e7'

This commit is contained in:
Darth Vader 2025-03-14 18:23:15 +00:00
commit 5824a7cd5c
3 changed files with 133 additions and 105 deletions

View File

@ -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);
}

View File

@ -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::

View File

@ -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);
}
/* ---------------------------------------------------------------------- */