mirror of https://gitlab.com/QEF/q-e.git
Cleanup. Some of the modifications suggested by G.Bussi implemented. C.S.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2683 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
e3e9e215ca
commit
e8d138642f
|
@ -109,7 +109,7 @@ MODULE cp_restart
|
||||||
REAL(DP), OPTIONAL, INTENT(IN) :: mat_z(:,:,:) !
|
REAL(DP), OPTIONAL, INTENT(IN) :: mat_z(:,:,:) !
|
||||||
!
|
!
|
||||||
CHARACTER(LEN=20) :: dft_name
|
CHARACTER(LEN=20) :: dft_name
|
||||||
CHARACTER(LEN=256) :: dirname, filename, rho_file
|
CHARACTER(LEN=256) :: dirname, filename, rho_file_base
|
||||||
CHARACTER(LEN=4) :: cspin
|
CHARACTER(LEN=4) :: cspin
|
||||||
INTEGER :: kunit, ib, ik_eff
|
INTEGER :: kunit, ib, ik_eff
|
||||||
INTEGER :: k1, k2, k3
|
INTEGER :: k1, k2, k3
|
||||||
|
@ -264,12 +264,12 @@ MODULE cp_restart
|
||||||
CALL iotk_write_attr( attr, "ITERATION", nfi, FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "ITERATION", nfi, FIRST = .TRUE. )
|
||||||
CALL iotk_write_empty(iunpun, "STEP", attr )
|
CALL iotk_write_empty(iunpun, "STEP", attr )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "pico-seconds", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "pico-seconds", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, "TIME", simtime, ATTR = attr )
|
CALL iotk_write_dat( iunpun, "TIME", simtime, ATTR = attr )
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "TITLE", TRIM( title ) )
|
CALL iotk_write_dat( iunpun, "TITLE", TRIM( title ) )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "Hartree", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "Hartree", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, "KINETIC_ENERGY", ekin, ATTR = attr )
|
CALL iotk_write_dat( iunpun, "KINETIC_ENERGY", ekin, ATTR = attr )
|
||||||
CALL iotk_write_dat( iunpun, "HARTREE_ENERGY", eht, ATTR = attr )
|
CALL iotk_write_dat( iunpun, "HARTREE_ENERGY", eht, ATTR = attr )
|
||||||
CALL iotk_write_dat( iunpun, "EWALD_TERM", esr, ATTR = attr )
|
CALL iotk_write_dat( iunpun, "EWALD_TERM", esr, ATTR = attr )
|
||||||
|
@ -351,17 +351,17 @@ MODULE cp_restart
|
||||||
!
|
!
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
rho_file = 'charge-density.dat'
|
rho_file_base = 'charge-density'
|
||||||
!
|
!
|
||||||
IF ( ionode )&
|
IF ( ionode )&
|
||||||
CALL iotk_link( iunpun, "RHO_FILE", rho_file, &
|
CALL iotk_link( iunpun, "RHO", rho_file_base, &
|
||||||
CREATE = .FALSE., BINARY = .FALSE. )
|
CREATE = .FALSE., BINARY = .FALSE. )
|
||||||
!
|
!
|
||||||
rho_file = TRIM( dirname ) // '/' // TRIM( rho_file )
|
rho_file_base = TRIM( dirname ) // '/' // TRIM( rho_file_base )
|
||||||
!
|
!
|
||||||
IF ( nspin == 1 ) THEN
|
IF ( nspin == 1 ) THEN
|
||||||
!
|
!
|
||||||
CALL write_rho_xml( rho_file, rho(:,1), nr1, &
|
CALL write_rho_xml( rho_file_base, rho(:,1), nr1, &
|
||||||
nr2, nr3, nr1x, nr2x, dfftp%ipp, dfftp%npp )
|
nr2, nr3, nr1x, nr2x, dfftp%ipp, dfftp%npp )
|
||||||
!
|
!
|
||||||
ELSE IF ( nspin == 2 ) THEN
|
ELSE IF ( nspin == 2 ) THEN
|
||||||
|
@ -370,31 +370,31 @@ MODULE cp_restart
|
||||||
!
|
!
|
||||||
rhosum = rho(:,1) + rho(:,2)
|
rhosum = rho(:,1) + rho(:,2)
|
||||||
!
|
!
|
||||||
CALL write_rho_xml( rho_file, rhosum, nr1, &
|
CALL write_rho_xml( rho_file_base, rhosum, nr1, &
|
||||||
nr2, nr3, nr1x, nr2x, dfftp%ipp, dfftp%npp )
|
nr2, nr3, nr1x, nr2x, dfftp%ipp, dfftp%npp )
|
||||||
!
|
!
|
||||||
DEALLOCATE( rhosum )
|
DEALLOCATE( rhosum )
|
||||||
!
|
!
|
||||||
rho_file = 'charge-density-up.dat'
|
rho_file_base = 'charge-density-up'
|
||||||
!
|
!
|
||||||
IF ( ionode ) &
|
IF ( ionode ) &
|
||||||
CALL iotk_link( iunpun, "RHO_FILE", rho_file, &
|
CALL iotk_link( iunpun, "RHO_UP", rho_file_base, &
|
||||||
CREATE = .FALSE., BINARY = .FALSE. )
|
CREATE = .FALSE., BINARY = .FALSE. )
|
||||||
!
|
!
|
||||||
rho_file = TRIM( dirname ) // '/' // TRIM( rho_file )
|
rho_file_base = TRIM( dirname ) // '/' // TRIM( rho_file_base )
|
||||||
!
|
!
|
||||||
CALL write_rho_xml( rho_file, rho(:,1), &
|
CALL write_rho_xml( rho_file_base, rho(:,1), &
|
||||||
nr1, nr2, nr3, nr1x, nr2x, dfftp%ipp, dfftp%npp )
|
nr1, nr2, nr3, nr1x, nr2x, dfftp%ipp, dfftp%npp )
|
||||||
!
|
!
|
||||||
rho_file = 'charge-density-dw.dat'
|
rho_file_base = 'charge-density-dw'
|
||||||
!
|
!
|
||||||
IF ( ionode ) &
|
IF ( ionode ) &
|
||||||
CALL iotk_link( iunpun, "RHO_FILE", rho_file, &
|
CALL iotk_link( iunpun, "RHO_DW", rho_file_base, &
|
||||||
CREATE = .FALSE., BINARY = .FALSE. )
|
CREATE = .FALSE., BINARY = .FALSE. )
|
||||||
!
|
!
|
||||||
rho_file = TRIM( dirname ) // '/' // TRIM( rho_file )
|
rho_file_base = TRIM( dirname ) // '/' // TRIM( rho_file_base )
|
||||||
!
|
!
|
||||||
CALL write_rho_xml( rho_file, rho(:,2), &
|
CALL write_rho_xml( rho_file_base, rho(:,2), &
|
||||||
nr1, nr2, nr3, nr1x, nr2x, dfftp%ipp, dfftp%npp )
|
nr1, nr2, nr3, nr1x, nr2x, dfftp%ipp, dfftp%npp )
|
||||||
!
|
!
|
||||||
END IF
|
END IF
|
||||||
|
@ -523,7 +523,7 @@ MODULE cp_restart
|
||||||
!
|
!
|
||||||
CALL iotk_write_begin( iunpun, "K-POINT" // TRIM( iotk_index(ik) ) )
|
CALL iotk_write_begin( iunpun, "K-POINT" // TRIM( iotk_index(ik) ) )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "2 pi / a", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "2 pi / a", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, &
|
CALL iotk_write_dat( iunpun, &
|
||||||
"K-POINT_COORDS", xk(:,ik), ATTR = attr )
|
"K-POINT_COORDS", xk(:,ik), ATTR = attr )
|
||||||
!
|
!
|
||||||
|
@ -533,7 +533,7 @@ MODULE cp_restart
|
||||||
!
|
!
|
||||||
cspin = iotk_index( ispin )
|
cspin = iotk_index( ispin )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "Hartree", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "Hartree", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, "ET" // TRIM( cspin ), &
|
CALL iotk_write_dat( iunpun, "ET" // TRIM( cspin ), &
|
||||||
et(:,ik,ispin), ATTR = attr )
|
et(:,ik,ispin), ATTR = attr )
|
||||||
!
|
!
|
||||||
|
@ -1729,7 +1729,7 @@ MODULE cp_restart
|
||||||
END DO
|
END DO
|
||||||
!
|
!
|
||||||
CALL iotk_scan_empty( iunpun, "UNITS_FOR_ATOMIC_POSITIONS", attr )
|
CALL iotk_scan_empty( iunpun, "UNITS_FOR_ATOMIC_POSITIONS", attr )
|
||||||
CALL iotk_scan_attr( attr, "UNIT", pos_unit )
|
CALL iotk_scan_attr( attr, "UNITS", pos_unit )
|
||||||
!
|
!
|
||||||
DO i = 1, nat
|
DO i = 1, nat
|
||||||
!
|
!
|
||||||
|
|
|
@ -450,7 +450,7 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "CELL_SYMMETRY", symm_type )
|
CALL iotk_write_dat( iunpun, "CELL_SYMMETRY", symm_type )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "Bohr", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "Bohr", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, "LATTICE_PARAMETER", alat, ATTR = attr )
|
CALL iotk_write_dat( iunpun, "LATTICE_PARAMETER", alat, ATTR = attr )
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "CELL_DIMENSIONS", celldm(1:6) )
|
CALL iotk_write_dat( iunpun, "CELL_DIMENSIONS", celldm(1:6) )
|
||||||
|
@ -461,7 +461,7 @@ MODULE xml_io_base
|
||||||
CALL iotk_write_dat( iunpun, "a3", a3(:) * alat, ATTR = attr )
|
CALL iotk_write_dat( iunpun, "a3", a3(:) * alat, ATTR = attr )
|
||||||
CALL iotk_write_end( iunpun, "DIRECT_LATTICE_VECTORS" )
|
CALL iotk_write_end( iunpun, "DIRECT_LATTICE_VECTORS" )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "2 pi / a", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "2 pi / a", FIRST = .TRUE. )
|
||||||
CALL iotk_write_begin( iunpun, "RECIPROCAL_LATTICE_VECTORS" )
|
CALL iotk_write_begin( iunpun, "RECIPROCAL_LATTICE_VECTORS" )
|
||||||
CALL iotk_write_dat( iunpun, "b1", b1(:), ATTR = attr )
|
CALL iotk_write_dat( iunpun, "b1", b1(:), ATTR = attr )
|
||||||
CALL iotk_write_dat( iunpun, "b2", b2(:), ATTR = attr )
|
CALL iotk_write_dat( iunpun, "b2", b2(:), ATTR = attr )
|
||||||
|
@ -522,7 +522,7 @@ MODULE xml_io_base
|
||||||
CALL copy_file( TRIM( file_pseudo ), &
|
CALL copy_file( TRIM( file_pseudo ), &
|
||||||
TRIM( dirname ) // "/" // TRIM( psfile(i) ) )
|
TRIM( dirname ) // "/" // TRIM( psfile(i) ) )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "a.m.u.", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "a.m.u.", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, TRIM( atm(i) ) // "_MASS", &
|
CALL iotk_write_dat( iunpun, TRIM( atm(i) ) // "_MASS", &
|
||||||
amass(i), ATTR = attr )
|
amass(i), ATTR = attr )
|
||||||
!
|
!
|
||||||
|
@ -531,7 +531,7 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
END DO
|
END DO
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "Bohr", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "Bohr", FIRST = .TRUE. )
|
||||||
CALL iotk_write_empty( iunpun, "UNITS_FOR_ATOMIC_POSITIONS", attr )
|
CALL iotk_write_empty( iunpun, "UNITS_FOR_ATOMIC_POSITIONS", attr )
|
||||||
!
|
!
|
||||||
DO i = 1, nat
|
DO i = 1, nat
|
||||||
|
@ -577,7 +577,7 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
DO i = 1, nsym
|
DO i = 1, nsym
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "Crystal", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "Crystal", FIRST = .TRUE. )
|
||||||
!
|
!
|
||||||
tmp(1) = ftau(1,i) / DBLE( nr1 )
|
tmp(1) = ftau(1,i) / DBLE( nr1 )
|
||||||
tmp(2) = ftau(2,i) / DBLE( nr2 )
|
tmp(2) = ftau(2,i) / DBLE( nr2 )
|
||||||
|
@ -614,7 +614,7 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
CALL iotk_write_begin( iunpun, "PLANE_WAVES" )
|
CALL iotk_write_begin( iunpun, "PLANE_WAVES" )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "Hartree", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "Hartree", FIRST = .TRUE. )
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "WFC_CUTOFF", ecutwfc / e2, ATTR = attr )
|
CALL iotk_write_dat( iunpun, "WFC_CUTOFF", ecutwfc / e2, ATTR = attr )
|
||||||
!
|
!
|
||||||
|
@ -628,14 +628,14 @@ MODULE xml_io_base
|
||||||
CALL iotk_write_attr( attr, "nr1", nr1, FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "nr1", nr1, FIRST = .TRUE. )
|
||||||
CALL iotk_write_attr( attr, "nr2", nr2 )
|
CALL iotk_write_attr( attr, "nr2", nr2 )
|
||||||
CALL iotk_write_attr( attr, "nr3", nr3 )
|
CALL iotk_write_attr( attr, "nr3", nr3 )
|
||||||
CALL iotk_write_empty( iunpun, "FFT_GRID", attr )
|
CALL iotk_write_empty( iunpun, "FFT_GRID", ATTR = attr )
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "GVECT_NUMBER", ngm_g )
|
CALL iotk_write_dat( iunpun, "GVECT_NUMBER", ngm_g )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "nr1s", nr1s, FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "nr1s", nr1s, FIRST = .TRUE. )
|
||||||
CALL iotk_write_attr( attr, "nr2s", nr2s )
|
CALL iotk_write_attr( attr, "nr2s", nr2s )
|
||||||
CALL iotk_write_attr( attr, "nr3s", nr3s )
|
CALL iotk_write_attr( attr, "nr3s", nr3s )
|
||||||
CALL iotk_write_empty( iunpun, "SMOOTH_FFT_GRID", attr )
|
CALL iotk_write_empty( iunpun, "SMOOTH_FFT_GRID", ATTR = attr )
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "SMOOTH_GVECT_NUMBER", ngms_g )
|
CALL iotk_write_dat( iunpun, "SMOOTH_GVECT_NUMBER", ngms_g )
|
||||||
!
|
!
|
||||||
|
@ -646,16 +646,16 @@ MODULE xml_io_base
|
||||||
CALL iotk_link( iunpun, "G-VECTORS_FILE", &
|
CALL iotk_link( iunpun, "G-VECTORS_FILE", &
|
||||||
"gvectors.dat", CREATE = .TRUE., BINARY = .TRUE. )
|
"gvectors.dat", CREATE = .TRUE., BINARY = .TRUE. )
|
||||||
!
|
!
|
||||||
CALL iotk_write_begin( iunpun, "G-VECTORS", attr = attr )
|
CALL iotk_write_begin( iunpun, "G-VECTORS", ATTR = attr )
|
||||||
CALL iotk_write_dat( iunpun, "g", itmp(1:3,1:ngm_g), FMT = "(3I5)" )
|
CALL iotk_write_dat( iunpun, "g", itmp(1:3,1:ngm_g), COLUMNS = 3 )
|
||||||
CALL iotk_write_end( iunpun, "G-VECTORS" )
|
CALL iotk_write_end( iunpun, "G-VECTORS" )
|
||||||
!
|
!
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "nr1b", nr1b , first = .TRUE. )
|
CALL iotk_write_attr( attr, "nr1b", nr1b , FIRST = .TRUE. )
|
||||||
CALL iotk_write_attr( attr, "nr2b", nr2b )
|
CALL iotk_write_attr( attr, "nr2b", nr2b )
|
||||||
CALL iotk_write_attr( attr, "nr3b", nr3b )
|
CALL iotk_write_attr( attr, "nr3b", nr3b )
|
||||||
CALL iotk_write_empty( iunpun, "SMALLBOX_FFT_GRID", attr )
|
CALL iotk_write_empty( iunpun, "SMALLBOX_FFT_GRID", ATTR = attr )
|
||||||
!
|
!
|
||||||
CALL iotk_write_end( iunpun, "PLANE_WAVES" )
|
CALL iotk_write_end( iunpun, "PLANE_WAVES" )
|
||||||
!
|
!
|
||||||
|
@ -801,7 +801,7 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "NUMBER_OF_K-POINTS", num_k_points )
|
CALL iotk_write_dat( iunpun, "NUMBER_OF_K-POINTS", num_k_points )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "2 pi / a", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "2 pi / a", FIRST = .TRUE. )
|
||||||
CALL iotk_write_empty( iunpun, "UNITS_FOR_K-POINTS", attr )
|
CALL iotk_write_empty( iunpun, "UNITS_FOR_K-POINTS", attr )
|
||||||
!
|
!
|
||||||
DO ik = 1, num_k_points
|
DO ik = 1, num_k_points
|
||||||
|
@ -831,7 +831,7 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "NUMBER_OF_MODES", modenum )
|
CALL iotk_write_dat( iunpun, "NUMBER_OF_MODES", modenum )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "2 pi / a", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "2 pi / a", FIRST = .TRUE. )
|
||||||
CALL iotk_write_empty( iunpun, "UNITS_FOR_Q-POINT", attr )
|
CALL iotk_write_empty( iunpun, "UNITS_FOR_Q-POINT", attr )
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "Q-POINT", xqq(:) )
|
CALL iotk_write_dat( iunpun, "Q-POINT", xqq(:) )
|
||||||
|
@ -843,7 +843,7 @@ MODULE xml_io_base
|
||||||
! ... methods to write and read charge_density
|
! ... methods to write and read charge_density
|
||||||
!
|
!
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
SUBROUTINE write_rho_xml( rho_file, rho, &
|
SUBROUTINE write_rho_xml( rho_file_base, rho, &
|
||||||
nr1, nr2, nr3, nr1x, nr2x, ipp, npp )
|
nr1, nr2, nr3, nr1x, nr2x, ipp, npp )
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
!
|
!
|
||||||
|
@ -862,22 +862,22 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
INTEGER, INTENT(IN) :: nr1, nr2, nr3
|
INTEGER, INTENT(IN) :: nr1, nr2, nr3
|
||||||
INTEGER, INTENT(IN) :: nr1x, nr2x
|
INTEGER, INTENT(IN) :: nr1x, nr2x
|
||||||
CHARACTER(LEN=*), INTENT(IN) :: rho_file
|
CHARACTER(LEN=*), INTENT(IN) :: rho_file_base
|
||||||
|
|
||||||
REAL(DP), INTENT(IN) :: rho(:)
|
REAL(DP), INTENT(IN) :: rho(:)
|
||||||
INTEGER, OPTIONAL, INTENT(IN) :: ipp(:)
|
INTEGER, OPTIONAL, INTENT(IN) :: ipp(:)
|
||||||
INTEGER, OPTIONAL, INTENT(IN) :: npp(:)
|
INTEGER, OPTIONAL, INTENT(IN) :: npp(:)
|
||||||
!
|
!
|
||||||
INTEGER :: ierr, i, j, k, kk, ldr, ip
|
INTEGER :: ierr, i, j, k, kk, ldr, ip
|
||||||
INTEGER :: ierr_iotk
|
CHARACTER(LEN=256) :: rho_file
|
||||||
CHARACTER(LEN=iotk_attlenx) :: attr
|
REAL(DP), ALLOCATABLE :: rho_plane(:)
|
||||||
REAL(DP), ALLOCATABLE :: rho_plane(:)
|
INTEGER, ALLOCATABLE :: kowner(:)
|
||||||
INTEGER, ALLOCATABLE :: kowner(:)
|
|
||||||
!
|
!
|
||||||
!
|
!
|
||||||
|
rho_file = TRIM( rho_file_base ) // '.xml'
|
||||||
|
!
|
||||||
IF ( ionode ) &
|
IF ( ionode ) &
|
||||||
CALL iotk_open_write( rhounit, &
|
CALL iotk_open_write( rhounit, &
|
||||||
FILE = rho_file, BINARY = .FALSE., ierr = ierr )
|
FILE = rho_file, BINARY = .FALSE., IERR = ierr )
|
||||||
!
|
!
|
||||||
CALL mp_bcast( ierr, ionode_id )
|
CALL mp_bcast( ierr, ionode_id )
|
||||||
!
|
!
|
||||||
|
@ -961,8 +961,8 @@ MODULE xml_io_base
|
||||||
END SUBROUTINE write_rho_xml
|
END SUBROUTINE write_rho_xml
|
||||||
!
|
!
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
SUBROUTINE read_rho_xml( rho_file, rho, &
|
SUBROUTINE read_rho_xml( rho_file_base, rho, &
|
||||||
nr1, nr2, nr3, nr1x, nr2x, ipp, npp )
|
nr1, nr2, nr3, nr1x, nr2x, ipp, npp )
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
!
|
!
|
||||||
! ... Writes charge density rho, one plane at a time.
|
! ... Writes charge density rho, one plane at a time.
|
||||||
|
@ -980,27 +980,27 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
INTEGER, INTENT(IN) :: nr1, nr2, nr3
|
INTEGER, INTENT(IN) :: nr1, nr2, nr3
|
||||||
INTEGER, INTENT(IN) :: nr1x, nr2x
|
INTEGER, INTENT(IN) :: nr1x, nr2x
|
||||||
CHARACTER(LEN=*), INTENT(IN) :: rho_file
|
CHARACTER(LEN=*), INTENT(IN) :: rho_file_base
|
||||||
|
|
||||||
REAL(DP), INTENT(OUT) :: rho(:)
|
REAL(DP), INTENT(OUT) :: rho(:)
|
||||||
INTEGER, OPTIONAL, INTENT(IN) :: ipp(:)
|
INTEGER, OPTIONAL, INTENT(IN) :: ipp(:)
|
||||||
INTEGER, OPTIONAL, INTENT(IN) :: npp(:)
|
INTEGER, OPTIONAL, INTENT(IN) :: npp(:)
|
||||||
!
|
!
|
||||||
INTEGER :: ierr, i, j, k, kk, ldr, ip
|
INTEGER :: ierr, i, j, k, kk, ldr, ip
|
||||||
INTEGER :: nr( 3 )
|
INTEGER :: nr( 3 )
|
||||||
INTEGER :: ierr_iotk
|
CHARACTER(LEN=256) :: rho_file
|
||||||
CHARACTER(LEN=iotk_attlenx) :: attr
|
REAL(DP), ALLOCATABLE :: rho_plane(:)
|
||||||
REAL(DP), ALLOCATABLE :: rho_plane(:)
|
INTEGER, ALLOCATABLE :: kowner(:)
|
||||||
INTEGER, ALLOCATABLE :: kowner(:)
|
|
||||||
!
|
!
|
||||||
!
|
!
|
||||||
|
rho_file = TRIM( rho_file_base ) // '.xml'
|
||||||
|
!
|
||||||
IF ( ionode ) &
|
IF ( ionode ) &
|
||||||
CALL iotk_open_read( rhounit, FILE = TRIM( rho_file ), &
|
CALL iotk_open_read( rhounit, FILE = TRIM( rho_file ), &
|
||||||
BINARY = .FALSE., ierr = ierr )
|
BINARY = .FALSE., IERR = ierr )
|
||||||
!
|
!
|
||||||
CALL mp_bcast( ierr, ionode_id )
|
CALL mp_bcast( ierr, ionode_id )
|
||||||
!
|
!
|
||||||
CALL errore( ' read_rho_xml ', &
|
CALL errore( 'read_rho_xml', &
|
||||||
'cannot open rho_file file for writing', ierr )
|
'cannot open rho_file file for writing', ierr )
|
||||||
!
|
!
|
||||||
IF ( ionode ) THEN
|
IF ( ionode ) THEN
|
||||||
|
@ -1017,9 +1017,8 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
CALL mp_bcast( nr, ionode_id )
|
CALL mp_bcast( nr, ionode_id )
|
||||||
!
|
!
|
||||||
IF( nr1 /= nr( 1 ) .OR. nr2 /= nr( 2 ) .OR. nr3 /= nr( 3 ) ) THEN
|
IF ( nr1 /= nr( 1 ) .OR. nr2 /= nr( 2 ) .OR. nr3 /= nr( 3 ) ) &
|
||||||
CALL errore( ' read_rho_xml ', ' dimensions do not match ', 1 )
|
CALL errore( ' read_rho_xml ', ' dimensions do not match ', 1 )
|
||||||
END IF
|
|
||||||
!
|
!
|
||||||
ALLOCATE( rho_plane( nr1 * nr2 ) )
|
ALLOCATE( rho_plane( nr1 * nr2 ) )
|
||||||
ALLOCATE( kowner( nr3 ) )
|
ALLOCATE( kowner( nr3 ) )
|
||||||
|
@ -1129,8 +1128,6 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
CALL iotk_open_write( iuni, FILE = TRIM( filename ), BINARY = .TRUE. )
|
CALL iotk_open_write( iuni, FILE = TRIM( filename ), BINARY = .TRUE. )
|
||||||
!
|
!
|
||||||
CALL iotk_write_begin( iuni, "K-POINT" // iotk_index( ik ) )
|
|
||||||
!
|
|
||||||
CALL iotk_write_attr( attr, "ngw", ngw, FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "ngw", ngw, FIRST = .TRUE. )
|
||||||
CALL iotk_write_attr( attr, "nbnd", nbnd )
|
CALL iotk_write_attr( attr, "nbnd", nbnd )
|
||||||
CALL iotk_write_attr( attr, "ik", ik )
|
CALL iotk_write_attr( attr, "ik", ik )
|
||||||
|
@ -1162,8 +1159,7 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
ELSE
|
ELSE
|
||||||
!
|
!
|
||||||
CALL mergewf( wf0(:,j), wtmp, ngwl, igl, &
|
CALL mergewf( wf0(:,j), wtmp, ngwl, igl, mpime, nproc, ionode_id )
|
||||||
mpime, nproc, ionode_id )
|
|
||||||
!
|
!
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
|
@ -1172,13 +1168,7 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
END DO
|
END DO
|
||||||
!
|
!
|
||||||
IF ( ionode ) THEN
|
IF ( ionode ) CALL iotk_close_write( iuni )
|
||||||
!
|
|
||||||
CALL iotk_write_end( iuni, "K-POINT" // iotk_index( ik ) )
|
|
||||||
!
|
|
||||||
CALL iotk_close_write( iuni )
|
|
||||||
!
|
|
||||||
END IF
|
|
||||||
!
|
!
|
||||||
DEALLOCATE( wtmp )
|
DEALLOCATE( wtmp )
|
||||||
!
|
!
|
||||||
|
@ -1229,8 +1219,6 @@ MODULE xml_io_base
|
||||||
'cannot open restart file for reading', ierr )
|
'cannot open restart file for reading', ierr )
|
||||||
!
|
!
|
||||||
IF ( ionode ) THEN
|
IF ( ionode ) THEN
|
||||||
!
|
|
||||||
CALL iotk_scan_begin( iuni, "K-POINT" // iotk_index( ik ) )
|
|
||||||
!
|
!
|
||||||
CALL iotk_scan_empty( iuni, "INFO", attr )
|
CALL iotk_scan_empty( iuni, "INFO", attr )
|
||||||
!
|
!
|
||||||
|
@ -1290,13 +1278,7 @@ MODULE xml_io_base
|
||||||
!
|
!
|
||||||
END DO
|
END DO
|
||||||
!
|
!
|
||||||
IF ( ionode ) THEN
|
IF ( ionode ) CALL iotk_close_read( iuni )
|
||||||
!
|
|
||||||
CALL iotk_scan_end( iuni, "K-POINT" // iotk_index( ik ) )
|
|
||||||
!
|
|
||||||
CALL iotk_close_read( iuni )
|
|
||||||
!
|
|
||||||
END IF
|
|
||||||
!
|
!
|
||||||
DEALLOCATE( wtmp )
|
DEALLOCATE( wtmp )
|
||||||
!
|
!
|
||||||
|
|
|
@ -94,7 +94,7 @@ MODULE pw_restart
|
||||||
CHARACTER(LEN=*), INTENT(IN) :: what
|
CHARACTER(LEN=*), INTENT(IN) :: what
|
||||||
!
|
!
|
||||||
CHARACTER(LEN=20) :: dft_name
|
CHARACTER(LEN=20) :: dft_name
|
||||||
CHARACTER(LEN=256) :: dirname, filename, file_pseudo, rho_file
|
CHARACTER(LEN=256) :: dirname, filename, file_pseudo, rho_file_base
|
||||||
CHARACTER(LEN=80) :: bravais_lattice
|
CHARACTER(LEN=80) :: bravais_lattice
|
||||||
INTEGER :: i, ig, ik, ngg,ig_, ierr, ipol, &
|
INTEGER :: i, ig, ik, ngg,ig_, ierr, ipol, &
|
||||||
flen, ik_eff, num_k_points
|
flen, ik_eff, num_k_points
|
||||||
|
@ -353,17 +353,17 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
rho_file = 'charge-density.dat'
|
rho_file_base = 'charge-density'
|
||||||
!
|
!
|
||||||
IF ( ionode ) &
|
IF ( ionode ) &
|
||||||
CALL iotk_link( iunpun, "RHO_FILE", rho_file, &
|
CALL iotk_link( iunpun, "RHO", rho_file_base, &
|
||||||
CREATE = .FALSE., BINARY = .FALSE. )
|
CREATE = .FALSE., BINARY = .FALSE. )
|
||||||
!
|
!
|
||||||
rho_file = TRIM( dirname ) // '/' // TRIM( rho_file )
|
rho_file_base = TRIM( dirname ) // '/' // TRIM( rho_file_base )
|
||||||
!
|
!
|
||||||
IF ( nspin == 1 ) THEN
|
IF ( nspin == 1 ) THEN
|
||||||
!
|
!
|
||||||
CALL write_rho_xml( rho_file, rho(:,1), nr1, &
|
CALL write_rho_xml( rho_file_base, rho(:,1), nr1, &
|
||||||
nr2, nr3, nrx1, nrx2, dfftp%ipp, dfftp%npp )
|
nr2, nr3, nrx1, nrx2, dfftp%ipp, dfftp%npp )
|
||||||
!
|
!
|
||||||
ELSE IF ( nspin == 2 ) THEN
|
ELSE IF ( nspin == 2 ) THEN
|
||||||
|
@ -372,31 +372,31 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
rhosum = rho(:,1) + rho(:,2)
|
rhosum = rho(:,1) + rho(:,2)
|
||||||
!
|
!
|
||||||
CALL write_rho_xml( rho_file, rhosum, nr1, &
|
CALL write_rho_xml( rho_file_base, rhosum, nr1, &
|
||||||
nr2, nr3, nrx1, nrx2, dfftp%ipp, dfftp%npp )
|
nr2, nr3, nrx1, nrx2, dfftp%ipp, dfftp%npp )
|
||||||
!
|
!
|
||||||
DEALLOCATE( rhosum )
|
DEALLOCATE( rhosum )
|
||||||
!
|
!
|
||||||
rho_file = 'charge-density-up.dat'
|
rho_file_base = 'charge-density-up'
|
||||||
!
|
!
|
||||||
IF ( ionode ) &
|
IF ( ionode ) &
|
||||||
CALL iotk_link( iunpun, "RHO_FILE", rho_file, &
|
CALL iotk_link( iunpun, "RHO_UP", rho_file_base, &
|
||||||
CREATE = .FALSE., BINARY = .FALSE. )
|
CREATE = .FALSE., BINARY = .FALSE. )
|
||||||
!
|
!
|
||||||
rho_file = TRIM( dirname ) // '/' // TRIM( rho_file )
|
rho_file_base = TRIM( dirname ) // '/' // TRIM( rho_file_base )
|
||||||
!
|
!
|
||||||
CALL write_rho_xml( rho_file, rho(:,1), &
|
CALL write_rho_xml( rho_file_base, rho(:,1), &
|
||||||
nr1, nr2, nr3, nrx1, nrx2, dfftp%ipp, dfftp%npp )
|
nr1, nr2, nr3, nrx1, nrx2, dfftp%ipp, dfftp%npp )
|
||||||
!
|
!
|
||||||
rho_file = 'charge-density-dw.dat'
|
rho_file_base = 'charge-density-dw'
|
||||||
!
|
!
|
||||||
IF ( ionode ) &
|
IF ( ionode ) &
|
||||||
CALL iotk_link( iunpun, "RHO_FILE", rho_file, &
|
CALL iotk_link( iunpun, "RHO_DW", rho_file_base, &
|
||||||
CREATE = .FALSE., BINARY = .FALSE. )
|
CREATE = .FALSE., BINARY = .FALSE. )
|
||||||
!
|
!
|
||||||
rho_file = TRIM( dirname ) // '/' // TRIM( rho_file )
|
rho_file_base = TRIM( dirname ) // '/' // TRIM( rho_file_base )
|
||||||
!
|
!
|
||||||
CALL write_rho_xml( rho_file, rho(:,2), &
|
CALL write_rho_xml( rho_file_base, rho(:,2), &
|
||||||
nr1, nr2, nr3, nrx1, nrx2, dfftp%ipp, dfftp%npp )
|
nr1, nr2, nr3, nrx1, nrx2, dfftp%ipp, dfftp%npp )
|
||||||
!
|
!
|
||||||
END IF
|
END IF
|
||||||
|
@ -417,7 +417,7 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "NUMBER_OF_BANDS", nbnd )
|
CALL iotk_write_dat( iunpun, "NUMBER_OF_BANDS", nbnd )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "Hartree", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "Hartree", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, "FERMI_ENERGY", ef / e2, ATTR = attr )
|
CALL iotk_write_dat( iunpun, "FERMI_ENERGY", ef / e2, ATTR = attr )
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iunpun, "NUMBER_OF_SPIN_COMPONENTS", nspin )
|
CALL iotk_write_dat( iunpun, "NUMBER_OF_SPIN_COMPONENTS", nspin )
|
||||||
|
@ -433,7 +433,7 @@ MODULE pw_restart
|
||||||
CALL iotk_write_begin( iunpun, &
|
CALL iotk_write_begin( iunpun, &
|
||||||
"K-POINT" // TRIM( iotk_index( ik ) ) )
|
"K-POINT" // TRIM( iotk_index( ik ) ) )
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "2 pi / a", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "2 pi / a", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, &
|
CALL iotk_write_dat( iunpun, &
|
||||||
"K-POINT_COORDS", xk(:,ik), ATTR = attr )
|
"K-POINT_COORDS", xk(:,ik), ATTR = attr )
|
||||||
!
|
!
|
||||||
|
@ -441,7 +441,7 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
IF ( nspin == 2 ) THEN
|
IF ( nspin == 2 ) THEN
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "Hartree", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "Hartree", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, "ET.1", &
|
CALL iotk_write_dat( iunpun, "ET.1", &
|
||||||
et(:,ik) / e2, ATTR = attr )
|
et(:,ik) / e2, ATTR = attr )
|
||||||
!
|
!
|
||||||
|
@ -457,7 +457,7 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
ik_eff = ik + num_k_points
|
ik_eff = ik + num_k_points
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "Hartree", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "Hartree", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, "ET.2", &
|
CALL iotk_write_dat( iunpun, "ET.2", &
|
||||||
et(:,ik_eff) / e2, ATTR = attr )
|
et(:,ik_eff) / e2, ATTR = attr )
|
||||||
!
|
!
|
||||||
|
@ -474,7 +474,7 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
ELSE
|
ELSE
|
||||||
!
|
!
|
||||||
CALL iotk_write_attr( attr, "UNIT", "Hartree", FIRST = .TRUE. )
|
CALL iotk_write_attr( attr, "UNITS", "Hartree", FIRST = .TRUE. )
|
||||||
CALL iotk_write_dat( iunpun, "ET.1", &
|
CALL iotk_write_dat( iunpun, "ET.1", &
|
||||||
et(:,ik) / e2, ATTR = attr )
|
et(:,ik) / e2, ATTR = attr )
|
||||||
!
|
!
|
||||||
|
@ -496,7 +496,7 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
filename = TRIM( wfc_filename( ".", 'gkvectors', ik ) )
|
filename = TRIM( wfc_filename( ".", 'gkvectors', ik ) )
|
||||||
!
|
!
|
||||||
CALL iotk_link( iunpun, "gkvectors", &
|
CALL iotk_link( iunpun, "GK-VECTORS", &
|
||||||
filename, CREATE = .FALSE., BINARY = .TRUE. )
|
filename, CREATE = .FALSE., BINARY = .TRUE. )
|
||||||
!
|
!
|
||||||
filename = TRIM( wfc_filename( dirname, 'gkvectors', ik ) )
|
filename = TRIM( wfc_filename( dirname, 'gkvectors', ik ) )
|
||||||
|
@ -525,7 +525,7 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
filename = TRIM( wfc_filename( ".", 'evc', ik, ispin ) )
|
filename = TRIM( wfc_filename( ".", 'evc', ik, ispin ) )
|
||||||
!
|
!
|
||||||
CALL iotk_link( iunpun, "wfc", filename, &
|
CALL iotk_link( iunpun, "WFC", filename, &
|
||||||
CREATE = .FALSE., BINARY = .TRUE. )
|
CREATE = .FALSE., BINARY = .TRUE. )
|
||||||
!
|
!
|
||||||
filename = TRIM( wfc_filename( dirname, 'evc', ik, ispin ) )
|
filename = TRIM( wfc_filename( dirname, 'evc', ik, ispin ) )
|
||||||
|
@ -550,7 +550,7 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
filename = TRIM( wfc_filename( ".", 'evc', ik, ispin ) )
|
filename = TRIM( wfc_filename( ".", 'evc', ik, ispin ) )
|
||||||
!
|
!
|
||||||
CALL iotk_link( iunpun, "wfc", filename, &
|
CALL iotk_link( iunpun, "WFC", filename, &
|
||||||
CREATE = .FALSE., BINARY = .TRUE. )
|
CREATE = .FALSE., BINARY = .TRUE. )
|
||||||
!
|
!
|
||||||
filename = TRIM( wfc_filename( dirname, 'evc', ik, ispin ) )
|
filename = TRIM( wfc_filename( dirname, 'evc', ik, ispin ) )
|
||||||
|
@ -581,7 +581,7 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
filename = TRIM( wfc_filename( ".", 'evc', ik ) )
|
filename = TRIM( wfc_filename( ".", 'evc', ik ) )
|
||||||
!
|
!
|
||||||
CALL iotk_link( iunpun, "wfc", filename, &
|
CALL iotk_link( iunpun, "WFC", filename, &
|
||||||
CREATE = .FALSE., BINARY = .TRUE. )
|
CREATE = .FALSE., BINARY = .TRUE. )
|
||||||
!
|
!
|
||||||
filename = TRIM( wfc_filename( dirname, 'evc', ik ) )
|
filename = TRIM( wfc_filename( dirname, 'evc', ik ) )
|
||||||
|
@ -681,7 +681,8 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
if ( itmp1(ig) == ig ) THEN
|
if ( itmp1(ig) == ig ) THEN
|
||||||
!
|
!
|
||||||
ngg = ngg + 1
|
ngg = ngg + 1
|
||||||
|
!
|
||||||
igwk(ngg,ik) = ig
|
igwk(ngg,ik) = ig
|
||||||
!
|
!
|
||||||
END IF
|
END IF
|
||||||
|
@ -699,7 +700,7 @@ MODULE pw_restart
|
||||||
!
|
!
|
||||||
CALL iotk_write_dat( iun, "INDEX", igwk(1:ngk_g(ik),ik) )
|
CALL iotk_write_dat( iun, "INDEX", igwk(1:ngk_g(ik),ik) )
|
||||||
CALL iotk_write_dat( iun, "GRID", itmp(1:3,igwk(1:ngk_g(ik),ik)), &
|
CALL iotk_write_dat( iun, "GRID", itmp(1:3,igwk(1:ngk_g(ik),ik)), &
|
||||||
FMT = "(3I5)" )
|
COLUMNS = 3 )
|
||||||
!
|
!
|
||||||
CALL iotk_write_end( iun, "K-POINT" // iotk_index( ik ) )
|
CALL iotk_write_end( iun, "K-POINT" // iotk_index( ik ) )
|
||||||
!
|
!
|
||||||
|
|
Loading…
Reference in New Issue