#!/bin/tcsh -f

#######################################################################
#                     Set GEOS5/ESMADIR Variables
#######################################################################

set MAKE_BCS = `echo $cwd`/bin/make_bcs
set  ESMADIR = `echo $cwd`/bin/ 

echo ' '
echo MAKE_BCS: $MAKE_BCS
echo  ESMADIR: $ESMADIR

echo   $ESMADIR/g5_modules
source $ESMADIR/g5_modules

setenv NCPUS `/usr/bin/lscpu | grep '^CPU(s)' | cut -d ':' -f2 | head -1 `
@ NCPUS = $NCPUS / 4
@ NCPUS = $NCPUS * 3
setenv OMP_NUM_THREADS 1

#######################################################################
#                            Define Colors
#         Note:  For No Colors, set C1 and C2 to NONE 
#######################################################################

set BLACK   = "\033[30m"
set RED     = "\033[31m"
set GREEN   = "\033[32m"
set YELLOW  = "\033[33m"
set BLUE    = "\033[34m"
set MAGENTA = "\033[35m"
set CYAN    = "\033[36m"
set WHITE   = "\033[37m"
set RESET   = "\033[0m"
set BOLD    = "\033[1m"

set C1 = $RED
set C2 = $BLUE
set CR = $RESET

#######################################################################
#######################################################################

set pwd = `pwd`

#######################################################################

HRCODE:
echo " "
echo "Enter the ${C1}Atmospheric Horizontal Resolution Code(s)${CR} to build:"
echo "----------------------------------------------------------------------------------------------"
echo "     Lat/Lon                     Cubed-Sphere                  SMAP-EASEv2"
echo "----------------------------------------------------------------------------------------------"
echo "   ${C2}b --  2  deg  ${CR}              ${C2}c48  --  2   deg ${CR}          ${C2}m9  --  9km EASEv2 Grid ${CR}"
echo "   ${C2}c --  1  deg  ${CR}              ${C2}c90  --  1   deg ${CR}          ${C2}m36 -- 36km EASEv2 Grid ${CR}"
echo "                                                          ${C2}m25 -- 25km EASEv2 Grid ${CR}"
echo "   ${C2}d -- 1/2 deg  ${CR}              ${C2}c180 -- 1/2  deg (${C1}56-km${C2}) ${CR}"
echo "   ${C2}e -- 1/4 deg (${C1}35-km${C2})        c360 -- 1/4  deg (${C1}28-km${C2}) ${CR} "
echo "   ${C2}                            c720 -- 1/8  deg (${C1}14-km${C2}) ${CR}"
echo "   ${C2}                            c1000 - 1/10 deg (${C1}10-km${C2}) ${CR}"
echo "   ${C2}                            c1440 - 1/16 deg (${C1} 7-km${C2}) ${CR}"
echo "   ${C2}                            c2880 - 1/32 deg (${C1} 3-km${C2}) ${CR}"
echo "   ${C2}                            c3072 - 1/32 deg (${C1} 3-km${C2}) ${CR}"
echo "   ${C2}                            c5760 - 1/64 deg (${C1}1.5-km${C2}) ${CR}"
echo " "
echo "   ${C2}o --  other${CR} Lat/Lon or Cube"
echo " "
set dummy = `echo $<`
set dummy = `echo $dummy | tr "[:upper:]" "[:lower:]"`
set HRCODES =  $dummy[1]

foreach HRCODE ($dummy)
   if( $HRCODE != 'o'       & \
       $HRCODE != 'b'       & \
       $HRCODE != 'c'       & \
       $HRCODE != 'd'       & \
       $HRCODE != 'e'       & \
       $HRCODE != 'c12'     & \
       $HRCODE != 'c24'     & \
       $HRCODE != 'c48'     & \
       $HRCODE != 'c90'     & \
       $HRCODE != 'c180'    & \
       $HRCODE != 'c360'    & \
       $HRCODE != 'c720'    & \
       $HRCODE != 'c768'    & \
       $HRCODE != 'c1000'   & \
       $HRCODE != 'c1152'   & \
       $HRCODE != 'c1440'   & \
       $HRCODE != 'c1536'   & \
       $HRCODE != 'c2880'   & \
       $HRCODE != 'c3072'   & \
       $HRCODE != 'c5760'   & \
       $HRCODE != 'm9'      & \
       $HRCODE != 'm36'     & \
       $HRCODE != 'm25') goto HRCODE
   if( $HRCODE != "$HRCODES" ) set HRCODES = `echo ${HRCODES} ${HRCODE}`
end

