mirror of https://gitlab.com/QEF/q-e.git
Fixed some bugs in the restarting procedure of meta-dynamics. C.S.
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2570 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
4984105ba9
commit
2c472f1a67
|
@ -324,7 +324,7 @@ SUBROUTINE metadyn()
|
||||||
USE io_files, ONLY : iunmeta, iunaxsf, scradir
|
USE io_files, ONLY : iunmeta, iunaxsf, scradir
|
||||||
USE metadyn_vars, ONLY : fe_grad, new_target, to_target, metadyn_fmt, &
|
USE metadyn_vars, ONLY : fe_grad, new_target, to_target, metadyn_fmt, &
|
||||||
to_new_target, fe_step, metadyn_history, &
|
to_new_target, fe_step, metadyn_history, &
|
||||||
max_metadyn_iter, starting_metadyn_iter, &
|
max_metadyn_iter, first_metadyn_iter, &
|
||||||
fe_nstep, shake_nstep, dfe_acc, gaussian_pos
|
fe_nstep, shake_nstep, dfe_acc, gaussian_pos
|
||||||
USE metadyn_base, ONLY : add_gaussians, evolve_collective_vars
|
USE metadyn_base, ONLY : add_gaussians, evolve_collective_vars
|
||||||
USE metadyn_io, ONLY : write_axsf_file, write_metadyn_restart
|
USE metadyn_io, ONLY : write_axsf_file, write_metadyn_restart
|
||||||
|
@ -381,7 +381,7 @@ SUBROUTINE metadyn()
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
tfor = .TRUE.
|
tfor = .TRUE.
|
||||||
iter = starting_metadyn_iter
|
iter = first_metadyn_iter
|
||||||
!
|
!
|
||||||
metadyn_loop: DO
|
metadyn_loop: DO
|
||||||
!
|
!
|
||||||
|
|
|
@ -119,7 +119,7 @@ SUBROUTINE cpr_loop( nloop )
|
||||||
!
|
!
|
||||||
IF ( lmetadyn ) THEN
|
IF ( lmetadyn ) THEN
|
||||||
!
|
!
|
||||||
CALL metadyn_init( tau )
|
CALL metadyn_init( 'CP', tau )
|
||||||
!
|
!
|
||||||
CALL metadyn()
|
CALL metadyn()
|
||||||
!
|
!
|
||||||
|
|
|
@ -34,31 +34,34 @@ MODULE metadyn_base
|
||||||
CONTAINS
|
CONTAINS
|
||||||
!
|
!
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
SUBROUTINE metadyn_init( tau )
|
SUBROUTINE metadyn_init( progname, tau )
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
!
|
!
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE input_parameters, ONLY : restart_mode
|
USE input_parameters, ONLY : restart_mode
|
||||||
USE constraints_module, ONLY : nconstr, target
|
USE constraints_module, ONLY : nconstr, target
|
||||||
USE control_flags, ONLY : nstep
|
USE control_flags, ONLY : nstep, ndr
|
||||||
USE constants, ONLY : bohr_radius_angs
|
USE constants, ONLY : bohr_radius_angs
|
||||||
USE cell_base, ONLY : at, alat
|
USE cell_base, ONLY : at, alat
|
||||||
USE metadyn_vars, ONLY : fe_grad, g_amplitude, max_metadyn_iter, &
|
USE metadyn_vars, ONLY : fe_grad, g_amplitude, max_metadyn_iter, &
|
||||||
metadyn_history, metadyn_fmt, fe_step, &
|
metadyn_history, metadyn_fmt, fe_step, &
|
||||||
starting_metadyn_iter, gaussian_pos
|
first_metadyn_iter, gaussian_pos
|
||||||
USE metadyn_io, ONLY : read_metadyn_restart
|
USE metadyn_io, ONLY : read_metadyn_restart
|
||||||
USE parser, ONLY : delete_if_present, int_to_char
|
USE parser, ONLY : delete_if_present, int_to_char
|
||||||
USE io_files, ONLY : tmp_dir, prefix, iunaxsf, iunmeta
|
USE io_files, ONLY : tmp_dir, scradir, prefix, iunaxsf, iunmeta
|
||||||
USE io_global, ONLY : stdout, ionode, ionode_id
|
USE io_global, ONLY : stdout, ionode, ionode_id
|
||||||
USE mp, ONLY : mp_bcast
|
USE mp, ONLY : mp_bcast
|
||||||
|
USE xml_io_base, ONLY : restart_dir
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
|
CHARACTER(LEN=*), INTENT(IN) :: progname
|
||||||
REAL(DP), INTENT(INOUT) :: tau(:,:)
|
REAL(DP), INTENT(INOUT) :: tau(:,:)
|
||||||
!
|
!
|
||||||
INTEGER :: idum, i
|
INTEGER :: idum, i
|
||||||
REAL(DP) :: rdum
|
REAL(DP) :: rdum
|
||||||
LOGICAL :: file_exists
|
LOGICAL :: file_exists
|
||||||
|
CHARACTER(LEN=256) :: dirname
|
||||||
CHARACTER(LEN=4) :: c_nconstr
|
CHARACTER(LEN=4) :: c_nconstr
|
||||||
CHARACTER(LEN=16) :: fe_step_fmt
|
CHARACTER(LEN=16) :: fe_step_fmt
|
||||||
!
|
!
|
||||||
|
@ -116,13 +119,28 @@ MODULE metadyn_base
|
||||||
!
|
!
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
starting_metadyn_iter = 0
|
first_metadyn_iter = 0
|
||||||
!
|
!
|
||||||
ELSE
|
ELSE
|
||||||
!
|
!
|
||||||
! ... restarting from file
|
! ... restarting from file
|
||||||
!
|
!
|
||||||
CALL read_metadyn_restart( tmp_dir, tau, alat )
|
IF ( progname == 'PW' ) THEN
|
||||||
|
!
|
||||||
|
dirname = TRIM( tmp_dir ) // TRIM( prefix ) // '.new-save'
|
||||||
|
!
|
||||||
|
ELSE IF ( progname == 'CP' ) THEN
|
||||||
|
!
|
||||||
|
dirname = restart_dir( scradir, ndr )
|
||||||
|
!
|
||||||
|
ELSE
|
||||||
|
!
|
||||||
|
CALL errore( 'metadyn_init', &
|
||||||
|
'wrong calling program: ' // TRIM( progname ), 1 )
|
||||||
|
!
|
||||||
|
END IF
|
||||||
|
!
|
||||||
|
CALL read_metadyn_restart( dirname, tau, alat )
|
||||||
!
|
!
|
||||||
IF ( ionode ) THEN
|
IF ( ionode ) THEN
|
||||||
!
|
!
|
||||||
|
@ -135,7 +153,7 @@ MODULE metadyn_base
|
||||||
!
|
!
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
IF ( starting_metadyn_iter == max_metadyn_iter ) THEN
|
IF ( first_metadyn_iter == max_metadyn_iter ) THEN
|
||||||
!
|
!
|
||||||
WRITE( stdout, '(/,5X,"Simulation already completed",/)' )
|
WRITE( stdout, '(/,5X,"Simulation already completed",/)' )
|
||||||
!
|
!
|
||||||
|
|
|
@ -158,7 +158,7 @@ MODULE metadyn_io
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
!
|
!
|
||||||
USE metadyn_vars, ONLY : g_amplitude, gaussian_pos, fe_grad, &
|
USE metadyn_vars, ONLY : g_amplitude, gaussian_pos, fe_grad, &
|
||||||
metadyn_history, starting_metadyn_iter
|
metadyn_history, first_metadyn_iter
|
||||||
USE constraints_module, ONLY : nconstr, target
|
USE constraints_module, ONLY : nconstr, target
|
||||||
USE io_global, ONLY : ionode, ionode_id
|
USE io_global, ONLY : ionode, ionode_id
|
||||||
USE mp, ONLY : mp_bcast
|
USE mp, ONLY : mp_bcast
|
||||||
|
@ -185,7 +185,7 @@ MODULE metadyn_io
|
||||||
'no free units to read the restart file', ierr )
|
'no free units to read the restart file', ierr )
|
||||||
!
|
!
|
||||||
filename = TRIM( dirname ) // &
|
filename = TRIM( dirname ) // &
|
||||||
& '/meta-dynamics' // '/' // "metadyn-descriptor.xml"
|
& '/meta-dynamics/' // "metadyn-descriptor.xml"
|
||||||
!
|
!
|
||||||
! ... descriptor file
|
! ... descriptor file
|
||||||
!
|
!
|
||||||
|
@ -195,7 +195,8 @@ MODULE metadyn_io
|
||||||
!
|
!
|
||||||
CALL mp_bcast( ierr, ionode_id )
|
CALL mp_bcast( ierr, ionode_id )
|
||||||
!
|
!
|
||||||
CALL errore( 'read_metadyn_restart', 'restart file not found', ierr )
|
CALL errore( 'read_metadyn_restart', &
|
||||||
|
'restart file ' // TRIM( filename ) // ' not found', ierr )
|
||||||
!
|
!
|
||||||
IF ( ionode ) THEN
|
IF ( ionode ) THEN
|
||||||
!
|
!
|
||||||
|
@ -213,9 +214,9 @@ MODULE metadyn_io
|
||||||
!
|
!
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
CALL iotk_scan_dat( iunit, "STEP", starting_metadyn_iter )
|
CALL iotk_scan_dat( iunit, "STEP", first_metadyn_iter )
|
||||||
!
|
!
|
||||||
DO i = 1, starting_metadyn_iter
|
DO i = 1, first_metadyn_iter
|
||||||
!
|
!
|
||||||
tag = "ITERATION" // TRIM( iotk_index( i ) )
|
tag = "ITERATION" // TRIM( iotk_index( i ) )
|
||||||
!
|
!
|
||||||
|
@ -234,7 +235,7 @@ MODULE metadyn_io
|
||||||
!
|
!
|
||||||
CALL iotk_open_read( iunit, FILE = filename )
|
CALL iotk_open_read( iunit, FILE = filename )
|
||||||
!
|
!
|
||||||
tag = "ITERATION" // TRIM( iotk_index( starting_metadyn_iter ) )
|
tag = "ITERATION" // TRIM( iotk_index( first_metadyn_iter ) )
|
||||||
!
|
!
|
||||||
CALL iotk_scan_begin( iunit, TRIM( tag ) )
|
CALL iotk_scan_begin( iunit, TRIM( tag ) )
|
||||||
!
|
!
|
||||||
|
@ -265,7 +266,7 @@ MODULE metadyn_io
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
CALL mp_bcast( nconstr, ionode_id )
|
CALL mp_bcast( nconstr, ionode_id )
|
||||||
CALL mp_bcast( starting_metadyn_iter, ionode_id )
|
CALL mp_bcast( first_metadyn_iter, ionode_id )
|
||||||
CALL mp_bcast( metadyn_history, ionode_id )
|
CALL mp_bcast( metadyn_history, ionode_id )
|
||||||
CALL mp_bcast( tau, ionode_id )
|
CALL mp_bcast( tau, ionode_id )
|
||||||
CALL mp_bcast( target, ionode_id )
|
CALL mp_bcast( target, ionode_id )
|
||||||
|
|
|
@ -40,7 +40,9 @@ MODULE metadyn_vars
|
||||||
!
|
!
|
||||||
REAL(DP) :: g_amplitude
|
REAL(DP) :: g_amplitude
|
||||||
!
|
!
|
||||||
INTEGER :: starting_metadyn_iter
|
INTEGER :: first_metadyn_iter
|
||||||
|
INTEGER :: first_fe_iter
|
||||||
|
INTEGER :: first_shake_iter
|
||||||
!
|
!
|
||||||
CHARACTER(LEN=80) :: metadyn_fmt
|
CHARACTER(LEN=80) :: metadyn_fmt
|
||||||
!
|
!
|
||||||
|
|
|
@ -421,7 +421,7 @@ SUBROUTINE metadyn()
|
||||||
USE io_files, ONLY : iunaxsf, iunmeta, prefix, tmp_dir
|
USE io_files, ONLY : iunaxsf, iunmeta, prefix, tmp_dir
|
||||||
USE metadyn_vars, ONLY : fe_grad, new_target, to_target, metadyn_fmt, &
|
USE metadyn_vars, ONLY : fe_grad, new_target, to_target, metadyn_fmt, &
|
||||||
to_new_target, fe_step, metadyn_history, &
|
to_new_target, fe_step, metadyn_history, &
|
||||||
max_metadyn_iter, starting_metadyn_iter, &
|
max_metadyn_iter, first_metadyn_iter, &
|
||||||
gaussian_pos
|
gaussian_pos
|
||||||
USE metadyn_base, ONLY : add_gaussians, evolve_collective_vars
|
USE metadyn_base, ONLY : add_gaussians, evolve_collective_vars
|
||||||
USE metadyn_io, ONLY : write_axsf_file, write_metadyn_restart
|
USE metadyn_io, ONLY : write_axsf_file, write_metadyn_restart
|
||||||
|
@ -438,7 +438,7 @@ SUBROUTINE metadyn()
|
||||||
!
|
!
|
||||||
dirname = TRIM( tmp_dir ) // TRIM( prefix ) // '.new-save'
|
dirname = TRIM( tmp_dir ) // TRIM( prefix ) // '.new-save'
|
||||||
!
|
!
|
||||||
iter = starting_metadyn_iter
|
iter = first_metadyn_iter
|
||||||
!
|
!
|
||||||
metadyn_loop: DO
|
metadyn_loop: DO
|
||||||
!
|
!
|
||||||
|
|
|
@ -81,8 +81,6 @@ PROGRAM pwscf
|
||||||
CALL stop_run( conv_path )
|
CALL stop_run( conv_path )
|
||||||
!
|
!
|
||||||
ELSE
|
ELSE
|
||||||
!
|
|
||||||
CALL init_run()
|
|
||||||
!
|
!
|
||||||
istep = 0
|
istep = 0
|
||||||
!
|
!
|
||||||
|
@ -90,11 +88,15 @@ PROGRAM pwscf
|
||||||
!
|
!
|
||||||
! ... meta-dynamics
|
! ... meta-dynamics
|
||||||
!
|
!
|
||||||
CALL metadyn_init( tau )
|
CALL metadyn_init( 'PW', tau )
|
||||||
|
!
|
||||||
|
CALL init_run()
|
||||||
!
|
!
|
||||||
CALL metadyn()
|
CALL metadyn()
|
||||||
!
|
!
|
||||||
ELSE
|
ELSE
|
||||||
|
!
|
||||||
|
CALL init_run()
|
||||||
!
|
!
|
||||||
main_loop: DO
|
main_loop: DO
|
||||||
!
|
!
|
||||||
|
|
Loading…
Reference in New Issue