/doc/ase/db/db.py

https://gitlab.com/vote539/ase · Python · 49 lines · 37 code · 11 blank · 1 comment · 4 complexity · 6579a75b218150f853e763eb4af25820 MD5 · raw file

  1. # creates: ase-db.txt, ase-db-long.txt
  2. import ase.db
  3. c = ase.db.connect('abc.db', append=False)
  4. from ase import Atoms
  5. from ase.calculators.emt import EMT
  6. h2 = Atoms('H2', [(0, 0, 0), (0, 0, 0.7)])
  7. h2.calc = EMT()
  8. h2.get_forces()
  9. c.write(h2, relaxed=False)
  10. from ase.optimize import BFGS
  11. BFGS(h2).run(fmax=0.01)
  12. c.write(h2, relaxed=True, data={'abc': [1, 2, 3]})
  13. for d in c.select('molecule'):
  14. print(d.forces[0, 2], d.relaxed)
  15. h = Atoms('H')
  16. h.calc = EMT()
  17. h.get_potential_energy()
  18. c.write(h)
  19. import subprocess
  20. with open('ase-db.txt', 'w') as fd:
  21. fd.write('$ ase-db abc.db\n')
  22. output = subprocess.check_output(['ase-db', 'abc.db'])
  23. fd.write(output)
  24. with open('ase-db-long.txt', 'w') as fd:
  25. fd.write('$ ase-db abc.db relaxed=1 -l\n')
  26. output = subprocess.check_output(['ase-db', 'abc.db', 'relaxed=1', '-l'])
  27. fd.write(output)
  28. row = c.get(relaxed=1, calculator='emt')
  29. for key in row:
  30. print('{0:22}: {1}'.format(key, row[key]))
  31. print(row.data.abc)
  32. e2 = row.energy
  33. e1 = c.get(H=1).energy
  34. ae = 2 * e1 - e2
  35. print(ae)
  36. id = c.get(relaxed=1).id
  37. c.update(id, atomization_energy=ae)
  38. del c[c.get(relaxed=0).id]