if( $HRCODE == o ) then
     echo "Enter the Atmospheric ${C1}Horizontal Resolution${CR}: ${C2}IM JM${CR}"
     echo "                      Note for ${C1}Cubed-Sphere${CR}: ${C2}JM must equal 6*IM${CR}"
     set Resolution = `echo $<`
endif

#######################################################################

ORSLV:
echo
echo "Enter the ${C1}Ocean Resolution Code(s)${CR} to build:"
echo "      where:  ${C2}O1 --   Low-Resolution Reynolds 1   deg${CR} (Lon/Lat Data-Ocean:  360x180 ) "
echo "              ${C2}O2 --   Med-Resolution Reynolds 1/4 deg${CR} (Lon/Lat Data-Ocean: 1440x720 ) "
echo "              ${C2}O3 --  High-Resolution    OSTIA 1/8 deg${CR} (Lon/Lat Data-Ocean: 2880x1440) "
echo "              ${C2}T1 --   Low-Resolution Tripolar 3   deg${CR} (MOM-Tripolar-Ocean:  120x65  ) "
echo "              ${C2}T2 --   Med-Resolution Tripolar 1   deg${CR} (MOM-Tripolar-Ocean:  360x200 ) "
echo "              ${C2}T3 --  High-Resolution Tripolar 1/2 deg${CR} (MOM-Tripolar-Ocean:  720x410 ) "
echo "              ${C2}T4 --  High-Resolution Tripolar 1/4 deg${CR} (MOM-Tripolar-Ocean: 1440x1080 ) "
echo "              ${C2}CS --  Cubed-Sphere Ocean              ${CR} (Cubed-Sphere Data-Ocean with Old Land) "
echo "              ${C2}NL1--   Low-Resolution Reynolds 1   deg${CR} (Lon/Lat Data-Ocean:  360x180 with New Land) "
echo "              ${C2}NL2--   Med-Resolution Reynolds 1/4 deg${CR} (Lon/Lat Data-Ocean: 1440x720 with New Land) "
echo "              ${C2}NL3--  High-Resolution    OSTIA 1/8 deg${CR} (Lon/Lat Data-Ocean: 2880x1440 with New Land) "
echo "              ${C2}NCS--  Cubed-Sphere Ocean              ${CR} (Cubed-Sphere Data-Ocean with New Land) "
set dummy = `echo $<`
set dummy = `echo $dummy | tr "[:lower:]" "[:upper:]"`
set orslvs =  $dummy[1]
foreach orslv ($dummy)
  if( $orslv != 'O1' & \
      $orslv != 'O2' & \
      $orslv != 'O3' & \
      $orslv != 'T1' & \
      $orslv != 'T2' & \
      $orslv != 'T3' & \
      $orslv != 'T4' & \
      $orslv != 'NL1'& \
      $orslv != 'NL2'& \
      $orslv != 'NL3'& \
      $orslv != 'CS' & \
      $orslv != 'NCS') goto ORSLV
  if( $orslv != "$orslvs" ) set orslvs = `echo ${orslvs} ${orslv}`
end

#######################################################################

echo ""
echo "${C1}Atmospheric Codes:${CR} ${C2}$HRCODES${CR}"
echo "${C1} Ocean Resolution:${CR} ${C2}$orslvs${CR}"

#######################################################################
#######################################################################

set make_bcs_jobs = ''

# ------------------------------------
# Loop over All Ocean Resolution Codes
# ------------------------------------

set GLOBAL_CATCH_DATA = /discover/nobackup/ltakacs/bcs/LandSurfaceData_for_Catchment_Parameters/global.cat_id.catch.ORIG.DL
set HOSTNAME = `hostname | rev | cut -c3- | rev`
if ( $HOSTNAME == discover ) then
    set l_data = /discover/nobackup/rreichle/l_data/LandBCs_files_for_mkCatchParam/V001/
else
    set l_data = /nobackup/gmao_SIteam/ModelData/l_data/LandBCs_files_for_mkCatchParam/V001/
endif

foreach orslv ($orslvs)

if( $orslv == NL1 | $orslv == T1 | $orslv == T2 | $orslv == T3) then
    # Great-Lakes & Caspian-Sea treated as Model LAKE tiles, Surface Temperatures will be Model Derived
    # -------------------------------------------------------------------------------------------------
    set GLOBAL_CATCH_DATA = ${l_data}/GEOS5_10arcsec_mask_freshwater-lakes.nc
endif

if( $orslv == NL2 | $orslv == NL3 | $orslv == NCS ) then
    # Great-Lakes & Caspian-Sea treated as Model Ocean tiles, Surface Temperatures will be Model Derived
    # --------------------------------------------------------------------------------------------------
    set GLOBAL_CATCH_DATA = ${l_data}/GEOS5_10arcsec_mask.nc
endif

if( $orslv == O1 ) then
    # Great-Lakes & Caspian-Sea treated as Model LAKE tiles, Surface Temperatures will be Model Derived
    # -------------------------------------------------------------------------------------------------
    set GLOBAL_CATCH_DATA = ${l_data}/global.cat_id.catch.DL
endif

if( $orslv == O2 | $orslv == CS ) then
    # Great-Lakes & Caspian-Sea treated as Model OCEAN tiles, Surface Temperatures will be taken from OCEAN SST Data
    # --------------------------------------------------------------------------------------------------------------
    set GLOBAL_CATCH_DATA = ${l_data}/global.cat_id.catch.GreatLakesCaspian_Updated.DL
endif

if( $orslv == O3 ) then
    # Great-Lakes & Caspian-Sea treated as Model OCEAN tiles, Surface Temperatures will be taken from OCEAN SST Data
    # --------------------------------------------------------------------------------------------------------------
    set GLOBAL_CATCH_DATA = ${l_data}/global.cat_id.catch.GreatLakesCaspian_Updated.DL
endif

    set MASKFILE = `echo ${GLOBAL_CATCH_DATA} | rev | cut -d / -f1 | rev `

echo ""
    
@ imo = 0 
@ jmo = 0 
@ NX = 8640
@ NY = 4320 
@ NT = 232000000

set LATLON_OCEAN = FALSE
set TRIPOL_OCEAN = FALSE
set CUBED_SPHERE_OCEAN = FALSE

if( $orslv == O1 | $orslv == NL1 ) then
    @ imo = 360   # Lat/Lon Data-Ocean (Reynolds 1-deg)
    @ jmo = 180   # Lat/Lon Data-Ocean (Reynolds 1-deg)
endif
if( $orslv == O2 | $orslv == NL2 ) then
    @ imo = 1440  # Lat/Lon Data-Ocean (Reynolds 1/4-deg)
    @ jmo = 720   # Lat/Lon Data-Ocean (Reynolds 1/4-deg)
endif
if( $orslv == O3 | $orslv == NL3 ) then
    @ imo = 2880  # Lat/Lon Data-Ocean (OSTIA 1/8-deg)
    @ jmo = 1440  # Lat/Lon Data-Ocean (OSTIA 1/8-deg)
endif
if( $orslv == T1 ) then
    @ imo = 120   # MOM Tripolar-Ocean
    @ jmo = 65    # MOM Tripolar-Ocean
endif
if( $orslv == T2 ) then
    @ imo = 360  # MOM Tripolar-Ocean
    @ jmo = 200  # MOM Tripolar-Ocean
endif
if( $orslv == T3 ) then
    @ imo = 720   # MOM Tripolar-Ocean
    @ jmo = 410   # MOM Tripolar-Ocean
endif
if( $orslv == T4 ) then
    @ imo = 1440   # MOM Tripolar-Ocean
    @ jmo = 1080   # MOM Tripolar-Ocean
endif

if( $orslv == NL1 | $orslv == NL2 | $orslv == NL3 | $orslv == O1 | $orslv == O2| $orslv == O3 ) then
    set LATLON_OCEAN = TRUE
    set     DATENAME = DE
    set     POLENAME = PE
endif
if( $orslv == T1 | $orslv == T2 | $orslv == T3 | $orslv == T4 ) then
    set TRIPOL_OCEAN = TRUE
    set     DATENAME = TM
    set     POLENAME = TM
endif
if( $orslv == CS | $orslv == NCS ) set CUBED_SPHERE_OCEAN = TRUE

# -------------------------------------
# Loop over All Atmospheric Resolutions
# -------------------------------------

foreach HRCODE ($HRCODES)

if( $HRCODE == o ) then
     set im = $Resolution[1]
     set jm = $Resolution[2]
     @  im6 = $im * 6
     if( $im6 == $jm ) then
         set nc = ${im}
         set RC = ${im}x${jm}
         set grid = cube
     else
         set grid = latlon
     endif
endif

if( $HRCODE == b ) then
     set im = 144
     set jm = 91
     set grid = latlon
endif
if( $HRCODE == c ) then
     set im = 288
     set jm = 181
     set grid = latlon
endif
if( $HRCODE == d ) then
     set im = 576
     set jm = 361
     set grid = latlon
endif
if( $HRCODE == e ) then
     set im = 1152
     set jm = 721
     set grid = latlon
endif
if( $HRCODE == c12 ) then
     set nc = 12
     set RC = 12x72
     set grid = cube
endif
if( $HRCODE == c24 ) then
     set nc = 24
     set RC = 24x144
     set grid = cube
