mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 16:44:49 +01:00
vector sum_mb1, sum_mb2
This commit is contained in:
parent
7d303de1b4
commit
f0707aa0b3
@ -579,15 +579,9 @@ void Phreeqc::init(void)
|
||||
count_sum_jacob0 = 0;
|
||||
max_sum_jacob0 = 0;
|
||||
sum_jacob0 = NULL;
|
||||
count_sum_mb1 = 0;
|
||||
max_sum_mb1 = 0;
|
||||
sum_mb1 = NULL;
|
||||
count_sum_jacob1 = 0;
|
||||
max_sum_jacob1 = 0;
|
||||
sum_jacob1 = NULL;
|
||||
count_sum_mb2 = 0;
|
||||
max_sum_mb2 = 0;
|
||||
sum_mb2 = NULL;
|
||||
count_sum_jacob2 = 0;
|
||||
max_sum_jacob2 = 0;
|
||||
sum_jacob2 = NULL;
|
||||
|
||||
13
Phreeqc.h
13
Phreeqc.h
@ -1326,18 +1326,15 @@ protected:
|
||||
int max_sum_jacob0; /* calculated maximum number of elements in sum_jacob0 */
|
||||
struct list0 *sum_jacob0; /* array of pointers to targets and coefficients for array */
|
||||
|
||||
int count_sum_mb1; /* number of elements in sum_mb1 */
|
||||
int max_sum_mb1; /* calculated maximum number of elements in sum_mb1 */
|
||||
struct list1 *sum_mb1; /* array of pointers to sources and targets for mass
|
||||
balance summations with coef = 1.0 */
|
||||
std::vector<struct list1> sum_mb1; /* array of pointers to sources and targets for mass
|
||||
balance summations with coef = 1.0 */
|
||||
int count_sum_jacob1; /* number of elements in sum_jacob1 */
|
||||
int max_sum_jacob1; /* calculated maximum number of elements in sum_jacob1 */
|
||||
struct list1 *sum_jacob1; /* array of pointers to sources and targets for array
|
||||
equations with coef = 1.0 */
|
||||
int count_sum_mb2; /* number of elements in sum_mb2 */
|
||||
int max_sum_mb2; /* calculated maximum number of elements in sum_mb2 */
|
||||
struct list2 *sum_mb2; /* array of coefficients and pointers to sources and
|
||||
targets for mass balance summations with coef != 1.0 */
|
||||
|
||||
std::vector<struct list2> sum_mb2; /* array of coefficients and pointers to sources and
|
||||
targets for mass balance summations with coef != 1.0 */
|
||||
int count_sum_jacob2; /* number of elements in sum_jacob2 */
|
||||
int max_sum_jacob2; /* calculated maximum number of elements in sum_jacob2 */
|
||||
struct list2 *sum_jacob2; /* array of coefficients and pointers to sources and
|
||||
|
||||
10
model.cpp
10
model.cpp
@ -2132,7 +2132,7 @@ mb_sums(void)
|
||||
/*
|
||||
* Add terms with coefficients of 1.0
|
||||
*/
|
||||
for (k = 0; k < count_sum_mb1; k++)
|
||||
for (k = 0; k < (int)sum_mb1.size(); k++)
|
||||
{
|
||||
*sum_mb1[k].target += *sum_mb1[k].source;
|
||||
/* { k += 1; k -= 1;} */
|
||||
@ -2140,7 +2140,7 @@ mb_sums(void)
|
||||
/*
|
||||
* Add terms with coefficients != 1.0
|
||||
*/
|
||||
for (k = 0; k < count_sum_mb2; k++)
|
||||
for (k = 0; k < (int)sum_mb2.size(); k++)
|
||||
{
|
||||
*sum_mb2[k].target += *sum_mb2[k].source * sum_mb2[k].coef;
|
||||
/* { k += 1; k -= 1;} */
|
||||
@ -5178,10 +5178,8 @@ free_model_allocs(void)
|
||||
delta.clear();
|
||||
residual.clear();
|
||||
s_x.clear();
|
||||
sum_mb1 = (struct list1 *) free_check_null(sum_mb1);
|
||||
count_sum_mb1 = 0;
|
||||
sum_mb2 = (struct list2 *) free_check_null(sum_mb2);
|
||||
count_sum_mb2 = 0;
|
||||
sum_mb1.clear();
|
||||
sum_mb2.clear();
|
||||
sum_jacob0 = (struct list0 *) free_check_null(sum_jacob0);
|
||||
count_sum_jacob0 = 0;
|
||||
sum_jacob1 = (struct list1 *) free_check_null(sum_jacob1);
|
||||
|
||||
66
prep.cpp
66
prep.cpp
@ -1081,18 +1081,18 @@ build_mb_sums(void)
|
||||
/*
|
||||
* Make space for lists
|
||||
*/
|
||||
if (count_sum_mb1 + count_mb_unknowns >= max_sum_mb1)
|
||||
{
|
||||
space((void **) ((void *) &sum_mb1),
|
||||
count_sum_mb1 + count_mb_unknowns, &max_sum_mb1,
|
||||
sizeof(struct list1));
|
||||
}
|
||||
if (count_sum_mb2 + count_mb_unknowns >= max_sum_mb2)
|
||||
{
|
||||
space((void **) ((void *) &sum_mb2),
|
||||
count_sum_mb2 + count_mb_unknowns, &max_sum_mb2,
|
||||
sizeof(struct list2));
|
||||
}
|
||||
//if (count_sum_mb1 + count_mb_unknowns >= max_sum_mb1)
|
||||
//{
|
||||
// space((void **) ((void *) &sum_mb1),
|
||||
// count_sum_mb1 + count_mb_unknowns, &max_sum_mb1,
|
||||
// sizeof(struct list1));
|
||||
//}
|
||||
//if (count_sum_mb2 + count_mb_unknowns >= max_sum_mb2)
|
||||
//{
|
||||
// space((void **) ((void *) &sum_mb2),
|
||||
// count_sum_mb2 + count_mb_unknowns, &max_sum_mb2,
|
||||
// sizeof(struct list2));
|
||||
//}
|
||||
|
||||
if (debug_prep == TRUE)
|
||||
{
|
||||
@ -1137,15 +1137,17 @@ build_model(void)
|
||||
sum_species_map.clear();
|
||||
s_x.clear();
|
||||
|
||||
max_sum_mb1 = MAX_SUM_MB;
|
||||
count_sum_mb1 = 0;
|
||||
space((void **) ((void *) &sum_mb1), INIT, &max_sum_mb1,
|
||||
sizeof(struct list1));
|
||||
//max_sum_mb1 = MAX_SUM_MB;
|
||||
//count_sum_mb1 = 0;
|
||||
//space((void **) ((void *) &sum_mb1), INIT, &max_sum_mb1,
|
||||
// sizeof(struct list1));
|
||||
sum_mb1.clear();
|
||||
|
||||
max_sum_mb2 = MAX_SUM_MB;
|
||||
count_sum_mb2 = 0;
|
||||
space((void **) ((void *) &sum_mb2), INIT, &max_sum_mb2,
|
||||
sizeof(struct list2));
|
||||
//max_sum_mb2 = MAX_SUM_MB;
|
||||
//count_sum_mb2 = 0;
|
||||
//space((void **) ((void *) &sum_mb2), INIT, &max_sum_mb2,
|
||||
// sizeof(struct list2
|
||||
sum_mb2.clear();
|
||||
|
||||
max_sum_jacob0 = MAX_SUM_JACOB0;
|
||||
count_sum_jacob0 = 0;
|
||||
@ -2637,10 +2639,9 @@ reprep(void)
|
||||
/*
|
||||
* Free arrays built in build_model
|
||||
*/
|
||||
//s_x = (struct species **) free_check_null(s_x);
|
||||
s_x.clear();
|
||||
sum_mb1 = (struct list1 *) free_check_null(sum_mb1);
|
||||
sum_mb2 = (struct list2 *) free_check_null(sum_mb2);
|
||||
sum_mb1.clear();
|
||||
sum_mb2.clear();
|
||||
sum_jacob0 = (struct list0 *) free_check_null(sum_jacob0);
|
||||
sum_jacob1 = (struct list1 *) free_check_null(sum_jacob1);
|
||||
sum_jacob2 = (struct list2 *) free_check_null(sum_jacob2);
|
||||
@ -4976,25 +4977,18 @@ store_mb(LDBLE * source, LDBLE * target, LDBLE coef)
|
||||
*/
|
||||
if (equal(coef, 1.0, TOL) == TRUE)
|
||||
{
|
||||
size_t count_sum_mb1 = sum_mb1.size();
|
||||
sum_mb1.resize(count_sum_mb1 + 1);
|
||||
sum_mb1[count_sum_mb1].source = source;
|
||||
sum_mb1[count_sum_mb1++].target = target;
|
||||
if (count_sum_mb1 >= max_sum_mb1)
|
||||
{
|
||||
space((void **) ((void *) &sum_mb1),
|
||||
count_sum_mb1 + count_trxn + 4, &max_sum_mb1,
|
||||
sizeof(struct list1));
|
||||
}
|
||||
sum_mb1[count_sum_mb1].target = target;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t count_sum_mb2 = sum_mb2.size();
|
||||
sum_mb2.resize(count_sum_mb2 + 1);
|
||||
sum_mb2[count_sum_mb2].source = source;
|
||||
sum_mb2[count_sum_mb2].coef = coef;
|
||||
sum_mb2[count_sum_mb2++].target = target;
|
||||
if (count_sum_mb2 >= max_sum_mb2)
|
||||
{
|
||||
space((void **) ((void *) &sum_mb2), count_sum_mb2,
|
||||
&max_sum_mb2, sizeof(struct list2));
|
||||
}
|
||||
sum_mb2[count_sum_mb2].target = target;
|
||||
}
|
||||
return (OK);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user