lammps/tools/msi2lmp/test/runtests.sh

162 lines
5.8 KiB
Bash
Executable File

#!/bin/sh
MSI2LMP_LIBRARY=../frc_files
VALGRIND='valgrind -v --track-origins=yes --show-reachable=yes --leak-check=full'
MSI2LMP=../src/msi2lmp.exe
LAMMPS=../../../src/lmp_serial
CHECKDATA=./data-compare.pl
if [ ! -x $MSI2LMP ]
then
echo "No executable $MSI2LMP"
exit 1
fi
if [ ! -d $MSI2LMP_LIBRARY ]
then
echo "No directory $MSI2LMP_LIBRARY"
exit 1
fi
if [ ! -x $LAMMPS ]
then
echo "No executable $LAMMPS"
exit 1
fi
verbose=1
counter=0
errors=0
# Class1 tests with cvff
for m in hydrogen water h2-h2o ethane benzene naphthalene cnt-hexagonal crambin nylon phen3_cff97 hap_crystal
do \
before=$errors
vglog=${m}-class1.chk
${VALGRIND} --log-file=${vglog} \
${MSI2LMP} ${m}-class1 -c 1 -p ${verbose} \
|| errors=$(expr $errors + 1)
${LAMMPS} -log none -screen none -in in.${m}-class1 \
|| errors=$(expr $errors + 1)
${CHECKDATA} ${m}-class1.data reference/${m}-class1.data \
|| errors=$(expr $errors + 1)
${CHECKDATA} ${m}-class1.data2 reference/${m}-class1.data2 \
|| errors=$(expr $errors + 1)
[ $before -eq $errors ] && rm ${m}-class1.data ${m}-class1.data2 log.${m}-class1
leak=$(awk '/in use at exit:/ {num=$6;} END {print num;}' $vglog)
[ $leak != 0 ] && echo "Memory still used: $leak" \
&& errors=$(expr $errors + 1)
viol=$(awk '/ERROR SUMMARY/ {num=$4;} END {print num;}' $vglog)
[ $viol != 0 ] && echo "Valgrind errors: $viol" \
&& errors=$(expr $errors + 1)
[ $leak = 0 ] && [ $viol = 0 ] && rm ${vglog}
counter=$(expr $counter + 6)
done
# Class1 tests with clayff
for m in PyAC_bulk
do \
before=$errors
vglog=${m}-clayff.chk
${VALGRIND} --log-file=${vglog} \
${MSI2LMP} ${m}-clayff -c 1 -p ${verbose} -f clayff -n \
|| errors=$(expr $errors + 1)
${LAMMPS} -log none -screen none -in in.${m}-clayff \
|| errors=$(expr $errors + 1)
${CHECKDATA} ${m}-clayff.data reference/${m}-clayff.data \
|| errors=$(expr $errors + 1)
${CHECKDATA} ${m}-clayff.data2 reference/${m}-clayff.data2 \
|| errors=$(expr $errors + 1)
[ $before -eq $errors ] && rm ${m}-clayff.data ${m}-clayff.data2 log.${m}-clayff
leak=$(awk '/in use at exit:/ {num=$6;} END {print num;}' $vglog)
[ $leak != 0 ] && echo "Memory still used: $leak" \
&& errors=$(expr $errors + 1)
viol=$(awk '/ERROR SUMMARY/ {num=$4;} END {print num;}' $vglog)
[ $viol != 0 ] && echo "Valgrind errors: $viol" \
&& errors=$(expr $errors + 1)
[ $leak = 0 ] && [ $viol = 0 ] && rm ${vglog}
counter=$(expr $counter + 6)
done
# OPLS-AA tests
for m in ethane decane
do \
before=$errors
vglog=${m}-oplsaa.chk
${VALGRIND} --log-file=${vglog} \
${MSI2LMP} ${m}-oplsaa -c 0 -p ${verbose} -f oplsaa -n \
|| errors=$(expr $errors + 1)
${LAMMPS} -log none -screen none -in in.${m}-oplsaa \
|| errors=$(expr $errors + 1)
${CHECKDATA} ${m}-oplsaa.data reference/${m}-oplsaa.data \
|| errors=$(expr $errors + 1)
${CHECKDATA} ${m}-oplsaa.data2 reference/${m}-oplsaa.data2 \
|| errors=$(expr $errors + 1)
[ $before -eq $errors ] && rm ${m}-oplsaa.data ${m}-oplsaa.data2 log.${m}-oplsaa
leak=$(awk '/in use at exit:/ {num=$6;} END {print num;}' $vglog)
[ $leak != 0 ] && echo "Memory still used: $leak" \
&& errors=$(expr $errors + 1)
viol=$(awk '/ERROR SUMMARY/ {num=$4;} END {print num;}' $vglog)
[ $viol != 0 ] && echo "Valgrind errors: $viol" \
&& errors=$(expr $errors + 1)
[ $leak = 0 ] && [ $viol = 0 ] && rm ${vglog}
counter=$(expr $counter + 6)
done
# Class2 tests with compass
for m in hydrogen ethane benzene naphthalene cnt-hexagonal
do \
before=$errors
vglog=${m}-class2a.chk
${VALGRIND} --log-file=${vglog} \
${MSI2LMP} ${m}-class2a -c 2 -p ${verbose} -f compass_published \
|| errors=$(expr $errors + 1)
${LAMMPS} -log none -screen none -in in.${m}-class2a \
|| errors=$(expr $errors + 1)
${CHECKDATA} ${m}-class2a.data reference/${m}-class2a.data \
|| errors=$(expr $errors + 1)
${CHECKDATA} ${m}-class2a.data2 reference/${m}-class2a.data2 \
|| errors=$(expr $errors + 1)
[ $before -eq $errors ] && rm ${m}-class2a.data ${m}-class2a.data2 log.${m}-class2a
leak=$(awk '/in use at exit:/ {num=$6;} END {print num;}' $vglog)
[ $leak != 0 ] && echo "Memory still used: $leak" \
&& errors=$(expr $errors + 1)
viol=$(awk '/ERROR SUMMARY/ {num=$4;} END {print num;}' $vglog)
[ $viol != 0 ] && echo "Valgrind errors: $viol" \
&& errors=$(expr $errors + 1)
[ $leak = 0 ] && [ $viol = 0 ] && rm ${vglog}
counter=$(expr $counter + 6)
done
# Class2 tests with pcff
for m in water h2-h2o ethane benzene naphthalene cnt-hexagonal hap_crystal
do \
before=$errors
vglog=${m}-class2b.chk
${VALGRIND} --log-file=${vglog} \
${MSI2LMP} ${m}-class2b -c 2 -p ${verbose} -f pcff \
|| errors=$(expr $errors + 1)
${LAMMPS} -log none -screen none -in in.${m}-class2b \
|| errors=$(expr $errors + 1)
${CHECKDATA} ${m}-class2b.data reference/${m}-class2b.data \
|| errors=$(expr $errors + 1)
${CHECKDATA} ${m}-class2b.data2 reference/${m}-class2b.data2 \
|| errors=$(expr $errors + 1)
[ $before -eq $errors ] && rm ${m}-class2b.data ${m}-class2b.data2 log.${m}-class2b
leak=$(awk '/in use at exit:/ {num=$6;} END {print num;}' $vglog)
[ $leak != 0 ] && echo "Memory still used: $leak" \
&& errors=$(expr $errors + 1)
viol=$(awk '/ERROR SUMMARY/ {num=$4;} END {print num;}' $vglog)
[ $viol != 0 ] && echo "Valgrind errors: $viol" \
&& errors=$(expr $errors + 1)
[ $leak = 0 ] && [ $viol = 0 ] && rm ${vglog}
counter=$(expr $counter + 6)
done
echo "Total error count: $errors / $counter"
echo
echo "Total error count: $errors / $counter"
echo