endif
if( $HRCODE == c48 ) then
     set nc = 48
     set RC = 48x288
     set grid = cube
endif
if( $HRCODE == c90 ) then
     set nc = 90
     set RC = 90x540
     set grid = cube
endif
if( $HRCODE == c180 ) then
     set nc = 180
     set RC = 180x1080
     set grid = cube
endif
if( $HRCODE == c360 ) then
     set nc = 360
     set RC = 360x2160
     set grid = cube
endif
if( $HRCODE == c720 ) then
     set nc = 720
     set RC = 720x4320
     set grid = cube
endif
if( $HRCODE == c768 ) then
     set nc = 768
     set RC = 768x4608
     set grid = cube
     @ NX = 17280
     @ NY = 8640
endif
if( $HRCODE == c1000 ) then
     set nc = 1000
     set RC = 1000x6000
     set grid = cube
endif
if( $HRCODE == c1152 ) then
     set nc = 1152
     set RC = 1152x6912
     set grid = cube
endif
if( $HRCODE == c1440 ) then
     set nc = 1440
     set RC = 1440x8640
     set grid = cube
     @ NX = 17280
     @ NY = 8640
endif
if( $HRCODE == c1536 ) then
     set nc = 1536
     set RC = 1536x9216
     set grid = cube
     @ NX = 43200
     @ NY = 21600
endif
if( $HRCODE == c2880 ) then
     set nc = 2880
     set RC = 2880x17280
     set grid = cube
     @ NX = 21600
     @ NY = 10800
endif
if( $HRCODE == c3072 ) then
     set nc = 3072
     set RC = 3072x18432
     set grid = cube
     @ NX = 43200
     @ NY = 21600
endif
if( $HRCODE == c5760 ) then
     set nc = 5760
     set RC = 5760x34560
     set grid = cube
     @ NX = 43200
     @ NY = 21600
endif
if( $HRCODE == m9 ) then
     set im = 3856
     set jm = 1624
     set grid = ease
     set MGRID = M09
endif
if( $HRCODE == m36 ) then
     set im = 964
     set jm = 406
     set grid = ease
     set MGRID = M36
endif
if( $HRCODE == m25 ) then
     set im = 1383
     set jm = 586
     set grid = ease
     set MGRID = M25
endif
if( $MASKFILE == GEOS5_10arcsec_mask_freshwater-lakes.nc | $MASKFILE == GEOS5_10arcsec_mask.nc ) then
     @ NX = 43200
     @ NY = 21600
endif

set OUTDIR = `date +'%Y%m%d%H%M%S'`

#######################################################################
#                        LatLon Case
#######################################################################



if( $grid == latlon ) then

set RS  = ${im}x${jm}
set IM  = `echo ${im}   | awk '{printf "%4.4i", $1}'`
set JM  = `echo ${jm}   | awk '{printf "%4.4i", $1}'`
set IMO = `echo ${imo}  | awk '{printf "%4.4i", $1}'`
set JMO = `echo ${jmo}  | awk '{printf "%4.4i", $1}'`

set             BCNAME = DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}
set             BCDIR  = $OUTDIR/$BCNAME.scratch
set             BCJOB  = $BCDIR/$BCNAME.j

if(     -e $BCDIR) /bin/rm -r $BCDIR
mkdir -p $BCDIR

echo "${C1}     Creating:${CR} ${C2}$BCJOB${CR}"
/bin/rm -f     $BCJOB
cat << _EOF_ > $BCJOB
#!/bin/csh -x

setenv ESMADIR $ESMADIR

cd $pwd
cd $BCDIR

/bin/ln -s $pwd/bin
mkdir -p til rst data/MOM clsm/plots
ln -s /home/yvikhlia/nobackup/coupled/Forcings/a90x540_o360x200/INPUT/ data/MOM/360x200
ln -s /home/yvikhlia/nobackup/coupled/Forcings/a90x540_o720x410/INPUT/ data/MOM/720x410
ln -s /home/yvikhlia/nobackup/coupled/Forcings/a180x1080_o1440x1080/INPUT/ data/MOM/1440x1080

cd data 
ln -s $l_data CATCH

cd ../

if( -e DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}.stdout ) /bin/rm -f DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}.stdout
setenv MASKFILE $MASKFILE
source bin/g5_modules
bin/mkLatLonRaster.x -x ${NX} -y ${NY}  -t -1 ${IM} ${JM} >/dev/null
bin/mkLandRaster.x -x ${NX} -y ${NY} -v -t ${NT}

