from ase import Atoms from gpaw import GPAW, Mixer, ConvergenceError, PoissonSolver from gpaw.utilities.timing import Timer from gpaw.eigensolvers.rmm_diis import RMM_DIIS ps = PoissonSolver(nn='M', relax='GS', eps=1e-9) es = RMM_DIIS(keep_htpsit=False) from gpaw.hs_operators import MatrixOperator MatrixOperator.nblocks = 3 class MyGPAW(GPAW): timer_class = Timer a = 4.08 bulk = Atoms('Au4', positions=((0, 0 ,0), (0.5, 0.5, 0), (0.5, 0, 0.5), (0, 0.5, 0.5)), pbc=True) bulk.set_cell((a,a,a), scale_atoms=True) bulk = bulk.repeat((6, 6, 6)) calc = MyGPAW(gpts=(192, 192, 192), maxiter=36, mode = 'fd', poissonsolver=ps, nbands = 4800, xc = 'LDA', width = 0.01, mixer = Mixer(0.10,3), eigensolver = es, txt = 'Au_bulk.out') bulk.set_calculator(calc) try: bulk.get_potential_energy() except ConvergenceError: pass