Several print format extended to allow more than 999 phonon modes (!)

This commit is contained in:
Paolo Giannozzi 2020-03-26 09:23:34 +01:00
parent 959ec69827
commit 0a5989da7b
4 changed files with 44 additions and 44 deletions

View File

@ -77,7 +77,7 @@ SUBROUTINE solve_ph ( )
END IF
CALL mp_bcast(mode_done,ionode_id,world_comm)
CALL mp_bcast(dyn,ionode_id,world_comm)
PRINT '(" Phonon: modes up to mode ",i3," already done")', mode_done
PRINT '(" Phonon: modes up to mode",i4," already done")', mode_done
GOTO 2
1 CLOSE(unit=iunres)
ENDIF
@ -89,17 +89,17 @@ SUBROUTINE solve_ph ( )
DO nu = 1, nmodes
IF ( has_equivalent((nu-1)/3+1)==1) THEN
! calculate only independent modes
WRITE( stdout,'(" *** mode # ",i3," : using symmetry")') nu
WRITE( stdout,'(" *** mode #",i4," : using symmetry")') nu
GOTO 10
ENDIF
IF ( nu<=mode_done) THEN
! do not recalculate modes already done
WRITE( stdout,'(" *** mode # ",i3," : using previous run")') nu
WRITE( stdout,'(" *** mode #",i4," : using previous run")') nu
GOTO 10
ENDIF
IF ( asr .and. (nu-1)/3+1==nasr ) THEN
! impose ASR on last atom instead of calculating mode
WRITE( stdout,'(" *** mode # ",i3," : using asr")') nu
WRITE( stdout,'(" *** mode #",i4," : using asr")') nu
GOTO 10
ENDIF
! calculate |b> = dV/dtau*psi
@ -126,7 +126,7 @@ SUBROUTINE solve_ph ( )
!
ENDIF
!
WRITE( stdout,'(" *** mode # ",i3," : ",i3," iterations")') &
WRITE( stdout,'(" *** mode #",i4," : ",i3," iterations")') &
& nu, iter
10 CONTINUE
ENDDO

View File

@ -350,13 +350,13 @@ next=0
DO imode = 1, 3 * nat
IF ( imode < next .OR. ABS(w1(imode)) < 1.d-3 ) CYCLE
IF (num_rap_mode(imode) == 0) THEN
WRITE(stdout,'(5x,"freq (",i3," -",i3,") = ",f12.1,2x,"[cm-1]",3x, "--> ?")') imode, imode, w1(imode)
WRITE(stdout,'(5x,"freq (",i4,"-",i4,") = ",f12.1,2x,"[cm-1]",3x, "--> ?")') imode, imode, w1(imode)
ELSE
irap=num_rap_mode(imode)
next = imode + NINT(DBLE(char_mat(irap,1)))
cdum=" "
IF (lir) cdum=TRIM(ir_ram(irap))
WRITE(stdout,'(5x,"freq (",i3," -",i3,") = ",f12.1,2x,"[cm-1]",3x,"--> ",a19)') &
WRITE(stdout,'(5x,"freq (",i4,"-",i4,") = ",f12.1,2x,"[cm-1]",3x,"--> ",a19)') &
imode, next-1, w1(imode), name_rap(irap)//" "//cdum
ENDIF
ENDDO

View File

@ -78,10 +78,10 @@ SUBROUTINE phqscf
imode0 = imode0 + npert (irr1)
ENDDO
IF (npe == 1) THEN
WRITE( stdout, '(//,5x,"Representation #", i3," mode # ",i3)') &
WRITE( stdout, '(//,5x,"Representation #", i3," mode #",i4)') &
irr, imode0 + 1
ELSE
WRITE( stdout, '(//,5x,"Representation #", i3," modes # ",8i3)') &
WRITE( stdout, '(//,5x,"Representation #", i3," modes #",8i4)') &
irr, (imode0+irr1, irr1=1,npe)
ENDIF
!

View File