if( $LATLON_OCEAN == TRUE ) then
    bin/mkLatLonRaster.x -x ${NX} -y ${NY} -b DE -p PE -t 0 ${IMO} ${JMO} >/dev/null
    bin/CombineRasters.x -f 0 -t ${NT} DE${IMO}xPE${JMO} Pfafstetter >/dev/null
    bin/CombineRasters.x -t ${NT} DC${IM}xPC${JM} DE${IMO}xPE${JMO}-Pfafstetter
    bin/mkCatchParam.x -x ${NX} -y ${NY} -g DC${IM}xPC${JM}_DE${IMO}xPE${JMO}-Pfafstetter
    setenv OMP_NUM_THREADS ${NCPUS}
    bin/mkCatchParam.x -x ${NX} -y ${NY} -g DC${IM}xPC${JM}_DE${IMO}xPE${JMO}-Pfafstetter
endif
if( $TRIPOL_OCEAN == TRUE ) then
    bin/mkMOMAquaRaster.x -x $NX -y $NY  data/MOM/${imo}x${jmo}/grid_spec.nc > /dev/null
    bin/CombineRasters.x -f 0 -t ${NT} ${DATENAME}${IMO}x${POLENAME}${JMO} Pfafstetter >/dev/null
    bin/CombineRasters.x -t ${NT} DC${IM}xPC${JM} ${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter
    bin/mk_runofftbl.x DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter
    bin/mkCatchParam.x -x ${NX} -y ${NY} -g DE${IMO}xPE${JMO}_DE${IMO}xPE${JMO}-Pfafstetter
    setenv OMP_NUM_THREADS ${NCPUS}
    bin/mkCatchParam.x -x ${NX} -y ${NY} -g DE${IMO}xPE${JMO}_DE${IMO}xPE${JMO}-Pfafstetter
endif

/bin/mv clsm  clsm.${IM}x${JM}
/bin/cp til/DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter.til clsm.${IM}x${JM}
/bin/rm clsm.${IM}x${JM}/DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter.file

cd clsm.${IM}x${JM}
   /bin/mv vegdyn.data   vegdyn_${RS}_DC.dat
   /bin/mv nirdf.dat      nirdf_${RS}_DC.dat
   /bin/mv visdf.dat      visdf_${RS}_DC.dat
   /bin/mv   lai.dat   lai_clim_${RS}_DC.data
   /bin/mv green.dat green_clim_${RS}_DC.data
   /bin/mv lnfm.dat   lnfm_clim_${RS}_DC.data
   /bin/mv ndvi.dat   ndvi_clim_${RS}_DC.data
   /bin/mv MODELFPARmean.dat MODELFPARmean_${RS}_DC.dat 
   /bin/mv MODELFPARstd.dat  MODELFPARstd_${RS}_DC.dat  
   /bin/mv MODISFPARmean.dat MODISFPARmean_${RS}_DC.dat 
   /bin/mv MODISFPARstd.dat  MODISFPARstd_${RS}_DC.dat  
   /bin/mv MODISNIRmean.dat  MODISNIRmean_${RS}_DC.dat  
   /bin/mv MODISNIRstd.dat   MODISNIRstd_${RS}_DC.dat   
   /bin/mv MODISVISmean.dat  MODISVISmean_${RS}_DC.dat  
   /bin/mv MODISVISstd.dat   MODISVISstd_${RS}_DC.dat   

/bin/rm -f sedfile
cat > sedfile << EOF
s/DC${IM}xPC${JM}/PC${im}x${jm}-DC/g
s/${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter/PE${imo}x${jmo}-${DATENAME}/g
EOF
sed -f sedfile       DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter.til > tile.file
/bin/mv -f tile.file DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter.til
/bin/rm -f sedfile

cd ../

/bin/rm -rf              DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}
/bin/mv clsm.${IM}x${JM} DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}
                     cd  DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}
              mkdir clsm
            /bin/mv ar.new \
                    bf.dat \
                    ts.dat \
                    catchment.def \
                    cti_stats.dat \
                    tau_param.dat \
                    soil_param.dat \
                    mosaic_veg_typs_fracs \
		    soil_param.first \
		    README \
		    bad_sat_param.tiles \
		    lai.* \
                    AlbMap* \
		    plots \
                    CLM_veg_typs_fracs \
                    CLM4.5_veg_typs_fracs \
                    mkCatchParam.log \
                    CLM_NDep_SoilAlb_T2m \
                    CLM4.5_abm_peatf_gdp_hdm_fc \
  		    catch_params.nc4 \
		    catchcn_params.nc4 \
		    country_and_state_code.data \
                    clsm
                cd  ../ 

/bin/mv rst DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}
/bin/mv til DC${IM}xPC${JM}_${DATENAME}${IMO}x${POLENAME}${JMO}

