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://www.democritos.it/pipermail/pw_forum/attachments/20120826/13dee290/attachment.htm