#!/bin/bash
rm ./divawork/crossval.dat
echo ///////////////////////////////////////////
echo        Generalized Cross Validation
echo ///////////////////////////////////////////
echo ' '
cp ./input/param.par  ./input/param.par.ori
rm -f ./output/gcv.dat
if [ -f ./input/gcvsampling.dat ]
then
#Create mesh once if no mesh present
if [ -f ./meshgenwork/fort.22 ]
then 
echo ===========================================================================
echo Mesh files aready exist, hope they are correct: otherwise exectute divamesh
echo ===========================================================================
else
divamesh
fi
else
echo Need to provide gcvsampling.dat in ./input !
fi
ijm=0
for gcv in `cat ./input/gcvsampling.dat`
do
echo ' '
echo =============================================
echo =============================================
echo Generalized Cross Validation  with value $gcv
echo =============================================
let ijm=$ijm+1
head -17 ./input/param.par.ori > bidon
echo 1 >> bidon
echo   >> bidon
echo 1 >> bidon
echo   >> bidon
echo -99 >> bidon
echo >> bidon
echo $gcv >> bidon
#tail -2 ./input/param.par.ori >> bidon
# no error field
echo >> bidon
echo 0 >> bidon
mv bidon ./input/param.par
divacalc
FILENAME=./divawork/fort.77
{ 
read gcvval 
} < $FILENAME
FILENAME=bidon
echo $gcv > bidon
{ 
read gcv 
} < $FILENAME
rm bidon
echo $gcvval
echo $gcv $gcvval
echo $gcv $gcvval >> ./output/gcv.dat
########for testing
crossval
#######
itestGCV=0
itestsingle=0
if [ "$itestGCV" != "0" ] 
then
cp ./output/fieldatdatapoint.anl ./divawork/fort.71
cp ./input/data.dat ./divawork/fort.20
cd ./divawork
../input/GCVtest/exactgcv.a
cat fort.30 >> ../input/GCVtest/exactgcv.dat
cd ..
fi
if [ "$itestsingle" != "0" ]
then
cat ./output/fieldatdatapoint.anl >> ./input/GCVtest/localvalue.dat
fi
########end testing
echo =============================================
echo Finished working with value $gcv
echo =============================================
echo ' '
done
mv ./input/param.par.ori ./input/param.par
cp ./output/gcv.dat ./divawork/fort.11
cd divawork
echo Looking for the minimum of GCV
echo ' '
if [ -f ../input/gcvsampling.dat ] 
then 
if [ -f ../output/diva.log ] ; then
 cp -f ../output/diva.log .
fi
../../bin/findmin.a >> diva.log
if [ $? -ne 0 ];then
echo ' '
echo --------------------------------------------
echo A problem was encountered during execution !
echo          divagcvalex      findmin.a
echo Check execution track
echo --------------------------------------------
echo ' ' >> diva.log
echo -------------------------------------------- >> diva.log
echo A problem was encountered during execution ! >> diva.log
echo          divagcvalex      findmin.a  >> diva.log
echo Check execution track >> diva.log
echo -------------------------------------------- >> diva.log
fi
 cp -f diva.log ../output/.
echo ' '
echo ----------------------------------------
echo GCV finished
echo Results written in ./output/gcvsnvar.dat
echo ----------------------------------------
else
echo ' '
echo --------------------------------------------
echo A problem was encountered during execution !
echo Check execution track
echo --------------------------------------------
fi
mv fort.12 ../output/gcvsnvar.dat
echo -----------------------------------------------------
echo 'Creating adapted param.par in ./output/param.par.gcv'
echo -----------------------------------------------------
head -23 ../input/param.par  > ../output/param.par.gcv
head -2 ../output/gcvsnvar.dat | tail -1 >> ../output/param.par.gcv
head -25 ../input/param.par | tail -1 >> ../output/param.par.gcv
head -4 ../output/gcvsnvar.dat  | tail -1 >> ../output/param.par.gcv
if [ "$1" == "-r" ]
then
echo =======================================================
echo Replacing  param file with fit
cd ..
cp -v ./input/param.par ./input/param.par.old
cp -v ./output/param.par.gcv ./input/param.par
echo =======================================================
fi
