Skip to content

xiangzhang1-ustc/gen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Workflow automation code for VASP based on Bash. Deprecated by the qchem package.


==Idea==
The script is based on the notion of:
 - modules [ changeable_keyword, nonchangeable_keyword, customized_keyword, othercustomized_keyword ]
 - completeness: in each module, all publevel keywords are compulsorily set by hand, or defaulted to the mandatory value. if something goes unset, you'll definitely know
 - explicit self-consistency: no overwriting is ever allowed. nonchangeable keyword values are fixed, and changeable keyword values cannot be rewritten. if conflicts arrise, you'll definitely now
 - partial logical self-consistency: some logical errors (i.e. isnotmetal+ismetal,hse06+isym=2) is checked
 - portability: through gen.conf.modules,gen.conf.cust,gen.con.othercust,gen.conf.opt_man_modules,gen.conf.kwban,gen.conf.kwnullify, you get to establish, with ease and from scratch/newbie, a module-based command-line quantumchem-input-file-establishing system. Any of them!


==Data structure==
Associative arrays:
modnames[$modname=1/0] #flags   #mod "virtual" collects ckw's and nckw's from cust and othercust. note that module "virtual"'s kw's values are not used at all. only names are used.
$modname_ckw[$kwname=""]        #changeable_keyword                 #are necessary in module, but value changeable, therefore read or overwritten by nckw. still, empty at the start
$modname_nckw[$kwname=$kwval]   #nonchangeable_keyword and value    #are necessary in module, and value fixed (diff wl ckw is confirmation mechanism)
$keywords[$kwname=$kwval]
$nullifiedkw[$kwname=$kwval]    #effective after keyword nullifying takes place

Files: 
gen.conf.modules        =>  module infrastructure (& with cust,othercust...)    =>  $modname:$nckwname=$nckwval,...:$ckwname
gen.conf.cust           =>  customized keywords if modules $ifyes are present   =>  $ifyes:$ifnot:$nckwname=$nckwval,...:$ckwname:1/0   #1 if must, 0 if recommended. 1 comes first!
gen.conf.othercust      =>  script-customized kws if modules $ifyes are present =>  $ifyes:$ifnot:$nckwname:$ckwname[1]:$batchname,...  #$batchname is run if $ifyes !$ifnot
..opt_mand_modules      =>  customizable optional mandatory modules             =>  $sum_act_mod_number1,...:$modname1,...              #active mods summed equals $sum_act_1 or ...
----
[1] for othercust, nckw means 'keywords whose values must be dictated by othercust' and ckw means 'keywords whose values must survive as non-zero but can be changed by anyone'


==Additional feature==
gen.conf.kwban          =>  ban certain value of keywords (or kws) if $ifyes    =>  $ifyes:$ifnot:$kwban_kw=$kwban_kwval:$kwban_kw
gen.conf.kwnullify      =>  nullify certain kw if $ifyes !$ifnot                =>  $ifyes:$ifnot:$kwnullify
gen.conf.check          =>  perform non-complete syntax&semantic check          =>  $ifyes:$ifnot:$batchname,...                        #$batchname is run if $ifyes !$ifnot
gen.conf.postcheck      =>  check after KPOINTS/INCAR/POTCAR writing            =>  $ifyes:$ifnot:$batchname,...                        #$batchname is run if $ifyes !$ifnot

==Usage==
gen [modname] [kwname] [kwval]

==Dependency==
requires makeparam utility in vasp4.X in SCRIPTDIR. makeparam will not work if needed memory > local machine memory.

==Justification==
extreme flexibility requires untyped variables

About

Bash-based VASP input file generation.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages