#!/bin/bash
#
#####################################################
#
#####################################################
#
#
  Fileinf=./input/3Dinfo
{
read comment
read var
read comment
read bottm
read comment
read surf
read comment
read cont
read comment
read datop
read comment
read parop
read comment
read ana3d
read comment
read comment
read comment
read comment
read comment
read comment
read comment
read comment
read comment
read gnpl
read comment
read gmin
read comment
read gmax
} < $Fileinf
#
diva3dlog='./output/3Danalysis/'$var'.diva3D.log'
#
echo 'diva3Ddat:' 
echo 'diva3Ddat:' 'Start data cleaning flag number: '$datop
echo 'diva3Ddat:' 'on '$var
echo 'diva3Ddat:' 'level '$bottm' to level '$surf
echo 'diva3Ddat:'
#
echo 'diva3Ddat:' >> $diva3dlog
echo 'diva3Ddat:' 'Start data cleaning flag number: '$datop >> $diva3dlog
echo 'diva3Ddat:' ' on '$var >> $diva3dlog
echo 'diva3Ddat:' 'level '$bottm' to level '$surf >> $diva3dlog
echo 'diva3Ddat:' >> $diva3dlog
#
#
if [ -d  ./output/3Danalysis/ ];then
echo  ./output/3Danalysis exists >> $diva3dlog
else
mkdir -p ./output/3Danalysis/
fi
#
dep=$bottm
#
while [ $dep -le $surf ]
do
#
let lev=10000+$dep
#
errflag=0
if [ -f ./input/divaparam/param.par.$var'.'$lev ];then
 cp -f ./input/divaparam/param.par.$var'.'$lev ./input/param.par
else
 if [ -f ./input/divaparam/param.par.$lev ];then
   cp -f ./input/divaparam/param.par.$lev ./input/param.par
 else
    if [ -f ./input/divaparam/param.par ];then
     cp -f ./input/divaparam/param.par ./input/param.par
    else
     if [ -f ./input/param.par ];then
       echo diva3Ddat uses param.par found in input >> $diva3dlog
     else
       errflag=1
     fi
    fi
 fi
fi
#
if [ -f  ./input/divadata/$var.$lev ] ; then
 cp ./input/divadata/$var.$lev  ./input/divadata/$var.$lev.ori
 cp ./input/divadata/$var.$lev  ./input/data.dat
 nbdat=`cat './input/data.dat' |wc -l` 
 if [ "$nbdat" == "0" ] ; then
  errflag=4
 fi
else
 errflag=2
fi
#
if [ -f  ./input/divaparam/coast.cont.$lev ] ; then
 cp ./input/divaparam/coast.cont.$lev ./input/coast.cont
else
 errflag=3
fi
#
if [ "$errflag" == "0" ];then
#
#--------------------------------------------------------
#
if [ -f ./input/divaparam/3Dconstraint ]
then
dep=10001
  Fileinf=./input/divaparam/3Dconstraint
{
while [ $dep -le $lev ]
do
read constvals
dep=`expr $dep + 1`
done
} < $Fileinf
echo $constvals > ./input/constraint.dat
fi
#
if [ -f ./input/constraint.dat ]
then
 if [ -f ./input/divaUVcons/UVinfo.$var.$lev ];then
  cp -f ./input/divaUVcons/UVinfo.$var.$lev ./input/UVinfo.dat
 else
  if [ -f ./input/divaUVcons/UVinfo.$lev ];then
   cp -f ./input/divaUVcons/UVinfo.$lev ./input/UVinfo.dat
  else
   if [ -f ./input/divaUVcons/UVinfo.dat ];then
    cp -f ./input/divaUVcons/UVinfo.dat ./input/UVinfo.dat
   fi
  fi
 fi
#
 if [ -f ./input/divaUVcons/Uvel.$var.$lev ];then
  cp -f ./input/divaUVcons/Uvel.$var.$lev ./input/Uvel.dat
 else
  if [ -f ./input/divaUVcons/Uvel.$lev ];then
   cp -f ./input/divaUVcons/Uvel.$lev ./input/Uvel.dat
  else
   if [ -f ./input/divaUVcons/Uvel.dat ];then
    cp -f ./input/divaUVcons/Uvel.dat ./input/Uvel.dat
   fi
  fi
 fi
#
 if [ -f ./input/divaUVcons/Vvel.$var.$lev ];then
  cp -f ./input/divaUVcons/Vvel.$var.$lev ./input/Vvel.dat
 else
  if [ -f ./input/divaUVcons/Vvel.$lev ];then
   cp -f ./input/divaUVcons/Vvel.$lev ./input/Vvel.dat
  else
   if [ -f ./input/divaUVcons/Vvel.dat ];then
    cp -f ./input/divaUVcons/Vvel.dat ./input/Vvel.dat
   fi
  fi
 fi
