9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-12-21 11:03:29 +01:00
qp2/bin/qp_reset

121 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
#
# Resets parts of the EZFIO directory.
#
# Wed Jan 16 16:50:36 CET 2019
#
# Check the QP_ROOT directory
if [[ -z ${QP_ROOT} ]] ; then
echo "The QP_ROOT environment variable is not set."
echo "Please reload the quantum_package.rc file."
exit 1
fi
source ${QP_ROOT}/quantum_package.rc
TEMP=$(getopt -o adhm -l all,dets,help,mos -n $0 -- "$@") || exit 1
eval set -- "$TEMP"
function help() {
cat << EOF
This command resets parts of the EZFIO directory.
Usage:
$(basename $0) [OPTIONS] EZFIO_DIR
Arguments:
EZFIO_DIR EZFIO directory
Options:
-a --all Reset to the state after qp_create
-d --dets Deletes the determinants and CI coefficients
-h --help Prints the help message
-m --mos Deletes the MOs
Examples:
To delete the complete set of determinants and CI coefficients:
$(basename $0) --dets h2o.ezfio
To delete the molecular orbitals (implies -dets):
$(basename $0) --mos h2o.ezfio
EOF
exit 0
}
function error() {
>&2 echo "$(basename $0): $@"
exit 2
}
dets=0
mos=0
while true ; do
case "$1" in
-a|--all)
dets=1
mos=1
;;
-d|--dets)
dets=1
;;
-m|--mos)
mos=1
;;
-h|-help|--help)
help
exit 0;;
--) shift ; break ;;
*)
error $(basename $0)": unknown option $1, try --help"
exit 2;;
esac
shift
done
if [[ -z $1 ]] ; then
help
error "EZFIO directory not specified"
fi
if [[ ! -d $1 ]] ; then
error "EZFIO directory not found"
fi
ezfio=$1
qp set_file $ezfio
if [[ $dets -eq 1 ]] ; then
rm --force -- ${ezfio}/determinants/n_det
rm --force -- ${ezfio}/determinants/psi_{det,coef}.gz
rm --force -- ${ezfio}/determinants/n_det_qp_edit
rm --force -- ${ezfio}/determinants/psi_{det,coef}_qp_edit.gz
fi
if [[ $mos -eq 1 ]] ; then
if [[ -f ${ezfio}/mo_basis/mo_class.gz ]] && [[ $(qp get mo_basis mo_num) -ne \
$(zcat ${ezfio}/mo_basis/mo_class.gz |grep Active | wc -l) ]] ; then
echo "Warning: You will need to re-define the MO classes"
fi
rm --recursive --force -- ${ezfio}/mo_basis
rm --recursive --force -- ${ezfio}/work/mo_ints_*
fi
qp_edit --check ${ezfio}
if [[ $mos -eq 1 ]] ; then
qp set mo_two_e_ints io_mo_two_e_integrals None
qp set mo_one_e_ints io_mo_integrals_n_e None
qp set mo_one_e_ints io_mo_integrals_kinetic None
qp set mo_one_e_ints io_mo_integrals_pseudo None
qp set mo_one_e_ints io_mo_one_e_integrals None
fi