예제 #1
0
  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;
  }
예제 #2
0
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));

}