#!/bin/csh

# c-shell script for EOF

# !!!!!! What should be modified !!!!!!
# HHH  : home directory
# var  : name of data
# NYR  : number of year
# XXX  : number of grid in longitude
# YYY  : number of grid in latitude
# SXX  : number of grid in longitude (selected)
# SYY  : number of grid in latitude (selected)
# NGR  : number of selected grid = SXX*SYY
#  NGR should be changed if there are missing data
# JPY  : number of skipped grid in latitude
# DDD  : number of days per 1 year (for models using 360 day calendar)
# TTT  : number of total time (in day) - total period
# BYY  : first year (e.g. 1979)
# NYR  : number of years (e.g. 27 for 1979-2005)
# NYR1 : NYR - 1
# LYR  : whether the data has leap year or not
#  (e.g. 1 : leap year, 0 : no leap year)
#  (0 : no leap year for 360 day calendar model)
# LNX  : whether the machine is linux or not
#  This is for the record length problem.
#  (e.g. 4 : linux machine, 1 : other machine)
# MMM  : missing value

# for ctl file
# BLO  : starting longitude
# BLA  : starting latitude
# DLO  : delta longitude
# DLA  : delta latitude
# !!!!!! What should be modified !!!!!!

#enver setenv HHH /jdata4/cdl/kim/msd
 setenv HHH ~/work/programs/MJOWG/msd




 foreach var ( olr_av u850_n1 u200_n1 )

 setenv XXX 72
 setenv YYY 37
 setenv SXX 72
 setenv SYY 13
 setenv JPY 12
 setenv NGR 936
 setenv DDD 365
 setenv TTT 9862
 setenv BYY 1979
 setenv LYR 1
 setenv LNX 1
 setenv MMM -999.
 setenv PPP 19790101_20051231

 setenv BLO 0.0
 setenv BLA -30.0
 setenv DLO 5.0
 setenv DLA 5.0

@ NYR = 27
@ NYR1 = $NYR - 1

 if ( $var == 'u850_n1' ) then
  setenv SYY 9
  setenv NGR 648
  setenv JPY 14
  setenv BLA -20.0
 endif

 cd $HHH/level_1/$var

# output directory
 mkdir -p eof/sum
 mkdir -p eof/win

# source directory
 mkdir -p src/eof

 foreach sea ( win sum )

 cd $HHH/level_1/$var/src/eof

 cp -f $HHH/level_1/sample/eof/eof.f.sample .

 sed "s#homedir#$HHH#g"             eof.f.sample > tmp1
 sed "s/variable/$var/g"                    tmp1 > tmp2
 
 if ( $sea == 'win' ) then 
 sed "s/num_r/$NYR1/g"                      tmp2 > tmp1
 sed "s/sea_num/1/g"                        tmp1 > tmp2
 sed "s/season/$sea/g"                      tmp2 > tmp1
 else if ( $sea == 'sum' ) then 
 sed "s/num_r/$NYR/g"                       tmp2 > tmp1
 sed "s/sea_num/2/g"                        tmp1 > tmp2
 sed "s/season/$sea/g"                      tmp2 > tmp1
 endif

 sed "s/num_x/$XXX/g"                       tmp1 > tmp2
 sed "s/num_y/$YYY/g"                       tmp2 > tmp1
 sed "s/sel_x/$SXX/g"                       tmp1 > tmp2
 sed "s/sel_y/$SYY/g"                       tmp2 > tmp1
 sed "s/num_d/$DDD/g"                       tmp1 > tmp2
 sed "s/num_t/$TTT/g"                       tmp2 > tmp1
 sed "s/beg_y/$BYY/g"                       tmp1 > tmp2
 sed "s/num_grid/$NGR/g"                    tmp2 > tmp1
 sed "s/beg_lat/$BLA/g"                     tmp1 > tmp2
 sed "s/num_jump/$JPY/g"                    tmp2 > tmp1
 sed "s/leap_year/$LYR/g"                   tmp1 > tmp2
 sed "s/linux_recl/$LNX/g"                  tmp2 > tmp1
 sed "s/missing/$MMM/g"                     tmp1 > tmp2
 sed "s/period/$PPP/g"                      tmp2 > eof.f

f95 eof.f
a.out
rm -f a.out

 cd $HHH/level_1/$var/eof/$sea

 cp -f $HHH/level_1/sample/eof/ts.ctl .
 cp -f $HHH/level_1/sample/eof/ts.pr.ctl .
 cp -f $HHH/level_1/sample/eof/eof.pct.ctl .
 cp -f $HHH/level_1/sample/eof/ev.ctl.sample .

 sed "s/sel_x/$SXX/g"     ev.ctl.sample > tmp1
 sed "s/sel_y/$SYY/g"              tmp1 > tmp2
 sed "s/beg_lon/$BLO/g"            tmp2 > tmp1
 sed "s/beg_lat/$BLA/g"            tmp1 > tmp2
 sed "s/del_lon/$DLO/g"            tmp2 > tmp1
 sed "s/del_lat/$DLA/g"            tmp1 > tmp2
 sed "s/missing/$MMM/g"            tmp2 > ev.ctl

# season
 end

# var
 end
