#!/bin/sh
###############################################################################
# UNIX Script Documentation Block                                                         #
#                                                                                         #
# Script name:         model_nmm.ksh                                                      #
# Script description:  Runs WRF-NMM or WRF-EM forecast model.                             #
#                                                                                         #
# Author:        Eric Rogers       Org: NP22         Date: 2004-07-02                     #
#                                                                                         #
# Script history log:                                                                     #
# 2003-11-01  Matt Pyle   - Original script for parallel                                  #
# 2004-07-02  Eric Rogers - Preliminary modifications for production.                     #
# 2005-08-03  Jun Du - Modified it to fit to the SREF system
#
# 2005-10-06  Xiaoxue Wang - Modified to operational standard
# 2006-03-30  Jun Du - save 6-hour instead of 12-hour forecasts for 4xday SREF's
#                      breeding
# 2008-07-18  Jun Du - upgrade to WRFv2.2
# 2010-05-06  Jun Du - generalized the script to run NEMS ensemble (MODEL=NMB)
################################################################################
set -aux

# Original:
#export XLFRTEOPTS="unit_vars=yes"
#export BIND_TASKS=yes
#export MP_EAGER_LIMIT=65536
#export MP_SHARED_MEMORY=yes
##export MP_SINGLE_THREAD=yes
#export MP_LABELIO=yes
#export MP_STDOUTMODE=ordered
#export MEMORY_AFFINITY=mcm
#export MP_COREFILE_FORMAT=core.txt
#export TARGET_CPU_RANGE="-1"
#export XLSMPOPTS="parthds=1:spins=0:yields=0:stack=128000000:schedule=static"
#export AIXTHREAD_SCOPE=S

# Jim's
export XLFRTEOPTS="unit_vars=yes"
export MP_EAGER_LIMIT=8192 
export MP_SHARED_MEMORY=yes 
export MP_LABELIO=yes 
export MP_STDOUTMODE=ordered 
export MEMORY_AFFINITY=MCM 
export MP_COREFILE_FORMAT=core.txt 
export XLSMPOPTS="stack=512000000" 
export MP_SYNC_QP=yes 
export LAPI_DEBUG_SLOT_ATT_THRESH=5000000 

model=`echo $MODEL | tr "[:upper:]" "[:lower:]"`

START_DATE=$PDY$CYC
START_YYYY=`echo $START_DATE | cut -c 1-4`
START_MM=`echo $START_DATE | cut -c 5-6`
START_DD=`echo $START_DATE | cut -c 7-8`
START_HH=`echo $START_DATE | cut -c 9-10`

cd $WORK_DIR

if [ $MEMBER = ctl ];then export PAIR=00;fi
if [ $MEMBER = p01 ];then export PAIR=01;fi
if [ $MEMBER = n01 ];then export PAIR=01;fi
if [ $MEMBER = p02 ];then export PAIR=02;fi
if [ $MEMBER = n02 ];then export PAIR=02;fi
if [ $MEMBER = p03 ];then export PAIR=03;fi
if [ $MEMBER = n03 ];then export PAIR=03;fi

# Run setup to initialize working directory and utility scripts
sh /nwprod/util/ush/setup.sh

#
# fcst
#

cp $PARMsref/sref_co2_trans co2_trans
cp $PARMsref/sref_tr49t67 tr49t67
cp $PARMsref/sref_tr49t85 tr49t85
cp $PARMsref/sref_tr67t85 tr67t85
cp $PARMsref/sref_RRTM_DATA RRTM_DATA

if [ $MODEL != NMB ]; then
cp $PARMsref/sref_ETAMPNEW_DATA ETAMPNEW_DATA
cp $PARMsref/sref_GENPARM.TBL GENPARM.TBL
cp $PARMsref/sref_LANDUSE.TBL LANDUSE.TBL
cp $PARMsref/sref_SOILPARM.TBL SOILPARM.TBL
cp $PARMsref/sref_VEGPARM.TBL VEGPARM.TBL
cp $PARMsref/sref_gribmap.txt gribmap.txt

cp $GESDIR/${MODEL}.t${CYC}z.${MEMBER}.pair${PAIR}.namelist.input namelist.input
cp $GESDIR/${MODEL}.t${CYC}z.${MEMBER}.wrfinput_d01 wrfinput_d01
cp $GESDIR/${MODEL}.t${CYC}z.${MEMBER}.wrfbdy_d01 wrfbdy_d01

