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:
sbraccia 2006-01-04 01:31:41 +00:00
parent e3e9e215ca
commit e8d138642f
3 changed files with 84 additions and 101 deletions

View File

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

View File

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

View File

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