cd ../../
/bin/mv    $BCDIR/$BCNAME .
/bin/mv    $BCJOB                $BCNAME
/bin/rm -r $OUTDIR

_EOF_
chmod 755 $BCJOB
set make_bcs_jobs = `echo $make_bcs_jobs $BCJOB`

endif # End Latlon Test

#######################################################################
#                          Cube Case
#######################################################################

if( $grid == cube ) then

 @  nc6 =  $nc * 6
set NC  = `echo ${nc}   | awk '{printf "%4.4i", $1}'`
set IMO = `echo ${imo}  | awk '{printf "%4.4i", $1}'`
set JMO = `echo ${jmo}  | awk '{printf "%4.4i", $1}'`

if( $CUBED_SPHERE_OCEAN == TRUE ) then
	set       BCNAME = CF${NC}x6C_CF${NC}x6C
	set     DATENAME = CF
	set     POLENAME =    
	set          IMO = ${NC}
	set          JMO = 6C
else
	set       BCNAME = CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}
endif

set             BCDIR  = $OUTDIR/$BCNAME.scratch
set             BCJOB  = $BCDIR/$BCNAME.j

if(     -e $BCDIR) /bin/rm -r $BCDIR
mkdir -p $BCDIR

echo "${C1}     Creating:${CR} ${C2}$BCJOB${CR}"
/bin/rm -f     $BCJOB
cat << _EOF_ > $BCJOB
#!/bin/csh -x

setenv ESMADIR $ESMADIR

cd $pwd
cd $BCDIR

/bin/ln -s $pwd/bin
mkdir -p til rst data/MOM clsm/plots
ln -s /home/yvikhlia/nobackup/coupled/Forcings/a90x540_o360x200/INPUT/ data/MOM/360x200
ln -s /home/yvikhlia/nobackup/coupled/Forcings/a90x540_o720x410/INPUT/ data/MOM/720x410
ln -s /home/yvikhlia/nobackup/coupled/Forcings/a180x1080_o1440x1080/INPUT/ data/MOM/1440x1080

cd data 
ln -s $l_data CATCH

cd ../
 
if( -e CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}.stdout ) /bin/rm -f CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}.stdout
setenv MASKFILE $MASKFILE
source bin/g5_modules
bin/mkCubeFVRaster.x -x ${NX} -y ${NY} ${NC} >/dev/null 
bin/mkLandRaster.x -x ${NX} -y ${NY} -v -t ${NT}

if( $LATLON_OCEAN == TRUE ) then
    bin/mkLatLonRaster.x -x ${NX} -y ${NY} -b DE -p PE -t 0 ${IMO} ${JMO} >/dev/null
    bin/CombineRasters.x -f 0 -t ${NT} DE${IMO}xPE${JMO} Pfafstetter >/dev/null
    bin/CombineRasters.x -t ${NT} CF${NC}x6C DE${IMO}xPE${JMO}-Pfafstetter
    bin/mkCatchParam.x -x ${NX} -y ${NY} -g CF${NC}x6C_DE${IMO}xPE${JMO}-Pfafstetter
    setenv OMP_NUM_THREADS ${NCPUS}
    bin/mkCatchParam.x -x ${NX} -y ${NY} -g CF${NC}x6C_DE${IMO}xPE${JMO}-Pfafstetter
endif

