#!/bin/sh
#########################################################################
# Usage: ofs_filenames.sh                                               #
#                                                                       #
# Description: This script generate a file containing the names of      #
#              archive files to be used in the extraction of model      #
#              layer profiles.                                          #
#                                                                       #
# History:                                                              #
#    06-16-2005  Dan Iredell                                            #
#   Input:                                                              #
#   PDYp1,PDY, PDYm1...PDYm7  dates off set by [+1, 0, -1,...-7]        #
#   COMIN                     top directory for model output archives   #
#   RUN                       run identifier                            #
#   modID                     model identifier                          #
#   cyc                       hour cycle                                #
#########################################################################

set -x
echo "*** Started script $0"


#-----------------------------------------------------------------------
#  1, set working parameters 

#  1.a directory for archive files

comdir=`dirname $COMIN`

#-----------------------------------------------------------------------
# 1.b Defines size of character strings
typeset -Z3 fhr
typeset -Z2 hr


# 1.c Identify model data directories

[ -a filenames ] && rm filenames
[ -a tmpvaliddates ] && rm tmpvaliddates
[ -a tmpvaliddates.sorted ] && rm tmpvaliddates.sorted
rm -f tmpfilenames.* 
namax=1

HH='00'

for pdyday in $PDYm1 $PDYm2 $PDYm3 $PDYm4 $PDYm5 $PDYm6 $PDYm7
do

# 1.d For each data directory get the names of the daily archive files.

  dd=$comdir/$RUN.$pdyday
  rd=`dirname $dd/.`
  YYYYMMDDrun=`basename $dd | cut -d. -f2`
  YYYYDDDrun=`sh $utilscript/date2jday.sh $YYYYMMDDrun`
  if [ -s $rd/${RUN}_${modID}.t${cyc}z.????_???_${HH}.a ]
  then
  afiles=`ls $rd/${RUN}_${modID}.t${cyc}z.????_???_${HH}.a`

  for afile in $afiles
  do
    YYYYarch=`basename $afile | cut -d. -f3 | cut -d_ -f1`
    DDDarch=`basename $afile | cut -d. -f3 | cut -d_ -f2`
    YYYYMMDDHHarch=`sh $utilscript/date2jday.sh ${YYYYarch}${DDDarch}`"$HH"
    fhr=`${utilexec}/nhour $YYYYMMDDHHarch $YYYYMMDDrun$cyc`  # NOTE: check
    YYYYMMDDHHvalid=`${utilexec}/ndate +$fhr $YYYYMMDDrun$cyc` # NOTE: check
    YYYYMMDDvalid=`echo $YYYYMMDDHHvalid | cut -c1-8`
    HHvalid=`echo $YYYYMMDDHHvalid | cut -c9-10`
    YYYYDDDHHvalid=`sh $utilscript/date2jday.sh $YYYYMMDDvalid`"$HHvalid"
    tfile=${rd}/`basename $afile .a`
    echo "$fhr ; $tfile" >> tmpfilenames.${YYYYDDDHHvalid}
    echo $YYYYDDDHHvalid >> tmpvaliddates
  done
  fi
done

# 1.e Sort names of the daily archive files and create list

sort -u tmpvaliddates > tmpvaliddates.sorted
rm -f tmpvaliddates


NValidDays=`cat tmpvaliddates.sorted | wc -l`
NArchPerDayMax=1
for xx in `ls tmpfilenames.*`
do
  na=`cat $xx | wc -l `
  test $na -gt $NArchPerDayMax && NArchPerDayMax=$na
  sort +0 -1 $xx > ${xx}.sorted
  rm -f ${xx}
done

echo $NValidDays > filenames
echo $NArchPerDayMax >> filenames

for xx in `cat tmpvaliddates.sorted`
do
  na=`cat tmpfilenames.${xx}.sorted | wc -l`
  echo $xx >> filenames
  echo $na >> filenames
  cat tmpfilenames.${xx}.sorted >> filenames
  rm -f tmpfilenames.${xx}.sorted
done
rm -f tmpvaliddates.sorted

echo "*** Finished script $0"
