#!/bin/bash
if [ "$#" -le "0" ]
then
echo ????????????????????????????????????????
echo usage: divadetrend ngroups [niterations]
echo ????????????????????????????????????????
exit
fi
rm -f ./input/data.undetrend.dat
rm -f ./ouput/rmsmisfit.dat
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo  Applying iterative detrending on classes
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

divadetrendlog='./output/divadetrend.log'
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! > $divadetrendlog
echo  Applying iterative detrending on classes >> $divadetrendlog
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> $divadetrendlog

if [ -f ./input/detrend.order ]
then
echo ========================================= >> $divadetrendlog
echo  divadetrend will use order provided: >> $divadetrendlog
cat ./input/detrend.order >> $divadetrendlog
cp ./input/detrend.order ./divawork/fort.56
else
echo ========================================= >> $divadetrendlog
echo divadetrend will use default order 5 6 ... >> $divadetrendlog
echo 5 6 7 8 9 10 11 12 13 > ./divawork/fort.56
fi
echo ========================================= >> $divadetrendlog


echo divadetrend: ////////////////////////////////////////// >> ./output/diva.log
echo divadetrend:                 divadatacoverage   >> ./output/diva.log
echo divadetrend: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log
divadatacoverage -n
    cat $diva3dlog ./output/divadatacovr.log > bidon
    mv bidon $diva3dlog

echo divadetrend: ////////////////////////////////////////// >> ./output/diva.log
echo divadetrend:                 divamesh   >> ./output/diva.log
echo divadetrend: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log
divamesh
    cat $diva3dlog ./output/divamesh.log > bidon
    mv bidon $diva3dlog

echo divadetrend: ////////////////////////////////////////// >> ./output/diva.log
echo divadetrend:                 dvdataclean   >> ./output/diva.log
echo divadetrend: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log
dvdataclean
    cat $diva3dlog ./output/dvdataclean.log > bidon
    mv bidon $diva3dlog

echo need to modify param.par for iterations to desactivate error calculations >> $divadetrendlog
cp -v ./input/param.par ./input/param.detrend.par
head -17 ./input/param.detrend.par > bidon
echo 1 >> bidon
echo   >> bidon
echo 1 >> bidon
echo   >> bidon
echo -99 >> bidon
echo >> bidon
head -24 ./input/param.detrend.par | tail -1 >> bidon
echo >> bidon
echo 0 >> bidon
mv bidon ./input/param.par
nsteps=10
if [ "$#" -gt "1" ]
then
let nsteps=$2+0
fi
echo ============================================= >> $divadetrendlog
echo Number of iterations to be performed: $nsteps >> $divadetrendlog
echo ============================================= >> $divadetrendlog
echo =============================================
echo Number of iterations to be performed: $nsteps
echo =============================================
i=0
while [ "$i" -le "$nsteps" ]
do
let i=$i+1
echo Iteration $i >> $divadetrendlog
if [ "$i" -gt "$nsteps" ]
then
echo Last final analysis >> $divadetrendlog
cp -v ./input/param.detrend.par ./input/param.par 
rm -f ./input/param.detrend.par
fi


echo divadetrend: ////////////////////////////////////////// >> ./output/diva.log
echo divadetrend:                 divacalc   >> ./output/diva.log
echo divadetrend: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log
divacalc
    cat $diva3dlog ./output/divacalc.log > bidon
    mv bidon $diva3dlog

echo Calculating misfit of classes and create new input data >> $divadetrendlog
if [ -f ./input/data.undetrend.dat ]
then
cp -v ./input/data.undetrend.dat ./input/data.dat
fi
cd divawork
cp ../input/data.dat fort.88
cp ../output/fieldatdatapoint.anl fort.89

echo $1 | ../../bin/detrend.a >> ../output/diva.log
if [ $? -ne 0 ];then
echo ' '
echo --------------------------------------------
echo A problem was encountered during execution !
echo          divadetrend      detrend.a
echo Check execution track
echo --------------------------------------------
echo ' ' >> ../$divadetrendlog
echo -------------------------------------------- >> ../$divadetrendlog
echo A problem was encountered during execution ! >> ../$divadetrendlog
echo          divadetrend      detrend.a >> ../$divadetrendlog
echo Check execution track >> ../$divadetrendlog
echo -------------------------------------------- >> ../$divadetrendlog
echo ' ' >> ../output/diva.log
echo -------------------------------------------- >> ../output/diva.log
echo A problem was encountered during execution ! >> ../output/diva.log
echo          divadetrend      detrend.a  >> ../output/diva.log
echo Check execution track >> ../output/diva.log
echo -------------------------------------------- >> ../output/diva.log
fi
cp fort.90 ../input/data.detrend.dat
if [ "$i" -le "1" ]
then
#echo $i
head -1 fort.90 > ../output/sowhat.dat
cat fort.42 > ../output/rmsmisfit.dat
else
head -1 fort.90 >> ../output/sowhat.dat
cat fort.42 >> ../output/rmsmisfit.dat
fi
cp trends.*.dat ../output
cd ..
if [ -f ./input/data.undetrend.dat ]
then
cp -v ./input/data.detrend.dat ./input/data.dat
else
cp -v ./input/data.dat ./input/data.undetrend.dat
cp -v ./input/data.detrend.dat ./input/data.dat
fi
jj="0"

# in fact try over all columns up to the maximum defined in detrend.order....
# now in fort.56 which can be exploited
jmloop=$(cat ./divawork/fort.56 | awk '{for(i=1;i<=NF;i++){if($i > max) max = $i;}}END{print max-4}')
echo Maximum index of group used for detrending $jmloop >> $divadetrendlog
while [ "$jj" -lt "$jmloop" ]
do
let jj=$jj+1
if [ "$i" -gt "1" ]
then
paste ./output/trends.$jj.dat ./output/trends.all.$jj.dat > bidon
else
cp ./output/trends.$jj.dat bidon
fi
mv bidon ./output/trends.all.$jj.dat
done
done
rm -f ./divawork/trend*.dat
echo ' ' >> $divadetrendlog
echo ---------------------- >> $divadetrendlog
echo Detrending is finished >> $divadetrendlog
echo ---------------------- >> $divadetrendlog
echo ' '
echo ----------------------
echo Detrending is finished
echo ----------------------
rm -f ./divawork/trend*.dat
