Skip to content

Commit 14ab1f2

Browse files
committed
Make sure Gaussian fchk orbitals are read with eV energies
Signed-off-by: Geoff Hutchison <[email protected]>
1 parent 3ae0eec commit 14ab1f2

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

avogadro/quantumio/gaussianfchk.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ using Core::Rhf;
2525
using Core::Rohf;
2626
using Core::Uhf;
2727

28+
// https://physics.nist.gov/cgi-bin/cuu/Value?hrev
29+
const double hartreeToEV = 27.211386245981;
30+
2831
GaussianFchk::GaussianFchk() : m_scftype(Rhf) {}
2932

3033
GaussianFchk::~GaussianFchk() {}
@@ -158,17 +161,14 @@ void GaussianFchk::processLine(std::istream& in)
158161
m_csp = readArrayD(in, Core::lexicalCast<int>(list[2]), 16);
159162
} else if (key == "Alpha Orbital Energies") {
160163
if (m_scftype == Rhf) {
161-
m_orbitalEnergy = readArrayD(in, Core::lexicalCast<int>(list[2]), 16);
162-
// cout << "MO energies, n = " << m_orbitalEnergy.size() << endl;
164+
m_orbitalEnergy =
165+
readArrayD(in, Core::lexicalCast<int>(list[2]), 16, hartreeToEV);
163166
} else if (m_scftype == Uhf) {
164167
m_alphaOrbitalEnergy =
165-
readArrayD(in, Core::lexicalCast<int>(list[2]), 16);
166-
// cout << "Alpha MO energies, n = " << m_alphaOrbitalEnergy.size() <<
167-
// endl;
168+
readArrayD(in, Core::lexicalCast<int>(list[2]), 16, hartreeToEV);
168169
}
169170
} else if (key == "Beta Orbital Energies") {
170171
if (m_scftype != Uhf) {
171-
// cout << "UHF detected. Reassigning Alpha properties." << endl;
172172
m_scftype = Uhf;
173173
m_alphaOrbitalEnergy = m_orbitalEnergy;
174174
m_orbitalEnergy = vector<double>();
@@ -177,8 +177,8 @@ void GaussianFchk::processLine(std::istream& in)
177177
m_MOcoeffs = vector<double>();
178178
}
179179

180-
m_betaOrbitalEnergy = readArrayD(in, Core::lexicalCast<int>(list[2]), 16);
181-
// cout << "Beta MO energies, n = " << m_betaOrbitalEnergy.size() << endl;
180+
m_betaOrbitalEnergy =
181+
readArrayD(in, Core::lexicalCast<int>(list[2]), 16, hartreeToEV);
182182
} else if (key == "Alpha MO coefficients" && list.size() > 2) {
183183
if (m_scftype == Rhf) {
184184
m_MOcoeffs = readArrayD(in, Core::lexicalCast<int>(list[2]), 16);
@@ -379,7 +379,7 @@ vector<int> GaussianFchk::readArrayI(std::istream& in, unsigned int n)
379379
}
380380

381381
vector<double> GaussianFchk::readArrayD(std::istream& in, unsigned int n,
382-
int width)
382+
int width, double factor)
383383
{
384384
vector<double> tmp;
385385
tmp.reserve(n);
@@ -402,7 +402,7 @@ vector<double> GaussianFchk::readArrayD(std::istream& in, unsigned int n,
402402
<< tmp.size() << " of " << n << endl;
403403
return tmp;
404404
}
405-
tmp.push_back(Core::lexicalCast<double>(i, ok));
405+
tmp.push_back(Core::lexicalCast<double>(i, ok) * factor);
406406
if (!ok) {
407407
cout << "Warning: problem converting string to integer: " << i
408408
<< " in GaussianFchk::readArrayD.\n";
@@ -420,7 +420,7 @@ vector<double> GaussianFchk::readArrayD(std::istream& in, unsigned int n,
420420
<< tmp.size() << " of " << n << endl;
421421
return tmp;
422422
}
423-
tmp.push_back(Core::lexicalCast<double>(substring, ok));
423+
tmp.push_back(Core::lexicalCast<double>(substring, ok) * factor);
424424
if (!ok) {
425425
cout << "Warning: problem converting string to double: " << substring
426426
<< " in GaussianFchk::readArrayD.\n";

avogadro/quantumio/gaussianfchk.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class AVOGADROQUANTUMIO_EXPORT GaussianFchk : public Io::FileFormat
5858
void load(Core::GaussianSet* basis);
5959
std::vector<int> readArrayI(std::istream& in, unsigned int n);
6060
std::vector<double> readArrayD(std::istream& in, unsigned int n,
61-
int width = 0);
61+
int width = 0, double factor = 1.0);
6262
bool readDensityMatrix(std::istream& in, unsigned int n, int width = 0);
6363
bool readSpinDensityMatrix(std::istream& in, unsigned int n, int width = 0);
6464

0 commit comments

Comments
 (0)