TABLE OF CONTENTS
::pwtk::neb_refine_artn
SYNOPSIS
proc ::pwtk::neb_refine_artn {args} {
USAGE
::pwtk::neb_refine_artn ?-nebi NEBI? ?HEAD?
WARNING
This command requires QE compiled with the ARTn plugin enabled.
PURPOSE
Refine the neb.x calculated activation energy and TS structure with the ARTn plugin.
If the ARTN_PARAMETERS namelist is undefined or empty, PWTK uses its default (stored in $::pwtk::default_ARTN_PARAMETERS).
This command reads the neb.x energies and structures from the PREFIX.path and PREFIX.crd files, respectively. For the TS, the image with the highest energy is used and this image is refined with the ARTn plugin.
The PREFIX is obtained from the value of the CONTROL 'prefix' variable (if the -nebi option was given, then 'prefix' is taken from the provided input).
OPTION
- -nebi NEBI ... (optional) load the input data from the the NEBI neb.x input file
ARGUMENT
- HEAD ... (optional) the prefix for the ARTn pw.x I/O files, which are named as artn-relax.HEAD.in|out (default = the value of PREFIX, see above)
RETURN VALUE
- The ARTn refined value of the activation energy (in eV)
SOURCE
print ARTn "Refining the neb.x calculated TS with the ARTn plugin\n" set nargmin 0 set nargmax 1 set usage "?-nebi NEBI? ?HEAD?" set options { {nebi.arg {} "neb.x input file"} } parseOpt_ lassign $args head ::pwtk::input::pushpop { if { $opt(nebi) ne {} } { load_fromNEBI $opt(nebi) } set nstep [::pwtk::input::namelistGetVarValue CONTROL nstep] set prefix [::pwtk::input::namelistGetVarValue CONTROL prefix trim] ifset prefix pwscf ifset head $prefix ::pwtk::fileMustExist $prefix.crd "neb.x CRD" ::pwtk::fileMustExist $prefix.path "neb.x PATH" # path info foreach {var value} [::pwtk::path::energies $prefix.path] { set $var $value } set Eact_fwd_neb [expr $::pwtk::ha2ev*($E($iTS) - $E(1))] set Eact_bck_neb [expr $::pwtk::ha2ev*($E($iTS) - $E($nImages))] # input data for ARTn CONTROL " calculation = 'relax' prefix = 'artn.$prefix' " if { $nstep eq {} } { infoMsg "increasing CONTROL's nstep to 400" CONTROL { nstep = 400 } } ATOMIC_POSITIONS_fromCRD $prefix.crd $iTS # if the ARTN_PARAMETERS namelist is empty, use the default if { [::pwtk::input::namelistVars_ ARTN_PARAMETERS] eq {} } { ARTN_PARAMETERS $::pwtk::default_ARTN_PARAMETERS } # run the ARTn pw.x calculation and extract the energy artn on set E(artn.TS) [pwo_totene [runPW artn-relax.$head]] artn off } # N.B. NEB path energies are in Hartrees, hence the factor 2.0 set Eact_fwd_artn [format %.3f [expr $::pwtk::ry2ev*($E(artn.TS) - 2.0*$E(1))]] set Eact_bck_artn [format %.3f [expr $::pwtk::ry2ev*($E(artn.TS) - 2.0*$E($nImages))]] # printout print "Data from the neb.x calculation ($prefix.path):\n\nimage energy (eV)\n" for {set i 1} {$i <= $nImages} {incr i} { print [format "%5i %15.6f" $i [expr $::pwtk::ha2ev*$E($i)]] } print " climbing image = $iTS NEB activation energy (->) = E(TS) - E(IS) = [format %7.3f $Eact_fwd_neb] eV NEB activation energy (<-) = E(TS) - E(FS) = [format %7.3f $Eact_bck_neb] eV Refined values from the ARTNn pw.x calculation: ARTn activation energy (->) = E(TS) - E(IS) = [format %7.3f $Eact_fwd_artn] eV ARTn activation energy (<-) = E(TS) - E(FS) = [format %7.3f $Eact_bck_artn] eV " # plot neb_plot -artn $Eact_fwd_artn artn.$head return $Eact_fwd_artn }