else

cp $PARMsref/sref_ETAMPNEW_DATA4nems ETAMPNEW_DATA
cp $PARMsref/sref_GENPARM.TBL4nems GENPARM.TBL
cp $PARMsref/sref_LANDUSE.TBL4nems LANDUSE.TBL
cp $PARMsref/sref_SOILPARM.TBL4nems SOILPARM.TBL
cp $PARMsref/sref_VEGPARM.TBL4nems VEGPARM.TBL
cp $FIXglobal/global_o3prdlos.f77 fort.28
cp $FIXglobal/global_o3clim.txt fort.48
cp $PARMsref/sref_dyn_state.txt dyn_state.txt
cp $PARMsref/sref_phy_state.txt phy_state.txt
cp $PARMsref/sref_atmos.configure atmos.configure
cp $PARMsref/sref_atm_namelist atm_namelist
cat $PARMsref/sref_configure_file.in.${MODEL}.pair${PAIR}_$RES | sed s/START_YYYY/$START_YYYY/ | \
                                              sed s/START_MM/$START_MM/ | \
                                              sed s/START_DD/$START_DD/ | \
                                              sed s/START_HH/$START_HH/ | \
                                              sed s/FLENGTH/$FLENGTH/  > model_configure
#                                             sed s/START_HH/$START_HH/  > model_configure
cp model_configure configure_file_01

cp $GESDIR/$MODEL.t${CYC}z.${MEMBER}_d01_nemsio input_domain_01_nemsio
#cp $GESDIR/GWD_bin_01 GWD_bin_01
FHR=00
while [ $FHR -lt $FLENGTH ]
do
cp $GESDIR/$MODEL.t${CYC}z.${MEMBER}.boco.0$FHR boco.0$FHR
 FHR=`expr $FHR + $INCR`
 if [ $FHR -lt 10 ]; then
 FHR=0$FHR
 fi
done

fi

rm -f rsl.*

#if [ $MODEL == NMM ] && [ $PAIR == 02 ] ; then
if [ $MODEL == NMM ] && [ $PAIR == 99 ] ; then
   export pgm=sref_wrf_${model}_hwrf
   . prep_step
   startmsg
   $EXECsref/sref_wrf_${model}_hwrf >> $pgmout 2>errfile
   export err=$?;err_chk
else
   export pgm=sref_wrf_${model}
   . prep_step
   startmsg
   $EXECsref/sref_wrf_${model} >> $pgmout 2>errfile
   export err=$?;err_chk
fi

#grep "wrf: SUCCESS COMPLETE WRF" rsl.error.0000
err=$?
if [ $err -ne 0 ]; then
   echo "sref_wrf${model}_fcst failed" >> $WORK_DIR/fcst.$MEMBER.failed
   exit 1
fi

# save 12h or 6h wrf fcst for next cycle's breeding calculation
#TOMMORROW=`/nwprod/util/exec/ndate +06 ${PDY}${CYC}`
TOMMORROW=`/nwprod/util/exec/ndate +12 ${PDY}${CYC}`
Y=`echo ${TOMMORROW} | cut -c 1-4`
M=`echo ${TOMMORROW} | cut -c 5-6`
D=`echo ${TOMMORROW} | cut -c 7-8`
C=`echo ${TOMMORROW} | cut -c 9-10`

WRFF=wrfout_d01_${Y}-${M}-${D}_${C}:00:00
if [ $MODEL = NMM ];then
  cp ${WRFF} ${GESDIR}/${MODEL}.${MEMBER}.${WRFF}_$RES
fi
if [ $MODEL = ARW ];then
# Note: here MODEL=ARW. If want to apply reg bred, use name "MODEL"; otherwise, use "em"
  cp ${WRFF} ${GESDIR}/em.${MEMBER}.${WRFF}_$RES
fi
if [ $MODEL = NMB ];then
  cp nmm_b_history_nemsio.012h_00m_00.00s ${GESDIR}/${MODEL}.${MEMBER}.${WRFF}_$RES
fi

echo "done" > $WORK_DIR/fcst.$MEMBER.done

