[Pw_forum] Bug in QE 5.0 with ibrav=0 and using a instead of
Y. L. Li
ylli at theory.issp.ac.cn
Sat Aug 25 23:57:26 CEST 2012
Hi,
I agree with you. I also found this bug as you said.
Yanling
----On Wed, 22 Aug 2012 15:06:20 +0200 wrote: ----
> Date: Wed, 22 Aug 2012 15:06:12 +0200
> From: Giovanni Pizzi
> Subject: [Pw_forum] Bug in QE 5.0 with ibrav=0 and using a instead of
> celldm
> To: pw_forum at pwscf.org
> Message-ID:
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> Dear all,
> I believe there is a bug in QE 5.0 (pw.x) that occurs when using ibrav=0
> and defining 'a' instead of 'celldm(1)'.
> In this case, celldm is not set and remains equal to zero. (This
> behavior was different in 4.3.2, where instead the celldm(1) value was
> set from the 'a' value.)
>
> This doesn't seem to create problems in the pw.x calculation.
> However, in the matdyn files generated by ph.x, the celldm(1) is set to
> zero.
> When the matdyn files are then given to q2r.x, the code crashes,
> complaining of a wrong celldm value.
>
> In particular this is what happens in q2r.x:
> 1. the first q point is read (matdyn1) using the routine
> read_dyn_from_file; celldm(1) is set to 0
> 2. the code calls the routine latgen: this routine sets celldm(1) to the
> a value different from zero (moreover this value may be wrong if 'a' in
> the input file was not set to the length of the first lattice vector)
> 3. the code reads the second q point (matdyn2) and compares the celldm
> value read from file (which is zero) with the old value (which was set
> to a value different from zero at step 2): being different, the code stops.
>
> I think that to correct it, one should replace the following lines
> (cell_base.f90, lines 152 and following)
> IF( celldm( 1 ) /= 0.0_DP ) THEN
> alat = celldm( 1 )
> ELSE IF ( a /= 0.0_dp ) THEN
> alat = a / bohr_radius_angs
> ELSE
> alat = SQRT ( at(1,1)**2+at(2,1)**2+at(3,1)**2 )
> END IF
> at(:,:) = at(:,:) / alat
>
> with
> IF( celldm( 1 ) /= 0.0_DP ) THEN
> alat = celldm( 1 )
> ELSE IF ( a /= 0.0_dp ) THEN
> alat = a / bohr_radius_angs
> celldm( 1 ) = alat
> ELSE
> alat = SQRT ( at(1,1)**2+at(2,1)**2+at(3,1)**2 )
> celldm( 1 ) = alat
> END IF
> at(:,:) = at(:,:) / alat
>
> Let me know what you think.
>
> Best,
> Giovanni Pizzi
>
>
>
> --
> Giovanni Pizzi
> Post-doctoral Research Scientist
> EPFL STI IMX THEOS
> MXC 319 (B?timent MXC)
> Station 12
> CH-1015 Lausanne (Switzerland)
> Phone: +41 21 69 31159
>
>
>
> ------------------------------
>
> _______________________________________________
> Pw_forum mailing list
> Pw_forum at pwscf.org
> http://www.democritos.it/mailman/listinfo/pw_forum
>
>
> End of Pw_forum Digest, Vol 62, Issue 37
> ****************************************
>
------
ISSP
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/users/attachments/20120826/13dee290/attachment.html>
More information about the users
mailing list