fi
#
if [ -f ./input/divaparam/RLinfo.$var.$lev ];then
 cp -f ./input/divaparam/RLinfo.$var..$lev ./input/RLinfo.dat
else
 if [ -f ./input/divaparam/RLinfo.$lev ];then
  cp -f ./input/divaparam/RLinfo.$lev ./input/RLinfo.dat
 else
  if [ -f ./input/divaparam/RLinfo.dat ];then
   cp -f ./input/divaparam/RLinfo.dat ./input/RLinfo.dat
  fi
 fi
fi
if [ -f ./input/RLinfo.dat ];then
 if [ -f ./input/divaparam/RL.$var.$lev ];then
  cp -f ./input/divaparam/RL.$var.$lev ./input/RL.dat 
 else
  if [ -f ./input/divaparam/RL.$lev ];then
   cp -f ./input/divaparam/RL.$lev ./input/RL.dat 
  else
   if [ -f ./input/divaparam/RL.dat ];then
    cp -f ./input/divaparam/RL.dat ./input/RL.dat
   fi
  fi
 fi
fi
#------------------------------------------------------------
#
if [ -d ./input/divamesh ]; then
 fmeshe=1
else
 mkdir -p ./input/divamesh
 mkdir -p ./output/3Danalysis/Meshes
 fmeshe=0
fi
#
if [ "$datop" -eq "1" -o "$datop" -eq "3"  -o "$datop" -ge "4" -o "$datop" -ge "5" ];then
echo '%%%%%%%%%%%%  cleaning '$var'.'$lev' %%%%% original data nmbr '$nbdat
echo '%%%%%%%%%%%%  cleaning '$var'.'$lev' %%%%% original data nmbr '$nbdat >> $diva3dlog
./divaclean
  if [ -f ./input/divamesh/meshtopo.$lev ]; then
   cp -v ./input/divamesh/meshtopo.$lev ./output/meshvisu/fort.22
   cp -v ./input/divamesh/mesh.dat.$lev ./output/meshvisu/fort.23
   cp -v ./input/divaparam/coast.cont.$lev ./output/meshvisu/fort.10
  else
   echo 'diva3Ddat:  generating a mesh for '$var'.'$lev >> $diva3dlog

echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo 'diva3Ddat:         Creating mesh: '$var'.'$lev >> ./output/diva.log
echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log
divamesh
    cat $diva3dlog ./output/divamesh.log > bidon
    mv bidon $diva3dlog

   cp -v ./output/meshvisu/fort.22 ./input/divamesh/meshtopo.$lev
   cp -v ./output/meshvisu/fort.23 ./input/divamesh/mesh.dat.$lev
#   cp -v ./output/meshvisu/fort.10 ./input/divaparam/coast.cont.$lev
  fi
#
echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo 'diva3Ddat:            Data  cleaning: '$var'.'$lev >> ./output/diva.log
echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log
./divadataclean

    cat $diva3dlog ./output/divadata.log > bidon
    mv bidon $diva3dlog

 nbdat=`cat './input/data.dat' |wc -l` 
echo 'After cleaning '$var'.'$lev'  data nmbr = '$nbdat
cp -v ./input/data.dat ./input/divadata/$var.$lev
cp -v ./input/data.beforeclean.dat ./input/divadata/$var.$lev.notclean
fi

if [ "$datop" -eq "2" -o  "$datop" -eq "3" ];then
  ./divaclean
  if [ -f ./input/divamesh/meshtopo.$lev ]; then
   cp -v ./input/divamesh/meshtopo.$lev ./output/meshvisu/fort.22
   cp -v ./input/divamesh/mesh.dat.$lev ./output/meshvisu/fort.23
   cp -v ./input/divaparam/coast.cont.$lev ./output/meshvisu/fort.10
  else
   echo 'diva3Ddat:  generating a mesh for '$var'.'$lev  >> $diva3dlog

echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo 'diva3Ddat:         Creating mesh: '$var'.'$lev >> ./output/diva.log
echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log
  divamesh
    cat $diva3dlog ./output/divamesh.log > bidon
    mv bidon $diva3dlog

   cp -v ./output/meshvisu/fort.22 ./input/divamesh/meshtopo.$lev
   cp -v ./output/meshvisu/fort.23 ./input/divamesh/mesh.dat.$lev
  fi

echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo 'diva3Ddat:   Data coverage '$var'.'$lev >> ./output/diva.log
echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log

  ./divadatacoverage -n
    cat $diva3dlog ./output/divadatacovr.log > bidon
    mv bidon $diva3dlog

  cp -v ./output/RL.dat ./input/divaparam/RL.$var.$lev
  cp -v ./output/RLinfo.dat ./input/divaparam/RLinfo.dat
