mirror of https://gitlab.com/QEF/q-e.git
75 lines
2.0 KiB
Fortran
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
|