logical tstress = integer(4) flag_val inside PW/src/run_driver.f90 at line 250 is not compliant with the Fortran standard
In version QE 7.0, the following syntax is not part of the Fortran standard, although the Intel compiler doesn't complain about it (but should):
At line 250 of "run_driver.f90", the 6 expressions, such as tstress = flag_val, are passing an integer to a logical, which is not compliant with the Fortran standard. A solution is to use the function "merge", like the following: SELECT CASE (TRIM(flag_id))
CASE ('lstress')
!tstress = flag_val
tstress = merge (.false., .true., flag_val == 0)
CASE ('lscf')
!lscf = flag_val
lscf = merge (.false., .true., flag_val == 0)
CASE ('lforce')
!lforce = flag_val
lforce = merge (.false., .true., flag_val == 0)
CASE ('lmovecell')
!lmovecell = flag_val
lmovecell = merge (.false., .true., flag_val == 0)
CASE ('lmd')
!lmd = flag_val
lmd = merge (.false., .true., flag_val == 0)
CASE ('lensemb')
!lensemb = flag_val
lensemb = merge (.false., .true., flag_val == 0)
CASE DEFAULT
WRITE(*,*) " @ DRIVER MODE: UNSUPPORTED PARAMETER FLAG: ", TRIM(flag_id)
ENDSELECT
The Cray compiler stops at the attempt to cast the 2 different types between flag_val and the 6 variables.
Thanks,
Pierre Carrier, PhD. HPE, Applications & Benchmarking engineer