@ -6,39 +6,39 @@
! or http://www.gnu.org/copyleft/gpl.txt .
!
SUBROUTINE write_modes_out(irr, imode0)
!
! This routine writes the displacements on the representation irr that
! starts at mode imode0
!
USE kinds, ONLY : DP
USE ions_base, ONLY : nat
USE modes, ONLY : u, npert
USE io_global, ONLY : stdout
IMPLICIT NONE
INTEGER, INTENT(IN) :: imode0, irr
INTEGER :: mu, nu
WRITE( stdout, '(5x,"Irreps are as follows:",/)')
IF (npert (irr) .eq.1) THEN
WRITE( stdout, '(20x," mode # ",i3)') imode0 + 1
WRITE( stdout, '(20x," (",2f10.5," ) ")') ( (u (mu, nu) ,&
&nu = imode0 + 1, imode0 + npert (irr) ) , mu = 1, 3 * nat)
ELSEIF (npert (irr) .eq.2) THEN
WRITE( stdout, '(2(10x," mode # ",i3,16x))') imode0 + 1, &
imode0 + 2
WRITE( stdout, '(2(10x," (",2f10.5," ) "))') ( (u (mu, nu) , nu &
&= imode0 + 1, imode0 + npert (irr) ) , mu = 1, 3 * nat)
ELSEIF (npert (irr) .eq.3) THEN
WRITE( stdout, '(4x,3(" mode # ",i3,13x))') imode0 + 1, imode0 &
+ 2, imode0 + 3
WRITE( stdout, '((5x,3("(",2f10.5," ) ")))') ( (u (mu, nu) , &
nu = imode0 + 1, imode0 + npert (irr) ) , mu = 1, 3 * nat)
ELSE
WRITE( stdout, '(4x,4(" mode # ",i3,13x))') imode0 + 1, imode0 &
+ 2, imode0 + 4
WRITE( stdout, '((5x,4("(",2f10.5," ) ")))') ( (u (mu, nu) , &
nu = imode0 + 1, imode0 + npert (irr) ) , mu = 1, 3 * nat)
ENDIF
RETURN
!
! This routine writes the displacements on the representation irr that
! starts at mode imode0
!
USE kinds, ONLY : DP
USE ions_base, ONLY : nat
USE modes, ONLY : u, npert
USE io_global, ONLY : stdout
IMPLICIT NONE
INTEGER, INTENT(IN) :: imode0, irr
INTEGER :: mu, nu
WRITE( stdout, '(5x,"Irreps are as follows:",/)')
IF (npert (irr) .eq.1) THEN
WRITE( stdout, '(20x," mode #",i4)') imode0 + 1
WRITE( stdout, '(20x," (",2f10.5," ) ")') ( (u (mu, nu) ,&
&nu = imode0 + 1, imode0 + npert (irr) ) , mu = 1, 3 * nat)
ELSEIF (npert (irr) .eq.2) THEN
WRITE( stdout, '(2(10x," mode #",i4,16x))') imode0 + 1, &
imode0 + 2
WRITE( stdout, '(2(10x," (",2f10.5," ) "))') ( (u (mu, nu) , nu &
&= imode0 + 1, imode0 + npert (irr) ) , mu = 1, 3 * nat)
ELSEIF (npert (irr) .eq.3) THEN
WRITE( stdout, '(4x,3(" mode #",i4,13x))') imode0 + 1, imode0 &
+ 2, imode0 + 3
WRITE( stdout, '((5x,3("(",2f10.5," ) ")))') ( (u (mu, nu) , &
nu = imode0 + 1, imode0 + npert (irr) ) , mu = 1, 3 * nat)
ELSE
WRITE( stdout, '(4x,4(" mode #",i4,13x))') imode0 + 1, imode0 &
+ 2, imode0 + 4
WRITE( stdout, '((5x,4("(",2f10.5," ) ")))') ( (u (mu, nu) , &
nu = imode0 + 1, imode0 + npert (irr) ) , mu = 1, 3 * nat)
ENDIF
RETURN
END SUBROUTINE write_modes_out