@@ -355,6 +355,78 @@ void Flow1D::updateProperties(size_t jg, double* x, size_t jmin, size_t jmax)
355
355
updateDiffFluxes (x, j0, j1);
356
356
}
357
357
358
+ void Flow1D::updateTransport (double * x, size_t j0, size_t j1)
359
+ {
360
+ if (m_do_multicomponent) {
361
+ for (size_t j = j0; j < j1; j++) {
362
+ setGasAtMidpoint (x,j);
363
+ double wtm = m_thermo->meanMolecularWeight ();
364
+ double rho = m_thermo->density ();
365
+ m_visc[j] = (m_dovisc ? m_trans->viscosity () : 0.0 );
366
+ m_trans->getMultiDiffCoeffs (m_nsp, &m_multidiff[mindex (0 ,0 ,j)]);
367
+
368
+ // Use m_diff as storage for the factor outside the summation
369
+ for (size_t k = 0 ; k < m_nsp; k++) {
370
+ m_diff[k+j*m_nsp] = m_wt[k] * rho / (wtm*wtm);
371
+ }
372
+
373
+ m_tcon[j] = m_trans->thermalConductivity ();
374
+ if (m_do_soret) {
375
+ m_trans->getThermalDiffCoeffs (m_dthermal.ptrColumn (0 ) + j*m_nsp);
376
+ }
377
+ }
378
+ } else { // mixture averaged transport
379
+ for (size_t j = j0; j < j1; j++) {
380
+ setGasAtMidpoint (x,j);
381
+ m_visc[j] = (m_dovisc ? m_trans->viscosity () : 0.0 );
382
+ m_trans->getMixDiffCoeffs (&m_diff[j*m_nsp]);
383
+ m_tcon[j] = m_trans->thermalConductivity ();
384
+ }
385
+ }
386
+ }
387
+
388
+ void Flow1D::updateDiffFluxes (const double * x, size_t j0, size_t j1)
389
+ {
390
+ if (m_do_multicomponent) {
391
+ for (size_t j = j0; j < j1; j++) {
392
+ double dz = z (j+1 ) - z (j);
393
+ for (size_t k = 0 ; k < m_nsp; k++) {
394
+ double sum = 0.0 ;
395
+ for (size_t m = 0 ; m < m_nsp; m++) {
396
+ sum += m_wt[m] * m_multidiff[mindex (k,m,j)] * (X (x,m,j+1 )-X (x,m,j));
397
+ }
398
+ m_flux (k,j) = sum * m_diff[k+j*m_nsp] / dz;
399
+ }
400
+ }
401
+ } else {
402
+ for (size_t j = j0; j < j1; j++) {
403
+ double sum = 0.0 ;
404
+ double wtm = m_wtm[j];
405
+ double rho = density (j);
406
+ double dz = z (j+1 ) - z (j);
407
+ for (size_t k = 0 ; k < m_nsp; k++) {
408
+ m_flux (k,j) = m_wt[k]*(rho*m_diff[k+m_nsp*j]/wtm);
409
+ m_flux (k,j) *= (X (x,k,j) - X (x,k,j+1 ))/dz;
410
+ sum -= m_flux (k,j);
411
+ }
412
+ // correction flux to insure that \sum_k Y_k V_k = 0.
413
+ for (size_t k = 0 ; k < m_nsp; k++) {
414
+ m_flux (k,j) += sum*Y (x,k,j);
415
+ }
416
+ }
417
+ }
418
+
419
+ if (m_do_soret) {
420
+ for (size_t m = j0; m < j1; m++) {
421
+ double gradlogT = 2.0 * (T (x,m+1 ) - T (x,m)) /
422
+ ((T (x,m+1 ) + T (x,m)) * (z (m+1 ) - z (m)));
423
+ for (size_t k = 0 ; k < m_nsp; k++) {
424
+ m_flux (k,m) -= m_dthermal (k,m)*gradlogT;
425
+ }
426
+ }
427
+ }
428
+ }
429
+
358
430
void Flow1D::computeRadiation (double * x, size_t jmin, size_t jmax)
359
431
{
360
432
// Variable definitions for the Planck absorption coefficient and the
@@ -611,36 +683,6 @@ void Flow1D::evalContinuity(size_t j, double* x, double* rsd, int* diag, double
611
683
" Overloaded by StFlow; to be removed after Cantera 3.0" );
612
684
}
613
685
614
- void Flow1D::updateTransport (double * x, size_t j0, size_t j1)
615
- {
616
- if (m_do_multicomponent) {
617
- for (size_t j = j0; j < j1; j++) {
618
- setGasAtMidpoint (x,j);
619
- double wtm = m_thermo->meanMolecularWeight ();
620
- double rho = m_thermo->density ();
621
- m_visc[j] = (m_dovisc ? m_trans->viscosity () : 0.0 );
622
- m_trans->getMultiDiffCoeffs (m_nsp, &m_multidiff[mindex (0 ,0 ,j)]);
623
-
624
- // Use m_diff as storage for the factor outside the summation
625
- for (size_t k = 0 ; k < m_nsp; k++) {
626
- m_diff[k+j*m_nsp] = m_wt[k] * rho / (wtm*wtm);
627
- }
628
-
629
- m_tcon[j] = m_trans->thermalConductivity ();
630
- if (m_do_soret) {
631
- m_trans->getThermalDiffCoeffs (m_dthermal.ptrColumn (0 ) + j*m_nsp);
632
- }
633
- }
634
- } else { // mixture averaged transport
635
- for (size_t j = j0; j < j1; j++) {
636
- setGasAtMidpoint (x,j);
637
- m_visc[j] = (m_dovisc ? m_trans->viscosity () : 0.0 );
638
- m_trans->getMixDiffCoeffs (&m_diff[j*m_nsp]);
639
- m_tcon[j] = m_trans->thermalConductivity ();
640
- }
641
- }
642
- }
643
-
644
686
void Flow1D::show (const double * x)
645
687
{
646
688
writelog (" Pressure: {:10.4g} Pa\n " , m_press);
@@ -658,48 +700,6 @@ void Flow1D::show(const double* x)
658
700
}
659
701
}
660
702
661
- void Flow1D::updateDiffFluxes (const double * x, size_t j0, size_t j1)
662
- {
663
- if (m_do_multicomponent) {
664
- for (size_t j = j0; j < j1; j++) {
665
- double dz = z (j+1 ) - z (j);
666
- for (size_t k = 0 ; k < m_nsp; k++) {
667
- double sum = 0.0 ;
668
- for (size_t m = 0 ; m < m_nsp; m++) {
669
- sum += m_wt[m] * m_multidiff[mindex (k,m,j)] * (X (x,m,j+1 )-X (x,m,j));
670
- }
671
- m_flux (k,j) = sum * m_diff[k+j*m_nsp] / dz;
672
- }
673
- }
674
- } else {
675
- for (size_t j = j0; j < j1; j++) {
676
- double sum = 0.0 ;
677
- double wtm = m_wtm[j];
678
- double rho = density (j);
679
- double dz = z (j+1 ) - z (j);
680
- for (size_t k = 0 ; k < m_nsp; k++) {
681
- m_flux (k,j) = m_wt[k]*(rho*m_diff[k+m_nsp*j]/wtm);
682
- m_flux (k,j) *= (X (x,k,j) - X (x,k,j+1 ))/dz;
683
- sum -= m_flux (k,j);
684
- }
685
- // correction flux to insure that \sum_k Y_k V_k = 0.
686
- for (size_t k = 0 ; k < m_nsp; k++) {
687
- m_flux (k,j) += sum*Y (x,k,j);
688
- }
689
- }
690
- }
691
-
692
- if (m_do_soret) {
693
- for (size_t m = j0; m < j1; m++) {
694
- double gradlogT = 2.0 * (T (x,m+1 ) - T (x,m)) /
695
- ((T (x,m+1 ) + T (x,m)) * (z (m+1 ) - z (m)));
696
- for (size_t k = 0 ; k < m_nsp; k++) {
697
- m_flux (k,m) -= m_dthermal (k,m)*gradlogT;
698
- }
699
- }
700
- }
701
- }
702
-
703
703
string Flow1D::componentName (size_t n) const
704
704
{
705
705
switch (n) {
0 commit comments