[Pw_forum] lapack error in efg calculation
Axel Kohlmeyer
axel.kohlmeyer at theochem.ruhr-uni-bochum.de
Fri Mar 18 16:18:18 CET 2005
On Thu, 17 Mar 2005, Lilong Li wrote:
> Thanks for the quick fix. I stumbled into another problem and after quite some time I started to get a clue what's going on.
>
> I used 16 processors for the scf run and of course for the EFG post processing I don't need 16 processors. So I used a single processor. Now the program complains that it cannot read the wavefunction. If I type the same command again, it would run and after some time it outputs a "davcio error" and aborts.
>
> It turned out that for the first time running efg.x, the program assumes that the wavefunction is also saved in a single file and it cannot see the file, so it compains and exits. But during the process, it touches a zero length wavefunction file, prefix.wfc. Next time running it, the program happily sees that there is a file called "prefix.wfc", so it continues the calculation, but when it really needs to read the wavefunction (in efg.f90, which calls davcio), of course it cnnot read this zero length file, so davcio raises an error and aborts.
>
> I also tried to run 16 processors for efg.x, but it complains from the beginning "error reading inputpp namelist". I guess this is described in the manual, too many processors for simple jobs.
>
> Any fix to the problem? Thanks in advance.
try adding
wf_collect=.true.
to the &control section. that should write a
'serial' wavefunction at the end of the scf run.
axel.
> Lilong
> On Thu, Mar 17, 2005 at 11:15:07AM +0100, Paolo Giannozzi wrote:
> > On Wednesday 16 March 2005 20:07, Lilong Li wrote:
> >
> > > write (stdout, *) 'paw_nl(',l,nt,')',paw_nl(l,nt)
> > > call invmat (paw_nl(l,nt), s, sinv, norm)
> > >
> > > It fails when another atom only has the largest l number of 1.
> > > paw_nl(2,nt) would then be zero when it calls invmat, and the N
> > > and LDA will also be zero when invmat calls DGETRF.
> >
> > this is obviously wrong
> >
> > > Any suggestions to solve the problem?
> >
> > try to put the problematic piece of code into an if...endif block, like this:
> >
> > do l=0,paw_lmaxkb
> > if (paw_nl(l,nt) > 0) then
> > allocate (s(paw_nl(l,nt),paw_nl(l,nt)))
> > allocate (sinv(paw_nl(l,nt),paw_nl(l,nt)))
> > ...
> > deallocate(sinv)
> > deallocate(s)
> > end if
> > end do
> >
> > Paolo
> > --
> > Paolo Giannozzi e-mail: giannozz at nest.sns.it
> > Scuola Normale Superiore Phone: +39/050-509876, Fax:-563513
> > Piazza dei Cavalieri 7 I-56126 Pisa, Italy
> > _______________________________________________
> > Pw_forum mailing list
> > Pw_forum at pwscf.org
> > http://www.democritos.it/mailman/listinfo/pw_forum
> _______________________________________________
> Pw_forum mailing list
> Pw_forum at pwscf.org
> http://www.democritos.it/mailman/listinfo/pw_forum
>
>
--
=======================================================================
Dr. Axel Kohlmeyer e-mail: axel.kohlmeyer at theochem.ruhr-uni-bochum.de
Lehrstuhl fuer Theoretische Chemie Phone: ++49 (0)234/32-26673
Ruhr-Universitaet Bochum - NC 03/53 Fax: ++49 (0)234/32-14045
D-44780 Bochum http://www.theochem.ruhr-uni-bochum.de/~axel.kohlmeyer/
=======================================================================
If you make something idiot-proof, the universe creates a better idiot.
More information about the users
mailing list