Beispiel #1
0
from ase.dft.bee import BEEF_Ensemble
from gpaw import GPAW
from gpaw.cluster import Cluster
from gpaw.test import equal
import numpy as np

xc = 'mBEEF'
conv = {'eigenstates':1.e-6, 'density':1.e-6, 'energy':1.e-6}
h = 0.18
tol1 = 1.e-3
tol2 = 1.e-1

# N2 molecule
n2 = Cluster(Atoms('N2',[[0.,0.,0.],[0.,0.,1.09]]))
n2.minimal_box(3.0, h=h)
cell = n2.get_cell()
calc = GPAW(h=h, xc='PBE', convergence=conv)
n2.set_calculator(calc)
n2.get_potential_energy()
n2.calc.set(xc=xc)
e_n2 = n2.get_potential_energy()
f = n2.get_forces()
ens = BEEF_Ensemble(n2)
de_n2 = ens.get_ensemble_energies()
del n2, calc, ens

# N atom
n = Atoms('N')
n.set_cell(cell)
n.center()
calc = GPAW(h=h, xc='PBE', convergence=conv, hund=True)
# .............................................
# I/O
fxyz='CO.xyz'
fpdb='CO.pdb'

cell = [2.,3.,R+2.]
CO.set_cell(cell, scale_atoms=True)
barrier()
CO.write(fxyz)
barrier()
CO_b = Cluster(filename=fxyz)
assert(len(CO) == len(CO_b))
#for a, b in zip(cell, CO_b.get_cell().diagonal()):
#    assert(a == b)
offdiagonal = CO_b.get_cell().sum() - CO_b.get_cell().diagonal().sum()
assert(offdiagonal == 0.0)
 
barrier()
CO.write(fpdb)

# read xyz files with additional info
read_with_additional = True
if read_with_additional:
    if rank == 0:
        f = open(fxyz, 'w')
        print("""2

C 0 0 0. 1 2 3
O 0 0 1. 6. 7. 8.""", file=f)
        f.close()
Beispiel #3
0
H2O = Cluster(molecule('H2O'))
assert (len(H2O.find_connected(0)) == 3)
assert (len(H2O.find_connected(0, scale=0.9)) == 1)

# I/O
fxyz = 'CO.xyz'
fpdb = 'CO.pdb'

cell = [2., 3., R + 2.]
CO.set_cell(cell, scale_atoms=True)
barrier()
CO.write(fxyz)
barrier()
CO_b = Cluster(filename=fxyz)
assert (len(CO) == len(CO_b))
offdiagonal = CO_b.get_cell().sum() - CO_b.get_cell().diagonal().sum()
assert (offdiagonal == 0.0)

barrier()
CO.write(fpdb)

# read xyz files with additional info
read_with_additional = True
if read_with_additional:
    if rank == 0:
        f = open(fxyz, 'w')
        print("""2

C 0 0 0. 1 2 3
O 0 0 1. 6. 7. 8.""", file=f)
        f.close()
Beispiel #4
0
h = 0.2
s = Cluster(Atoms('He'))
s.minimal_box(3, h=h)

c = GPAW(
    charge=1,
    txt='He_plus.txt',
    poissonsolver=PoissonSolver(use_charge_center=True),
    convergence={  # run fast
        'energy': 0.001,
        'eigenstates': 1e-4,
        'density': 1e-3
    })
s.set_calculator(c)
e_small = s.get_potential_energy()
eps_small = c.get_eigenvalues()[0]

cell = s.get_cell()
cell[0] *= 2
s.set_cell(cell)
e_big = s.get_potential_energy()
eps_big = c.get_eigenvalues()[0]

parprint('Energies and Eigenvalues:')
parprint('     Small Box    Wide Box')
parprint('E:   {0:9.3f}     {1:9.3f}'.format(e_small, e_big))
parprint('eps: {0:9.3f}     {1:9.3f}'.format(eps_small, eps_big))
equal(e_small, e_big, 2.5e-4)
equal(eps_small, eps_big, 6e-4)