[gpaw-users] inverse_cholesky error: in VDW xc calculation

jensj at fysik.dtu.dk jensj at fysik.dtu.dk
Fri Dec 17 20:28:32 CET 2010


> Hi, all
>
> I try to optimize the lattice parameter with vdwxc using GPAW. When
> the gpts is set to (16,16,16), it works. But when i increase this to
> (20,20,20) or (24,24,24), it fails to converge and gives
> inverse_cholesky error. Sure, the calculations with these gpts
> parameter work well for PBE functional.  Does anyone know what happens
> here?? Any suggestion is highly appreciated! Thanks a lot.

The vdW-DF functional has some tables containing some Fourier transforms
of the vdW-DF kernel, and for fine grid spacings like 20*20*20, the code
would read values outside those tables and produce strange results.  The
code will now complain when this happens.

Your example should work if you increase the number of points used to
sample the kernel.  Try this:

  vdw1 = FFTVDWFunctional('vdW-DF', verbose=1, Nr=4096)

Thanks for finding this bug!

Jens Jørgen

> Best,
>
> Wei-Bing Zhang
>
>
>
> import numpy as np
> from numpy import linspace
> from ase.parallel import paropen
> from ase.structure import bulk
> from gpaw import FermiDirac, MixerSum
> from gpaw.utilities.bulk2 import GPAWRunner
> from gpaw import *
> from ase.structure import bulk
> from gpaw.xc.vdw import FFTVDWFunctional
> Ni=bulk('Ni','fcc',a=3.52)
> Ni.set_initial_magnetic_moments([1.0])
> fk=paropen("energy_k.dat",'w')
> #for x in [0.9,0.94,0.98,1.02,1.06,1.10]:
> vdw1 = FFTVDWFunctional('vdW-DF', verbose=1)
> vdw2 = FFTVDWFunctional('vdW-DF2', verbose=1)
> cell=Ni.get_cell()
> for x in linspace(0.95,1.05,5):
>         Ni.set_cell(x*cell)
>         tag='%.2f'%x
>         calc = GPAW(spinpol=True,
>               xc=vdw1,
>                 gpts=(24, 24, 24),
>                 poissonsolver=PoissonSolver(eps=1e-12),
>                 mixer=MixerSum(beta=0.05, nmaxold=5, weight=50.0),
>               occupations=FermiDirac(0.1),
>             kpts=(12,12,12),txt=tag+'.txt')
>         Ni.set_calculator(calc)
>         energy=Ni.get_potential_energy()
>         calc.write(tag+'.gpw',mode='all')
>         print >> fk,x,energy
>
>
> error mesage:
>
>  energy=Ni.get_potential_energy()
>   File "/export/zhang/program/ase/ase/atoms.py", line 503, in
> get_potential_energy
>     return self.calc.get_potential_energy(self)
>   File "/export/zhang/program/gpaw/lib/python/gpaw/aseinterface.py",
> line 33, in get_potential_energy
>     self.calculate(atoms, converge=True)
>   File "/export/zhang/program/gpaw/lib/python/gpaw/paw.py", line 258,
> in calculate
>     self.occupations):
>   File "/export/zhang/program/gpaw/lib/python/gpaw/scf.py", line 46, in
> run
>     wfs.eigensolver.iterate(hamiltonian, wfs)
>   File
> "/export/zhang/program/gpaw/lib/python/gpaw/eigensolvers/eigensolver.py",
> line 66, in iterate
>     wfs.orthonormalize()
>   File "/export/zhang/program/gpaw/lib/python/gpaw/wavefunctions/fdpw.py",
> line 188, in orthonormalize
>     self.overlap.orthonormalize(self, kpt)
>   File "/export/zhang/program/gpaw/lib/python/gpaw/overlap.py", line
> 94, in orthonormalize
>     self.ksl.inverse_cholesky(S_nn)
>   File "/export/zhang/program/gpaw/lib/python/gpaw/blacs.py", line
> 637, in inverse_cholesky
>     self._inverse_cholesky(S_NN)
>   File "/export/zhang/program/gpaw/lib/python/gpaw/blacs.py", line
> 644, in _inverse_cholesky
>     inverse_cholesky(S_NN)
>   File "/export/zhang/program/gpaw/lib/python/gpaw/utilities/lapack.py",
> line 98, in inverse_cholesky
>     raise RuntimeError('inverse_cholesky error: %d' % info)
> RuntimeError: inverse_cholesky error: 1
> GPAW CLEANUP (node 3): <type 'exceptions.RuntimeError'> occurred.
> Calling MPI_Abort!
> --------------------------------------------------------------------------
> MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
> with errorcode 42.
> _______________________________________________
> gpaw-users mailing list
> gpaw-users at listserv.fysik.dtu.dk
> https://listserv.fysik.dtu.dk/mailman/listinfo/gpaw-users
>




More information about the gpaw-users mailing list