Fixed signed/unsigned comparisions in Transport

This commit is contained in:
Ray Speth 2012-01-17 04:12:38 +00:00
parent 9439615c71
commit c0dfd33480
14 changed files with 179 additions and 249 deletions

View file

@ -82,9 +82,8 @@ namespace Cantera {
m_wratjk.resize(m_nsp, m_nsp, 0.0);
m_wratkj1.resize(m_nsp, m_nsp, 0.0);
int j, k;
for (j = 0; j < m_nsp; j++)
for (k = j; k < m_nsp; k++) {
for (size_t j = 0; j < m_nsp; j++)
for (size_t k = j; k < m_nsp; k++) {
m_wratjk(j,k) = sqrt(m_mw[j]/m_mw[k]);
m_wratjk(k,j) = sqrt(m_wratjk(j,k));
m_wratkj1(j,k) = sqrt(1.0 + m_mw[k]/m_mw[j]);
@ -155,7 +154,7 @@ namespace Cantera {
multiply(m_phi, DATA_PTR(m_molefracs), DATA_PTR(m_spwork));
m_viscmix = 0.0;
for (int k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_viscmix += m_molefracs[k] * m_visc[k]/m_spwork[k]; //denom;
}
return m_viscmix;
@ -167,8 +166,6 @@ namespace Cantera {
//================================================================================================
void AqueousTransport::getBinaryDiffCoeffs(const size_t ld, doublereal* const d) {
int i,j;
update_T();
// if necessary, evaluate the binary diffusion coefficents
@ -177,8 +174,8 @@ namespace Cantera {
doublereal pres = m_thermo->pressure();
doublereal rp = 1.0/pres;
for (i = 0; i < m_nsp; i++)
for (j = 0; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++)
for (size_t j = 0; j < m_nsp; j++) {
d[ld*j + i] = rp * m_bdiff(i,j);
}
}
@ -285,7 +282,7 @@ namespace Cantera {
* \vec{j}_k = -n M_k D_k \nabla X_k.
* \f]
*/
void AqueousTransport::getSpeciesFluxes(int ndim,
void AqueousTransport::getSpeciesFluxes(size_t ndim,
const doublereal* grad_T,
int ldx, const doublereal* grad_X,
int ldf, doublereal* fluxes) {
@ -304,7 +301,7 @@ namespace Cantera {
* \vec{j}_k = -n M_k D_k \nabla X_k.
* \f]
*/
void AqueousTransport::getSpeciesFluxesExt(int ldf, doublereal* fluxes) {
void AqueousTransport::getSpeciesFluxesExt(size_t ldf, doublereal* fluxes) {
update_T();
update_C();

View file

@ -279,7 +279,7 @@ namespace Cantera {
*
*
*/
virtual void getSpeciesFluxes(int ndim,
virtual void getSpeciesFluxes(size_t ndim,
const doublereal* grad_T,
int ldx, const doublereal* grad_X,
int ldf, doublereal* fluxes);
@ -292,7 +292,7 @@ namespace Cantera {
*
*
*/
virtual void getSpeciesFluxesExt(int ldf, doublereal* fluxes);
virtual void getSpeciesFluxesExt(size_t ldf, doublereal* fluxes);
//! Initialize the transport object
@ -638,7 +638,7 @@ namespace Cantera {
/*!
* Either 1, 2, or 3
*/
int m_nDim;
size_t m_nDim;
};
}
#endif

View file

@ -91,13 +91,12 @@ namespace Cantera {
void DustyGasTransport::updateBinaryDiffCoeffs() {
if (m_bulk_ok) return;
int n,m;
// get the gaseous binary diffusion coefficients
m_gastran->getBinaryDiffCoeffs(m_nsp, m_d.ptrColumn(0));
doublereal por2tort = m_porosity / m_tortuosity;
for (n = 0; n < m_nsp; n++)
for (m = 0; m < m_nsp; m++)
for (size_t n = 0; n < m_nsp; n++)
for (size_t m = 0; m < m_nsp; m++)
m_d(n,m) *= por2tort;
m_bulk_ok = true;
}
@ -106,7 +105,7 @@ namespace Cantera {
if (m_knudsen_ok) return;
doublereal K_g = m_pore_radius * m_porosity / m_tortuosity;
const doublereal TwoThirds = 2.0/3.0;
for (int k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_dk[k] = TwoThirds * K_g * sqrt((8.0 * GasConstant * m_temp)/
(Pi * m_mw[k]));
}
@ -117,16 +116,15 @@ namespace Cantera {
void DustyGasTransport::eval_H_matrix() {
updateBinaryDiffCoeffs();
updateKnudsenDiffCoeffs();
int k,l,j;
doublereal sum;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
// evaluate off-diagonal terms
for (l = 0; l < m_nsp; l++) m_multidiff(k,l) = -m_x[k]/m_d(k,l);
for (size_t l = 0; l < m_nsp; l++) m_multidiff(k,l) = -m_x[k]/m_d(k,l);
// evaluate diagonal term
sum = 0.0;
for (j = 0; j < m_nsp; j++) if (j != k) sum += m_x[j]/m_d(k,j);
for (size_t j = 0; j < m_nsp; j++) if (j != k) sum += m_x[j]/m_d(k,j);
m_multidiff(k,k) = 1.0/m_dk[k] + sum;
}
}
@ -160,7 +158,6 @@ namespace Cantera {
void DustyGasTransport::getMolarFluxes(const doublereal* state1,
const doublereal* state2, double delta, double* fluxes) {
int k;
doublereal conc1, conc2;
doublereal* cbar = DATA_PTR(m_spwork);
doublereal* gradc = DATA_PTR(m_spwork2);
@ -171,7 +168,7 @@ namespace Cantera {
const doublereal* y1 = state1 + 2;
const doublereal* y2 = state2 + 2;
doublereal c1sum = 0.0, c2sum = 0.0;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
conc1 = rho1*y1[k]/m_mw[k];
conc2 = rho2*y2[k]/m_mw[k];
cbar[k] = 0.5*(conc1 + conc2);
@ -230,10 +227,9 @@ namespace Cantera {
}
void DustyGasTransport::getMultiDiffCoeffs(const size_t ld, doublereal* const d) {
int i,j;
updateMultiDiffCoeffs();
for (i = 0; i < m_nsp; i++) {
for (j = 0; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++) {
for (size_t j = 0; j < m_nsp; j++) {
d[ld*j + i] = m_multidiff(i,j);
}
}
@ -257,8 +253,7 @@ namespace Cantera {
// add an offset to avoid a pure species condition
// (check - this may be unnecessary)
int k;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_x[k] = fmaxx(MIN_X, m_x[k]);
}
}

View file

@ -37,17 +37,16 @@ namespace Cantera {
doublereal prefactor = 16.0*m_temp/25.0;
doublereal sum;
int i, j, k;
for (i = 0; i < m_nsp; i++)
for (size_t i = 0; i < m_nsp; i++)
{
// subtract-off the k=i term to account for the first delta
// function in Eq. (12.121)
sum = -x[i]/m_bdiff(i,i);
for (k = 0; k < m_nsp; k++) sum += x[k]/m_bdiff(i,k);
for (size_t k = 0; k < m_nsp; k++) sum += x[k]/m_bdiff(i,k);
sum /= m_mw[i];
for (j = 0; j != m_nsp; ++j) {
for (size_t j = 0; j != m_nsp; ++j) {
m_Lmatrix(i,j) = prefactor * x[j]
* ( m_mw[j] * sum + x[i]/m_bdiff(i,j) );
}
@ -65,13 +64,12 @@ namespace Cantera {
doublereal prefactor = 1.6*m_temp;
doublereal sum, wj, xj;
int i, j;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
//constant = prefactor * x[j];
xj = x[j];
wj = m_mw[j];
sum = 0.0;
for (i = 0; i < m_nsp; i++) {
for (size_t i = 0; i < m_nsp; i++) {
m_Lmatrix(i,j + m_nsp) = - prefactor * x[i] * xj * m_mw[i] *
(1.2 * m_cstar(j,i) - 1.0) /
( (wj + m_mw[i]) * m_bdiff(j,i) );
@ -89,9 +87,8 @@ namespace Cantera {
////////////////////////////////////////////////////////////////////////
void MultiTransport::eval_L1000() {
int i, j;
for (j = 0; j < m_nsp; j++)
for (i = 0; i < m_nsp; i++)
for (size_t j = 0; j < m_nsp; j++)
for (size_t i = 0; i < m_nsp; i++)
m_Lmatrix(i+m_nsp,j) = m_Lmatrix(j,i+m_nsp);
}
@ -103,12 +100,11 @@ namespace Cantera {
const doublereal fiveover3pi = 5.0/(3.0*Pi);
doublereal prefactor = (16.0*m_temp)/25.0;
int i, j;
doublereal constant1, wjsq, constant2, constant3, constant4,
fourmj, threemjsq, sum, sumwij;;
doublereal term1, term2;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
// get constant terms that depend on just species "j"
@ -120,7 +116,7 @@ namespace Cantera {
fourmj = 4.0*m_mw[j];
threemjsq = 3.0*m_mw[j]*m_mw[j];
sum = 0.0;
for (i = 0; i < m_nsp; i++) {
for (size_t i = 0; i < m_nsp; i++) {
sumwij = m_mw[i] + m_mw[j];
term1 = m_bdiff(i,j) * sumwij*sumwij;

View file

@ -170,7 +170,7 @@ namespace Cantera {
//save logarithm of pre-exponential for easier computation
m_visc_logA.resize(m_nsp);
for ( int i = 0; i < m_nsp; i++ )
for (size_t i = 0; i < m_nsp; i++)
m_visc_logA[i] = log( m_visc_A[i] );
m_thermCond_A = tr.thermCond_A ;
@ -261,8 +261,8 @@ namespace Cantera {
// log_visc_mix = sum_i (X_i log_visc_i) + sum_i sum_j X_i X_j G_ij
double interaction = dot_product(m_logViscSpecies, m_molefracs);
for ( int i = 0; i < m_nsp; i++ )
for ( int j = 0; j < i; j++ )
for (size_t i = 0; i < m_nsp; i++)
for (size_t j = 0; j < i; j++ )
interaction += m_molefracs[i] * m_molefracs[j]
* ( m_visc_Sij(i,j) + m_visc_Eij(i,j) / m_temp );
m_viscmix = exp( interaction );
@ -285,8 +285,6 @@ namespace Cantera {
void LiquidTransport::getBinaryDiffCoeffs(size_t ld, doublereal* d) {
int i,j;
update_temp();
// if necessary, evaluate the binary diffusion coefficents
@ -295,8 +293,8 @@ namespace Cantera {
doublereal pres = m_thermo->pressure();
doublereal rp = 1.0/pres;
for (i = 0; i < m_nsp; i++)
for (j = 0; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++)
for (size_t j = 0; j < m_nsp; j++) {
d[ld*j + i] = rp * m_bdiff(i,j);
}
}
@ -318,10 +316,9 @@ namespace Cantera {
* dimensioned at least as large as the number of species.
*/
void LiquidTransport::getMobilities(doublereal* const mobil) {
int k;
getMixDiffCoeffs(DATA_PTR(m_spwork));
doublereal c1 = ElectronCharge / (Boltzmann * m_temp);
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
mobil[k] = c1 * m_spwork[k];
}
}
@ -428,7 +425,7 @@ namespace Cantera {
* \vec{j}_k = -n M_k D_k \nabla X_k.
* \f]
*/
void LiquidTransport::getSpeciesFluxes(int ndim,
void LiquidTransport::getSpeciesFluxes(size_t ndim,
const doublereal* grad_T,
int ldx, const doublereal* grad_X,
int ldf, doublereal* fluxes) {
@ -447,30 +444,26 @@ namespace Cantera {
* \vec{j}_k = -n M_k D_k \nabla X_k.
* \f]
*/
void LiquidTransport::getSpeciesFluxesExt(int ldf, doublereal* fluxes) {
int n, k;
void LiquidTransport::getSpeciesFluxesExt(size_t ldf, doublereal* fluxes) {
update_temp();
update_conc();
getMixDiffCoeffs(DATA_PTR(m_spwork));
const array_fp& mw = m_thermo->molecularWeights();
const doublereal* y = m_thermo->massFractions();
doublereal rhon = m_thermo->molarDensity();
// Unroll wrt ndim
vector_fp sum(m_nDim,0.0);
for (n = 0; n < m_nDim; n++) {
for (k = 0; k < m_nsp; k++) {
for (size_t n = 0; n < m_nDim; n++) {
for (size_t k = 0; k < m_nsp; k++) {
fluxes[n*ldf + k] = -rhon * mw[k] * m_spwork[k] * m_Grad_X[n*m_nsp + k];
sum[n] += fluxes[n*ldf + k];
}
}
// add correction flux to enforce sum to zero
for (n = 0; n < m_nDim; n++) {
for (k = 0; k < m_nsp; k++) {
for (size_t n = 0; n < m_nDim; n++) {
for (size_t k = 0; k < m_nsp; k++) {
fluxes[n*ldf + k] -= y[k]*sum[n];
}
}
@ -494,7 +487,6 @@ namespace Cantera {
updateDiff_temp();
}
int k, j;
doublereal mmw = m_thermo->meanMolecularWeight();
doublereal sumxw_tran = 0.0;
doublereal sum2;
@ -502,12 +494,12 @@ namespace Cantera {
if (m_nsp == 1) {
d[0] = m_bdiff(0,0);
} else {
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
sumxw_tran += m_molefracs_tran[k] * m_mw[k];
}
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
sum2 = 0.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
if (j != k) {
sum2 += m_molefracs_tran[j] / m_bdiff(j,k);
}
@ -597,7 +589,7 @@ namespace Cantera {
m_thermo->getConcentrations(DATA_PTR(m_concentrations));
concTot_ = 0.0;
concTot_tran_ = 0.0;
for (int k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_molefracs[k] = fmaxx(0.0, m_molefracs[k]);
m_molefracs_tran[k] = fmaxx(MIN_X, m_molefracs[k]);
concTot_tran_ += m_molefracs_tran[k];
@ -631,25 +623,22 @@ namespace Cantera {
*
*/
void LiquidTransport::update_Grad_lnAC() {
int k;
for (int a = 0; a < m_nDim; a++) {
for (size_t a = 0; a < m_nDim; a++) {
// We form the directional derivative
double * ma_Grad_X = &m_Grad_X[a*m_nsp];
double sum = 0.0;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
sum += ma_Grad_X[k] * ma_Grad_X[k];
}
if (sum == 0.0) {
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_Grad_lnAC[m_nsp * a + k] = 0.0;
}
continue;
}
double mag = 1.0E-7 / sum;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
Xdelta_[k] = m_molefracs[k] + mag * ma_Grad_X[k];
if (Xdelta_[k] > 1.0) {
Xdelta_[k] = 1.0;
@ -660,11 +649,11 @@ namespace Cantera {
}
m_thermo->setMoleFractions(DATA_PTR(Xdelta_));
m_thermo->getActivityCoefficients(DATA_PTR(lnActCoeffMolarDelta_));
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
lnActCoeffMolarDelta_[k] = log(lnActCoeffMolarDelta_[k]);
}
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_Grad_lnAC[m_nsp * a + k] =
sum * (lnActCoeffMolarDelta_[k] - log(actCoeffMolar_[k])) / mag;
}
@ -751,9 +740,7 @@ namespace Cantera {
* The flag m_visc_ok is set to true.
*/
void LiquidTransport::updateViscosity_temp() {
int k;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_logViscSpecies[k] = m_visc_logA[k] + m_visc_n[k] * m_logt
+ m_visc_Tact[k] / m_temp ;
m_viscSpecies[k] = exp( m_logViscSpecies[k] );
@ -773,13 +760,11 @@ namespace Cantera {
*
*/
void LiquidTransport::stefan_maxwell_solve() {
int i, j, a;
doublereal tmp;
size_t VIM = m_nDim;
m_B.resize(m_nsp, VIM);
//! grab a local copy of the molecular weights
const vector_fp& M = m_thermo->molecularWeights();
/*
* Update the concentrations in the mixture.
@ -788,7 +773,6 @@ namespace Cantera {
double T = m_thermo->temperature();
m_thermo->getStandardVolumes(DATA_PTR(volume_specPM_));
m_thermo->getActivityCoefficients(DATA_PTR(actCoeffMolar_));
@ -817,9 +801,9 @@ namespace Cantera {
* consideratins involving species concentrations going to zero.
*
*/
for (i = 0; i < m_nsp; i++) {
for (size_t i = 0; i < m_nsp; i++) {
double xi_denom = m_molefracs_tran[i];
for (a = 0; a < VIM; a++) {
for (size_t a = 0; a < VIM; a++) {
m_ck_Grad_mu[a*m_nsp + i] =
m_chargeSpecies[i] * concTot_ * Faraday * m_Grad_V[a]
+ concTot_ * (volume_specPM_[i] - M[i]/dens_) * m_Grad_P[a]
@ -833,8 +817,8 @@ namespace Cantera {
double mwSolvent = m_thermo->molecularWeight(iSolvent);
double mnaught = mwSolvent/ 1000.;
double lnmnaught = log(mnaught);
for (i = 1; i < m_nsp; i++) {
for (a = 0; a < VIM; a++) {
for (size_t i = 1; i < m_nsp; i++) {
for (size_t a = 0; a < VIM; a++) {
m_ck_Grad_mu[a*m_nsp + i] -=
m_concentrations[i] * GasConstant * m_Grad_T[a] * lnmnaught;
}
@ -848,13 +832,13 @@ namespace Cantera {
switch (VIM) {
case 1: /* 1-D approximation */
m_B(0,0) = 0.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
m_A(0,j) = M[j] * m_concentrations[j];
}
for (i = 1; i < m_nsp; i++){
for (size_t i = 1; i < m_nsp; i++){
m_B(i,0) = m_ck_Grad_mu[i] / (GasConstant * T);
m_A(i,i) = 0.0;
for (j = 0; j < m_nsp; j++){
for (size_t j = 0; j < m_nsp; j++){
if (j != i) {
tmp = m_concentrations[j] / m_DiffCoeff_StefMax(i,j);
m_A(i,i) += tmp;
@ -870,14 +854,14 @@ namespace Cantera {
case 2: /* 2-D approximation */
m_B(0,0) = 0.0;
m_B(0,1) = 0.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
m_A(0,j) = M[j] * m_concentrations[j];
}
for (i = 1; i < m_nsp; i++){
for (size_t i = 1; i < m_nsp; i++){
m_B(i,0) = m_ck_Grad_mu[i] / (GasConstant * T);
m_B(i,1) = m_ck_Grad_mu[m_nsp + i] / (GasConstant * T);
m_A(i,i) = 0.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
if (j != i) {
tmp = m_concentrations[j] / m_DiffCoeff_StefMax(i,j);
m_A(i,i) += tmp;
@ -896,15 +880,15 @@ namespace Cantera {
m_B(0,0) = 0.0;
m_B(0,1) = 0.0;
m_B(0,2) = 0.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
m_A(0,j) = M[j] * m_concentrations[j];
}
for (i = 1; i < m_nsp; i++){
for (size_t i = 1; i < m_nsp; i++){
m_B(i,0) = m_ck_Grad_mu[i] / (GasConstant * T);
m_B(i,1) = m_ck_Grad_mu[m_nsp + i] / (GasConstant * T);
m_B(i,2) = m_ck_Grad_mu[2*m_nsp + i] / (GasConstant * T);
m_A(i,i) = 0.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
if (j != i) {
tmp = m_concentrations[j] / m_DiffCoeff_StefMax(i,j);
m_A(i,i) += tmp;
@ -923,8 +907,8 @@ namespace Cantera {
break;
}
for (a = 0; a < VIM; a++) {
for (j = 0; j < m_nsp; j++) {
for (size_t a = 0; a < VIM; a++) {
for (size_t j = 0; j < m_nsp; j++) {
m_flux(j,a) = M[j] * m_concentrations[j] * m_B(j,a);
}
}

View file

@ -347,7 +347,7 @@ namespace Cantera {
*
*
*/
virtual void getSpeciesFluxes(int ndim,
virtual void getSpeciesFluxes(size_t ndim,
const doublereal* grad_T,
int ldx, const doublereal* grad_X,
int ldf, doublereal* fluxes);
@ -361,7 +361,7 @@ namespace Cantera {
*
*
*/
virtual void getSpeciesFluxesExt(int ldf, doublereal* fluxes);
virtual void getSpeciesFluxesExt(size_t ldf, doublereal* fluxes);
//! Solve the stefan_maxell equations for the diffusive fluxes.

View file

@ -221,7 +221,7 @@ namespace Cantera {
* \vec{j}_k = -n M_k D_k \nabla X_k.
* \f]
*/
void MixTransport::getSpeciesFluxes(int ndim,
void MixTransport::getSpeciesFluxes(size_t ndim,
const doublereal* grad_T, int ldx, const doublereal* grad_X,
int ldf, doublereal* fluxes) {
update_T();

View file

@ -92,7 +92,7 @@ namespace Cantera {
* Flat vector with the m_nsp in the inner loop.
* length = ldx * ndim
*/
virtual void getSpeciesFluxes(int ndim,
virtual void getSpeciesFluxes(size_t ndim,
const doublereal* grad_T,
int ldx,
const doublereal* grad_X,

View file

@ -161,8 +161,7 @@ namespace Cantera {
m_eps = tr.eps;
m_alpha = tr.alpha;
m_dipoleDiag.resize(m_nsp);
int i;
for (i = 0; i < m_nsp; i++) {
for (size_t i = 0; i < m_nsp; i++) {
m_dipoleDiag[i] = tr.dipole(i,i);
}
@ -178,9 +177,8 @@ namespace Cantera {
m_phi.resize(m_nsp, m_nsp, 0.0);
m_wratjk.resize(m_nsp, m_nsp, 0.0);
m_wratkj1.resize(m_nsp, m_nsp, 0.0);
int j, k;
for (j = 0; j < m_nsp; j++)
for (k = j; k < m_nsp; k++) {
for (size_t j = 0; j < m_nsp; j++)
for (size_t k = j; k < m_nsp; k++) {
m_wratjk(j,k) = sqrt(m_mw[j]/m_mw[k]);
m_wratjk(k,j) = sqrt(m_wratjk(j,k));
m_wratkj1(j,k) = sqrt(1.0 + m_mw[k]/m_mw[j]);
@ -231,8 +229,8 @@ namespace Cantera {
// precompute and store log(epsilon_ij/k_B)
m_log_eps_k.resize(m_nsp, m_nsp);
// int j;
for (i = 0; i < m_nsp; i++) {
for (j = i; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++) {
for (size_t j = i; j < m_nsp; j++) {
m_log_eps_k(i,j) = log(tr.epsilon(i,j)/Boltzmann);
m_log_eps_k(j,i) = m_log_eps_k(i,j);
}
@ -244,8 +242,7 @@ namespace Cantera {
const doublereal sq298 = sqrt(298.0);
const doublereal kb298 = Boltzmann * 298.0;
m_sqrt_eps_k.resize(m_nsp);
//int k;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_sqrt_eps_k[k] = sqrt(tr.eps[k]/Boltzmann);
m_frot_298[k] = Frot( tr.eps[k]/kb298,
m_sqrt_eps_k[k]/sq298);
@ -273,7 +270,6 @@ namespace Cantera {
doublereal MultiTransport::viscosity() {
doublereal vismix = 0.0, denom;
int k, j;
// update m_visc if necessary
updateViscosity_T();
@ -281,9 +277,9 @@ namespace Cantera {
// update the mole fractions
updateTransport_C();
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
denom = 0.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
denom += m_phi(k,j) * m_molefracs[j];
}
vismix += m_molefracs[k] * m_visc[k]/denom;
@ -296,16 +292,14 @@ namespace Cantera {
/******************* binary diffusion coefficients **************/
void MultiTransport::getBinaryDiffCoeffs(size_t ld, doublereal* d) {
int i,j;
// if necessary, evaluate the binary diffusion coefficents
// from the polynomial fits
updateDiff_T();
doublereal p = pressure_ig();
doublereal rp = 1.0/p;
for (i = 0; i < m_nsp; i++)
for (j = 0; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++)
for (size_t j = 0; j < m_nsp; j++) {
d[ld*j + i] = rp * m_bdiff(i,j);
}
}
@ -318,11 +312,9 @@ namespace Cantera {
* @internal
*/
doublereal MultiTransport::thermalConductivity() {
solveLMatrixEquation();
doublereal sum = 0.0;
int k;
for (k = 0; k < 2*m_nsp; k++) {
for (size_t k = 0; k < 2*m_nsp; k++) {
sum += m_b[k + m_nsp] * m_a[k + m_nsp];
}
return -4.0*sum;
@ -335,11 +327,9 @@ namespace Cantera {
* @internal
*/
void MultiTransport::getThermalDiffCoeffs(doublereal* const dt) {
solveLMatrixEquation();
const doublereal c = 1.6/GasConstant;
int k;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
dt[k] = c * m_mw[k] * m_molefracs[k] * m_a[k];
}
}
@ -360,8 +350,7 @@ namespace Cantera {
// the right-hand-side vector m_b. The first block of m_b was
// set to zero when it was created, and is not modified so
// doesn't need to be reset to zero.
int k;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_b[k] = 0.0;
m_b[k + m_nsp] = m_molefracs[k];
m_b[k + 2*m_nsp] = m_molefracs[k];
@ -383,7 +372,7 @@ namespace Cantera {
// But if CHEMKIN_COMPATIBILITY_MODE is defined, then all
// monatomic species are excluded.
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
if (!hasInternalModes(k)) m_b[2*m_nsp + k] = 0.0;
}
@ -433,7 +422,7 @@ namespace Cantera {
/**
*
*/
void MultiTransport::getSpeciesFluxes(int ndim,
void MultiTransport::getSpeciesFluxes(size_t ndim,
const doublereal* grad_T, int ldx, const doublereal* grad_X,
int ldf, doublereal* fluxes) {
@ -441,13 +430,12 @@ namespace Cantera {
updateDiff_T();
doublereal sum;
int i, j;
// If any component of grad_T is non-zero, then get the
// thermal diffusion coefficients
bool addThermalDiffusion = false;
for (i = 0; i < ndim; i++) {
for (size_t i = 0; i < ndim; i++) {
if (grad_T[i] != 0.0) addThermalDiffusion = true;
}
if (addThermalDiffusion) getThermalDiffCoeffs(DATA_PTR(m_spwork));
@ -455,9 +443,9 @@ namespace Cantera {
const doublereal* y = m_thermo->massFractions();
doublereal rho = m_thermo->density();
for (i = 0; i < m_nsp; i++) {
for (size_t i = 0; i < m_nsp; i++) {
sum = 0.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
m_aa(i,j) = m_molefracs[j]*m_molefracs[i]/m_bdiff(i,j);
sum += m_aa(i,j);
}
@ -467,9 +455,9 @@ namespace Cantera {
// enforce the condition \sum Y_k V_k = 0. This is done by replacing
// the flux equation with the largest gradx component in the first
// coordinate direction with the flux balance condition.
int jmax = 0;
size_t jmax = 0;
doublereal gradmax = -1.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
if (fabs(grad_X[j]) > gradmax) {
gradmax = fabs(grad_X[j]);
jmax = j;
@ -479,12 +467,11 @@ namespace Cantera {
// set the matrix elements in this row to the mass fractions,
// and set the entry in gradx to zero
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
m_aa(jmax,j) = y[j];
}
vector_fp gsave(ndim), grx(ldx*m_nsp);
int n;
for (n = 0; n < ldx*ndim; n++) {
for (size_t n = 0; n < ldx*ndim; n++) {
grx[n] = grad_X[n];
}
//for (n = 0; n < ndim; n++) {
@ -495,7 +482,7 @@ namespace Cantera {
// copy grad_X to fluxes
const doublereal* gx;
for (n = 0; n < ndim; n++) {
for (size_t n = 0; n < ndim; n++) {
gx = grad_X + ldx*n;
copy(gx, gx + m_nsp, fluxes + ldf*n);
fluxes[jmax + n*ldf] = 0.0;
@ -522,15 +509,15 @@ namespace Cantera {
"Error in DGETRS");
int offset;
size_t offset;
doublereal pp = pressure_ig();
// multiply diffusion velocities by rho * V to create
// mass fluxes, and restore the gradx elements that were
// modified
for (n = 0; n < ndim; n++) {
for (size_t n = 0; n < ndim; n++) {
offset = n*ldf;
for (i = 0; i < m_nsp; i++) {
for (size_t i = 0; i < m_nsp; i++) {
fluxes[i + offset] *= rho * y[i] / pp;
}
//grad_X[jmax + n*ldx] = gsave[n];
@ -538,10 +525,10 @@ namespace Cantera {
// thermal diffusion
if (addThermalDiffusion) {
for (n = 0; n < ndim; n++) {
for (size_t n = 0; n < ndim; n++) {
offset = n*ldf;
doublereal grad_logt = grad_T[n]/m_temp;
for (i = 0; i < m_nsp; i++)
for (size_t i = 0; i < m_nsp; i++)
fluxes[i + offset] -= m_spwork[i]*grad_logt;
}
}
@ -576,13 +563,9 @@ namespace Cantera {
m_thermo->setState_TPX(t, p, x3);
m_thermo->getMoleFractions(DATA_PTR(m_molefracs));
// update the binary diffusion coefficients if necessary
updateDiff_T();
doublereal sum;
int i, j;
// If there is a temperature gadient, then get the
// thermal diffusion coefficients
@ -595,9 +578,9 @@ namespace Cantera {
const doublereal* y = m_thermo->massFractions();
doublereal rho = m_thermo->density();
for (i = 0; i < m_nsp; i++) {
sum = 0.0;
for (j = 0; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++) {
doublereal sum = 0.0;
for (size_t j = 0; j < m_nsp; j++) {
m_aa(i,j) = m_molefracs[j]*m_molefracs[i]/m_bdiff(i,j);
sum += m_aa(i,j);
}
@ -607,9 +590,9 @@ namespace Cantera {
// enforce the condition \sum Y_k V_k = 0. This is done by
// replacing the flux equation with the largest gradx
// component with the flux balance condition.
int jmax = 0;
size_t jmax = 0;
doublereal gradmax = -1.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
if (fabs(x2[j] - x1[j]) > gradmax) {
gradmax = fabs(x1[j] - x2[j]);
jmax = j;
@ -619,7 +602,7 @@ namespace Cantera {
// set the matrix elements in this row to the mass fractions,
// and set the entry in gradx to zero
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
m_aa(jmax,j) = y[j];
fluxes[j] = x2[j] - x1[j];
}
@ -648,14 +631,14 @@ namespace Cantera {
// multiply diffusion velocities by rho * Y_k to create
// mass fluxes, and divide by pressure
for (i = 0; i < m_nsp; i++) {
for (size_t i = 0; i < m_nsp; i++) {
fluxes[i] *= rho * y[i] / pp;
}
// thermal diffusion
if (addThermalDiffusion) {
doublereal grad_logt = (t2 - t1)/m_temp;
for (i = 0; i < m_nsp; i++) {
for (size_t i = 0; i < m_nsp; i++) {
fluxes[i] -= m_spwork[i]*grad_logt;
}
}
@ -665,15 +648,12 @@ namespace Cantera {
const doublereal* state2, doublereal delta,
doublereal* fluxes) {
getMassFluxes(state1, state2, delta, fluxes);
size_t k, nsp = m_thermo->nSpecies();
for (k = 0; k < nsp; k++) {
for (size_t k = 0; k < m_thermo->nSpecies(); k++) {
fluxes[k] /= m_mw[k];
}
}
void MultiTransport::getMultiDiffCoeffs(const size_t ld, doublereal* const d) {
int i,j;
doublereal p = pressure_ig();
// update the mole fractions
@ -699,8 +679,8 @@ namespace Cantera {
* m_thermo->meanMolecularWeight()/(25.0 * p);
doublereal c;
for (i = 0; i < m_nsp; i++) {
for (j = 0; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++) {
for (size_t j = 0; j < m_nsp; j++) {
c = prefactor/m_mw[j];
d[ld*j + i] = c*m_molefracs[i]*
(m_Lmatrix(i,j) - m_Lmatrix(i,i));
@ -710,24 +690,22 @@ namespace Cantera {
void MultiTransport::getMixDiffCoeffs(doublereal* const d) {
// update the mole fractions
updateTransport_C();
// update the binary diffusion coefficients if necessary
updateDiff_T();
int k, j;
doublereal mmw = m_thermo->meanMolecularWeight();
doublereal sumxw = 0.0, sum2;
doublereal p = pressure_ig();
if (m_nsp == 1) {
d[0] = m_bdiff(0,0) / p;
} else {
for (k = 0; k < m_nsp; k++) sumxw += m_molefracs[k] * m_mw[k];
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) sumxw += m_molefracs[k] * m_mw[k];
for (size_t k = 0; k < m_nsp; k++) {
sum2 = 0.0;
for (j = 0; j < m_nsp; j++) {
for (size_t j = 0; j < m_nsp; j++) {
if (j != k) {
sum2 += m_molefracs[j] / m_bdiff(j,k);
}
@ -803,8 +781,7 @@ namespace Cantera {
// add an offset to avoid a pure species condition
// (check - this may be unnecessary)
int k;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_molefracs[k] = fmaxx(MIN_X, m_molefracs[k]);
}
}
@ -829,15 +806,13 @@ namespace Cantera {
}
void MultiTransport::_update_diff_T() {
updateTransport_T();
// evaluate binary diffusion coefficients at unit pressure
int i,j;
int ic = 0;
size_t ic = 0;
if (m_mode == CK_Mode) {
for (i = 0; i < m_nsp; i++) {
for (j = i; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++) {
for (size_t j = i; j < m_nsp; j++) {
m_bdiff(i,j) = exp(dot4(m_polytempvec, m_diffcoeffs[ic]));
m_bdiff(j,i) = m_bdiff(i,j);
ic++;
@ -845,8 +820,8 @@ namespace Cantera {
}
}
else {
for (i = 0; i < m_nsp; i++) {
for (j = i; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++) {
for (size_t j = i; j < m_nsp; j++) {
m_bdiff(i,j) = m_temp * m_sqrt_t*dot5(m_polytempvec,
m_diffcoeffs[ic]);
m_bdiff(j,i) = m_bdiff(i,j);
@ -874,18 +849,16 @@ namespace Cantera {
void MultiTransport::_update_species_visc_T() {
updateTransport_T();
int k;
if (m_mode == CK_Mode) {
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_visc[k] = exp(dot4(m_polytempvec, m_visccoeffs[k]));
m_sqvisc[k] = sqrt(m_visc[k]);
}
}
else {
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
//m_visc[k] = m_sqrt_t*dot5(m_polytempvec, m_visccoeffs[k]);
// the polynomial fit is done for sqrt(visc/sqrt(T))
m_sqvisc[k] = m_t14*dot5(m_polytempvec, m_visccoeffs[k]);
@ -910,9 +883,8 @@ namespace Cantera {
updateSpeciesViscosities_T();
// see Eq. (9-5.15) of Reid, Prausnitz, and Poling
int j, k;
for (j = 0; j < m_nsp; j++) {
for (k = j; k < m_nsp; k++) {
for (size_t j = 0; j < m_nsp; j++) {
for (size_t k = j; k < m_nsp; k++) {
vratiokj = m_visc[k]/m_visc[j];
wratiojk = m_mw[j]/m_mw[k];
//rootwjk = sqrt(wratiojk);
@ -946,7 +918,6 @@ namespace Cantera {
}
void MultiTransport::_update_thermal_T() {
// we need species viscosities and binary diffusion
// coefficients
updateSpeciesViscosities_T();
@ -955,9 +926,8 @@ namespace Cantera {
// evaluate polynomial fits for A*, B*, C*
doublereal z;
int ipoly;
int i, j;
for (i = 0; i < m_nsp; i++) {
for (j = i; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++) {
for (size_t j = i; j < m_nsp; j++) {
z = m_logt - m_log_eps_k(i,j);
ipoly = m_poly[i][j];
if (m_mode == CK_Mode) {
@ -983,9 +953,8 @@ namespace Cantera {
// evaluate the temperature-dependent rotational relaxation
// rate
int k;
doublereal tr, sqtr;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
tr = m_eps[k]/ m_kbt;
sqtr = m_sqrt_eps_k[k] / m_sqrt_t;
m_rotrelax[k] = fmaxx(1.0,m_zrot[k]) * m_frot_298[k]/Frot(tr, sqtr);
@ -993,14 +962,14 @@ namespace Cantera {
doublereal d;
doublereal c = 1.2*GasConstant*m_temp;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
d = c * m_visc[k] * m_astar(k,k)/m_mw[k];
m_bdiff(k,k) = d;
}
// internal heat capacities
const array_fp& cp = ((IdealGasPhase*)m_thermo)->cp_R_ref();
for (k = 0; k < m_nsp; k++) m_cinternal[k] = cp[k] - 2.5;
for (size_t k = 0; k < m_nsp; k++) m_cinternal[k] = cp[k] - 2.5;
}
/**

View file

@ -120,7 +120,7 @@ namespace Cantera {
* Flat vector with the m_nsp in the inner loop.
* length = ldx * ndim
*/
virtual void getSpeciesFluxes(int ndim,
virtual void getSpeciesFluxes(size_t ndim,
const doublereal* grad_T,
int ldx,
const doublereal* grad_X,

View file

@ -139,7 +139,6 @@ namespace Cantera {
* This is where we dimension everything.
*/
bool SimpleTransport::initLiquid(LiquidTransportParams& tr) {
int k;
// constant substance attributes
m_thermo = tr.thermo;
m_nsp = m_thermo->nSpecies();
@ -207,7 +206,7 @@ namespace Cantera {
"Viscosity Model for species " + spName0 + " is not handled by this object");
}
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
spName = m_thermo->speciesName(k);
Cantera::LiquidTransportData &ltd = tr.LTData[k];
LiquidTR_Model vm = ltd.model_viscosity;
@ -235,7 +234,7 @@ namespace Cantera {
"Conductivity model is not the same as the viscosity model for species " + spName0);
}
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
spName = m_thermo->speciesName(k);
Cantera::LiquidTransportData &ltd = tr.LTData[k];
LiquidTR_Model cm = ltd.model_thermalCond;
@ -272,7 +271,7 @@ namespace Cantera {
}
}
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
spName = m_thermo->speciesName(k);
Cantera::LiquidTransportData &ltd = tr.LTData[k];
LiquidTR_Model dm = ltd.model_speciesDiffusivity;
@ -309,7 +308,7 @@ namespace Cantera {
m_concentrations.resize(m_nsp);
m_chargeSpecies.resize(m_nsp);
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_chargeSpecies[k] = m_thermo->charge(k);
}
m_spwork.resize(m_nsp);
@ -370,7 +369,7 @@ namespace Cantera {
m_viscmix = m_viscSpecies[0];
} else if (compositionDepType_ == 1) {
m_viscmix = 0.0;
for (int k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_viscmix += m_viscSpecies[k] * m_molefracs[k];
}
}
@ -387,7 +386,6 @@ namespace Cantera {
}
//================================================================================================
void SimpleTransport::getBinaryDiffCoeffs(size_t ld, doublereal* d) {
int i, j;
double bdiff;
update_T();
@ -395,8 +393,8 @@ namespace Cantera {
// from the polynomial fits
if (!m_diff_temp_ok) updateDiff_T();
for (i = 0; i < m_nsp; i++) {
for (j = 0; j < m_nsp; j++) {
for (size_t i = 0; i < m_nsp; i++) {
for (size_t j = 0; j < m_nsp; j++) {
bdiff = 0.5 * (m_diffSpecies[i] + m_diffSpecies[j]);
d[i*m_nsp+j] = bdiff;
}
@ -420,10 +418,9 @@ namespace Cantera {
* dimensioned at least as large as the number of species.
*/
void SimpleTransport::getMobilities(doublereal* const mobil) {
int k;
getMixDiffCoeffs(DATA_PTR(m_spwork));
doublereal c1 = ElectronCharge / (Boltzmann * m_temp);
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
mobil[k] = c1 * m_spwork[k];
}
}
@ -447,10 +444,9 @@ namespace Cantera {
* dimensioned at least as large as the number of species.
*/
void SimpleTransport::getFluidMobilities(doublereal* const mobil_f) {
int k;
getMixDiffCoeffs(DATA_PTR(m_spwork));
doublereal c1 = 1.0 / (GasConstant * m_temp);
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
mobil_f[k] = c1 * m_spwork[k];
}
}
@ -537,7 +533,7 @@ namespace Cantera {
* \vec{j}_k = -n M_k D_k \nabla X_k.
* \f]
*/
void SimpleTransport::getSpeciesFluxes(int ndim,
void SimpleTransport::getSpeciesFluxes(size_t ndim,
const doublereal* grad_T,
int ldx, const doublereal* grad_X,
int ldf, doublereal* fluxes) {
@ -573,8 +569,7 @@ namespace Cantera {
* or greater than the number of species.
* @param fluxes Vector of calculated fluxes
*/
void SimpleTransport::getSpeciesFluxesExt(int ldf, doublereal* fluxes) {
int n, k;
void SimpleTransport::getSpeciesFluxesExt(size_t ldf, doublereal* fluxes) {
AssertThrow(ldf >= m_nsp ,"SimpleTransport::getSpeciesFluxesExt: Stride must be greater than m_nsp");
update_T();
update_C();
@ -590,16 +585,16 @@ namespace Cantera {
if (doMigration_) {
double FRT = ElectronCharge / (Boltzmann * m_temp);
for (n = 0; n < m_nDim; n++) {
for (k = 0; k < m_nsp; k++) {
for (size_t n = 0; n < m_nDim; n++) {
for (size_t k = 0; k < m_nsp; k++) {
fluxes[n*ldf + k] = -conc * mw[k] * m_spwork[k] *
( m_Grad_X[n*m_nsp + k] + FRT * m_molefracs[k] * m_chargeSpecies[k] * m_Grad_V[n]);
sum[n] += fluxes[n*ldf + k];
}
}
} else {
for (n = 0; n < m_nDim; n++) {
for (k = 0; k < m_nsp; k++) {
for (size_t n = 0; n < m_nDim; n++) {
for (size_t k = 0; k < m_nsp; k++) {
fluxes[n*ldf + k] = -conc * mw[k] * m_spwork[k] * m_Grad_X[n*m_nsp + k];
sum[n] += fluxes[n*ldf + k];
}
@ -607,8 +602,8 @@ namespace Cantera {
}
// add correction flux to enforce sum to zero
for (n = 0; n < m_nDim; n++) {
for (k = 0; k < m_nsp; k++) {
for (size_t n = 0; n < m_nDim; n++) {
for (size_t k = 0; k < m_nsp; k++) {
fluxes[n*ldf + k] -= y[k]*sum[n];
}
}
@ -625,7 +620,7 @@ namespace Cantera {
if (!m_diff_temp_ok) {
updateDiff_T();
}
for (int k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
d[k] = m_diffSpecies[k];
}
}
@ -658,7 +653,7 @@ namespace Cantera {
m_thermo->getMoleFractions(DATA_PTR(m_molefracs));
m_thermo->getConcentrations(DATA_PTR(m_concentrations));
concTot_ = 0.0;
for (int k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
m_molefracs[k] = fmaxx(0.0, m_molefracs[k]);
concTot_ += m_concentrations[k];
}
@ -684,14 +679,13 @@ namespace Cantera {
* thermal conductivity.
*/
void SimpleTransport::updateCond_T() {
int k;
if (tempDepType_ == 0) {
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
Coeff_T_ &coeff = m_coeffLambda_Ns[k];
m_condSpecies[k] = coeff[0];
}
} else if (tempDepType_ == 1) {
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
Coeff_T_ &coeff = m_coeffLambda_Ns[k];
m_condSpecies[k] = coeff[0] * pow(m_temp,coeff[1]) * exp(-coeff[2]/m_temp);
}
@ -704,23 +698,22 @@ namespace Cantera {
* Update the species diffusion coefficients.
*/
void SimpleTransport::updateDiff_T() {
int k;
if (useHydroRadius_) {
double visc = viscosity();
double RT = GasConstant * m_temp;
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
Coeff_T_ &coeff = m_coeffHydroRadius_Ns[k];
double rad = coeff[0];
m_diffSpecies[k] = RT / (6.0 * Pi * visc * rad);
}
} else {
if (tempDepType_ == 0) {
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
Coeff_T_ &coeff = m_coeffDiff_Ns[k];
m_diffSpecies[k] = coeff[0];
}
} else if (tempDepType_ == 1) {
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
Coeff_T_ &coeff = m_coeffDiff_Ns[k];
m_diffSpecies[k] = coeff[0] * pow(m_temp,coeff[1]) * exp(-coeff[2]/m_temp);
}
@ -745,14 +738,13 @@ namespace Cantera {
* The flag m_visc_ok is set to true.
*/
void SimpleTransport::updateViscosity_T() {
int k;
if (tempDepType_ == 0) {
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
Coeff_T_ &coeff = m_coeffVisc_Ns[k];
m_viscSpecies[k] = coeff[0];
}
} else if (tempDepType_ == 1) {
for (k = 0; k < m_nsp; k++) {
for (size_t k = 0; k < m_nsp; k++) {
Coeff_T_ &coeff = m_coeffVisc_Ns[k];
m_viscSpecies[k] = coeff[0] * pow(m_temp,coeff[1]) * exp(-coeff[2]/m_temp);
}

View file

@ -335,7 +335,7 @@ namespace Cantera {
*
*
*/
virtual void getSpeciesFluxes(int ndim,
virtual void getSpeciesFluxes(size_t ndim,
const doublereal* grad_T,
int ldx, const doublereal* grad_X,
int ldf, doublereal* fluxes);
@ -367,7 +367,7 @@ namespace Cantera {
* or greater than the number of species.
* @param fluxes Vector of calculated fluxes
*/
virtual void getSpeciesFluxesExt(int ldf, doublereal* fluxes);
virtual void getSpeciesFluxesExt(size_t ldf, doublereal* fluxes);
protected:
@ -690,7 +690,7 @@ namespace Cantera {
/*!
* Either 1, 2, or 3
*/
int m_nDim;
size_t m_nDim;
private:

View file

@ -253,7 +253,7 @@ namespace Cantera {
* Flat vector with the m_nsp in the inner loop.
* length = ldx * ndim
*/
virtual void getSpeciesFluxes(int ndim,
virtual void getSpeciesFluxes(size_t ndim,
const doublereal* grad_T,
int ldx,
const doublereal* grad_X,

View file

@ -416,8 +416,7 @@ namespace Cantera {
getTransportData(transport_database, log,
tr.thermo->speciesNames(), tr);
int i, j;
for (i = 0; i < nsp; i++) tr.poly[i].resize(nsp);
for (size_t i = 0; i < nsp; i++) tr.poly[i].resize(nsp);
doublereal ts1, ts2, tstar_min = 1.e8, tstar_max = 0.0;
doublereal f_eps, f_sigma;
@ -425,9 +424,9 @@ namespace Cantera {
DenseMatrix& diam = tr.diam;
DenseMatrix& epsilon = tr.epsilon;
for (i = 0; i < nsp; i++)
for (size_t i = 0; i < nsp; i++)
{
for (j = i; j < nsp; j++)
for (size_t j = i; j < nsp; j++)
{
// the reduced mass
tr.reducedMass(i,j) =
@ -715,7 +714,7 @@ namespace Cantera {
std::map<std::string, GasTransportData> datatable;
doublereal welldepth, diam, dipole, polar, rot;
int nsp = static_cast<int>(xspecies.size());
size_t nsp = xspecies.size();
// read all entries in database into 'datatable' and check for
// errors. Note that this procedure validates all entries, not
@ -727,8 +726,7 @@ namespace Cantera {
gindx["linear"] = 101;
gindx["nonlinear"] = 102;
int linenum = 0;
int i;
for (i = 0; i < nsp; i++) {
for (size_t i = 0; i < nsp; i++) {
const XML_Node& sp = *xspecies[i];
name = sp["name"];
// std::cout << "Processing node for " << name << std::endl;
@ -777,7 +775,7 @@ namespace Cantera {
}
}
for (i = 0; i < tr.nsp_; i++) {
for (size_t i = 0; i < tr.nsp_; i++) {
GasTransportData& trdat = datatable[names[i]];
@ -843,7 +841,7 @@ namespace Cantera {
doublereal A_thcond, n_thcond, Tact_thcond;
doublereal A_spdiff, n_spdiff, Tact_spdiff;
int nsp = static_cast<int>(xspecies.size());
size_t nsp = xspecies.size();
std::cout << "Size of xspecies " << nsp << std::endl;
// read all entries in database into 'datatable' and check for
@ -851,8 +849,7 @@ namespace Cantera {
// only those for the species listed in 'names'.
int linenum = 0;
int i;
for (i = 0; i < nsp; i++) {
for (size_t i = 0; i < nsp; i++) {
const XML_Node& sp = *xspecies[i];
name = sp["name"];
vector_fp vCoeff;
@ -1038,7 +1035,7 @@ namespace Cantera {
}
trParam.LTData.clear();
for (i = 0; i < trParam.nsp_; i++) {
for (size_t i = 0; i < trParam.nsp_; i++) {
LiquidTransportData& trdat = datatable[names[i]];
@ -1115,7 +1112,7 @@ namespace Cantera {
void TransportFactory::fitProperties(GasTransportParams& tr,
ostream& logfile) {
doublereal tstar;
int k, j, n, ndeg = 0;
int ndeg = 0;
#ifdef DEBUG_MODE
char s[100];
#endif
@ -1133,7 +1130,7 @@ namespace Cantera {
vector_fp w(np), w2(np);
// generate array of log(t) values
for (n = 0; n < np; n++) {
for (size_t n = 0; n < np; n++) {
t = tr.tmin + dt*n;
tlog[n] = log(t);
}
@ -1174,9 +1171,9 @@ namespace Cantera {
c1, cv_rot, cv_int, f_rot, f_trans, om11;
doublereal diffcoeff;
for (k = 0; k < tr.nsp_; k++)
for (size_t k = 0; k < tr.nsp_; k++)
{
for (n = 0; n < np; n++) {
for (size_t n = 0; n < np; n++) {
t = tr.tmin + dt*n;
tr.thermo->setTemperature(t);
@ -1249,7 +1246,7 @@ namespace Cantera {
DATA_PTR(w), degree, ndeg, 0.0, DATA_PTR(c2));
// evaluate max fit errors for viscosity
for (n = 0; n < np; n++) {
for (size_t n = 0; n < np; n++) {
if (mode == CK_Mode) {
val = exp(spvisc[n]);
fit = exp(poly3(tlog[n], DATA_PTR(c)));
@ -1266,7 +1263,7 @@ namespace Cantera {
}
// evaluate max fit errors for conductivity
for (n = 0; n < np; n++) {
for (size_t n = 0; n < np; n++) {
if (mode == CK_Mode) {
val = exp(spcond[n]);
fit = exp(poly3(tlog[n], DATA_PTR(c2)));
@ -1311,7 +1308,7 @@ namespace Cantera {
tr.xml->XML_comment(logfile,s);
}
if (tr.log_level >= 2)
for (k = 0; k < tr.nsp_; k++) {
for (size_t k = 0; k < tr.nsp_; k++) {
tr.xml->XML_writeVector(logfile, " ", tr.thermo->speciesName(k),
degree+1, DATA_PTR(tr.condcoeffs[k]));
}
@ -1339,12 +1336,12 @@ namespace Cantera {
mxerr = 0.0, mxrelerr = 0.0;
vector_fp diff(np + 1);
doublereal eps, sigma;
for (k = 0; k < tr.nsp_; k++)
for (size_t k = 0; k < tr.nsp_; k++)
{
for (j = k; j < tr.nsp_; j++) {
for (size_t j = k; j < tr.nsp_; j++) {
ipoly = tr.poly[k][j];
for (n = 0; n < np; n++) {
for (size_t n = 0; n < np; n++) {
t = tr.tmin + dt*n;
@ -1379,7 +1376,7 @@ namespace Cantera {
DATA_PTR(w), degree, ndeg, 0.0, DATA_PTR(c));
doublereal pre;
for (n = 0; n < np; n++) {
for (size_t n = 0; n < np; n++) {
if (mode == CK_Mode) {
val = exp(diff[n]);
fit = exp(poly3(tlog[n], DATA_PTR(c)));