From 6352e442ca046e62268535d698489cf232b55b7c Mon Sep 17 00:00:00 2001 From: Emmanuel Giner Date: Tue, 9 Apr 2019 16:03:54 +0200 Subject: [PATCH] added qp_set_frozen_large_core --- bin/qp_set_frozen_large_core | 79 ++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100755 bin/qp_set_frozen_large_core diff --git a/bin/qp_set_frozen_large_core b/bin/qp_set_frozen_large_core new file mode 100755 index 00000000..cce5ca70 --- /dev/null +++ b/bin/qp_set_frozen_large_core @@ -0,0 +1,79 @@ +#!/usr/bin/env python2 + + +""" +Automatically finds n, the number of core electrons. Calls qp_set_mo_class +setting all MOs as Active, except the n/2 first ones which are set as Core. +If pseudo-potentials are used, all the MOs are set as Active. + + + +Usage: + qp_set_frozen_core [-q|--query] EZFIO_DIR + +Options: + -q --query Prints in the standard output the number of frozen MOs + +""" + +import os +import sys +import os.path + +try: + import qp_path +except ImportError: + print "source .quantum_package.rc" + raise + +from docopt import docopt +from ezfio import ezfio + + +def main(arguments): + """Main function""" + + filename = arguments["EZFIO_DIR"] + ezfio.set_filename(filename) + + n_frozen = 0 + try: + do_pseudo = ezfio.pseudo_do_pseudo + except: + do_pseudo = False + + if not do_pseudo: + for charge in ezfio.nuclei_nucl_charge: + if charge <= 2: + pass + elif charge <= 10: + n_frozen += 1 + elif charge <= 18: + n_frozen += 5 + elif charge <= 36: + n_frozen += 9 + elif charge <= 54: + n_frozen += 18 + elif charge <= 86: + n_frozen += 27 + elif charge <= 118: + n_frozen += 43 + + mo_num = ezfio.mo_basis_mo_num + + if arguments["--query"]: + print n_frozen + sys.exit(0) + + if n_frozen == 0: + os.system("""qp_set_mo_class -a "[1-%d]" %s""" % + (mo_num, sys.argv[1])) + else: + os.system("""qp_set_mo_class -c "[1-%d]" -a "[%d-%d]" %s""" % + (n_frozen, n_frozen+1, mo_num, sys.argv[1])) + + + +if __name__ == '__main__': + ARGUMENTS = docopt(__doc__) + main(ARGUMENTS)