if( $TRIPOL_OCEAN == TRUE ) then
    bin/mkMOMAquaRaster.x -x ${NX} -y ${NY}  data/MOM/${imo}x${jmo}/grid_spec.nc > /dev/null
    bin/CombineRasters.x -f 0 -t ${NT} ${DATENAME}${IMO}x${POLENAME}${JMO} Pfafstetter >/dev/null
    bin/CombineRasters.x -t ${NT} CF${NC}x6C ${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter
    bin/mk_runofftbl.x CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter
    bin/mkCatchParam.x -x ${NX} -y ${NY} -g CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter
    setenv OMP_NUM_THREADS ${NCPUS}
    bin/mkCatchParam.x -x ${NX} -y ${NY} -g CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter
endif

if( $CUBED_SPHERE_OCEAN == TRUE ) then
    bin/CombineRasters.x -f 0 -t ${NT} CF${NC}x6C Pfafstetter >/dev/null
    bin/CombineRasters.x -t ${NT} CF${NC}x6C CF${NC}x6C-Pfafstetter
    bin/mkCatchParam.x -x ${NX} -y ${NY} -g CF${NC}x6C_CF${NC}x6C-Pfafstetter
    setenv OMP_NUM_THREADS ${NCPUS}
    bin/mkCatchParam.x -x ${NX} -y ${NY} -g CF${NC}x6C_CF${NC}x6C-Pfafstetter    
endif

/bin/mv clsm  clsm.C${NC}
/bin/cp til/CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter.til clsm.C${NC}
/bin/rm clsm.C${NC}/CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter.file

cd clsm.C${NC}
   /bin/mv vegdyn.data   vegdyn_${RC}.dat
   /bin/mv nirdf.dat      nirdf_${RC}.dat
   /bin/mv visdf.dat      visdf_${RC}.dat
   /bin/mv   lai.dat   lai_clim_${RC}.data
   /bin/mv green.dat green_clim_${RC}.data
   /bin/mv lnfm.dat   lnfm_clim_${RC}.data
   /bin/mv ndvi.dat   ndvi_clim_${RC}.data
   /bin/mv MODELFPARmean.dat MODELFPARmean_${RC}.dat 
   /bin/mv MODELFPARstd.dat  MODELFPARstd_${RC}.dat  
   /bin/mv MODISFPARmean.dat MODISFPARmean_${RC}.dat 
   /bin/mv MODISFPARstd.dat  MODISFPARstd_${RC}.dat  
   /bin/mv MODISNIRmean.dat  MODISNIRmean_${RC}.dat  
   /bin/mv MODISNIRstd.dat   MODISNIRstd_${RC}.dat   
   /bin/mv MODISVISmean.dat  MODISVISmean_${RC}.dat  
   /bin/mv MODISVISstd.dat   MODISVISstd_${RC}.dat   

/bin/rm -f sedfile
if( $CUBED_SPHERE_OCEAN == TRUE ) then
cat > sedfile << EOF
s/${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter/OC${nc}x${nc6}-CF/g
s/CF${NC}x6C/PE${nc}x${nc6}-CF/g
EOF
sed -f sedfile       CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter.til > tile.file
/bin/mv -f tile.file CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter.til
/bin/rm -f sedfile
else
cat > sedfile << EOF
s/CF${NC}x6C/PE${nc}x${nc6}-CF/g
s/${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter/PE${imo}x${jmo}-${DATENAME}/g
EOF
sed -f sedfile       CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter.til > tile.file
/bin/mv -f tile.file CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}-Pfafstetter.til
/bin/rm -f sedfile
endif

cd ../

/bin/rm -rf         CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}
/bin/mv clsm.C${NC} CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}
                cd  CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}
              mkdir clsm
            /bin/mv ar.new \
                    bf.dat \
                    ts.dat \
                    catchment.def \
                    cti_stats.dat \
                    tau_param.dat \
                    soil_param.dat \
                    mosaic_veg_typs_fracs \
		    soil_param.first \
		    README \
		    bad_sat_param.tiles \
		    lai.* \
                    AlbMap* \
		    plots \
                    CLM_veg_typs_fracs \
                    CLM4.5_veg_typs_fracs \
                    mkCatchParam.log \
                    CLM_NDep_SoilAlb_T2m \
                    CLM4.5_abm_peatf_gdp_hdm_fc \
  		    catch_params.nc4 \
		    catchcn_params.nc4 \
		    country_and_state_code.data \
                    clsm
                cd  ../ 

/bin/mv rst CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}
/bin/mv til CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}
/bin/mv $BCJOB CF${NC}x6C_${DATENAME}${IMO}x${POLENAME}${JMO}/.
cd ../../
/bin/mv    $BCDIR/$BCNAME .
/bin/mv    $BCJOB                $BCNAME
/bin/rm -r $OUTDIR

_EOF_
chmod 755 $BCJOB
set make_bcs_jobs = `echo $make_bcs_jobs $BCJOB`

endif # End Cube Test

#######################################################################
#                        EASE Case
#######################################################################

if( $grid == ease ) then
echo $HRCODE 

if( $HRCODE == m25 ) then
set EVERSION = EASE
else
set EVERSION = EASEv2
endif

set RS  = ${im}x${jm}
set IM  = `echo ${im}   | awk '{printf "%4.4i", $1}'`
set JM  = `echo ${jm}   | awk '{printf "%4.4i", $1}'`

set             BCNAME = SMAP_${EVERSION}_${MGRID}
set             BCDIR  = $OUTDIR/$BCNAME.scratch
set             BCJOB  = $BCDIR/$BCNAME.j

if(     -e $BCDIR) /bin/rm -r $BCDIR
mkdir -p $BCDIR

echo "${C1}     Creating:${CR} ${C2}$BCJOB${CR}"
/bin/rm -f     $BCJOB
cat << _EOF_ > $BCJOB
#!/bin/csh -x

setenv ESMADIR $ESMADIR
cd $pwd
cd $BCDIR

