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.
This commit is contained in:
Ray Speth 2012-05-29 18:03:22 +00:00
parent 88a1f64466
commit b411f513ae
3 changed files with 14 additions and 14 deletions

View file

@ -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();

View file

@ -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));
}

View file

@ -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();