- 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:
cavazzon 2005-11-08 00:03:27 +00:00
parent 61c936b59a
commit 45163d093e
9 changed files with 268 additions and 777 deletions

View File

@ -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 )
!
!
!

View File

@ -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

View File

@ -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

View File

@ -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,*)

View File

@ -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

View File

@ -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
!

View File

@ -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.

View File

@ -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

View File

@ -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.'/ &