Structure * ExampleSearch::generateRandomStructure() { Structure * s = new Structure; Atom *O1 = s->addAtom(8, Eigen::Vector3d(0.0, 0.0, 0.0)); Atom *O2 = s->addAtom(8, Eigen::Vector3d(1.0, 0.0, 0.0)); s->addBond(O1, O2, 2); return s; }
void StructureTest::enthalpyFallBack() { Structure s; s.addAtom(); s.setEnergy(1.0 * EV_TO_KJ_PER_MOL); qDebug() << s.getEnthalpy(); QVERIFY(APPROX_EQ(s.getEnthalpy(), 1.0)); s.setEnergy(-1.0 * EV_TO_KJ_PER_MOL); QVERIFY(APPROX_EQ(s.getEnthalpy(), -1.0)); s.setEnthalpy(3.0); QVERIFY(APPROX_EQ(s.getEnthalpy(), 3.0)); s.setEnthalpy(-3.0); QVERIFY(APPROX_EQ(s.getEnthalpy(), -3.0)); QList<unsigned int> anums; anums << 1; QList<Eigen::Vector3d> coords; coords << Eigen::Vector3d(0,0,0); s.updateAndSkipHistory(anums, coords, 1.0, // energy 0.0); // enthalpy QVERIFY(APPROX_EQ(s.getEnthalpy(), 1.0)); s.updateAndSkipHistory(anums, coords, -1.0, // energy 0.0); // enthalpy QVERIFY(APPROX_EQ(s.getEnthalpy(), -1.0)); s.updateAndAddToHistory(anums, coords, 1.0, // energy 0.0); // enthalpy QVERIFY(APPROX_EQ(s.getEnthalpy(), 1.0)); s.updateAndAddToHistory(anums, coords, -1.0, // energy 0.0); // enthalpy QVERIFY(APPROX_EQ(s.getEnthalpy(), -1.0)); s.updateAndSkipHistory(anums, coords, 0.0, // energy 1.0); // enthalpy QVERIFY(APPROX_EQ(s.getEnthalpy(), 1.0)); s.updateAndSkipHistory(anums, coords, 0.0, // energy -1.0); // enthalpy QVERIFY(APPROX_EQ(s.getEnthalpy(), -1.0)); s.updateAndAddToHistory(anums, coords, 0.0, // energy 1.0); // enthalpy QVERIFY(APPROX_EQ(s.getEnthalpy(), 1.0)); s.updateAndAddToHistory(anums, coords, 0.0, // energy -1.0); // enthalpy QVERIFY(APPROX_EQ(s.getEnthalpy(), -1.0)); }