All pastes #1896165 Raw Edit

christian

public text v1 · immutable
#1896165 ·published 2010-07-07 18:28 UTC
rendered paste body
import osfrom gpaw import GPAW, restartfrom ase import Atomsfrom gpaw.test import equalfrom gpaw.utilities import hdf5from math import sqrtimport numpy as npmodes = ['gpw']if hdf5():    modes.append('hdf5')d = 3.0atoms = Atoms('Na3', positions=[( 0, 0, 0),                              ( 0, 0, d),                              ( 0, d*sqrt(3./4.), d/2.)],                   magmoms=[1.0, 1.0, 1.0],                   cell=(3.5, 3.5, 3.5),                   pbc=True)# Only a short, non-converged calcuationconv = {'eigenstates': 1e-2, 'energy':2e-1, 'density':1e-1}calc = GPAW(h=0.34, nbands=3, convergence=conv)atoms.set_calculator(calc)e0 = atoms.get_potential_energy()niter0 = calc.get_number_of_iterations()f0 = atoms.get_forces()m0 = atoms.get_magnetic_moments()eig00 = calc.get_eigenvalues(spin=0)eig01 = calc.get_eigenvalues(spin=1)# Write the restart file(s)for mode in modes:    calc.write('tmp.%s' % mode)del atoms, calc# Try restarting from all the filesfor mode in modes:    atoms, calc = restart('tmp.%s' % mode)    e1 = atoms.get_potential_energy()    try: # number of iterations needed in restart        niter1 = calc.get_number_of_iterations()    except: pass    f1 = atoms.get_forces()    m1 = atoms.get_magnetic_moments()    eig10 = calc.get_eigenvalues(spin=0)    eig11 = calc.get_eigenvalues(spin=1)    print e0, e1    equal(e0, e1, 1e-10)    print f0, f1    for ff0, ff1 in zip(f0, f1):        err = np.linalg.norm(ff0-ff1)        assert err <= 1e-10    print m0, m1    for mm0, mm1 in zip(m0, m1):        equal(mm0, mm1, 1e-10)    print 'A',eig00, eig10    for eig0, eig1 in zip(eig00, eig10):        equal(eig0, eig1, 1e-10)    print 'B',eig01, eig11    for eig0, eig1 in zip(eig01, eig11):        equal(eig0, eig1, 1e-10)    energy_tolerance = 0.0002    niter_tolerance = 0    equal(e0, 27.1408, energy_tolerance)    equal(niter0, 6, niter_tolerance)    equal(e1, 27.1408, energy_tolerance)