From e05da2a6a5e5802a0cd6a03fc4ccd4d32c191c59 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Tue, 6 Jan 2015 23:37:28 +0000 Subject: [PATCH] [Transport] Fix conversion of dipole moments from Debye to SI units The existing formulas for converting Debye to SI units did not maintain the correct dimensionality for the dipole moment. The updated formulas do not change the results of any calculations, but the dipole moment is now correctly expressed in Coulomb-meters. --- include/cantera/transport/TransportParams.h | 8 ++++---- src/transport/TransportFactory.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/cantera/transport/TransportParams.h b/include/cantera/transport/TransportParams.h index 6f0553ee2..2e1288317 100644 --- a/include/cantera/transport/TransportParams.h +++ b/include/cantera/transport/TransportParams.h @@ -218,11 +218,11 @@ public: //! The effective dipole moment for (i,j) collisions /*! - * tr.dipoleMoment has units of Debye's. A Debye is 10-18 cm3/2 erg1/2 + * dipoleMoment has units of Debye. A Debye is 3.335e-30 C-m * - * tr.dipole(i,i) = 1.e-25 * SqrtTen * trdat.dipoleMoment; + * tr.dipole(i,i) = 1.e-21 / lightSpeed * dipoleMoment; * tr.dipole(i,j) = sqrt(tr.dipole(i,i)*tr.dipole(j,j)); - * Units are in Debye (note, no kmol -> this is a per molecule amount) + * (note, no kmol -> this is a per molecule amount) * * Length nsp * nsp. This is a symmetric matrix. */ @@ -231,7 +231,7 @@ public: //! Matrix containing the reduced dipole moment of the interaction between two species /*! * This is the reduced dipole moment of the interaction between two species - * 0.5 * tr.dipole(i,j)*tr.dipole(i,j) (epsilon(i,j) * d * d * d); + * 0.5 * tr.dipole(i,j)^2 / (4 * Pi * epsilon_0 * epsilon(i,j) * d^3); * * Length nsp * nsp .This is a symmetric matrix */ diff --git a/src/transport/TransportFactory.cpp b/src/transport/TransportFactory.cpp index 0164e1529..083ec853d 100644 --- a/src/transport/TransportFactory.cpp +++ b/src/transport/TransportFactory.cpp @@ -147,7 +147,7 @@ void TransportFactory::makePolarCorrections(size_t i, size_t j, d3np = pow(tr.sigma[knp],3); d3p = pow(tr.sigma[kp],3); alpha_star = tr.alpha[knp]/d3np; - mu_p_star = tr.dipole(kp,kp)/sqrt(d3p * tr.eps[kp]); + mu_p_star = tr.dipole(kp,kp)/sqrt(4 * Pi * epsilon_0 * d3p * tr.eps[kp]); xi = 1.0 + 0.25 * alpha_star * mu_p_star * mu_p_star * sqrt(tr.eps[kp]/tr.eps[knp]); f_sigma = pow(xi, -1.0/6.0); @@ -466,7 +466,7 @@ void TransportFactory::setupMM(const std::vector &transport_dat // reduced dipole moment delta* (nondimensional) doublereal d = diam(i,j); tr.delta(i,j) = 0.5 * tr.dipole(i,j)*tr.dipole(i,j) - / (epsilon(i,j) * d * d * d); + / (4 * Pi * epsilon_0 * epsilon(i,j) * d * d * d); makePolarCorrections(i, j, tr, f_eps, f_sigma); tr.diam(i,j) *= f_sigma; @@ -760,10 +760,10 @@ void TransportFactory::getTransportData(const ThermoPhase& thermo, const std::ve } // Dipole moment of the molecule. - // Given in Debye (a debye is 10-18 cm3/2 erg1/2) + // Given in Debye (a Debye is 1e-18 statC-m or 3.3356e-30 C-m) double dipole = ctml::getFloat(node, "dipoleMoment"); if (dipole >= 0.0) { - tr.dipole(j,j) = 1.e-25 * SqrtTen * dipole; + tr.dipole(j,j) = 1e-21 / lightSpeed * dipole; tr.polar[j] = (dipole > 0.0); } else { throw TransportDBError(i, "negative dipole moment");