fi
#
if [ "$datop" -eq "4" -o "$datop" -eq "5" ];then
echo '%%%%%%%%%%%%  ELIMINATION OF OUTLIERS '$var'.'$lev' %%%%%%%%%%'
echo '%%%%%%%%%%%%  ELIMINATION OF OUTLIERS '$var'.'$lev' %%%%%%%%%%' >> $diva3dlog
if [ "$nbdat" -ne "0" ];then
#
  if [ -d  ./output/3Danalysis/FieldWithOutliers ];then
    echo  ./output/3Danalysis/FieldWithOutliers exists  >> $diva3dlog
  else
   mkdir -p ./output/3Danalysis/FieldWithOutliers
  fi
#
divaclean
#echo Gridding
if [ -f ./input/divamesh/meshtopo.$lev ]; then
 cp -v ./input/divamesh/meshtopo.$lev ./output/meshvisu/fort.22
 cp -v ./input/divamesh/mesh.dat.$lev ./output/meshvisu/fort.23
 cp -v ./input/divaparam/coast.cont.$lev ./output/meshvisu/fort.10
else
 echo 'diva3Ddat:  generating a mesh for '$var'.'$lev   >> $diva3dlog

echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo 'diva3Ddat:         Creating mesh: '$var'.'$lev >> ./output/diva.log
echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log
divamesh
    cat $diva3dlog ./output/divamesh.log > bidon
    mv bidon $diva3dlog

 cp -v ./output/meshvisu/fort.22 ./input/divamesh/meshtopo.$lev
 cp -v ./output/meshvisu/fort.23 ./input/divamesh/mesh.dat.$lev
fi
#echo Analysing

echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo 'diva3Ddat:         Going to analyse '$var'.'$lev >> ./output/diva.log
echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log

./divacalc
    cat $diva3dlog ./output/divacalc.log > bidon
    mv bidon $diva3dlog

#echo Looking for outliers

echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo 'diva3Ddat:   Going to look for outliers '$var'.'$lev >> ./output/diva.log
echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log

 ./divaqcbis
    cat $diva3dlog ./output/divaqcbis.log > bidon
    mv bidon $diva3dlog


echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo 'diva3Ddat:   Going to clean data from outliers '$var'.'$lev >> ./output/diva.log
echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log

 ./dvoutlierclean -r
    cat $diva3dlog ./output/dvoutlierclean.log > bidon
    mv bidon $diva3dlog


  echo " saving cleaned data and writing data with no outlers"   >> $diva3dlog
  cp -v ./input/divadata/$var.$lev ./input/divadata/$var.$lev.clean
  cp -v ./input/data.dat ./input/divadata/$var.$lev
  cp -v ./input/data.dat.withoutliers ./input/divadata/$var.$lev.withoutliers

echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo 'diva3Ddat:   Data coverage '$var'.'$lev >> ./output/diva.log
echo diva3Ddat: ////////////////////////////////////////// >> ./output/diva.log
echo ' '  >> ./output/diva.log

./divadatacoverage
    cat $diva3dlog ./output/divadatacovr.log > bidon
    mv bidon $diva3dlog