/bin/ln -s $pwd/bin
mkdir -p til rst data/MOM clsm/plots
cd data 
ln -s $l_data CATCH
cd ../
source bin/g5_modules
if ( $EVERSION == EASEv2 ) then
setenv MASKFILE ${MASKFILE}
bin/mkSMAPTilesPara_v2.x -smap_grid ${MGRID}
setenv OMP_NUM_THREADS ${NCPUS}
head -1 clsm/mkCatchParam.log > smap_cmd
chmod 755 smap_cmd
./smap_cmd
else
setenv MASKFILE ${MASKFILE}
bin/mkSMAPTilesPara.x -smap_grid ${MGRID}
setenv OMP_NUM_THREADS ${NCPUS}
head -1 clsm/mkCatchParam.log > smap_cmd
chmod 755 smap_cmd
./smap_cmd
endif

/bin/mv clsm  clsm.${IM}x${JM}
/bin/cp til/SMAP_${EVERSION}_${MGRID}_${RS}.til clsm.${IM}x${JM}

cd clsm.${IM}x${JM}
   /bin/mv vegdyn.data   vegdyn_${RS}_DE.dat
   /bin/mv nirdf.dat      nirdf_${RS}_DE.dat
   /bin/mv visdf.dat      visdf_${RS}_DE.dat
   /bin/mv   lai.dat   lai_clim_${RS}_DE.data
   /bin/mv green.dat green_clim_${RS}_DE.data
   /bin/mv lnfm.dat   lnfm_clim_${RS}_DE.data
   /bin/mv ndvi.dat   ndvi_clim_${RS}_DE.data
   /bin/mv MODELFPARmean.dat MODELFPARmean_${RS}_DE.dat 
   /bin/mv MODELFPARstd.dat  MODELFPARstd_${RS}_DE.dat  
   /bin/mv MODISFPARmean.dat MODISFPARmean_${RS}_DE.dat 
   /bin/mv MODISFPARstd.dat  MODISFPARstd_${RS}_DE.dat  
   /bin/mv MODISNIRmean.dat  MODISNIRmean_${RS}_DE.dat  
   /bin/mv MODISNIRstd.dat   MODISNIRstd_${RS}_DE.dat   
   /bin/mv MODISVISmean.dat  MODISVISmean_${RS}_DE.dat  
   /bin/mv MODISVISstd.dat   MODISVISstd_${RS}_DE.dat   


cd ../

/bin/rm -rf              SMAP_${EVERSION}_${MGRID}
/bin/mv clsm.${IM}x${JM} SMAP_${EVERSION}_${MGRID}
                     cd  SMAP_${EVERSION}_${MGRID} 
                   mkdir clsm
                 /bin/mv ar.new \
                         bf.dat \
                         ts.dat \
                         catchment.def \
                         cti_stats.dat \
                         tau_param.dat \
                         soil_param.dat \
                         mosaic_veg_typs_fracs \
		         soil_param.first \
		         bad_sat_param.tiles \
			 README \
			 lai.* \
                         AlbMap* \
			 g5fmt \
			 vegetation.hst2 \
			 pfaf_fractions.dat \
			 plots \
                         CLM_veg_typs_fracs \
                         CLM4.5_veg_typs_fracs \
                         mkCatchParam.log \
                         Grid2Catch_TransferData.nc \
                         CLM_NDep_SoilAlb_T2m \
                         CLM4.5_abm_peatf_gdp_hdm_fc \
  		         catch_params.nc4 \
		         catchcn_params.nc4 \
			 country_and_state_code.data \
                         clsm
                     cd  ../ 

/bin/mv rst  SMAP_${EVERSION}_${MGRID}
/bin/mv til  SMAP_${EVERSION}_${MGRID}

cd ../../
/bin/mv    $BCDIR/$BCNAME .
/bin/mv    $BCJOB                $BCNAME
/bin/rm -r $OUTDIR

_EOF_
chmod 755 $BCJOB
set make_bcs_jobs = `echo $make_bcs_jobs $BCJOB`
endif # End if directory exists
endif # End ease Test

end # End Atmospheric Resolution Loop

# -----------------------------

end # End Ocean Resolution Loop

#######################################################################

echo " "
echo "Do you want to submit ${C2}MAKE_BCS${CR} jobs to run in the background? (Y/N)"
echo "-------------------------------------------------------------------"
echo " "
set dummy = `echo $<`
set dummy = `echo $dummy | tr "[:lower:]" "[:upper:]"`
if(.$dummy == .Y | .$dummy == YES ) then
    foreach job ($make_bcs_jobs)
      nohup ./$job &
    end
endif

