2015-10-28 13:51:11 +01:00
|
|
|
|
#!/usr/bin/env bats
|
|
|
|
|
|
2016-01-05 01:04:46 +01:00
|
|
|
|
# floating point number comparison
|
|
|
|
|
# Compare two numbers ($1, $2) with a given precision ($3)
|
|
|
|
|
# If the numbers are not equal, the exit code is 1 else it is 0
|
2015-10-28 13:51:11 +01:00
|
|
|
|
# So we strip the "-", is the abs value of the poor
|
|
|
|
|
function eq() {
|
2016-01-05 01:04:46 +01:00
|
|
|
|
# awk -v d1=$1 -v d2=$2 -v n1=${1#-} -v n2=${2#-} -v p=$3 'BEGIN{ if ((n1-n2)^2 < p^2) exit 0; { print (d1-d2) " " d1 " " d2 ; exit 1} }'
|
|
|
|
|
declare -a diff
|
|
|
|
|
diff=($(awk -v d1=$1 -v d2=$2 -v n1=${1#-} -v n2=${2#-} -v p=$3 'BEGIN{ if ((n1-n2)^2 < p^2) print 0; print 1 " " (d1-d2) " " d1 " " d2 }'))
|
|
|
|
|
if [[ "${diff[0]}" == "0" ]]
|
|
|
|
|
then
|
|
|
|
|
return 0
|
|
|
|
|
else
|
|
|
|
|
echo "Test : " ${BATS_TEST_DESCRIPTION}
|
|
|
|
|
echo "Error : " ${diff[1]}
|
|
|
|
|
echo "Reference : " ${diff[3]}
|
|
|
|
|
echo "Computed : " ${diff[2]}
|
|
|
|
|
exit 127
|
|
|
|
|
fi
|
2015-10-28 13:51:11 +01:00
|
|
|
|
}
|
|
|
|
|
|
2016-01-05 01:04:46 +01:00
|
|
|
|
#: "${QP_ROOT?Please source your quantum_package.rc}"
|
2015-10-28 13:51:11 +01:00
|
|
|
|
|
2015-10-28 14:46:19 +01:00
|
|
|
|
source ${QP_ROOT}/install/EZFIO/Bash/ezfio.sh
|
2015-10-28 13:51:11 +01:00
|
|
|
|
TEST_DIR=${QP_ROOT}/test/work/
|
|
|
|
|
|
2016-01-05 01:04:46 +01:00
|
|
|
|
mkdir -p "${TEST_DIR}"
|
|
|
|
|
|
|
|
|
|
cd "${TEST_DIR}" || exit 1
|
|
|
|
|
|
|
|
|
|
function debug() {
|
|
|
|
|
echo $@
|
|
|
|
|
$@
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function run_init() {
|
|
|
|
|
cp "${QP_ROOT}/test/input/$1" .
|
|
|
|
|
qp_create_ezfio_from_xyz $1 -o $3 $2
|
|
|
|
|
qp_edit -c $3
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function test_exe() {
|
|
|
|
|
EXE=$(awk "/^$1 / { print \$2 }" < "${QP_ROOT}"/data/executables)
|
|
|
|
|
EXE=$(echo $EXE | sed "s|\$QP_ROOT|$QP_ROOT|")
|
|
|
|
|
if [[ -x "$EXE" ]]
|
|
|
|
|
then
|
|
|
|
|
return 0
|
|
|
|
|
else
|
|
|
|
|
return 127
|
|
|
|
|
fi
|
2015-10-28 13:51:11 +01:00
|
|
|
|
}
|
|
|
|
|
|
2015-10-28 15:11:56 +01:00
|
|
|
|
|
|
|
|
|
|
2016-01-05 01:04:46 +01:00
|
|
|
|
function run_HF() {
|
|
|
|
|
thresh=1.e-8
|
|
|
|
|
test_exe SCF || skip
|
|
|
|
|
ezfio set_file $1
|
|
|
|
|
ezfio set hartree_fock thresh_scf 1.e-10
|
|
|
|
|
qp_run SCF $1
|
2015-10-28 13:51:11 +01:00
|
|
|
|
energy="$(ezfio get hartree_fock energy)"
|
2016-01-05 01:04:46 +01:00
|
|
|
|
eq $energy $2 $thresh
|
2015-10-28 13:51:11 +01:00
|
|
|
|
}
|
|
|
|
|
|
2016-01-05 01:04:46 +01:00
|
|
|
|
function run_FCI() {
|
2016-01-05 01:10:24 +01:00
|
|
|
|
thresh=1.e-5
|
2016-01-05 01:04:46 +01:00
|
|
|
|
test_exe full_ci || skip
|
|
|
|
|
ezfio set_file $1
|
|
|
|
|
ezfio set perturbation do_pt2_end True
|
|
|
|
|
ezfio set determinants n_det_max 2000
|
|
|
|
|
ezfio set determinants threshold_davidson 1.e-10
|
2015-10-28 13:51:11 +01:00
|
|
|
|
|
2016-01-05 01:04:46 +01:00
|
|
|
|
qp_run full_ci $1
|
2015-10-28 13:51:11 +01:00
|
|
|
|
energy="$(ezfio get full_ci energy)"
|
2016-01-05 01:04:46 +01:00
|
|
|
|
eq $energy $2 $thresh
|
2015-10-28 13:51:11 +01:00
|
|
|
|
energy_pt2="$(ezfio get full_ci energy_pt2)"
|
2016-01-05 01:04:46 +01:00
|
|
|
|
eq $energy_pt2 $3 $thresh
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# ================== TESTS =======================
|
|
|
|
|
|
|
|
|
|
@test "init HBO STO-3G" {
|
|
|
|
|
run_init HBO.xyz "-b STO-3G" hbo.ezfio
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@test "SCF HBO STO-3G" {
|
|
|
|
|
run_HF hbo.ezfio -98.8251985678084
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@test "FCI HBO STO-3G" {
|
|
|
|
|
run "SCF HBO STO-3G"
|
2016-01-05 01:10:24 +01:00
|
|
|
|
run_FCI hbo.ezfio -98.965287146032395 -98.966244481929749
|
2016-01-05 01:04:46 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@test "init H2O cc-pVDZ" {
|
|
|
|
|
run_init h2o.xyz "-b cc-pvdz" h2o.ezfio
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@test "SCF H2O cc-pVDZ" {
|
|
|
|
|
run_HF h2o.ezfio -76.0273597128267
|
2015-10-28 13:51:11 +01:00
|
|
|
|
}
|
|
|
|
|
|
2016-01-05 01:04:46 +01:00
|
|
|
|
@test "FCI H2O cc-pVDZ" {
|
|
|
|
|
run "SCF H2O cc-pVDZ"
|
|
|
|
|
run_FCI h2o.ezfio -76.2340571014912 -76.2472677390010
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@test "CAS_SD H2O cc-pVDZ" {
|
|
|
|
|
test_exe cas_sd_selected || skip
|
|
|
|
|
run "SCF H2O cc-pVDZ"
|
|
|
|
|
INPUT=h2o.ezfio
|
|
|
|
|
ezfio set_file $INPUT
|
|
|
|
|
ezfio set perturbation do_pt2_end False
|
2015-10-28 13:51:11 +01:00
|
|
|
|
ezfio set determinants n_det_max 1000
|
2016-01-05 01:04:46 +01:00
|
|
|
|
qp_set_mo_class $INPUT -core "[1]" -inact "[2,5]" -act "[3,4,6,7]" -virt "[8-25]"
|
|
|
|
|
qp_run cas_sd_selected $INPUT
|
2015-10-28 13:51:11 +01:00
|
|
|
|
energy="$(ezfio get cas_sd energy)"
|
2016-01-05 01:04:46 +01:00
|
|
|
|
eq $energy -76.221690798159 1.E-6
|
2015-10-28 13:51:11 +01:00
|
|
|
|
}
|
|
|
|
|
|
2016-01-05 01:04:46 +01:00
|
|
|
|
@test "MRCC H2O cc-pVDZ" {
|
|
|
|
|
test_exe mrcc_cassd || skip
|
|
|
|
|
run "CAS_SD H2O cc-pVDZ"
|
|
|
|
|
INPUT=h2o.ezfio
|
|
|
|
|
ezfio set_file $INPUT
|
|
|
|
|
ezfio set determinants threshold_generators 1.
|
|
|
|
|
ezfio set determinants threshold_selectors 1.
|
|
|
|
|
ezfio set determinants read_wf True
|
|
|
|
|
qp_run mrcc_cassd $INPUT
|
2015-10-28 13:51:11 +01:00
|
|
|
|
energy="$(ezfio get mrcc_cassd energy)"
|
2016-01-05 01:04:46 +01:00
|
|
|
|
eq $energy -76.23072397513540 1.E-3
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@test "init H2O VDZ pseudo" {
|
|
|
|
|
run_init h2o.xyz "-p -b vdz" h2o_pseudo.ezfio
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@test "SCF H2O VDZ pseudo" {
|
|
|
|
|
run_HF h2o_pseudo.ezfio -16.94878419417625
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@test "FCI H2O VDZ pseudo" {
|
|
|
|
|
run_FCI h2o_pseudo.ezfio -17.1593408979096 -17.1699581040506
|
2015-10-28 13:51:11 +01:00
|
|
|
|
}
|
|
|
|
|
|
2016-01-05 01:04:46 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@test "gamess convert HBO.out" {
|
2015-10-28 13:51:11 +01:00
|
|
|
|
cp ${QP_ROOT}/test/input/HBO.out .
|
|
|
|
|
qp_convert_output_to_ezfio.py HBO.out
|
|
|
|
|
ezfio set_file HBO.out.ezfio
|
2016-01-05 01:04:46 +01:00
|
|
|
|
qp_run SCF HBO.out.ezfio
|
|
|
|
|
# Check energy
|
2015-10-28 13:51:11 +01:00
|
|
|
|
energy="$(ezfio get hartree_fock energy)"
|
2016-01-05 01:04:46 +01:00
|
|
|
|
eq $energy -100.0185822590964 1.e-10
|
2015-10-28 13:51:11 +01:00
|
|
|
|
}
|
2016-01-05 01:04:46 +01:00
|
|
|
|
|
|
|
|
|
@test "g09 convert H2O.log" {
|
|
|
|
|
cp ${QP_ROOT}/test/input/h2o.log .
|
|
|
|
|
qp_convert_output_to_ezfio.py h2o.log
|
|
|
|
|
ezfio set_file h2o.log.ezfio
|
|
|
|
|
qp_run SCF h2o.log.ezfio
|
|
|
|
|
# Check energy
|
|
|
|
|
energy="$(ezfio get hartree_fock energy)"
|
|
|
|
|
eq $energy -76.0270218704265 1E-10
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2016-01-05 01:10:24 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO N_int = 1,2,3,4,5
|
|
|
|
|
# TODO mod(64) MOs
|
|
|
|
|
# TODO All G2 SCF energies
|
|
|
|
|
# TODO Long and short tests
|
|
|
|
|
|