if [ "$datop" -eq "5" ];then
cp -v ./output/RL.dat ./input/divaparam/RL.$var.$lev
cp -v ./output/RLinfo.dat ./input/divaparam/RLinfo.dat
fi
cp -v ./output/DATABINS.dat ./input/divadata/$var'.'$lev'.DATABINS'
cp -v ./output/DATABINSinfo.dat ./input/divadata/$var'.'$lev'.DATABINSinfo'
######## saving analysis and co
if [ "$fmeshe" == "0" ]; then
cp -r ./input/divamesh/*  ./output/3Danalysis/Meshes/.
fi
#
cp -v ./output/ghertonetcdf/results.nc ./output/3Danalysis/FieldWithOutliers/$var'.'$lev'.anl.nc'
cp -v ./output/ghertonetcdf/fort.84 ./output/3Danalysis/FieldWithOutliers/$var'.'$lev'.anl'
cp -v ./output/ghertonetcdf/GridInfo.dat ./output/3Danalysis/FieldWithOutliers/GridInfo.dat
cp -v ./output/errorfieldgher.anl ./output/3Danalysis/FieldWithOutliers/$var'.'$lev'.error'
cp -v ./output/fieldascii.anl ./output/3Danalysis/FieldWithOutliers/$var'.'$lev'.ascii.anl'
cp -v ./output/errorfieldascii.anl ./output/3Danalysis/FieldWithOutliers/$var'.'$lev'.errorascii'
#
if [ -f ./output/outliersbis.normalized.dat ];then
cp -v ./output/outliersbis.normalized.dat ./output/3Danalysis/FieldWithOutliers/$var'.'$lev'.outliersbis.norm'
fi
if [ -f ./output/outliersbis.dat ];then
cp -v ./output/outliersbis.dat ./output/3Danalysis/FieldWithOutliers/$var'.'$lev'.outliersbis'
fi
##
if [ "$gnpl" == "1" ]
then
#
mkdir -p ./output/3Danalysis/GPlotsWOutlrs
#
if [ -f './output/covariancefit.'${var}.${lev} ];then
cp -v './output/covariancefit.'${var}.${lev} ./output/covariancefit.dat
fi
if [ -f './output/covariance.'${var}.${lev} ];then
cp -v './output/covariance.'${var}.${lev} ./output/covariance.dat
fi
echo 'diva3Ddat: Making gnu plots, range is '$gmin $gmax >> $diva3dlog
./divagnu $gmin $gmax
#
cd ./gnuwork/plots
for i in `ls *.png`
do
cp -v $i ../../output/3Danalysis/GPlotsWOutlrs/$var'.'$lev'.'$i
done
cd ../..
fi

else

echo $var'.'$lev' is EMPTY, no outliers to clean ' >> $diva3dlog
echo $var'.'$lev' is EMPTY, no outliers to clean '
fi
####################
fi
#
else
if [ "$errflag" -eq "1" ];then
echo '!!!!!!!!!!!!!diva3Ddat WARNING: !!!!!!!!!!!!!!!!!!'
echo '!!!!!!!!DID NOT FIND param.par FILE FOR '$var $lev'!' 
echo '!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'

echo '!!!!!!!!!!!!!diva3Ddat WARNING: !!!!!!!!!!!!!!!!!!' >> $diva3dlog
echo '!!!!!!!!DID NOT FIND param.par FILE FOR '$var $lev'!'  >> $diva3dlog
echo '!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' >> $diva3dlog
fi
if [ "$errflag" -eq "2" ];then
echo '!!!!!!!!!!!!!diva3Ddat WARNING: !!!!!!!!!!!!!!!!!!'
echo '!!!!!!!!!!!!!DID NOT FIND DATA FILE FOR '$var $lev'!' 
echo '!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'

echo '!!!!!!!!!!!!!diva3Ddat WARNING: !!!!!!!!!!!!!!!!!!' >> $diva3dlog
echo '!!!!!!!!!!!!!DID NOT FIND DATA FILE FOR '$var $lev'!'  >> $diva3dlog
echo '!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' >> $diva3dlog
fi
if [ "$errflag" -eq "3" ];then
echo '!!!!!!!!!!!!!diva3Ddat WARNING: !!!!!!!!!!!!!!!!!!'
echo '!!!!!!!!!!DID NOT FIND CONTOUR FILE FOR '$var $lev'!' 
echo '!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'

echo '!!!!!!!!!!!!!diva3Ddat WARNING: !!!!!!!!!!!!!!!!!!' >> $diva3dlog
echo '!!!!!!!!!!DID NOT FIND CONTOUR FILE FOR '$var $lev'!'  >> $diva3dlog
echo '!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' >> $diva3dlog
fi
if [ "$errflag" -eq "4" ];then
echo '!!!!!!!!!!!!!diva3Ddat WARNING: !!!!!!!!!!!!!!!!!!'
echo '!!!!!!!!!!DATA FILE  '$var $lev' IS EMPTY!' 
echo '!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'

echo '!!!!!!!!!!!!!diva3Ddat WARNING: !!!!!!!!!!!!!!!!!!' >> $diva3dlog
echo '!!!!!!!!!!DATA FILE  '$var $lev' IS EMPTY!'  >> $diva3dlog
echo '!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' >> $diva3dlog
fi
fi
#
 dep=`expr $dep + 1`
done
echo ooooooooooooooooooooooooooooooooooooooooooooooooooooooooo >> $diva3dlog
echo ' cleaned data files are in ./input/divadata/.' >> $diva3dlog
echo ' and/or RL files are in ./input/divaparam/.'  >> $diva3dlog
echo 'diva3Ddat:' 'on '$var
echo 'diva3Ddat:' 'level '$bottm' to level '$surf
echo 'diva3Ddat:'
echo ooooooooooooooooooooooooooooooooooooooooooooooooooooooooo >> $diva3dlog
echo ooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
echo ' cleaned data files are in ./input/divadata/.'
echo ' and/or RL files are in ./input/divaparam/.' 
echo 'diva3Ddat:' 'for '$var
echo 'diva3Ddat:' 'level '$bottm' to level '$surf
echo 'diva3Ddat:'
echo ooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
#