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()
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()
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)