#!/bin/sh
###############################################################################
#                     
# This script is part of the CTD and SSH assimilation. It creates updates 
# to the restart file as follows:
#                a) Given an analyses of SSH it blends the slowly varying
#                 model SSH with SSH analysis; and projects information
#                in the vertical by re-arranging layer interfaces.
#
#                b) Given a set of analyses of S and T consisting of
#                layer analyses for layer density, layer temperature and 
#                layer thicknesses anomalies, 
#                it updates density, temperature and thicknesses.
#
#  USAGE: ofs_minor_edit_restart.sh arg1
#                                                               
#   arg1     : cdate restart day                                  
#
#   Main inputs:
#   See arg1 above
#   next_restart.[ab]  input restart-file
#   Macros
#           runssh    ssh data assimilation switch              
#           runctd    ctd data assimilation switch              
#           DATA       working directory.                       
#           FIXofs     fix file directory                       
#           RUN        run identifier                           
#           modID      model indetifier                         
#           gridres    grid resolution                          
#           cyc        cycle                                    
#  
#   Main outputs:
#   updated_restart.[ab]  output restart-file
#                                                               
###############################################################################

echo "*** Started script $0"

# 0.  Preparations
  if [ -d $DATA ] 
  then
      cd $DATA
  else
       msg=$DATA ' directory missing'
       postmsg "$jlogfile" "$msg"
       msg='WARNING: THE OFS_MINOR_EDIT_RESTART job NOT BEEN COMPLETED .'         
       postmsg "$jlogfile" "$msg"
  fi

# 0.a Basic modes of operation
 
  set $setoff
  echo ' '
  echo '                  *******ll**************************'
  echo '                  *** MINOR_EDIT_RESTART  SCRIPT  ***'
  echo '                  ***********************************'
  echo ' '
  echo "Starting at : `date`"
  set $seton


cdate=$1

# --------------------------------------------------------------------------- #
# 1.  copy  files to work directory and set filenemaes

# 1.a grid file

   ln -s -f $FIXofs/${RUN}_${modID}.${gridres}.regional.grid.b regional.grid.b
   ln -s -f $FIXofs/${RUN}_${modID}.${gridres}.regional.grid.a regional.grid.a

#1.b  vertical data file

   export IU_VERT=21
#   cp  $PARMofs/${RUN}_${modID}.z2layer.in ${DATA}/${RUN}_${modID}.z2layer.in 
#   ln -s -f    ${DATA}/${RUN}_${modID}.z2layer.in       fort.${IU_VERT}

# 1.b from ssh analyses

if [ $runssh -eq 1 ] ; then
  cp $COMIN/${RUN}_${modID}.t${cyc}z.ssh.${cdate}.adh.bin ssh.${cdate}.adh.bin
  cp $COMIN/${RUN}_${modID}.t${cyc}z.ssh.${cdate}.spread.bin ssh.${cdate}.spread.bin
  export background_ssh=ssh.${cdate}.adh.bin
  export anomaly_ssh_analysis=ssh.${cdate}.spread.bin
else
  export background_ssh=empty
  export background_bottom_ssh=empty
  export anomaly_ssh_analysis=empty
fi

# 1.c file prefixes and postfixes from ctd analyses
if [ $runctd = 1 ]
then
  cp $COMIN/${RUN}_${modID}.t${cyc}z.ctd.*.${cdate}.spread.bin $DATA/.
  export CTD_NAME_PRE=${RUN}_${modID}.t${cyc}z.ctd.
  export CTD_NAME_POST=.${cdate}.spread.bin
fi

# 1.e filenames for restart input/output 

RESTART_IN=next_restart.a
RESTART_OUT=updated_restart.a


#1.f  mean dynamic topography file

ln -s -f $FIXofs/${RUN}_${modID}.A${gridsize}mdt.bin  mdt.bin

#1.g mass field contribution to mean dynamic topography

ln -s -f $FIXofs/${RUN}_${modID}.A${gridsize}mdt_dyn.bin  mdt_dyn.bin

# --------------------------------------------------------------------------- #
# 2. input for edit_restart

#2.a correlation values

/bin/rm -f fort.10
#cp ${PARMofs}/${RUN}_${modID}.corr_levels.dat fort.10

#2,b standard input
/bin/rm -f minor_edit_restart.in minor_edit_restart.out
cat > minor_edit_restart.in <<EOF
${RESTART_OUT}
${RESTART_IN}
${anomaly_ssh_analysis}
${background_ssh}
${background_bottom_ssh}
${CTD_NAME_PRE}
${CTD_NAME_POST}
21       'iexpt '   = experiment number x10  (000=from archive file)
3        'yrflag'   = days in year flag (0=360J16,1=366J16,2=366J01,3=actual)
${IDM}   'idm   '   = 1st index array size
${JDM}   'jdm   '   = 2nd index array size
${KDM}   'kdm   '   = 3rd index array size
34       'thbase'   = reference density
${IU_VERT}    'lu_vrt'   = unit to read vertical grid parameters
${runssh}     'ssh_in'   = [0|1] read|do not read  ssh parameters
${runctd}     'ctd_in'   = [0|1] read|do not read  ctd parameters
1             'dthick'   = [0|1] [intf|thick] anomaly
0.1           'den_fc'   = amplification factor for density anomaly
0.1           'tem_fc'   = amplification factor for temperature anomaly
0.95          'ext_fc'   = external mode fraction of SSH at assimilation (0.9 slow 0.5 fast rate of ssh change)
0000          'flags '   = [coded option flags:reset_eta*1000+reset_vel1*100+reset_thick*l0+reset_vel*1
2             'duster'   = [0: default NO cleaning 1: clean only 2: clean before assimilation 3:4: clean after 4: slow lower layers]
EOF


#3.e regional files

/bin/rm -f regional.grid.b
/bin/rm -f regional.depth.a regional.depth.b

ln -s ${FIXofs}/${RUN}_${modID}.${gridres}.regional.grid.b   regional.grid.b
ln -s ${FIXofs}/${RUN}_${modID}.${gridres}.regional.depth.b   regional.depth.b
ln -s ${FIXofs}/${RUN}_${modID}.${gridres}.regional.depth.a   regional.depth.a

#4 execute editor of restart file to  create a  new restart file

export pgm=ofs_edit_restart
. prep_step

export XLFUNIT_10=$PARMofs/${RUN}_${modID}.corr_levels.dat
export XLFUNIT_21=$PARMofs/${RUN}_${modID}.z2layer.in

export OMP_NUM_THREADS=8
#export XLSMPOPTS="pathds=4"
# Comment out by Julia
#export XLSMPOPTS="stack=40000000"
# Comment out by Julia
#export MP_SHARED_MEMORY=yes


# To run on physical CPUs
#export MEMORY_AFFINITY=MCM
#export TARGET_CPU_LIST=-1
#poe /usrx/local/mpi_trace/utils/launch.x $EXECofs/ofs_edit_restart -procs $NPROCS < minor_edit_restart.in >> $pgmout 2>errfile 

poe $EXECofs/ofs_edit_restart < minor_edit_restart.in >> $pgmout 2> errfile
export err=$?; err_chk

msg='THE OFS_MINOR_EDIT_RESTART job  HAS ENDED NORMALLY.'
postmsg "$jlogfile" "$msg"

echo "*** Finished script $0"
