From b411f513ae64966f0b35ba2fb5f285fb75828542 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Tue, 29 May 2012 18:03:22 +0000 Subject: [PATCH] Resolved the namespace collision between the two classes named "Gaussian" This was causing problems on MinGW builds where Gaussian "function" objects were being misinterpreted as Gaussian "line broadeners" and returning incorrect results. --- include/cantera/spectra/LineBroadener.h | 8 ++++---- src/spectra/LineBroadener.cpp | 16 ++++++++-------- test_problems/spectroscopy/spectratest.cpp | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/include/cantera/spectra/LineBroadener.h b/include/cantera/spectra/LineBroadener.h index 2e5252fe6..678cd3b35 100644 --- a/include/cantera/spectra/LineBroadener.h +++ b/include/cantera/spectra/LineBroadener.h @@ -71,10 +71,10 @@ public: * \f] * where \f$ \gamma = {\mbox{FWHM}/2} \f$. */ -class Lorentzian : public LineBroadener +class LorentzianProfile : public LineBroadener { public: - Lorentzian(doublereal FWHM); + LorentzianProfile(doublereal FWHM); virtual doublereal profile(doublereal deltaFreq); virtual doublereal cumulative(doublereal deltaFreq); virtual double width(); @@ -88,7 +88,7 @@ protected: * A Gaussian line profile. This profile results when Doppler * broadening is dominant. */ -class Gaussian : public LineBroadener +class GaussianProfile : public LineBroadener { public: @@ -96,7 +96,7 @@ public: * Constructor. * @param FWHM Full width at half-maximum. */ - Gaussian(doublereal sigma); + GaussianProfile(doublereal sigma); virtual doublereal profile(doublereal deltaFreq); virtual doublereal cumulative(doublereal deltaFreq); virtual doublereal width(); diff --git a/src/spectra/LineBroadener.cpp b/src/spectra/LineBroadener.cpp index ef44991b8..1dcdb2259 100644 --- a/src/spectra/LineBroadener.cpp +++ b/src/spectra/LineBroadener.cpp @@ -14,7 +14,7 @@ using namespace Cantera; namespace Cantera { -Lorentzian::Lorentzian(doublereal gamma) +LorentzianProfile::LorentzianProfile(doublereal gamma) { m_hwhm = gamma; m_hwhm2 = m_hwhm*m_hwhm; @@ -28,7 +28,7 @@ Lorentzian::Lorentzian(doublereal gamma) *\f] * Units: 1/wavenumber (or cm). */ -doublereal Lorentzian::profile(doublereal deltaFreq) +doublereal LorentzianProfile::profile(doublereal deltaFreq) { return (1.0/Cantera::Pi) *m_hwhm/(deltaFreq*deltaFreq + m_hwhm2); } @@ -40,23 +40,23 @@ doublereal Lorentzian::profile(doublereal deltaFreq) * \frac{1}{\pi} \tan^{-1}\left(\frac{\Delta\nu}{gamma}\right) + 0.5 * \f] */ -doublereal Lorentzian::cumulative(doublereal deltaFreq) +doublereal LorentzianProfile::cumulative(doublereal deltaFreq) { return (1.0/Pi) * atan(deltaFreq/m_hwhm) + 0.5; } -doublereal Lorentzian::width() +doublereal LorentzianProfile::width() { return 2.0*m_hwhm; } -Gaussian::Gaussian(doublereal sigma) +GaussianProfile::GaussianProfile(doublereal sigma) { m_sigma = sigma; m_sigma2 = m_sigma*m_sigma; } -doublereal Gaussian::profile(doublereal deltaFreq) +doublereal GaussianProfile::profile(doublereal deltaFreq) { //cout << "entered Gaussian::profile" << endl; //cout << "deltaFreq = " << deltaFreq << endl; @@ -65,12 +65,12 @@ doublereal Gaussian::profile(doublereal deltaFreq) exp(-deltaFreq*deltaFreq/(2.0*m_sigma2)); } -doublereal Gaussian::cumulative(doublereal deltaFreq) +doublereal GaussianProfile::cumulative(doublereal deltaFreq) { return 0.5*(1.0 + erf(deltaFreq/(m_sigma*SqrtTwo))); } -doublereal Gaussian::width() +doublereal GaussianProfile::width() { return 2.0*m_sigma*sqrt(log(4.0)); } diff --git a/test_problems/spectroscopy/spectratest.cpp b/test_problems/spectroscopy/spectratest.cpp index e105b4545..ef4a45a04 100644 --- a/test_problems/spectroscopy/spectratest.cpp +++ b/test_problems/spectroscopy/spectratest.cpp @@ -20,8 +20,8 @@ int main() double gam = 2.0e0; double sigma = 5.0; - LineBroadener* lor = new Lorentzian(gam); - LineBroadener* gaus = new Gaussian(sigma); + LineBroadener* lor = new LorentzianProfile(gam); + LineBroadener* gaus = new GaussianProfile(sigma); Voigt* voig = new Voigt(sigma, gam); //voig->testv();