All pastes #2045613 Raw Edit

naromero

public text v1 · immutable
#2045613 ·published 2011-04-12 22:38 UTC
rendered paste body
from ase import Atomsfrom gpaw import GPAW, Mixer, MixerSum, ConvergenceError, PoissonSolver, restartfrom gpaw.poisson import PoissonSolverfrom gpaw.utilities.timing import Timerfrom gpaw.eigensolvers.rmm_diis import RMM_DIISps = PoissonSolver(nn='M', relax='GS', eps=1e-9)es = RMM_DIIS(keep_htpsit=False)# from gpaw.hs_operators import MatrixOperator# MatrixOperator.nblocks = 2class MyGPAW(GPAW):    timer_class = Timer    # Makes Python traceback appear only on the root processorimport sysfrom gpaw.mpi import worldfrom ase.utils import devnull# if world.rank != 0:#     sys.stderr = devnull    a = 4.08bulk = 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((3, 3, 3))calc = MyGPAW(gpts=(120, 120, 120),            maxiter=5,            mode = 'fd',            poissonsolver = ps,            nbands = 600,            spinpol = False,            xc = 'LDA',            width = 0.01,            mixer = Mixer(0.10, 3),             # mixer = MixerSum(0.1, 3), # spinpol = True            eigensolver = es,            parallel = {'buffer_size':2048},            txt = 'Au_bulk.out')bulk.set_calculator(calc)filename = 'Au_bulk.gpw'# spinpol = True# magmom = 2.0# mms = [magmom for i in range(len(bulk))]# bulk.set_initial_magnetic_memonts(mms)# Run intial 5 SCF stepstry:    bulk.get_potential_energy()except ConvergenceError:    pass# calc.write(filename, mode = 'all')calc.write(filename)# For a Real Restart with reading wavefunctionsdel bulk, calcbulk, calc = restart(filename, maxiter=5, txt = 'Au_bulk2.out')calc.initialize_positions()calc.scf.reset()calc.set(convergence=dict(eigenstates=5e-8,                          density=5e-4)) # change criteria from default# Re-start from previous wfs and run 5 more SCF stepstry:    bulk.get_potential_energy()except ConvergenceError:    pass