quantum-espresso/PP/initial_state.f90

75 lines
2.0 KiB
Fortran

!
! Copyright (C) 2001-2003 PWSCF group
! This file is distributed under the terms of the
! GNU General Public License. See the file `License'
! in the root directory of the present distribution,
! or http://www.gnu.org/copyleft/gpl.txt .
!
!-----------------------------------------------------------------------
PROGRAM initial_state
!-----------------------------------------------------------------------
!
! compute forces on atoms as a post-process
!
! input: namelist "&inputpp", with variables
! prefix prefix of input files saved by program pwscf
! outdir temporary directory where files resides
!
USE io_global, ONLY : stdout, ionode, ionode_id
USE kinds, ONLY : DP
USE io_files, ONLY : nd_nmbr, prefix, tmp_dir, iunwfc, nwordwfc
USE ions_base, ONLY : nat
USE klist, ONLY : nks, xk
USE wvfct, ONLY : npw, igk
USE uspp, ONLY : nkb, vkb
USE wavefunctions_module, ONLY : evc
USE parameters, ONLY : ntypx
USE mp, ONLY : mp_bcast
!
IMPLICIT NONE
CHARACTER(len=256) :: outdir
INTEGER :: ios, ik, excite(ntypx)
NAMELIST / inputpp / outdir, prefix, excite
!
CALL start_postproc (nd_nmbr)
!
! set default values for variables in namelist
!
excite(:) = 0
prefix = 'pwscf'
outdir = './'
!
IF ( ionode ) THEN
!
READ (5, inputpp, err = 200, iostat = ios)
200 CALL errore ('postforces', 'reading inputpp namelist', ABS (ios) )
!
tmp_dir = TRIM(outdir)
!
END IF
!
! ... Broadcast variables
!
CALL mp_bcast( tmp_dir, ionode_id )
CALL mp_bcast( prefix, ionode_id )
CALL mp_bcast( excite, ionode_id )
!
! Now allocate space for pwscf variables, read and check them.
!
CALL read_file
CALL openfil_pp
CALL hinit0
CALL hinit1
IF ( nks == 1 ) THEN
ik = 1
CALL davcio( evc, nwordwfc, iunwfc, ik, -1 )
IF ( nkb > 0 ) CALL init_us_2( npw, igk, xk(1,ik), vkb )
END IF
CALL sum_band
!
CALL do_initial_state (excite)
!
CALL stop_pp
!
END PROGRAM initial_state