[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