mirror of https://gitlab.com/QEF/q-e.git
- CP/FPMD print out routines merged, now physical quantities are
displayed with the same layout git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2434 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
61c936b59a
commit
45163d093e
|
@ -430,6 +430,7 @@ SUBROUTINE cprmain( tau, fion_out, etot_out )
|
|||
ekinp = 0.D0
|
||||
ekinpr = 0.D0
|
||||
tempp = 0.D0
|
||||
temps = 0.D0
|
||||
ekinc0 = 0.0d0
|
||||
ekinc = 0.0d0
|
||||
!
|
||||
|
@ -570,8 +571,8 @@ SUBROUTINE cprmain( tau, fion_out, etot_out )
|
|||
!
|
||||
CALL printout_new &
|
||||
( nfi, tfirst, ttprint, ttprint, tps, hold, stress, tau0, vels, fion, &
|
||||
ekinc, temphc, tempp, etot, enthal, econs, econt, vnhh, xnhh0, vnhp, &
|
||||
xnhp0,atot)
|
||||
ekinc, temphc, tempp, temps, etot, enthal, econs, econt, vnhh, xnhh0,&
|
||||
vnhp, xnhp0, atot )
|
||||
!
|
||||
!
|
||||
!
|
||||
|
|
|
@ -6,16 +6,18 @@
|
|||
! or http://www.gnu.org/copyleft/gpl.txt .
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
subroutine eigs0(nspin,nx,nupdwn,iupdwn,f,lambda)
|
||||
subroutine eigs0( tprint, nspin, nx, nupdwn, iupdwn, f, lambda )
|
||||
!-----------------------------------------------------------------------
|
||||
! computes eigenvalues (wr) of the real symmetric matrix lambda
|
||||
! Note that lambda as calculated is multiplied by occupation numbers
|
||||
! so empty states yield zero. Eigenvalues are printed out in eV
|
||||
!
|
||||
use io_global, only: stdout
|
||||
use constants, only: au
|
||||
use io_global, only : stdout
|
||||
use constants, only : au
|
||||
use electrons_module, only : ei
|
||||
implicit none
|
||||
! input
|
||||
logical, intent(in) :: tprint
|
||||
integer, intent(in) :: nspin, nx, nupdwn(nspin), iupdwn(nspin)
|
||||
real(8), intent(in) :: lambda(nx,nx), f(nx)
|
||||
! local variables
|
||||
|
@ -33,21 +35,39 @@
|
|||
call rs( nupdwn(iss), nupdwn(iss), lambdar, wr, 0, zr, fv1, fm1, ierr)
|
||||
do i=1,nupdwn(iss)
|
||||
if (f(iupdwn(iss)-1+i).gt.1.e-6) then
|
||||
wr(i)=au*wr(i)/f(iupdwn(iss)-1+i)
|
||||
wr(i)=wr(i)/f(iupdwn(iss)-1+i)
|
||||
else
|
||||
wr(i)=0.0
|
||||
end if
|
||||
end do
|
||||
!
|
||||
! print out eigenvalues
|
||||
!
|
||||
WRITE( stdout,12) 0., 0., 0.
|
||||
WRITE( stdout,14) (wr(i),i=1,nupdwn(iss))
|
||||
!
|
||||
IF( tprint ) THEN
|
||||
!
|
||||
! print out eigenvalues
|
||||
!
|
||||
WRITE( stdout,12) 0., 0., 0.
|
||||
WRITE( stdout,14) (wr(i)*au,i=1,nupdwn(iss))
|
||||
|
||||
ELSE
|
||||
!
|
||||
! store eigenvalues
|
||||
!
|
||||
IF( SIZE( ei, 1 ) < nupdwn(iss) ) &
|
||||
CALL errore( ' eigs0 ', ' wrong dimension array ei ', 1 )
|
||||
|
||||
ei( 1:nupdwn(iss), 1, iss ) = wr( 1:nupdwn(iss) )
|
||||
|
||||
END IF
|
||||
|
||||
|
||||
deallocate( lambdar )
|
||||
|
||||
end do
|
||||
|
||||
IF( tprint ) WRITE( stdout,*)
|
||||
|
||||
12 format(//' eigenvalues at k-point: ',3f6.3)
|
||||
14 format(10f8.2)
|
||||
WRITE( stdout,*)
|
||||
!
|
||||
return
|
||||
end subroutine eigs0
|
||||
|
|
|
@ -6,16 +6,18 @@
|
|||
! or http://www.gnu.org/copyleft/gpl.txt .
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
subroutine eigsp(nspin,nx,nupdwn,iupdwn,lambda)
|
||||
subroutine eigsp( tprint, nspin, nx, nupdwn, iupdwn, lambda )
|
||||
!-----------------------------------------------------------------------
|
||||
! computes eigenvalues (wr) of the real symmetric matrix lambda
|
||||
! Note that lambda as calculated is multiplied by occupation numbers
|
||||
! so empty states yield zero. Eigenvalues are printed out in eV
|
||||
!
|
||||
use io_global, only: stdout
|
||||
use constants, only: au
|
||||
use io_global, only : stdout
|
||||
use constants, only : au
|
||||
use electrons_module, only : ei
|
||||
implicit none
|
||||
! input
|
||||
logical, intent(in) :: tprint
|
||||
integer, intent(in) :: nspin, nx, nupdwn(nspin), iupdwn(nspin)
|
||||
real(8), intent(in) :: lambda(nx,nx)
|
||||
! local variables
|
||||
|
@ -31,19 +33,33 @@
|
|||
end do
|
||||
end do
|
||||
call rs( nupdwn(iss), nupdwn(iss), lambdar, wr, 0, zr, fv1, fm1, ierr)
|
||||
do i=1,nupdwn(iss)
|
||||
wr(i)=au*wr(i)
|
||||
end do
|
||||
!
|
||||
! print out eigenvalues
|
||||
!
|
||||
WRITE( stdout,12) 0., 0., 0.
|
||||
WRITE( stdout,14) (wr(i),i=1,nupdwn(iss))
|
||||
|
||||
IF( tprint ) THEN
|
||||
!
|
||||
! print out eigenvalues
|
||||
!
|
||||
WRITE( stdout,12) 0., 0., 0.
|
||||
WRITE( stdout,14) (wr(i)*au,i=1,nupdwn(iss))
|
||||
|
||||
ELSE
|
||||
!
|
||||
! store eigenvalues
|
||||
!
|
||||
IF( SIZE( ei, 1 ) < nupdwn(iss) ) &
|
||||
CALL errore( ' eigs0 ', ' wrong dimension array ei ', 1 )
|
||||
|
||||
ei( 1:nupdwn(iss), 1, iss ) = wr( 1:nupdwn(iss) )
|
||||
|
||||
END IF
|
||||
|
||||
deallocate( lambdar )
|
||||
|
||||
end do
|
||||
|
||||
IF( tprint ) WRITE( stdout,*)
|
||||
|
||||
12 format(//' eigenvalues at k-point: ',3f6.3)
|
||||
14 format(10f8.2)
|
||||
WRITE( stdout,*)
|
||||
!
|
||||
return
|
||||
end subroutine eigsp
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
PUBLIC :: pmss, n_emp, emass, ei_emp, n_emp_l, ib_owner, ib_local, nb_l
|
||||
PUBLIC :: ei, nspin, nelt, nupdwn
|
||||
PUBLIC :: nbnd
|
||||
PUBLIC :: print_eigenvalues
|
||||
|
||||
!
|
||||
! end of module-scope declarations
|
||||
|
@ -195,8 +196,6 @@
|
|||
END SUBROUTINE bmeshset
|
||||
|
||||
! ----------------------------------------------
|
||||
! ----------------------------------------------
|
||||
|
||||
!
|
||||
!
|
||||
!
|
||||
|
@ -243,6 +242,69 @@
|
|||
END SUBROUTINE electrons_setup
|
||||
|
||||
|
||||
! ----------------------------------------------
|
||||
|
||||
|
||||
SUBROUTINE print_eigenvalues( ei_unit, tfile, nfi, tps )
|
||||
!
|
||||
use constants, only : au
|
||||
USE io_global, ONLY : stdout, ionode
|
||||
!
|
||||
INTEGER, INTENT(IN) :: ei_unit
|
||||
LOGICAL, INTENT(IN) :: tfile
|
||||
INTEGER, INTENT(IN) :: nfi
|
||||
REAL(DP), INTENT(IN) :: tps
|
||||
!
|
||||
INTEGER :: ik, i, j, nkpt
|
||||
!
|
||||
nkpt = 1
|
||||
!
|
||||
IF ( tfile ) THEN
|
||||
WRITE(ei_unit,30) nfi, tps
|
||||
END IF
|
||||
!
|
||||
DO ik = 1, nkpt
|
||||
!
|
||||
DO j = 1, nspin
|
||||
!
|
||||
WRITE( stdout,1002) ik, j
|
||||
WRITE( stdout,1004) ( ei( i, ik, j ) * au, i = 1, nupdwn(j) )
|
||||
!
|
||||
IF( n_emp .GT. 0 ) THEN
|
||||
WRITE( stdout,1005) ik, j
|
||||
WRITE( stdout,1004) ( ei_emp( i, ik, j ) * au , i = 1, n_emp )
|
||||
WRITE( stdout,1006) ( ei_emp( 1, ik, j ) - ei( nupdwn(j), ik, j ) ) * au
|
||||
END IF
|
||||
!
|
||||
IF( tfile ) THEN
|
||||
WRITE(ei_unit,1010) ik, j
|
||||
WRITE(ei_unit,1020) ( ei( i, ik, j ) * au, i = 1, nupdwn(j) )
|
||||
IF( n_emp .GT. 0 ) THEN
|
||||
WRITE(ei_unit,1011) ik, j
|
||||
WRITE(ei_unit,1020) ( ei_emp( i, ik, j ) * au , i = 1, n_emp )
|
||||
WRITE(ei_unit,1021) ( ei_emp( 1, ik, j ) - ei( nupdwn(j), ik, j ) ) * au
|
||||
END IF
|
||||
END IF
|
||||
!
|
||||
END DO
|
||||
!
|
||||
END DO
|
||||
!
|
||||
30 FORMAT(2X,'STEP:',I7,1X,F10.2)
|
||||
1002 FORMAT(/,3X,'Eigenvalues (eV), kp = ',I3, ' , spin = ',I2,/)
|
||||
1005 FORMAT(/,3X,'Empty States Eigenvalues (eV), kp = ',I3, ' , spin = ',I2,/)
|
||||
1004 FORMAT(10F8.2)
|
||||
1006 FORMAT(/,3X,'Electronic Gap (eV) = ',F8.2,/)
|
||||
1010 FORMAT(3X,'Eigenvalues (eV), kp = ',I3, ' , spin = ',I2)
|
||||
1011 FORMAT(3X,'Empty States Eigenvalues (eV), kp = ',I3, ' , spin = ',I2)
|
||||
1020 FORMAT(10F8.2)
|
||||
1021 FORMAT(3X,'Electronic Gap (eV) = ',F8.2)
|
||||
1030 FORMAT(3X,'nfill = ', I4, ', nempt = ', I4, ', kp = ', I3, ', spin = ',I2)
|
||||
!
|
||||
RETURN
|
||||
END SUBROUTINE print_eigenvalues
|
||||
|
||||
|
||||
!=======================================================================
|
||||
|
||||
SUBROUTINE rceigs( nei, gam, cgam, tortho, f, ei, gamma_symmetry )
|
||||
|
@ -648,9 +710,9 @@
|
|||
|
||||
|
||||
if(.not.tens) then
|
||||
call eigs0(nspin,nx,nupdwn,iupdwn,f,lambda)
|
||||
call eigs0(.false.,nspin,nx,nupdwn,iupdwn,f,lambda)
|
||||
else
|
||||
call eigsp(nspin,nx,nupdwn,iupdwn,lambdap)
|
||||
call eigsp(.false.,nspin,nx,nupdwn,iupdwn,lambdap)
|
||||
endif
|
||||
|
||||
WRITE( stdout,*)
|
||||
|
|
|
@ -43,20 +43,21 @@
|
|||
|
||||
SUBROUTINE printout_new &
|
||||
( nfi, tfirst, tfile, tprint, tps, h, stress, tau0, vels, &
|
||||
fion, ekinc, temphc, tempp, etot, enthal, econs, econt, &
|
||||
vnhh, xnhh0, vnhp, xnhp0,atot )
|
||||
fion, ekinc, temphc, tempp, temps, etot, enthal, econs, econt, &
|
||||
vnhh, xnhh0, vnhp, xnhp0, atot )
|
||||
|
||||
!
|
||||
USE control_flags, ONLY: iprint
|
||||
USE energies, ONLY: print_energies, dft_energy_type
|
||||
USE printout_base, ONLY: printout_base_open, printout_base_close, &
|
||||
printout_pos, printout_cell, printout_stress
|
||||
USE constants, ONLY: factem, au_gpa, au, amu_si, bohr_radius_cm, scmass
|
||||
USE ions_base, ONLY: na, nsp, nat, ind_bck, atm, ityp
|
||||
USE cell_base, ONLY: s_to_r
|
||||
USE efield_module, ONLY: tefield, pberryel, pberryion
|
||||
USE control_flags, ONLY : iprint
|
||||
USE energies, ONLY : print_energies, dft_energy_type
|
||||
USE printout_base, ONLY : printout_base_open, printout_base_close, &
|
||||
printout_pos, printout_cell, printout_stress
|
||||
USE constants, ONLY : factem, au_gpa, au, amu_si, bohr_radius_cm, scmass
|
||||
USE ions_base, ONLY : na, nsp, nat, ind_bck, atm, ityp, pmass
|
||||
USE cell_base, ONLY : s_to_r
|
||||
USE efield_module, ONLY : tefield, pberryel, pberryion
|
||||
USE cg_module, ONLY : tcg, itercg
|
||||
|
||||
USE sic_module, ONLY : self_interaction
|
||||
USE electrons_module, ONLY : print_eigenvalues
|
||||
|
||||
!
|
||||
IMPLICIT NONE
|
||||
|
@ -70,15 +71,18 @@
|
|||
REAL(DP), INTENT(IN) :: vels( :, : ) ! scaled velocities
|
||||
REAL(DP), INTENT(IN) :: fion( :, : ) ! real forces
|
||||
REAL(DP), INTENT(IN) :: ekinc, temphc, tempp, etot, enthal, econs, econt
|
||||
REAL(DP), INTENT(IN) :: temps( : ) ! partial temperature for different ionic species
|
||||
REAL(DP), INTENT(IN) :: vnhh( 3, 3 ), xnhh0( 3, 3 ), vnhp( 1 ), xnhp0( 1 )
|
||||
REAL(DP), INTENT(IN) :: atot! enthalpy of system for c.g. case
|
||||
!
|
||||
REAL(DP) :: stress_gpa( 3, 3 )
|
||||
REAL(DP) :: hinv( 3, 3 )
|
||||
REAL(DP) :: out_press, volume
|
||||
REAL(DP) :: totalmass
|
||||
INTEGER :: isa, is, ia
|
||||
REAL(DP), ALLOCATABLE :: tauw( :, : )
|
||||
CHARACTER(LEN=3), ALLOCATABLE :: labelw( : )
|
||||
LOGICAL :: tsic
|
||||
!
|
||||
ALLOCATE( labelw( nat ) )
|
||||
!
|
||||
|
@ -90,7 +94,11 @@
|
|||
!
|
||||
IF( tprint ) THEN
|
||||
!
|
||||
CALL print_energies( .false. )
|
||||
tsic = ( self_interaction /= 0 )
|
||||
!
|
||||
CALL print_energies( tsic )
|
||||
!
|
||||
CALL print_eigenvalues( 31, tfile, nfi, tps )
|
||||
!
|
||||
WRITE( stdout, * )
|
||||
!
|
||||
|
@ -100,6 +108,15 @@
|
|||
!
|
||||
IF( tfile ) CALL printout_cell( 36, h, nfi, tps )
|
||||
!
|
||||
! System density:
|
||||
!
|
||||
totalmass = 0.0d0
|
||||
DO is = 1, nsp
|
||||
totalmass = totalmass + pmass(is) * na(is) / scmass
|
||||
END DO
|
||||
totalmass = totalmass / volume * 11.2061 ! AMU_SI * 1000.0 / BOHR_RADIUS_CM**3
|
||||
WRITE( stdout, fmt='(/,3X,"System Density [g/cm^3] : ",F10.4)' ) totalmass
|
||||
|
||||
WRITE( stdout, * )
|
||||
!
|
||||
stress_gpa = stress * au_gpa
|
||||
|
@ -177,25 +194,24 @@
|
|||
!
|
||||
END IF
|
||||
!
|
||||
IF(.not.tcg) THEN
|
||||
WRITE( stdout, 1948 ) nfi, ekinc, temphc, tempp, etot, enthal, econs, &
|
||||
IF( .not. tcg ) THEN
|
||||
WRITE( stdout, 1948 ) nfi, ekinc, temphc, tempp, etot, enthal, econs, &
|
||||
econt, vnhh(3,3), xnhh0(3,3), vnhp(1), xnhp0(1)
|
||||
ELSE
|
||||
IF ( MOD( nfi, iprint ) == 0 .OR. tfirst ) THEN
|
||||
!
|
||||
WRITE( stdout, * )
|
||||
WRITE( stdout, 255 ) 'nfi','tempp','E','-T.S-mu.nbsp','+K_p','#Iter'
|
||||
!
|
||||
END IF
|
||||
!
|
||||
WRITE( stdout, 256 ) nfi, INT( tempp ), etot, atot, econs, itercg
|
||||
!
|
||||
END IF
|
||||
IF( tefield) THEN
|
||||
IF(ionode) write(stdout,'( A14,F12.6,A14,F12.6)') 'Elct. dipole',-pberryel,'Ionic dipole',-pberryion
|
||||
ENDIF
|
||||
!
|
||||
|
||||
IF ( MOD( nfi, iprint ) == 0 .OR. tfirst ) THEN
|
||||
!
|
||||
WRITE( stdout, * )
|
||||
WRITE( stdout, 255 ) 'nfi','tempp','E','-T.S-mu.nbsp','+K_p','#Iter'
|
||||
!
|
||||
END IF
|
||||
!
|
||||
WRITE( stdout, 256 ) nfi, INT( tempp ), etot, atot, econs, itercg
|
||||
!
|
||||
END IF
|
||||
IF( tefield) THEN
|
||||
IF(ionode) write(stdout,'( A14,F12.6,A14,F12.6)') 'Elct. dipole',-pberryel,'Ionic dipole',-pberryion
|
||||
ENDIF
|
||||
!
|
||||
!
|
||||
DEALLOCATE( labelw )
|
||||
!
|
||||
|
@ -218,7 +234,7 @@
|
|||
use constants, only: factem, au_gpa, au, amu_si, bohr_radius_cm, scmass
|
||||
use energies, only: print_energies, dft_energy_type
|
||||
use mp_global, only: mpime
|
||||
use electrons_module, only: ei, ei_emp, n_emp
|
||||
use electrons_module, only: print_eigenvalues
|
||||
use brillouin, only: kpoints, kp
|
||||
use time_step, ONLY: tps
|
||||
USE electrons_nose, ONLY: electrons_nose_nrg, xnhe0, vnhe, qne, ekincw
|
||||
|
@ -254,7 +270,7 @@
|
|||
REAL(DP) :: tempp, econs, ettt, out_press, ekinpr, enosee
|
||||
REAL(DP) :: enthal, totalmass, enoseh, temphc, enosep
|
||||
REAL(DP) :: dis(atoms%nsp), h(3,3)
|
||||
LOGICAL :: tfile, topen, ttsic
|
||||
LOGICAL :: tfile, topen, tsic, tfirst
|
||||
CHARACTER(LEN=3), ALLOCATABLE :: labelw( : )
|
||||
REAL(DP), ALLOCATABLE :: tauw( :, : )
|
||||
INTEGER :: old_nfi = -1
|
||||
|
@ -262,7 +278,7 @@
|
|||
! ... Subroutine Body
|
||||
|
||||
tfile = ( MOD( nfi, iprint ) == 0 ) ! print quantity to trajectory files
|
||||
ttsic = ( self_interaction /= 0 )
|
||||
tsic = ( self_interaction /= 0 )
|
||||
|
||||
! ... Calculate Ions temperature tempp (in Kelvin )
|
||||
|
||||
|
@ -349,15 +365,36 @@
|
|||
|
||||
! ... Print physical variables to fortran units
|
||||
|
||||
#if ! defined __OLD_PRINTOUT
|
||||
|
||||
tfirst = tprint .OR. tconjgrad
|
||||
stress_tensor = stress_tensor / au_gpa
|
||||
|
||||
ALLOCATE( tauw( 3, atoms%nat ) )
|
||||
DO is = 1, atoms%nsp
|
||||
DO ia = atoms%isa(is), atoms%isa(is) + atoms%na(is) - 1
|
||||
CALL s_to_r( atoms%taus(:,ia), tauw(:,ia), ht )
|
||||
END DO
|
||||
END DO
|
||||
|
||||
CALL printout_new &
|
||||
( nfi, tfirst, tfile, tprint, tps, ht%hmat, stress_tensor, tauw, atoms%vels, &
|
||||
atoms%for, ekinc, temphc, tempp, temps, edft%etot, enthal, econs, ettt, &
|
||||
vnhh, xnhh0, vnhp, xnhp0, 0.0d0 )
|
||||
|
||||
DEALLOCATE( tauw )
|
||||
|
||||
#else
|
||||
|
||||
IF ( ionode ) THEN
|
||||
|
||||
IF ( tprint ) THEN
|
||||
|
||||
! ... Write total energy components to standard output
|
||||
|
||||
CALL print_energies( ttsic, iprsta, edft )
|
||||
CALL print_energies( tsic, iprsta, edft )
|
||||
|
||||
IF( ttsic ) THEN
|
||||
IF( tsic ) THEN
|
||||
WRITE ( stdout, *) ' Sic_correction: type ', self_interaction
|
||||
WRITE ( stdout, *) ' Localisation: ', rad_localisation
|
||||
DO i = 1, nat_localisation
|
||||
|
@ -458,36 +495,7 @@
|
|||
|
||||
! ... Write eigenvalues to stdout and unit fort.31
|
||||
|
||||
IF( tprint ) THEN
|
||||
!
|
||||
nfill = SIZE(ei,1)
|
||||
nempt = n_emp
|
||||
IF ( tfile ) THEN
|
||||
WRITE(31,30) nfi, tps
|
||||
WRITE(31,1030) nfill, nempt, SIZE(ei,2), SIZE(ei,3)
|
||||
END IF
|
||||
DO ik = 1, kp%nkpt
|
||||
DO j = 1, SIZE( ei, 3 )
|
||||
WRITE( stdout,1002) ik, j
|
||||
WRITE( stdout,1004) ( ei( i, ik, j ) * au, i = 1, SIZE( ei, 1 ) )
|
||||
IF( nempt .GT. 0 ) THEN
|
||||
WRITE( stdout,1005) ik, j
|
||||
WRITE( stdout,1004) ( ei_emp( i, ik, j ) * au , i = 1, SIZE( ei_emp, 1 ) )
|
||||
WRITE( stdout,1006) ( ei_emp( 1, ik, j ) - ei( SIZE(ei,1), ik, j ) ) * au
|
||||
END IF
|
||||
IF( tfile ) THEN
|
||||
WRITE(31,1010) IK, j
|
||||
WRITE(31,1020) ( ei( i, ik, j ) * au, i = 1, SIZE( ei, 1 ) )
|
||||
IF( nempt .GT. 0 ) THEN
|
||||
WRITE(31,1011) ik, j
|
||||
WRITE(31,1020) ( ei_emp( i, ik, j ) * au , i = 1, SIZE( ei_emp, 1 ) )
|
||||
WRITE(31,1021) ( ei_emp( 1, ik, j ) - ei( SIZE(ei,1), ik, j ) ) * au
|
||||
END IF
|
||||
END IF
|
||||
END DO
|
||||
END DO
|
||||
!
|
||||
END IF
|
||||
CALL print_eigenvalues( 31, tfile, nfi, tps )
|
||||
|
||||
! ... Write partial temperature and MSD for each atomic specie tu stdout
|
||||
|
||||
|
@ -517,6 +525,12 @@
|
|||
|
||||
END IF
|
||||
|
||||
END IF
|
||||
|
||||
#endif
|
||||
|
||||
old_nfi = nfi
|
||||
|
||||
1947 FORMAT(//3X,'nfi', 5X,'ekinc', 2X,'temph', 2X,'tempp', 9X,'etot', 7X,'enthal', &
|
||||
8X,'econs', 9X,'ettt')
|
||||
1946 FORMAT(//6X, 5X,'(AU) ', 3X,'(K )', 9X,'(AU)', &
|
||||
|
@ -541,22 +555,10 @@
|
|||
255 FORMAT(3X,A3,3F10.4,3E12.4)
|
||||
100 FORMAT(3X,A3,3(1X,E14.6))
|
||||
101 FORMAT(3X,3(1X,E14.6))
|
||||
1002 FORMAT(/,3X,'Eigenvalues (eV), kp = ',I3, ' , spin = ',I2,/)
|
||||
1005 FORMAT(/,3X,'Empty States Eigenvalues (eV), kp = ',I3, ' , spin = ',I2,/)
|
||||
1004 FORMAT(10F8.2)
|
||||
1006 FORMAT(/,3X,'Electronic Gap (eV) = ',F8.2,/)
|
||||
1010 FORMAT(3X,'Eigenvalues (eV), kp = ',I3, ' , spin = ',I2)
|
||||
1011 FORMAT(3X,'Empty States Eigenvalues (eV), kp = ',I3, ' , spin = ',I2)
|
||||
1020 FORMAT(10F8.2)
|
||||
1021 FORMAT(3X,'Electronic Gap (eV) = ',F8.2)
|
||||
1030 FORMAT(3X,'nfill = ', I4, ', nempt = ', I4, ', kp = ', I3, ', spin = ',I2)
|
||||
1944 FORMAT(//' Partial temperatures (for each ionic specie) ', &
|
||||
/,' Species Temp (K) MSD (AU)')
|
||||
1945 FORMAT(3X,I6,1X,F10.2,1X,F10.4)
|
||||
|
||||
END IF
|
||||
|
||||
old_nfi = nfi
|
||||
|
||||
RETURN
|
||||
END SUBROUTINE printout
|
||||
|
|
|
@ -1246,7 +1246,7 @@ SUBROUTINE smdmain( tau, fion_out, etot_out, nat_out )
|
|||
!
|
||||
!
|
||||
IF(MOD(nfi-1,iprint).EQ.0 .OR. (nfi.EQ.(nomore))) THEN
|
||||
CALL eigs0(nspin,nbspx,nupdwn,iupdwn,f,rep_el(sm_k)%lambda)
|
||||
CALL eigs0(.true.,nspin,nbspx,nupdwn,iupdwn,f,rep_el(sm_k)%lambda)
|
||||
WRITE( stdout,*)
|
||||
ENDIF
|
||||
!
|
||||
|
|
640
Doc/INPUT_CP
640
Doc/INPUT_CP
|
@ -174,11 +174,15 @@ forc_conv_thr REAL ( default = 1.D-3 )
|
|||
ndr, ndw INTEGER ( default = 50 )
|
||||
Units for input and output restart file.
|
||||
|
||||
max_seconds REAL ( default = 1.D+7 )
|
||||
smootly terminate program after the specified number of seconds
|
||||
this parameter is typically used to prevent an hard kill from
|
||||
the queuing system.
|
||||
|
||||
tefield LOGICAL ( default = .FALSE.)
|
||||
If .TRUE. perform calculations with a finite electric field
|
||||
which is described through the modern theory of the polarization
|
||||
|
||||
|
||||
===============================================================================
|
||||
NAMELIST &SYSTEM
|
||||
|
||||
|
@ -254,6 +258,16 @@ q2sigma REAL ( default = 0.1 )
|
|||
of the energy step for reciprocal vector whose square modulus
|
||||
is grather than "ecfixed"
|
||||
|
||||
xc_type CHARACTER ( default = read from pseudopot )
|
||||
can be used to force a given functional
|
||||
'BLYP' use Becke-Lee-Yang-Parr GCC-XC Functional
|
||||
'BP' use Becke-Perdew GCC-XC Functionals
|
||||
'PBE' use Perdew-Burke-Ernzerhof GCC-XC Functionals
|
||||
'PZ' use Slater X, and Perdew-Zunger C Functionals
|
||||
'PW' use Slater X, and Perdew-Wang C Functionals
|
||||
'LDA' use LDA xc functional: the xc potential is
|
||||
calculated through an interpolation table
|
||||
|
||||
occupations CHARACTER
|
||||
a string describing the occupation of the electronic states.
|
||||
In the case of conjugate gradient style of minimization
|
||||
|
@ -270,7 +284,6 @@ degauss REAL ( default = 0.D0 )
|
|||
calculations
|
||||
|
||||
|
||||
|
||||
===============================================================================
|
||||
NAMELIST &ELECTRONS
|
||||
|
||||
|
@ -1122,258 +1135,10 @@ PLOT_WANNIER
|
|||
-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
FORMER FPMD INPUT
|
||||
|
||||
|
||||
* DESCRIPTION OF THE INPUT FILE
|
||||
(to be given as standard input)
|
||||
|
||||
The input file has the following layout:
|
||||
|
||||
&CONTROL
|
||||
control_parameter_1,
|
||||
control_parameter_2,
|
||||
.......
|
||||
control_parameter_Lastone
|
||||
/
|
||||
&SYSTEM
|
||||
sistem_parameter_1,
|
||||
sistem_parameter_2,
|
||||
.......
|
||||
sistem_parameter_Lastone
|
||||
/
|
||||
&ELECTRONS
|
||||
electrons_parameter_1,
|
||||
electrons_parameter_2,
|
||||
.......
|
||||
electrons_parameter_Lastone
|
||||
/
|
||||
&IONS
|
||||
ions_parameter_1,
|
||||
ions_parameter_2,
|
||||
.......
|
||||
ions_parameter_Lastone
|
||||
/
|
||||
&CELL
|
||||
cell_parameter_1,
|
||||
cell_parameter_2,
|
||||
.......
|
||||
cell_parameter_Lastone
|
||||
/
|
||||
ATOMIC_SPECIES
|
||||
slabel_1 mass_1 pseudo_file_1
|
||||
slabel_2 mass_2 pseudo_file_2
|
||||
.....
|
||||
ATOMIC_POSITIONS
|
||||
alabel_1 px_1 py_1 pz_1
|
||||
alabel_2 px_2 py_2 pz_2
|
||||
.....
|
||||
CARD_3
|
||||
....
|
||||
CARD_N
|
||||
|
||||
-- end of input file --
|
||||
|
||||
=----------------------------------------------------------------------------=!
|
||||
CONTROL Namelist Input Parameters
|
||||
=----------------------------------------------------------------------------=!
|
||||
|
||||
( when appropriate default values are marked with a "*" )
|
||||
|
||||
|
||||
CHARACTER(LEN=80) :: title
|
||||
! title = 'title for this simulation'
|
||||
|
||||
CHARACTER(LEN=80) :: calculation
|
||||
! calculation = 'scf', 'relax', 'md', 'cp'*, 'vc-relax', 'vc-md', 'vc-cp'
|
||||
! Specify the type of the simulation
|
||||
! 'scf' = electron minimization
|
||||
! 'relax' = ionic minimization
|
||||
! 'cp' = Car-Parrinello MD
|
||||
! 'md' = Car-Parrinello MD
|
||||
! 'vc-relax' = ionic + cell minimization
|
||||
! 'vc-cp' = variable-cell Car-Parrinello (-Rahman) dynamics
|
||||
! 'vc-md' = variable-cell Car-Parrinello (-Rahman) dynamics
|
||||
|
||||
|
||||
CHARACTER(LEN=80) :: calculation_allowed(7)
|
||||
DATA calculation_allowed / 'scf', 'relax', 'md', 'cp', 'vc-relax', 'vc-md', 'vc-cp' /
|
||||
! Allowed value for calculation parameters
|
||||
|
||||
|
||||
CHARACTER(LEN=80) :: verbosity
|
||||
! verbosity = 'high' | 'default'* | 'low' | 'minimal'
|
||||
! define the verbosity of the code output
|
||||
|
||||
CHARACTER(LEN=80) :: restart_mode
|
||||
! restart_mode = 'from_scratch' | 'restart'* | 'reset_counters' | 'upto'
|
||||
! specify how to start/restart the simulation
|
||||
! 'from_scratch' start a new simulation from scratch,
|
||||
! with random wave functions
|
||||
! 'restart' continue a previous simulation,
|
||||
! and performs "nstep" new steps,
|
||||
! 'reset_counters' continue a previous simulation,
|
||||
! performs "nstep" new steps, resetting
|
||||
! the counter and averages
|
||||
! 'upto' continue a previous simulation,
|
||||
! and stops when the counter value is equal "nstep"
|
||||
|
||||
INTEGER :: nstep
|
||||
! number of simulation steps, see "restart_mode"
|
||||
|
||||
INTEGER :: iprint
|
||||
! number of steps between successive writings of relevant physical
|
||||
! quantities to standard output and to files "fort.3?" or "prefix.???"
|
||||
! depending on "prefix" parameter
|
||||
|
||||
INTEGER :: isave
|
||||
! number of steps between successive savings of
|
||||
! information needed to restart the run (see "ndr", "ndw")
|
||||
|
||||
LOGICAL :: tstress
|
||||
! This flag controls the printing of the stress, its value is overwritten
|
||||
! and set to ".TRUE." when the cell is moving
|
||||
! .TRUE. write the stress tensor to standard output every "iprint" steps
|
||||
! .FALSE. do not write the stress tensor stdout
|
||||
|
||||
LOGICAL :: tprnfor
|
||||
! This flag controls the printing of the interatomic forces,
|
||||
! its value is overwritten and set to ".TRUE." the ions are moving
|
||||
! .TRUE. write the atomic forces to standard output every "iprint" steps
|
||||
! .FALSE. do not write atomic forces to stdout
|
||||
|
||||
REAL(dbl) :: dt
|
||||
! time step of the CP molecular dynamics simulation,
|
||||
! in atomic units ( 1 a.u. of time = 2.4189 * 10^-17 s ),
|
||||
! for non CP calculations, this represents the time advancing parameter.
|
||||
! Note: typical values for CP simulations are between 1 and 10 a.u.
|
||||
|
||||
INTEGER :: ndr
|
||||
! Fortran unit from which the code read the restart file
|
||||
! at the beginning of the simulation, its value should be greather than 50
|
||||
! and it is opened in the running directory.
|
||||
|
||||
INTEGER :: ndw
|
||||
! Fortran unit to which the code writes the restart file
|
||||
! at the end of the simulation, its value should be greather than 50
|
||||
! and it is opened in the running directory.
|
||||
|
||||
CHARACTER(LEN=256) :: outdir
|
||||
! specify the directory where the code opens output files
|
||||
! _NOT_ for restart file
|
||||
|
||||
CHARACTER(LEN=256) :: prefix
|
||||
! specify the prefix for the output file, if not specified the
|
||||
! files are opened as standard fortran units.
|
||||
! The prefix does _NOT_ apply to restart file
|
||||
|
||||
CHARACTER(LEN=256) :: pseudo_dir
|
||||
! specify the directory containing the pseudopotentials
|
||||
|
||||
REAL(dbl) :: max_seconds
|
||||
! smootly terminate program after the specified number of seconds
|
||||
! this parameter is typically used to prevent an hard kill from
|
||||
! the queuing system.
|
||||
|
||||
REAL(dbl) :: ekin_conv_thr
|
||||
! convergence criterion, minimizing the electrons this criterion is met
|
||||
! when "ekin < ekin_conv_thr"
|
||||
! convergence is aceived when all criterions are met
|
||||
|
||||
REAL(dbl) :: etot_conv_thr
|
||||
! convergence criterion, minimizing the ions this criterion is met
|
||||
! when "etot(n+1)-etot(n) < etot_conv_thr", where "n" is the step index,
|
||||
! and "etot" the DFT energy
|
||||
! convergence is aceived when all criterions are met
|
||||
|
||||
REAL(dbl) :: forc_conv_thr
|
||||
! convergence criterion, minimizing the ions this criterion is met
|
||||
! when "MAXVAL(fion) < forc_conv_thr", where fion are the atomic forces
|
||||
! convergence is aceived when all criterions are met
|
||||
|
||||
CHARACTER(LEN=80) :: disk_io
|
||||
! disk_io = 'high', 'default', 'low', 'minimal'
|
||||
! Specify the amount of I/O activities ( not used in FPMD )
|
||||
|
||||
NAMELIST / control / title, calculation, verbosity, restart_mode, &
|
||||
nstep, iprint, isave, tstress, tprnfor, dt, ndr, ndw, outdir, prefix, &
|
||||
max_seconds, ekin_conv_thr, etot_conv_thr, forc_conv_thr, &
|
||||
pseudo_dir, disk_io
|
||||
|
||||
|
||||
=----------------------------------------------------------------------------=!
|
||||
SYSTEM Namelist Input Parameters
|
||||
=----------------------------------------------------------------------------=!
|
||||
|
||||
INTEGER :: ibrav
|
||||
! index the Bravais lattice:
|
||||
! ibrav structure point groups
|
||||
! --- -------------- -------------------
|
||||
! 1 cubic P (sc) m3m, 432, m3, <4>3m, 23
|
||||
! 2 cubic F (fcc) m3m, 432, m3, <4>3m, 23
|
||||
! 3 cubic I (bcc) m3m, 432, m3, <4>3m, 23
|
||||
! 4 Hexagonal P 6, 6mm, 6/m, <6>, 622, 6/mmm, <6>2m
|
||||
! 4 Trigonal P 3, 3m, <3>, 32, <3>m
|
||||
! 5 Trigonal R 3, 3m, <3>, 32, <3>m
|
||||
! 6 Tetragonal P (st) 4, 4mm, 4/m, <4>, 422, 4/mmm, <4>2m
|
||||
! 7 Tetragonal I (bct) 4, 4mm, 4/m, <4>, 422, 4/mmm, <4>2m
|
||||
! 8 Orthorhombic P 2mm, 222, mmm
|
||||
! 12 Monoclinic P 2, 2/m, m
|
||||
! 14 Triclinic P 1, <1>
|
||||
!
|
||||
! Note: in variable cell CP molecular dynamics, usually one do not want
|
||||
! to put constraints on the cell symmetries, therefore an
|
||||
! ibrav = 14 is used
|
||||
|
||||
REAL(dbl) :: celldm(6)
|
||||
! dimensions of the cell
|
||||
! celldm(1) = a
|
||||
! celldm(2) = b/a
|
||||
! celldm(3) = c/a
|
||||
! celldm(4) = cos(bc)
|
||||
! celldm(5) = cos(ac)
|
||||
! celldm(6) = cos(ab)
|
||||
! only the celldm's that are meaningful for the Bravais lattice
|
||||
! considered need be specified (others are ignored):
|
||||
! ibrav = 1,2,3 : celldm(1)
|
||||
! ibrav = 4,6,7 : celldm(1,3)
|
||||
! ibrav = 5 : celldm(1,4)
|
||||
! ibrav = 8 : celldm(1,2,3)
|
||||
! ibrav = 12 : celldm(1,2,3,4)
|
||||
! ibrav = 14 : celldm(1,2,3,4,5,6)
|
||||
|
||||
INTEGER :: nat
|
||||
! total number of atoms
|
||||
|
||||
INTEGER :: ntyp
|
||||
! number of atomic species
|
||||
|
||||
INTEGER :: nbnd
|
||||
! number of electronic states, this parameter is MANDATORY in FPMD
|
||||
|
||||
INTEGER :: nelec
|
||||
! number of electrons, this parameter is MANDATORY in FPMD
|
||||
|
||||
REAL(dbl) :: ecutwfc
|
||||
! energy cutoff for wave functions in k-space ( in Rydbergs )
|
||||
! this parameter is MANDATORY in FPMD
|
||||
|
||||
REAL(dbl) :: ecutrho
|
||||
! energy cutoff for charge density in k-space ( in Rydbergs )
|
||||
! by default its value is "4 * ecutwfc"
|
||||
|
||||
INTEGER :: nr1, nr2, nr3
|
||||
! dimensions of the real space grid for charge and potentials
|
||||
! presently NOT used in FPMD-N
|
||||
|
||||
INTEGER :: nr1s, nr2s, nr3s
|
||||
! dimensions of the real space grid for wavefunctions
|
||||
! presently NOT used in FPMD-N
|
||||
|
||||
INTEGER :: nr1b, nr2b, nr3b
|
||||
! dimensions of the "box" grid for Ultrasoft pseudopotentials
|
||||
! presently NOT used in FPMD-N
|
||||
|
||||
CHARACTER(LEN=80) :: occupations
|
||||
! occupations = 'smearing' | 'tetrahedra' | 'fixed'* | 'from_input'
|
||||
! select the electronic states filling mode
|
||||
|
@ -1386,102 +1151,11 @@ FORMER FPMD INPUT
|
|||
! 'from_input' fixed occupations given in the input
|
||||
! ( see card 'OCCUPATIONS' )
|
||||
|
||||
REAL(dbl) :: degauss
|
||||
! parameter for the smearing functions
|
||||
! NOT used in FPMD-N
|
||||
|
||||
INTEGER :: ngauss
|
||||
! parameter for the smearing functions
|
||||
! NOT used in FPMD-N
|
||||
|
||||
INTEGER :: nspin
|
||||
! number of spinors
|
||||
! "nspin = 1" for LDA simulations
|
||||
! "nspin = 2" for LSD simulations
|
||||
|
||||
INTEGER :: nelup, neldw
|
||||
! meaningful only if "nspin = 2",
|
||||
! "nelup" is the number of electrons with spin up
|
||||
! "neldw" is the number of electrons with spin down
|
||||
! Remember the following relation hold "nelec = nelup + neldw"
|
||||
|
||||
LOGICAL :: nosym
|
||||
! do not use symmetry
|
||||
! NOT used in FPMD-N
|
||||
|
||||
REAL(dbl) :: ecfixed, qcutz, q2sigma
|
||||
! parameters for constant cut-off simulations
|
||||
! "ecfixed" is the value (in Rydbergs) of the constant-cutoff
|
||||
! "qcutz" and "q2sigma" are the height and the width (in Rydbergs)
|
||||
! of the energy step for reciprocal vector whose square modulus
|
||||
! is grather than "ecfixed"
|
||||
|
||||
CHARACTER(LEN=80) :: xc_type
|
||||
! xc_type = 'BLYP' | 'BP' | 'PBE' | 'PZ' | 'PW' | 'LDA'
|
||||
! select the exchange and correlation functionals
|
||||
! 'BLYP' use Becke-Lee-Yang-Parr GCC-XC Functional
|
||||
! 'BP' use Becke-Perdew GCC-XC Functionals
|
||||
! 'PBE' use Perdew-Burke-Ernzerhof GCC-XC Functionals
|
||||
! 'PZ' use Slater X, and Perdew-Zunger C Functionals
|
||||
! 'PW' use Slater X, and Perdew-Wang C Functionals
|
||||
! 'LDA' use LDA xc functional: the xc potential is
|
||||
! calculated through an interpolation table
|
||||
|
||||
REAL(dbl) :: starting_magnetization(nsx)
|
||||
! ONLY PWSCF
|
||||
|
||||
LOGICAL :: lda_plus_U
|
||||
! ONLY PWSCF
|
||||
|
||||
REAL(dbl) :: Hubbard_U(nsx)
|
||||
! ONLY PWSCF
|
||||
|
||||
REAL(dbl) :: Hubbard_alpha(nsx)
|
||||
! ONLY PWSCF
|
||||
|
||||
NAMELIST / system / ibrav, celldm, nat, ntyp, nbnd, nelec, &
|
||||
ecutwfc, ecutrho, nr1, nr2, nr3, nr1s, nr2s, nr3s, nr1b, nr2b, nr3b, &
|
||||
nosym, starting_magnetization, occupations, degauss, ngauss, &
|
||||
nelup, neldw, nspin, ecfixed, qcutz, q2sigma, xc_type, &
|
||||
lda_plus_U, Hubbard_U, Hubbard_alpha
|
||||
|
||||
|
||||
=----------------------------------------------------------------------------=!
|
||||
ELECTRONS Namelist Input Parameters
|
||||
=----------------------------------------------------------------------------=!
|
||||
|
||||
REAL(dbl) :: emass
|
||||
! effective electron mass in the CP Lagrangian,
|
||||
! in atomic units ( 1 a.u. of mass = 1/1822.9 a.m.u. = 9.10939 * 10^-31 kg )
|
||||
! Typical values in CP simulation are between 100. and 1000.
|
||||
|
||||
REAL(dbl) :: emass_cutoff
|
||||
! mass cut-off (in Rydbergs) for the Fourier acceleration
|
||||
! effective mass is rescaled for "G" vector components with kinetic
|
||||
! energy above "emass_cutoff"
|
||||
! Use a value grether than "ecutwfc" to disable Fourier acceleration.
|
||||
|
||||
CHARACTER(LEN=80) :: orthogonalization
|
||||
! orthogonalization = 'Gram-Schmidt' | 'ortho'*
|
||||
! selects the orthonormalization method for electronic wave functions
|
||||
! 'Gram-Schmidt' use Gram-Schmidt algorithm
|
||||
! 'ortho' use iterative algorithm
|
||||
|
||||
REAL(dbl) :: ortho_eps
|
||||
! meaningful only if orthogonalization = 'ortho'
|
||||
! tolerance for iterative orthonormalization,
|
||||
! a value of 1.d-8 is usually sufficent
|
||||
|
||||
INTEGER :: ortho_max
|
||||
! meaningful only if orthogonalization = 'ortho'
|
||||
! maximum number of iterations for orthonormalization
|
||||
! usually between 15 and 30.
|
||||
|
||||
INTEGER :: electron_maxstep
|
||||
! maximum number of steps in electronic minimization
|
||||
! This parameter apply only when using 'cg' electronic or
|
||||
! ionic dynamics
|
||||
|
||||
CHARACTER(LEN=80) :: electron_dynamics
|
||||
! electron_dynamics = 'sd'* | 'cg' | 'damp' | 'md' | 'none' | 'diis'
|
||||
! set how electrons shold be moved
|
||||
|
@ -1495,56 +1169,6 @@ FORMER FPMD INPUT
|
|||
CHARACTER(LEN=80) :: electron_dynamics_allowed(6)
|
||||
DATA electron_dynamics_allowed / 'sd', 'cg', 'damp', 'verlet', 'none', 'diis' /
|
||||
|
||||
REAL(dbl) :: electron_damping
|
||||
! meaningful only if " electron_dynamics = 'damp' "
|
||||
! damping frequency times delta t, optimal values could be
|
||||
! calculated with the formula
|
||||
! sqrt(0.5*log((E1-E2)/(E2-E3)))
|
||||
! where E1 E2 E3 are successive values of the DFT total energy
|
||||
! in a steepest descent simulations
|
||||
|
||||
CHARACTER(LEN=80) :: electron_velocities
|
||||
! electron_velocities = 'zero' | 'default'*
|
||||
! 'zero' restart setting electronic velocities to zero
|
||||
! 'default' restart using electronic velocities of the previous run
|
||||
|
||||
CHARACTER(LEN=80) :: electron_temperature
|
||||
! electron_temperature = 'nose' | 'not_controlled'* | 'rescaling'
|
||||
! 'nose' control electronic temperature using Nose thermostat
|
||||
! see parameter "fnosee" and "ekincw"
|
||||
! 'rescaling' control electronic temperature via velocities rescaling
|
||||
! 'not_controlled' electronic temperature is not controlled
|
||||
|
||||
REAL(dbl) :: ekincw
|
||||
! meaningful only with "electron_temperature /= 'not_controlled' "
|
||||
! value of the average kinetic energy (in atomic units) forced
|
||||
! by the temperature control
|
||||
|
||||
REAL(dbl) :: fnosee
|
||||
! meaningful only with "electron_temperature = 'nose' "
|
||||
! oscillation frequency of the nose thermostat (in terahertz)
|
||||
|
||||
CHARACTER(LEN=80) :: startingwfc
|
||||
! startingwfc = 'atomic' | 'random'* | 'none'
|
||||
! define how the code should initialize the wave function
|
||||
! 'atomic' start from superposition of atomic wave functions
|
||||
! 'random' start from random wave functions
|
||||
|
||||
REAL(dbl) :: ampre
|
||||
! meaningful only if "startingwfc = 'random'", amplitude of the
|
||||
! randomization ( allowed values: 0.0 - 1.0 )
|
||||
|
||||
REAL(dbl) :: grease
|
||||
! a number <= 1, very close to 1: the damping in electronic
|
||||
! damped dynamics is multiplied at each time step by "grease"
|
||||
! (avoids overdamping close to convergence: Obsolete ?)
|
||||
! grease = 1 : normal damped dynamics
|
||||
! NOT used in FPMD
|
||||
|
||||
LOGICAL :: twall
|
||||
! for electronic damped dynamics: Obsolete ?
|
||||
! NOT used in FPMD
|
||||
|
||||
INTEGER :: empty_states_nbnd
|
||||
! number of empty states to be calculated every iprint steps
|
||||
! default value is zero
|
||||
|
@ -1667,67 +1291,6 @@ FORMER FPMD INPUT
|
|||
! if "diis_chguess = .TRUE." enable charge density guess
|
||||
! between two diis step, defaut value is "diis_chguess = .FALSE."
|
||||
|
||||
CHARACTER(LEN=80) :: mixing_mode
|
||||
! mixing = ????
|
||||
! define how to mix wave functions
|
||||
! NOT used in FPMD
|
||||
|
||||
INTEGER :: mixing_beta
|
||||
! parameter for wave function mixing
|
||||
! NOT used in FPMD
|
||||
|
||||
INTEGER :: mixing_ndim
|
||||
! dimension of wave function mixing
|
||||
! NOT used in FPMD
|
||||
|
||||
CHARACTER(LEN=80) :: diagonalization
|
||||
! diagonalization = 'cg' | 'david' | 'david_overlap' | 'diis'
|
||||
! NOTA: 'david' e 'david_overlap' per eliminare la variabile "loverlap"
|
||||
! NOT used in FPMD
|
||||
|
||||
INTEGER :: diago_cg_maxiter
|
||||
! NOT used in FPMD
|
||||
|
||||
INTEGER :: diago_david_ndim
|
||||
! NOT used in FPMD
|
||||
|
||||
INTEGER :: diago_diis_buff
|
||||
! buffer for diis diagonalization
|
||||
! NOT used in FPMD
|
||||
|
||||
INTEGER :: diago_diis_start
|
||||
! .....
|
||||
! NOT used in FPMD
|
||||
|
||||
LOGICAL :: diago_diis_keep
|
||||
! .....
|
||||
! NOT used in FPMD
|
||||
|
||||
REAL(dbl) :: conv_thr
|
||||
! convergence threshold in electronic ONLY minimizations
|
||||
! NOT used in FPMD
|
||||
|
||||
INTEGER :: mixing_fixed_ns
|
||||
! PWSCF only
|
||||
! NOT used in FPMD
|
||||
|
||||
CHARACTER(LEN=80) :: startingpot
|
||||
! specify the file containing the DFT potential of the system
|
||||
! NOT used in FPMD
|
||||
|
||||
NAMELIST / electrons / emass, emass_cutoff, orthogonalization, &
|
||||
electron_maxstep, ortho_eps, ortho_max, electron_dynamics, electron_damping, &
|
||||
electron_velocities, electron_temperature, ekincw, fnosee, ampre, &
|
||||
grease, twall, empty_states_nbnd, empty_states_maxstep, empty_states_delt, &
|
||||
empty_states_emass, empty_states_ethr, diis_size, diis_nreset, diis_hcut, &
|
||||
diis_wthr, diis_delt, diis_maxstep, diis_rot, diis_fthr, diis_temp, &
|
||||
diis_achmix, diis_g0chmix, diis_g1chmix, diis_nchmix, diis_nrot, &
|
||||
diis_rothr, diis_ethr, diis_chguess, mixing_mode, &
|
||||
mixing_beta, mixing_ndim, mixing_fixed_ns, diago_cg_maxiter, diago_david_ndim, &
|
||||
diago_diis_buff, diago_diis_start, diago_diis_keep, diagonalization, &
|
||||
startingpot, startingwfc , conv_thr
|
||||
|
||||
|
||||
=----------------------------------------------------------------------------=!
|
||||
IONS Namelist Input Parameters
|
||||
=----------------------------------------------------------------------------=!
|
||||
|
@ -1817,10 +1380,6 @@ FORMER FPMD INPUT
|
|||
INTEGER :: upscale
|
||||
! This variable is NOT used in FPMD
|
||||
|
||||
NAMELIST / ions / ion_dynamics, ion_radius, ion_damping, ion_positions, &
|
||||
ion_velocities, ion_temperature, tempw, fnosep, tranp, amprp, greasp, tolp, &
|
||||
ion_nstepe, ion_maxstep, upscale, pot_extrapolation, wfc_extrapolation
|
||||
|
||||
|
||||
=----------------------------------------------------------------------------=!
|
||||
CELL Namelist Input Parameters
|
||||
|
@ -1898,160 +1457,8 @@ FORMER FPMD INPUT
|
|||
REAL(dbl) :: cell_factor
|
||||
! NOT used in FPMD
|
||||
|
||||
NAMELIST / cell / cell_parameters, cell_dynamics, cell_velocities, press, &
|
||||
wmass, cell_temperature, temph, fnoseh, cell_dofree, greash, cell_factor
|
||||
|
||||
|
||||
=----------------------------------------------------------------------------=!
|
||||
CARDS parameters
|
||||
=----------------------------------------------------------------------------=!
|
||||
|
||||
Note: See file read_cards.f90 for the cards syntax and usage
|
||||
|
||||
ATOMIC_SPECIES
|
||||
|
||||
CHARACTER(LEN=4) :: atom_label(nsx) ! label of the atomic species being read
|
||||
CHARACTER(LEN=80) :: atom_pfile(nsx) ! pseudopotential file name
|
||||
REAL(dbl) :: atom_mass(nsx) ! atomic mass
|
||||
! unsorted atomic masses
|
||||
! in atomic mass units: 1 a.m.u. = 1822.9 a.u. = 1.6605 * 10^-27 kg
|
||||
! atomic mass of the i-th atomic species
|
||||
LOGICAL :: taspc = .FALSE.
|
||||
|
||||
|
||||
ATOMIC_POSITIONS
|
||||
|
||||
REAL(dbl) :: rd_pos(3,natx) ! unsorted position from input
|
||||
INTEGER :: sp_pos(natx)
|
||||
INTEGER :: if_pos(3,natx)
|
||||
INTEGER :: na_inp(nsx) ! number of atom for each specie
|
||||
LOGICAL :: tapos = .FALSE.
|
||||
LOGICAL :: tscal = .TRUE.
|
||||
CHARACTER(LEN=80) :: atomic_positions
|
||||
! atomic_positions = 'bohr' | 'armstrong' | 'crystal' | 'alat'*
|
||||
! select the units for the atomic positions being read from stdin
|
||||
|
||||
|
||||
|
||||
ATOMIC_VELOCITIES
|
||||
|
||||
REAL(dbl) :: rd_vel(3,natx) ! unsorted velocities from input
|
||||
INTEGER :: sp_vel(natx)
|
||||
LOGICAL :: tavel = .FALSE.
|
||||
|
||||
|
||||
KPOINTS
|
||||
|
||||
... k-points inputs
|
||||
LOGICAL :: tk_inp
|
||||
REAL(dbl) :: xk(3,npkx), wk(npkx)
|
||||
INTEGER :: nks, nk1, nk2, nk3, k1, k2, k3
|
||||
CHARACTER(LEN=80) :: k_points
|
||||
! k_points = 'automatic' | 'crystal' | 'tpiba' | 'gamma'*
|
||||
! select the k points mesh
|
||||
! 'automatic' k points mesh is generated automatically
|
||||
! with Monkhorst-Pack algorithm
|
||||
! 'crystal' k points mesh is given in stdin in scaled units
|
||||
! 'tpiba' k points mesh is given in stdin in units of ( 2 PI / alat )
|
||||
! 'gamma' only gamma point is used ( default in CPMD simulation )
|
||||
|
||||
|
||||
|
||||
NEWNFI
|
||||
|
||||
LOGICAL :: tnewnfi_card = .FALSE.
|
||||
INTEGER :: newnfi_card = 0
|
||||
|
||||
|
||||
2DPROCMESH
|
||||
|
||||
LOGICAL :: t2dpegrid_inp
|
||||
|
||||
|
||||
OCCUPATIONS
|
||||
|
||||
REAL(dbl) :: f_inp(nbndxx, nspinx)
|
||||
LOGICAL :: tf_inp = .FALSE.
|
||||
|
||||
|
||||
VHMEAN
|
||||
|
||||
... card planar mean of the Hartree potential
|
||||
LOGICAL :: tvhmean_inp
|
||||
INTEGER :: vhnr_inp, vhiunit_inp
|
||||
REAL(dbl) :: vhrmin_inp, vhrmax_inp
|
||||
CHARACTER :: vhasse_inp
|
||||
|
||||
|
||||
OPTICAL
|
||||
|
||||
LOGICAL :: toptical_card = .FALSE.
|
||||
REAL(dbl) :: woptical, boptical
|
||||
INTEGER :: noptical
|
||||
|
||||
|
||||
DIPOLE
|
||||
|
||||
LOGICAL :: tdipole_card = .FALSE.
|
||||
|
||||
|
||||
ESR
|
||||
|
||||
INTEGER :: iesr_inp
|
||||
|
||||
|
||||
NEIGHBOURS
|
||||
|
||||
LOGICAL :: tneighbo = .FALSE.
|
||||
REAL(dbl) :: neighbo_radius = 0.0d0
|
||||
|
||||
|
||||
PSTAB
|
||||
|
||||
LOGICAL :: tpstab_inp
|
||||
INTEGER :: pstab_size_inp
|
||||
|
||||
|
||||
CELL_PARAMETERS
|
||||
|
||||
REAL(dbl) :: rd_ht(3,3)
|
||||
LOGICAL :: trd_ht = .FALSE.
|
||||
|
||||
|
||||
TURBO
|
||||
|
||||
LOGICAL :: tturbo_inp
|
||||
INTEGER :: nturbo_inp
|
||||
|
||||
KOHN_SHAM
|
||||
|
||||
LOGICAL :: tprnks( nbndxx, nspinx )
|
||||
! logical mask used to specify which kohn sham orbital should be
|
||||
! written to files 'KS.'
|
||||
LOGICAL :: tprnks_empty( nbndxx, nspinx )
|
||||
! logical mask used to specify which empty kohn sham orbital should be
|
||||
! written to files 'KS_EMP.'
|
||||
CHARACTER(LEN=256) :: ks_path = ''
|
||||
|
||||
CHI2
|
||||
|
||||
LOGICAL :: tchi2_inp
|
||||
|
||||
ELECTRONIC ANNEALING (obsolete)
|
||||
|
||||
LOGICAL :: anne_inp = .FALSE.
|
||||
REAL(dbl) :: anner_inp = 0.0d0
|
||||
|
||||
|
||||
EXCHANGE AND CORRELATION
|
||||
|
||||
INTEGER :: narray_inp = 50000
|
||||
REAL(dbl) :: rmxxc_inp = 5.0d0
|
||||
|
||||
SCRATCH DIRECTORY
|
||||
|
||||
LOGICAL :: tscra_inp = .FALSE.
|
||||
CHARACTER(LEN=256) :: tscradir_inp = ''
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
@ -2179,21 +1586,6 @@ FORMER FPMD INPUT
|
|||
|
||||
----------------------------------------------------------------
|
||||
|
||||
2DPROCMESH
|
||||
|
||||
Distribute the Y and Z FFT dimensions across processors,
|
||||
instead of Z dimension only ( default distribution )
|
||||
|
||||
Syntax:
|
||||
|
||||
2DPROCMESH
|
||||
|
||||
Where:
|
||||
|
||||
no parameters
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
||||
OCCUPATIONS
|
||||
|
||||
use the specified occupation numbers for electronic states.
|
||||
|
|
|
@ -86,9 +86,9 @@
|
|||
! Compute the number of bands
|
||||
!
|
||||
IF( nbnd_ /= 0 ) THEN
|
||||
nbnd = nbnd_
|
||||
nbnd = nbnd_ ! nbnd is given from input
|
||||
ELSE
|
||||
nbnd = NINT( MAX( nelup, neldw ) )
|
||||
nbnd = NINT( MAX( nelup, neldw ) ) ! take the maximum between up and down states
|
||||
END IF
|
||||
|
||||
|
||||
|
|
|
@ -79,9 +79,6 @@
|
|||
|
||||
! ---------------------------------------------------------------------------- !
|
||||
|
||||
! SUBROUTINE total_energy( edft, omega, eexc, vvxc, eh, eps, &
|
||||
! self_ehte_in, self_sxc_in, self_vxc_in, nnr)
|
||||
|
||||
SUBROUTINE total_energy( edft, omega, vvxc, eps, self_vxc_in, nnr)
|
||||
|
||||
TYPE (dft_energy_type) :: edft
|
||||
|
@ -91,34 +88,34 @@
|
|||
COMPLEX(DP), INTENT(IN) :: EPS
|
||||
INTEGER, INTENT(IN) :: nnr
|
||||
|
||||
eself = edft%eself
|
||||
ent = edft%ent
|
||||
enl = edft%enl
|
||||
evdw = edft%evdw
|
||||
esr = edft%esr
|
||||
ekin = edft%ekin
|
||||
sxc = edft%sxc
|
||||
ehti = edft%ehte
|
||||
ehte = edft%ehte
|
||||
self_ehte = edft%ehte
|
||||
eself = edft%eself
|
||||
ent = edft%ent
|
||||
enl = edft%enl
|
||||
evdw = edft%evdw
|
||||
esr = edft%esr
|
||||
ekin = edft%ekin
|
||||
sxc = edft%sxc
|
||||
ehti = edft%ehti
|
||||
ehte = edft%ehte
|
||||
self_ehte = edft%self_ehte
|
||||
self_sxc = edft%self_sxc
|
||||
|
||||
self_vxc = self_vxc_in
|
||||
|
||||
EXC = edft%sxc * omega / DBLE(NNR) !EEXC * omega / DBLE(NNR)
|
||||
EXC = edft%sxc * omega / DBLE(NNR)
|
||||
VXC = VVXC * omega / DBLE(NNR)
|
||||
|
||||
edft%exc = exc
|
||||
edft%vxc = vxc
|
||||
|
||||
!EHT = REAL( eh ) + esr - eself
|
||||
edft%eht = edft%eh + esr - eself ! = eht
|
||||
EHT = edft%eht
|
||||
edft%eht = edft%eh + esr - eself ! = eht
|
||||
eht = edft%eht
|
||||
|
||||
EPSEU = DBLE(eps)
|
||||
epseu = DBLE(eps)
|
||||
edft%epseu = epseu
|
||||
|
||||
ETOT = EKIN + EHT + EPSEU + ENL + EXC + EVDW - ENT
|
||||
etot = ekin + eht + epseu + enl + exc + evdw - ent
|
||||
!
|
||||
edft%etot = etot
|
||||
|
||||
RETURN
|
||||
|
@ -174,37 +171,38 @@
|
|||
WRITE( stdout, 13 ) edft%emkin
|
||||
END IF
|
||||
END IF
|
||||
IF( tsic ) THEN
|
||||
WRITE( stdout, fmt = "('Sic contributes:')" )
|
||||
WRITE( stdout, fmt = "('----------------')" )
|
||||
WRITE( stdout, 14 ) edft%self_ehte
|
||||
WRITE( stdout, 15 ) edft%self_sxc
|
||||
WRITE( stdout, 16 ) vxc
|
||||
WRITE( stdout, 17 ) self_vxc
|
||||
END IF
|
||||
! ETOT = EKIN + EHT + EPSEU + ENL + EXC + EVDW - ENT
|
||||
ELSE
|
||||
!
|
||||
999 WRITE( stdout,100) etot,ekin,eht,esr,eself,epseu,enl,exc,vave
|
||||
999 WRITE( stdout,100) etot, ekin, eht, esr, eself, epseu, enl, exc, vave
|
||||
!
|
||||
END IF
|
||||
1 FORMAT(6X,' TOTAL ENERGY = ',F18.10,' HARTREE A.U.')
|
||||
2 FORMAT(6X,' KINETIC ENERGY = ',F18.10,' HARTREE A.U.')
|
||||
3 FORMAT(6X,' ELECTROSTATIC ENERGY = ',F18.10,' HARTREE A.U.')
|
||||
4 FORMAT(6X,' ESELF = ',F18.10,' HARTREE A.U.')
|
||||
5 FORMAT(6X,' ESR = ',F18.10,' HARTREE A.U.')
|
||||
6 FORMAT(6X,' HARTREE ENERGY = ',F18.10,' HARTREE A.U.')
|
||||
7 FORMAT(6X,' HARTREE EHTE = ',F18.10,' HARTREE A.U.')
|
||||
8 FORMAT(6X,' HARTREE EHTI = ',F18.10,' HARTREE A.U.')
|
||||
9 FORMAT(6X,' PSEUDOPOTENTIAL ENERGY = ',F18.10,' HARTREE A.U.')
|
||||
10 FORMAT(6X,' N-L PSEUDOPOTENTIAL ENERGY = ',F18.10,' HARTREE A.U.')
|
||||
11 FORMAT(6X,' EXCHANGE-CORRELATION ENERGY = ',F18.10,' HARTREE A.U.')
|
||||
12 FORMAT(6X,' VAN DER WAALS ENERGY = ',F18.10,' HARTREE A.U.')
|
||||
13 FORMAT(6X,' EMASS KINETIC ENERGY = ',F18.10,' HARTREE A.U.')
|
||||
14 FORMAT(6X,' HARTREE SIC_EHTE = ',F18.10,' HARTREE A.U.')
|
||||
15 FORMAT(6X,' SIC EXCHANGE-CORRELA ENERGY = ',F18.10,' HARTREE A.U.')
|
||||
16 FORMAT(6X,' EXCHANGE-CORRELA POTENT = ',F18.10,' HARTREE A.U.')
|
||||
17 FORMAT(6X,' SIC EXCHANGE-CORRELA POTENT = ',F18.10,' HARTREE A.U.')
|
||||
!
|
||||
IF( tsic ) THEN
|
||||
WRITE( stdout, fmt = "('Sic contributes:')" )
|
||||
WRITE( stdout, fmt = "('----------------')" )
|
||||
WRITE( stdout, 14 ) self_ehte
|
||||
WRITE( stdout, 15 ) self_sxc
|
||||
WRITE( stdout, 16 ) vxc
|
||||
WRITE( stdout, 17 ) self_vxc
|
||||
END IF
|
||||
!
|
||||
1 FORMAT(6X,' total energy = ',F18.10,' Hartree a.u.')
|
||||
2 FORMAT(6X,' kinetic energy = ',F18.10,' Hartree a.u.')
|
||||
3 FORMAT(6X,' electrostatic energy = ',F18.10,' Hartree a.u.')
|
||||
4 FORMAT(6X,' eself = ',F18.10,' Hartree a.u.')
|
||||
5 FORMAT(6X,' esr = ',F18.10,' Hartree a.u.')
|
||||
6 FORMAT(6X,' hartree energy = ',F18.10,' Hartree a.u.')
|
||||
7 FORMAT(6X,' hartree ehte = ',F18.10,' Hartree a.u.')
|
||||
8 FORMAT(6X,' hartree ehti = ',F18.10,' Hartree a.u.')
|
||||
9 FORMAT(6X,' pseudopotential energy = ',F18.10,' Hartree a.u.')
|
||||
10 FORMAT(6X,' n-l pseudopotential energy = ',F18.10,' Hartree a.u.')
|
||||
11 FORMAT(6X,' exchange-correlation energy = ',F18.10,' Hartree a.u.')
|
||||
12 FORMAT(6X,' van der waals energy = ',F18.10,' Hartree a.u.')
|
||||
13 FORMAT(6X,' emass kinetic energy = ',F18.10,' Hartree a.u.')
|
||||
14 FORMAT(6X,' hartree sic_ehte = ',F18.10,' Hartree a.u.')
|
||||
15 FORMAT(6X,' sic exchange-correla energy = ',F18.10,' Hartree a.u.')
|
||||
16 FORMAT(6X,' exchange-correla potent = ',F18.10,' Hartree a.u.')
|
||||
17 FORMAT(6X,' sic exchange-correla potent = ',F18.10,' Hartree a.u.')
|
||||
|
||||
100 format(//' total energy = ',f14.5,' Hartree a.u.'/ &
|
||||
& ' kinetic energy = ',f14.5,' Hartree a.u.'/ &
|
||||
|
|
Loading…
Reference in New Issue