Changeset 2056
- Timestamp:
- 05/13/08 17:51:39 (4 months ago)
- Files:
-
- 1 modified
-
branches/newmole/source/mole_solve.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/newmole/source/mole_solve.cpp
r2055 r2056 464 464 { 465 465 double sum1 = 0.; 466 for(i=0;i<mole.num_c alc;i++)467 { 468 sum1 += b[ i]*mole.list[i]->nElem[nelem];466 for(i=0;i<mole.num_compacted;i++) 467 { 468 sum1 += b[groupspecies[i]->index]*groupspecies[i]->nElem[nelem]; 469 469 } 470 470 fprintf(ioQQQ,"Elem %ld cons %g %g\n",nelem,sum1,dense.gas_phase[nelem]); … … 474 474 { 475 475 sum1 = 0.; 476 for (long j=0;j<mole.num_c alc;j++)476 for (long j=0;j<mole.num_compacted;j++) 477 477 { 478 sum1 += c[i][j]*mole.list[j]->nElem[nelem]; 478 sum1 += c[groupspecies[i]->index][groupspecies[j]->index]* 479 groupspecies[j]->nElem[nelem]; 479 480 } 480 481 fprintf(ioQQQ,"Eqn %ld error %g\n",i,sum1); … … 491 492 if (lgConserve) 492 493 { 493 // Original scheme -- replace atom rows with conservation constraints 494 // Original scheme -- replace atom rows with conservation 495 // constraints, now look for common species 496 valarray<int> iamax(mole.num_compacted), ncons(LIMELM); 497 iamax = 0; 498 for (nelem=ipHYDROGEN;nelem<LIMELM;nelem++) 499 { 500 if (element_list[nelem]->ipMl[0] != -1) 501 { 502 int imax = -1; 503 double amax = 0.; 504 for (i=0;i<mole.num_compacted;i++) 505 { 506 if (0 == iamax[i] && groupspecies[i]->nElem[nelem]*groupspecies[i]->den > amax) 507 { 508 amax = groupspecies[i]->nElem[nelem]*groupspecies[i]->den; 509 imax = i; 510 } 511 } 512 iamax[imax] = 1; 513 ncons[nelem] = groupspecies[imax]->index; // was element_list[nelem]->ipMl[0]; 514 } 515 } 516 494 517 double scale; 495 518 for (nelem=ipHYDROGEN;nelem<LIMELM;nelem++) … … 499 522 if (lgJac) 500 523 { 501 scale = -(ABSLIM+fabs(c[ element_list[nelem]->ipMl[0]][element_list[nelem]->ipMl[0]]));502 for(i=0;i<mole.num_c alc;i++)524 scale = -(ABSLIM+fabs(c[ncons[nelem]][ncons[nelem]])); 525 for(i=0;i<mole.num_compacted;i++) 503 526 { 504 c[ i][element_list[nelem]->ipMl[0]] = mole.list[i]->nElem[nelem]*scale;527 c[groupspecies[i]->index][ncons[nelem]] = groupspecies[i]->nElem[nelem]*scale; 505 528 } 506 529 } 507 else508 {509 scale = c[element_list[nelem]->ipMl[0]][element_list[nelem]->ipMl[0]];510 }511 530 512 b[ element_list[nelem]->ipMl[0]] = 0.;531 b[ncons[nelem]] = 0.; 513 532 } 514 533 }
