mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 16:44:49 +01:00
Switch bases for SIT.
git-svn-id: svn://136.177.114.72/svn_GW/phreeqc3/trunk@9637 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
parent
ca572ee976
commit
ef8611e0ed
4
prep.cpp
4
prep.cpp
@ -5028,6 +5028,8 @@ switch_bases(void)
|
||||
{
|
||||
if (x[i]->type != MB)
|
||||
continue;
|
||||
if (x[i]->type == PITZER_GAMMA)
|
||||
break;
|
||||
first = 0;
|
||||
la = x[i]->master[0]->s->la;
|
||||
for (j = 1; x[i]->master[j] != NULL; j++)
|
||||
@ -5056,7 +5058,7 @@ switch_bases(void)
|
||||
x[i]->master[0]->s->name, iterations, la, x[i]->master[0]->s->la);
|
||||
*/
|
||||
x[i]->master[0]->s->la = la;
|
||||
|
||||
x[i]->la = la;
|
||||
log_msg(sformatf( "Switching bases to %s.\tIteration %d\n",
|
||||
x[i]->master[0]->s->name, iterations));
|
||||
return_value = TRUE;
|
||||
|
||||
48
sit.cpp
48
sit.cpp
@ -894,19 +894,19 @@ sit_revise_guesses(void)
|
||||
if (x[i] == ph_unknown || x[i] == pe_unknown)
|
||||
continue;
|
||||
if (x[i]->type == MB ||
|
||||
/* x[i]->type == ALK || */
|
||||
x[i]->type == CB ||
|
||||
x[i]->type == SOLUTION_PHASE_BOUNDARY ||
|
||||
x[i]->type == EXCH || x[i]->type == SURFACE)
|
||||
/* x[i]->type == ALK || */
|
||||
x[i]->type == CB ||
|
||||
x[i]->type == SOLUTION_PHASE_BOUNDARY ||
|
||||
x[i]->type == EXCH || x[i]->type == SURFACE)
|
||||
{
|
||||
|
||||
if (debug_set == TRUE)
|
||||
{
|
||||
output_msg(sformatf(
|
||||
"\n\t%5s at beginning of set %d: %e\t%e\t%e\n",
|
||||
x[i]->description, l_iter, (double) x[i]->sum,
|
||||
(double) x[i]->moles,
|
||||
(double) x[i]->master[0]->s->la));
|
||||
"\n\t%5s at beginning of set %d: %e\t%e\t%e\n",
|
||||
x[i]->description, l_iter, (double) x[i]->sum,
|
||||
(double) x[i]->moles,
|
||||
(double) x[i]->master[0]->s->la));
|
||||
}
|
||||
if (fabs(x[i]->moles) < 1e-30)
|
||||
x[i]->moles = 0;
|
||||
@ -923,12 +923,8 @@ sit_revise_guesses(void)
|
||||
/*!!!!*/ if (x[i]->master[0]->s->la < -999.)
|
||||
x[i]->master[0]->s->la = MIN_RELATED_LOG_ACTIVITY;
|
||||
}
|
||||
else if (fail == TRUE && f < 1.5 * fabs(x[i]->moles))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (f > 1.5 * fabs(x[i]->moles)
|
||||
|| f < 1.0/d * fabs(x[i]->moles))
|
||||
else if (f > d * fabs(x[i]->moles)
|
||||
|| f < 1.0/d * fabs(x[i]->moles))
|
||||
{
|
||||
weight = (f < 1.0/d * fabs(x[i]->moles)) ? 0.3 : 1.0;
|
||||
if (x[i]->moles <= 0)
|
||||
@ -944,10 +940,10 @@ sit_revise_guesses(void)
|
||||
if (debug_set == TRUE)
|
||||
{
|
||||
output_msg(sformatf(
|
||||
"\t%5s not converged in set %d: %e\t%e\t%e\n",
|
||||
x[i]->description, l_iter,
|
||||
(double) x[i]->sum, (double) x[i]->moles,
|
||||
(double) x[i]->master[0]->s->la));
|
||||
"\t%5s not converged in set %d: %e\t%e\t%e\n",
|
||||
x[i]->description, l_iter,
|
||||
(double) x[i]->sum, (double) x[i]->moles,
|
||||
(double) x[i]->master[0]->s->la));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1297,7 +1293,10 @@ model_sit(void)
|
||||
{
|
||||
full_pitzer = FALSE;
|
||||
}
|
||||
molalities(TRUE);
|
||||
if (molalities(FALSE) == ERROR)
|
||||
{
|
||||
sit_revise_guesses();
|
||||
}
|
||||
if (use.Get_surface_ptr() != NULL &&
|
||||
use.Get_surface_ptr()->Get_dl_type() != cxxSurface::NO_DL &&
|
||||
use.Get_surface_ptr()->Get_related_phases() == TRUE)
|
||||
@ -1305,6 +1304,17 @@ model_sit(void)
|
||||
mb_sums();
|
||||
mb_gases();
|
||||
mb_ss();
|
||||
/*
|
||||
* Switch bases if necessary
|
||||
*/
|
||||
if (switch_bases() == TRUE)
|
||||
{
|
||||
|
||||
count_basis_change++;
|
||||
count_unknowns -= (int) s_list.size();
|
||||
reprep();
|
||||
full_pitzer = false;
|
||||
}
|
||||
/* debug
|
||||
species_list_sort();
|
||||
sum_species();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user