#!/bin/csh

# this script check LASPack by means of mlstest (based on LASPack)
#
# written by Tomas Skalicky, Jan 1995

if ( -f mlstest.out ) rm -f mlstest.out
echo > mlstest.out

foreach ml_solver ( mg mgpcg bpxpcg )
    # all solvers with exception of the Chebyshev method are tested as smoothers;
    # in the Chebyshev method, the estimation of extremal eigenvalues make use
    # of an random-value generator and is therefore depending on the architecture
    foreach smoother_id ( 1 2 3 4 6 7 8 9 10 11 12 )
        foreach precond_id ( 0 1 2 3 )
            echo "Testing ... solver = $ml_solver, smoother = $smoother_id, preconditioner = $precond_id"
            echo "Testing ... solver = $ml_solver, smoother = $smoother_id, preconditioner = $precond_id" >> mlstest.out
            echo "" >> mlstest.out
            if ( -f mlstest.dat ) rm -f mlstest.dat
            sed -e "/SMOOTHER_ID/ s/SMOOTHER_ID/$smoother_id/" $ml_solver.tpl | \
                sed -e "/PRECOND_ID/ s/PRECOND_ID/$precond_id/" > mlstest.dat
            sleep 1
            mlstest < mlstest.dat >>&! mlstest.out
            sleep 1
            rm -f mlstest.dat
            echo "" >> mlstest.out
            echo "" >> mlstest.out
           echo "" >> mlstest.out
        end
    end
end

if ( -f mlstest.tmp ) rm -f mlstest.tmp
mv mlstest.out mlstest.tmp
sed -e "/=/ w mlstest.out" mlstest.tmp >> /dev/null
rm -f mlstest.tmp

if ( { cmp -s mlstest.out mlstest.org } ) then
    echo ""
    echo "LASPack tested successfully."
else
    echo ""
    echo "LASPack check fails."
    if ( -f diffs ) rm -f diffs
    diff mlstest.out mlstest.org > diffs
endif
