TABLE OF CONTENTS
::pwtk::fast_neb
SYNOPSIS
proc ::pwtk::fast_neb {args} {
USAGE
fast_neb ?-noCI_thr THRESHOLD? ?-fast_thr THRESHOLD? ?-CI_thr THRESHOLD? ?-CI CI_LIST? ?-onlyCI? auto|manual head
PURPOSE
Perform a composite "fast-preliminary + full-precision" NEB calculation, where the fast-preliminary calculation consists of no-CI + CI NEB calculation (CI = climbing-image). To omit the no-CI calculation, use the -onlyCI option.
The 'full-precision' calculation starts from the 'fast-preliminary' results and involves only the CI calculation.
The purpose of 'fast_neb' is to speedup the NEB calculation. The preliminary NEB is peformed with the reduced precision as set by the FASTNEB script.
OPTIONS
- -noCI_thr THRESHOLD ... path threshold for the preliminary fast no-CI NEB calculation if not specified a default preliminary-threshold is used.
- -fast_thr THRESHOLD ... path threshold for the preliminary fast CI NEB calculation; if not specified, the current path_thr is used, but if path_thr is not set, the neb.x default is used.
- -CI_thr THRESHOLD ... path threshold for the full-precision CI-NEB calculation; if not specified, the current path_thr is used, but if path_thr is not set, the neb.x default is used.
- -CI CI_LIST ... list of climbing-images for the CLIMBING_IMAGES card
- -onlyCI ... skip 'no-CI' neb.x calculations, i.e. go direct to 'auto' or 'manual' CI calculation
ARGUMENTS
- mode ... the CI mode (auto or manual)
- head ... the rootname for the I/O files
SIDE EFFECTS
"prefix" and outdir_postfix are set to "head", whereas all other modifications are poped away after complition because both calculations are performed with input_pushpop.
SOURCE
variable noCI_path_thr variable neb_options set narg 2 set usage "?-noCI_thr THRESHOLD? ?-fast_thr THRESHOLD? ?-CI_thr THRESHOLD? ?-CI CI_LIST? ?-onlyCI? auto|manual head" set options [concat $neb_options { {fast_thr.arg {} "CI path-threshold for the preliminary fast CI-NEB calculation"} {CI.arg {} "list of climbing images for the CLIMBING_IMAGES card"} }] ::pwtk::parseOpt_ ::pwtk::checkOType_ -noCI_thr $opt(noCI_thr) {number posreal} "positive real number" ::pwtk::checkOType_ -fast_thr $opt(fast_thr) {number posreal} "positive real number" ::pwtk::checkOType_ -CI_thr $opt(CI_thr) {number posreal} "positive real number" ::pwtk::checkOType_ -CI $opt(CI) {numberlist posint} "list of positive integer numbers" set mode [string trim [lindex $args 0] '] set head [lindex $args 1] printTitle "FAST_NEB composite calculation with CI_scheme = $mode" switch -exact $mode { auto - manual {} default { error "unknown CI_scheme \"$CI_scheme\", must be auto or manual" } } set onlyCI "" if { $opt(onlyCI) } { set onlyCI "-onlyCI" } set fastneb [::pwtk::input::scriptGet FASTNEB] if { $fastneb == {} } { ::pwtk::error "Cannot perform fast_neb calculation, FASTNEB script is missing" 1 } ::pwtk::input::pushpop { print "Preliminary NEB calculations with a lower accuracy: * calculation will be performed in subdirectory: ./fastneb.$head.d/ * path_thr = $opt(fast_thr) * FASTNEB script : $fastneb " eval_in_dir fastneb.$head.d { # the recipe for a speedup is specified in the FASTNEB script eval $fastneb # perform a fast_neb calculation if { $mode eq "auto" } { auto_neb -noCI_thr $opt(noCI_thr) -CI_thr $opt(fast_thr) {*}$onlyCI $head } else { manual_neb -noCI_thr $opt(noCI_thr) -CI_thr $opt(fast_thr) -CI $opt(CI) {*}$onlyCI $head } # create the "initialized" path file in ../ # BEWARE: take care of the PWTK restart mode, i.e., write # the "initialized" path file when restart is off, but if # restart=on, then write it only if fastneb.$head.path is # newer than ../$head.path set write 0 if { ! [file exists ../$head.path] || ! [restart] } { set write 1 } elseif { [file exists ../$head.path] && [file atime $head.path] > [file atime ../$head.path] } { set write 1 } if { $write } { writeFile ../$head.path [::pwtk::path::initialize $head.path] } }; # eval_in_dir }; # ::pwtk::input::pushpop # what is the path_thr (needed for printout) set path_thr $opt(CI_thr) ifempty path_thr { set path_thr [::pwtk::input::namelistGetVarValue PATH path_thr] } print "Performing the full precision CI-NEB calculation * restoring original input data * calculation will be performed in ./ * path_thr = $path_thr\n" # perform the CI-NEB calculation in restart-mode outdir_postfix $head CONTROL " prefix = '$head' " ::pwtk::input::pushpop { PATH [subst { restart_mode = 'restart' CI_scheme = [squote $mode] }] ifnotempty opt(CI_thr) { PATH " path_thr = $opt(CI_thr) " } if { $mode == "manual" && $opt(CI) != {} } { CLIMBING_IMAGES $opt(CI) } runNEB neb.$head.$mode } }