from gpaw.eigensolvers.rmm_diis_old import RMM_DIIS
from gpaw.mixer import Mixer
from gpaw.response.df0 import DF
from gpaw.response.bse import BSE

GS = 1
df = 1
bse = 1
check_spectrum = 1

if GS:
    a = 4.043
    atoms = bulk('Al', 'fcc', a=a)
    atoms.center()
    calc = GPAW(h=0.2,
                eigensolver=RMM_DIIS(),
                mixer=Mixer(0.1,3),
                kpts=(4,2,2),
                xc='LDA',
                nbands=4,
                convergence={'bands':'all'})
    
    atoms.set_calculator(calc)
    atoms.get_potential_energy()
    calc.write('Al.gpw','all')

if bse:
    bse = BSE('Al.gpw',
              w=np.linspace(0,24,241),
              nv=[0,4],
              nc=[0,4],
Beispiel #2
0
from __future__ import print_function
import numpy as np
from ase.structure import molecule

from gpaw import GPAW
from gpaw.eigensolvers.rmm_diis_old import RMM_DIIS
from gpaw.lcao.projected_wannier import get_lcao_projections_HSP

atoms = molecule('C2H2')
atoms.center(vacuum=3.0)
calc = GPAW(gpts=(32, 32, 48), eigensolver=RMM_DIIS())
atoms.set_calculator(calc)
atoms.get_potential_energy()

V_qnM, H_qMM, S_qMM, P_aqMi = get_lcao_projections_HSP(calc,
                                                       bfs=None,
                                                       spin=0,
                                                       projectionsonly=False)

# Test H and S
eig = np.linalg.eigvals(np.linalg.solve(S_qMM[0], H_qMM[0])).real
eig.sort()
eig_ref = np.array([
    -17.87911292, -13.24864985, -11.43106707, -7.12558127, -7.12558127,
    0.59294531, 0.59294531, 3.92526888, 7.45117399, 26.73466374
])
print(eig)
assert np.allclose(eig, eig_ref)

# Test V
Vref_nM = np.array([
Beispiel #3
0
]

prefix = 'b256H2O'
L = 9.8553729
atoms = Atoms('32(OH2)', positions=positions)
atoms.set_cell((L, L, L), scale_atoms=False)
atoms.set_pbc(1)
r = [1, 1, 2]
atoms = atoms.repeat(r)
n = [56 * ri for ri in r]
# nbands (>=128) is the number of bands per 32 water molecules
nbands = 2 * 6 * 11  # 132
for ri in r:
    nbands = nbands * ri
# the next line decreases memory usage
es = RMM_DIIS(keep_htpsit=False)
calc = GPAW(
    nbands=nbands,
    # uncomment next two lines to use lcao/sz
    #mode='lcao',
    #basis='sz',
    gpts=tuple(n),
    #maxiter=5,
    width=0.01,
    eigensolver=es,
    txt=prefix + '.txt',
)
if run == 'A':
    atoms.set_calculator(calc)
    pot = atoms.get_potential_energy()
elif run == 'B':
Beispiel #4
0
from gpaw import GPAW
from gpaw.eigensolvers.rmm_diis_old import RMM_DIIS
from ase import Atoms
from gpaw.test import equal

atoms = Atoms('H')
atoms.center(3.0)

convergence = {'eigenstates': 1e-2, 'density': 1e-2}
# Keep htpsit
calc = GPAW(nbands=2,
            eigensolver=RMM_DIIS(keep_htpsit=True),
            convergence=convergence,
            maxiter=20)
atoms.set_calculator(calc)
e0 = atoms.get_potential_energy()

# Do not keep htpsit
calc = GPAW(nbands=2,
            eigensolver=RMM_DIIS(keep_htpsit=False),
            convergence=convergence,
            maxiter=20)
atoms.set_calculator(calc)
e1 = atoms.get_potential_energy()

equal(e0, e1, 1e-12)