Ticket #9: flex_ecmwf_91_finegrid_ecgate

File flex_ecmwf_91_finegrid_ecgate, 34.6 KB (added by adityavaishya, 11 years ago)
Line 
1#!/bin/ksh
2
3# This Job has been ported to the new server ecgate
4# Starting on 2004-06-29, 4-V Data with step 09 are no longer available
5# in the Mars Database. This script has been modified accordingly
6#
7#@ shell       = /usr/bin/ksh
8
9# NOTE: If calculation on Gaussian grid are required below, it is
10#       recommended to send the job to the ECMWF HPC facility
11# NOTE: On hpce the class should be ns or np
12# NOTE: On ecgate it should be normal
13
14#@ class        = normal
15#@ resources    = ConsumableCpus(1) ConsumableMemory(800MB)
16
17#@ job_name     = flex__leo_ecmwf
18#@ output       = $(job_name).$(host).$(jobid).out
19#@ error        = $(job_name).$(host).$(jobid).out
20# @ environment = COPY_ALL
21
22#@ queue
23
24# ON ECGATE:
25# start with ecjput ecgate flex_ecmwf on gateway server
26# start with llsubmit flex_ecmwf on ecgate
27
28# ON HPCE:
29# start with ecjput hpce flex_ecmwf on gateway server
30# start with llsubmit flex_ecmwf on hpce
31
32
33set -x
34
35JOBNAME=flex_ecmwf_${HOST}
36
37env
38ulimit -a
39export OMP_NUM_THREADS=1
40
41#export SCRATCH=$TEMP
42export SCRATCHDIR=${SCRATCH}/${JOBNAME}_$$
43
44mkdir $SCRATCHDIR
45cd $SCRATCHDIR
46
47LOG_FILE=$SCRATCHDIR/${JOBNAME}_$$
48exec 1>${LOG_FILE}
49
50CONTROLFILE=./CONTROL_ERA
51
52###################################
53#BEGIN: modification of config file
54###################################
55
56cat <<EOF >CONTROL_ERA
57DAY1 20111101
58DAY2 20111102
59DTIME 3
60FORCE_EI 1
61M_GRID 20 
62M_LEFT -1000
63M_LOWER 3000
64M_UPPER 6000
65M_RIGHT 3000
66M_LEVEL 60
67M_RESOL 255
68M_GAUSS 1
69M_ACCURACY 24
70M_OMEGA 1
71M_OMEGADIFF 1
72M_SMOOTH 0
73M_ADDPAR
74M_FORMAT GRIB2
75GATEWAY ecaccess.ecmwf.int
76DESTINATION leo@genericSftp
77ECSTORAGE 1
78ECTRANS 0
79ECFSDIR ectmp:/${USER}/econdemand/
80MAILOPS ${USER}
81MAILFAIL ${USER}
82EXEDIR .
83SOURCECODE ecgate:flex_extract_ecgate_V4
84EOF
85
86#################################
87#END: modification of config file
88#################################
89
90# no changes below
91
92NRW=0
93
94#ksh scripts for date manipulation
95juldate2()
96   {
97    let jc=$1
98    if (( ${#jc} < 8 ))
99    then
100    print "illegal date!"
101    exit 1
102    fi
103    let y=`echo $jc | cut -c1-4`
104    let m1=`echo $jc | cut -c5`
105    let m2=`echo $jc | cut -c6`
106    m=$m1$m2
107    let d1=`echo $jc | cut -c7`
108    let d2=`echo $jc | cut -c8`
109    d=$d1$d2
110    let jd=367*y-7*(y+(m+9)/12)/4+275*m/9+d+1721014
111    let jd=jd+15-3*((y+(m-9)/7)/100+1)/4
112    print $jd
113    }
114
115civildate2()
116   {
117    let jd=$1
118    if (( jd < 1721060 ))
119    then
120       print "Julian date not in AD."
121       exit 1
122    fi
123    let k=jd+68569
124    let n=4*k/146097
125    let k=k-\(146097*n+3\)/4
126    let y=4000*(k+1)/1461001
127    let k=k-1461*y/4+31
128    let m=80*k/2447
129    let d=k-\(2447*m\)/80
130    let k=m/11
131    let m=m+2-12*k
132    let y=100*(n-49)+y+k
133    [ $m -le 9 ] && m=0$m
134    [ $d -le 9 ] && d=0$d
135    print $y$m$d
136    }
137
138date2m1()
139    {
140    let ymd=$1
141    let j1=`juldate2 $ymd`
142    let j0=j1-1
143    civildate2 $j0
144    }
145
146date2p1()
147    {
148    let ymd=$1
149    let j1=`juldate2 $ymd`
150    let j0=j1+1
151    civildate2 $j0
152    }
153
154date2m14()
155    {
156    let ymd=$1
157    let j1=`juldate2 $ymd`
158    let j0=j1-14
159    civildate2 $j0
160    }
161
162myerror()
163  {
164   
165    echo $1
166    echo $2
167    echo $3
168    echo ABORT!
169
170    for MUSER in $MAILFAIL
171    do
172      mailx -s ERROR:${JOBNAME} ${MUSER} <${LOG_FILE}
173    done
174  }
175
176
177#read CONTROL file, process specifications
178while read NAME PARA
179do
180
181eval "export $NAME='$PARA'"
182echo `echo $NAME`=$PARA
183
184done <${CONTROLFILE}
185
186if [ -z "$DAY1" -o -z "$DAY2" ]; then
187    myerror 'DAY specification missing !'
188    exit 1
189fi
190
191#defaults
192[ -z "$FORCE_E40" ] && FORCE_E40=0
193[ -z "$FORCE_EI" ] && FORCE_EI=1
194[ -z "$FORCE_EPS" ] && FORCE_EPS=0
195[ -z "$M_EXPVER" ] && M_EXPVER=1
196[ -z "$M_STREAM" ] && M_STREAM=OPER
197[ -z "$DTIME" ] && DTIME=6
198[ -z "$M_NUMBER" ] && M_NUMBER=1
199[ -z "$M_GRID" ] && M_GRID=20
200[ -z "$M_LOWER" ] && M_LOWER=3000
201[ -z "$M_LEFT" ] && M_LEFT=-1000
202[ -z "$M_UPPER" ] && M_UPPER=6000
203[ -z "$M_RIGHT" ] && M_RIGHT=3000
204[ -z "$M_LEVEL" ] && M_LEVEL=91
205[ -z "$M_LEVMIN" ] && M_LEVMIN=1
206[ -z "$M_LEVMAX" ] && M_LEVMAX=91
207[ -z "$M_ADDPAR" ] && M_ADDPAR=''
208[ -z "$M_RESOL" ] &&  M_RESOL=799
209[ -z "$M_GAUSS" ] &&  M_GAUSS=0
210[ -z "$M_SMOOTH" ] &&  M_SMOOTH=0
211[ -z "$M_OMEGA" ] &&  M_OMEGA=0
212[ -z "$M_OMEGADIFF" ] &&  M_OMEGADIFF=0
213[ -z "$M_ACCURACY" ] &&  M_ACCURACY=24
214[ -z "$M_FORMAT" ] &&  M_FORMAT=GRIB2
215[ -z "$EXEDIR" ] && EXEDIR=.
216[ -z "$SOURCECODE" ] && SOURCECODE=ecgate:flex_extract_ecgate_V2
217[ -z "$GATEWAY" ] && GATEWAY=''
218[ -z "$DESTINATION" ] && DESTINATION=''
219[ -z "$ECTRANS" ] && ECTRANS=1
220[ -z "$ECSTORAGE" ] && ECSTORAGE=1
221[ -z "$ECFSDIR" ] && ECFSDIR=ectmp:
222[ -z "$MAILOPS" ] && MAILOPS=${USER}
223[ -z "$MAILFAIL" ] && MAILFAIL=${USER}
224
225#dates for switch from ERA40 to OPS data
226ERA40START=19570902 #19570901
227ERA40END=20001013
228VAR12START=20000913 #20000912
229
230#model changes
231RES511=20001121
232
233#additional dates for flux retrievals (polynomial interpolation)
234DAY1M1=`date2m1 ${DAY1}`
235DAY2P1=`date2p1 ${DAY2}`
236
237#julian dates for time loops
238JULDAY1=`juldate2 ${DAY1}`
239JULDAY2=`juldate2 ${DAY2}`
240
241echo JULDATES $JULDAY1 $JULDAY2
242
243if [ $M_OMEGADIFF -eq 1 ] ; then
244  M_OMEGA=1
245fi
246
247#check consistency
248if [ ${DAY1} -gt ${DAY2} ]; then
249    `myerror "ERROR: DAY1 > DAY2: ${DAY1}, ${DAY2}"`
250    exit 1
251fi
252
253if [ ${DAY1} -lt ${ERA40START} ]; then
254    `myerror "ERROR: DAY1 < ERA40START ${DAY1} ${ERA40START}"`
255    exit 1
256fi
257
258if [ ${FORCE_E40} -eq 1 -a ${FORCE_EI} -eq 1 ]; then
259    `myerror "ERROR: Cannot force ERA-Interim and ERA-40 at same time"`
260    exit 1
261fi
262
263#force ERA40
264[ ${FORCE_E40} -eq 1 ] && echo "\n"!!! use of ERA40 date forced !!!"\n"
265
266
267#force ERA Interim
268[ ${FORCE_EI} -eq 1 ] && echo "\n"!!! use of ERA Interim date forced !!!"\n"
269
270#force EPS Control forecasts
271[ ${FORCE_EPS} -eq 1 ] && echo "\n"!!! use of EPS forecasts forced !!!"\n"
272
273
274#determine analysis type
275  if [ ${FORCE_EPS} -eq 1 ]; then
276  M_DATA=EPS
277  M_STREAM=ENFO
278  M_CLASS=OPER
279  if [ ${M_NUMBER} -eq 1 ] ; then
280     echo "\n"!!! High resolution control forecast used !!!"\n"
281  else
282     echo "\n"!!! Low resolution control forecast used !!!"\n"
283  fi
284    M_TYPE=CV
285    M_TYPE2=CV
286    M_TYPE3=CV
287    M_LEVELIST=1/TO/${M_LEVEL}
288    #temporal resolution
289    if [ $DTIME -eq 3 ]; then
290    M_TIME=00/12
291        M_TIME2=00/12
292        M_TIME3=00/12
293    elif [ $DTIME -eq 6 ]; then
294    M_TIME=00/12
295    M_TIME2=-1
296    M_TIME3=-1
297    else
298      `myerror "ERROR: DTIME $DTIME not supported!"`
299      exit 1
300    fi
301    M_STEP=00/06
302    M_STEP2=03
303    M_STEP3=09
304    SUFF=.[step]'00'
305    TLIST1='0 1200'
306  elif [ ${FORCE_EI} -eq 1 ]; then
307  M_DATA=VAR12EI
308  M_CLASS=EI
309  M_EXPVER=1112
310    M_TYPE=AN
311    M_TYPE2=FC
312    M_TYPE3=FC
313    M_LEVELIST=1/TO/${M_LEVEL}
314    #temporal resolution
315    if [ $DTIME -eq 3 ]; then
316    M_TIME=00/06/12/18
317        M_TIME2=00/12
318        M_TIME3=00/12
319    elif [ $DTIME -eq 6 ]; then
320    M_TIME=00/06/12/18
321    M_TIME2=-1
322    M_TIME3=-1
323    else
324      `myerror "ERROR: DTIME $DTIME not supported!"`
325      exit 1
326    fi
327    M_STEP=00
328    M_STEP2=03
329    M_STEP3=09
330    SUFF=.[step]'00'
331    TLIST1='0 600 1200 1800'
332  elif [ ${DAY2} -le ${ERA40END} -o ${FORCE_E40} -eq 1 ]; then
333    M_DATA=ERA40
334    M_CLASS=E4
335    M_TYPE=AN
336    M_TYPE2=FC
337    M_EXPVER=1
338    M_LEVEL=60
339    M_LEVELIST=1/TO/60
340    M_RESOL=159
341    M_TIME=00/06/12/18
342    M_TIME2=00/06/12/18
343    M_STEP=00
344    M_STEP2=03
345    M_STEP3=03
346    TLIST1='0 600 1200 1800'
347    SUFF=.[step]'00'
348elif [ ${DAY1} -ge ${VAR12START} ]; then
349    M_DATA=VAR12
350    M_CLASS=OD
351    M_TYPE=AN
352    M_TYPE2=FC
353    M_TYPE3=4V
354    M_EXPVER=1
355    M_LEVELIST=1/TO/${M_LEVEL}
356    #temporal resolution
357    if [ $DTIME -eq 3 ]; then
358    M_TIME=00/06/12/18
359        M_TIME2=00/12
360        M_TIME3=09/21
361    elif [ $DTIME -eq 6 ]; then
362    M_TIME=00/06/12/18
363    M_TIME2=-1
364    M_TIME3=-1
365    else
366      `myerror "ERROR: DTIME $DTIME not supported!"`
367      exit 1
368    fi
369    #model changes
370    if [ ${DAY1} -lt ${RES511} -a ${DAY2} -ge ${RES511} ]; then
371    echo 'WARNING: HORIZ RESOLUTION CHANGED 319 -> 511 on' ${RES511}
372    (( NRW = NRW + 1 ))
373    fi
374    M_STEP=00
375    M_STEP2=03
376    M_STEP3=00
377    SUFF=.[step]'00'
378    TLIST1='0 600 1200 1800'
379else
380    `myerror "spec error:  ${DAY1}, ${DAY2}" 'ERA40      19570902 -- 20001012' '12h 4D-VAR 20000912 onwards'`
381fi
382
383
384echo '\n'
385echo Requesting $M_DATA data ...
386echo '\n'
387
388#temporal resolution
389if [ $DTIME -eq 3 ]; then
390     TIMELIST='00 03 06 09 12 15 18 21'
391elif [ $DTIME -eq 6 ]; then
392    TIMELIST='00 06 12 18'
393else
394    `myerror "ERROR: DTIME $DTIME not supported!"`
395    exit 1
396fi
397
398
399# determine number of gridpoints and whether grid is cyclic
400ZYK=`expr \( $M_RIGHT + 36000 \) % 36000 - \( $M_LEFT + 36000 \) % 36000 + $M_GRID`
401
402if [[ $ZYK -ne 0 ]] ; then
403  MAXB=$((($M_UPPER-($M_LOWER))/$M_GRID+1))
404  MAXL=$((($M_RIGHT-($M_LEFT))/$M_GRID+1))
405
406  if [[ $((($M_RIGHT-($M_LEFT))%$M_GRID)) -ne 0 || $((($M_UPPER-($M_LOWER))%$M_GRID)) -ne 0 ]] ; then
407    myerror "ERROR: LAT/LON RANGE MUST BE INTEGER MULTIPLES OF GRID SIZE"     "URLO: $M_UPPER  $M_RIGHT $M_LOWER  $M_LEFT GRID: $M_GRID"     "GRID ASSUMED NON-CYCLIC"
408    exit 1
409  fi
410else
411  MAXL=$((($M_RIGHT-($M_LEFT))/$M_GRID+1))
412  MAXB=$((($M_UPPER-($M_LOWER))/$M_GRID+1))
413  if [[ $((($M_RIGHT-($M_LEFT))%$M_GRID)) -ne 0 || $((($M_UPPER-($M_LOWER))%$M_GRID)) -ne 0 ]] ; then
414    myerror "ERROR: LAT/LON RANGE MUST BE INTEGER MULTIPLES OF GRID SIZE"           "URLO: $M_UPPER  $M_RIGHT $M_LOWER  $M_LEFT GRID: $M_GRID"           "GRID ASSUMED CYCLIC"
415    exit 1
416  fi
417fi
418
419if [ $((36000/$M_GRID-$M_RESOL)) -lt 0 ] ; then
420
421   if [ ${M_SMOOTH} -eq 0 ] ; then
422    myerror "ERROR: OUTPUT GRID SPACING OF ${M_GRID} HUNDREDTH DEGREE IS TOO COARSE FOR GIVEN SPECTRAL RESOLUTION ${M_RESOL} " "USE M_SMOOTH FOR SMOOTHING OR FINER OUTPUT GRID"
423    exit 1
424   else
425    if [ $((36000/$M_GRID-$M_SMOOTH)) -lt 0 ] ; then
426      myerror "ERROR: OUTPUT GRID SPACING OF ${M_GRID} HUNDREDTH DEGREE IS TOO COARSE FOR GIVEN SMOOTHED SPECTRAL RESOLUTION ${M_SMOOTH} " 
427    exit 1
428    fi
429   fi
430
431fi
432
433if [ $M_LEVMAX -gt $M_LEVEL ] ; then
434  M_LEVMAX=$M_LEVEL
435fi
436
437
438# convert lat/lon to MARS format (degrees)
439if [[ $M_LEFT -lt 0 ]] ; then
440  LLLO=$(($M_LEFT / 100)).$((($M_LEFT)*(-1) % 100))
441else
442  LLLO=$(($M_LEFT / 100)).$(($M_LEFT % 100))
443fi
444if [[ $M_LOWER -lt 0 ]] ; then
445  LLLA=$(($M_LOWER / 100)).$(($M_LOWER % 100))
446else
447  LLLA=$(($M_LOWER / 100)).$((($M_LOWER)*(-1) % 100))
448fi
449if [[ $M_RIGHT -lt 0 ]] ; then
450  URLO=$(($M_RIGHT / 100)).$((($M_RIGHT)*(-1) % 100))
451else
452  URLO=$(($M_RIGHT / 100)).$(($M_RIGHT % 100))
453fi
454if [[ $M_UPPER -lt 0 ]] ; then
455  URLA=$(($M_UPPER / 100)).$((($M_UPPER)*(-1) % 100))
456else
457  URLA=$(($M_UPPER / 100)).$(($M_UPPER % 100))
458fi
459
460M_AREA=${URLA}/${LLLO}/${LLLA}/${URLO}
461
462if [ $M_GAUSS -eq 1 ] ; then
463# Gaussian grid detected
464  D_GRID=$(($M_GRID / 100)).$(($M_GRID % 100))
465  G_GRID=OFF
466  QG_GRID=OFF
467  if [ $M_RESOL -le 799 ] ; then
468    QG_GRID=$((($M_RESOL+1)/2))
469  fi
470else
471  D_GRID=$(($M_GRID / 100)).$(($M_GRID % 100))
472  G_GRID=$(($M_GRID / 100)).$(($M_GRID % 100))
473  G_GRID=${G_GRID}/${G_GRID}
474fi
475
476if [ ${M_SMOOTH} -ne 0 ]; then
477  OMRES=${M_SMOOTH}
478else
479  OMRES=${M_RESOL}
480fi
481
482#namelist
483cat <<EOF >fort.4
484&NAMGEN
485   MAXL=${MAXL}, MAXB=${MAXB},
486   MLEVEL=${M_LEVEL}, LEVOUT=${M_LEVEL}, LEVMIN=${M_LEVMIN}, LEVMAX=${M_LEVMAX},
487   MNAUF=${M_RESOL},
488   RLO0=${LLLO}, RLO1=${URLO}, RLA0=${LLLA}, RLA1=${URLA},
489   MOMEGA=${M_OMEGA}, MOMEGADIFF=${M_OMEGADIFF},MGAUSS=${M_GAUSS},MSMOOTH=${M_SMOOTH}
490/
491&NAMFX2
492   NX=${MAXL}, NY=${MAXB},
493   MAXTIME=272,JPOLY=4,
494   JHRF=${DTIME},
495   RLO0=${LLLO}, RLA0=${LLLA}, DX=${D_GRID}, DY=${D_GRID}
496/
497EOF
498
499rcp ${SOURCECODE}/source.tar .
500tar -xvf source.tar
501make -f Makefile.IBM FLXACC2 CONVERT2 CHECK
502
503if [ $? -ne 0 ]; then
504    ls
505    echo 'ERROR: FLXACC2 and CONVERT2 could not be compiled:' ${INFILE}
506    echo ABORT!
507    for MUSER in $MAILFAIL
508    do
509      mailx -s ERROR:${JOBNAME} ${MUSER} <${LOG_FILE}
510    done
511    exit 1
512else
513  echo 'compile worked'
514fi
515
516#
517#MARS requests (field)
518#
519
520cat <<EOF > mf_1
521RETRIEVE,
522TYPE=${M_TYPE},
523CLASS=${M_CLASS},NUMBER=${M_NUMBER},
524EXPVER=${M_EXPVER},STREAM=${M_STREAM},
525PARAM=U/V,
526RESOL=${M_RESOL},
527AREA=${M_AREA},
528GRID=${G_GRID},
529LEVTYPE=ML,
530LEVELIST=${M_LEVELIST},
531ACCURACY=${M_ACCURACY}, REPRES=SH,
532DATE=${DAY1}/TO/${DAY2},
533TIME=${M_TIME},
534STEP=${M_STEP},
535TARGET="UV_G.[date].[time]${SUFF}"
536EOF
537
538
539cat <<EOF > mf_2
540RETRIEVE,
541TYPE=${M_TYPE2},
542CLASS=${M_CLASS},NUMBER=${M_NUMBER},
543EXPVER=${M_EXPVER},STREAM=${M_STREAM},
544PARAM=U/V,
545RESOL=${M_RESOL},
546AREA=${M_AREA},
547GRID=${G_GRID},
548LEVTYPE=ML,
549LEVELIST=${M_LEVELIST},
550ACCURACY=${M_ACCURACY}, REPRES=SH,
551DATE=${DAY1}/TO/${DAY2},
552TIME=${M_TIME2},
553STEP=${M_STEP2},
554TARGET="UV_G.[date].[time]${SUFF}"
555EOF
556
557if [ ${M_DATA} = "VAR12" ]; then
558cat <<EOF > mf_3
559RETRIEVE,
560TYPE=${M_TYPE3},
561CLASS=${M_CLASS},NUMBER=${M_NUMBER},
562EXPVER=${M_EXPVER},STREAM=${M_STREAM},
563PARAM=U/V,
564RESOL=${M_RESOL},
565AREA=${M_AREA},
566GRID=${G_GRID},
567LEVTYPE=ML,
568LEVELIST=${M_LEVELIST},
569ACCURACY=${M_ACCURACY}, REPRES=SH,
570DATE=${DAY1}/TO/${DAY2},
571TIME=${M_TIME3},
572STEP=00,
573TARGET="UV_G.[date].[time]"
574EOF
575fi
576
577if [ ${M_DATA} = "VAR12EI" -o ${M_DATA} = "EPS" ]; then
578cat <<EOF > mf_3
579RETRIEVE,
580TYPE=${M_TYPE3},
581CLASS=${M_CLASS},NUMBER=${M_NUMBER},
582EXPVER=${M_EXPVER},STREAM=${M_STREAM},
583PARAM=U/V,
584RESOL=${M_RESOL},
585AREA=${M_AREA},
586GRID=${G_GRID},
587LEVTYPE=ML,
588LEVELIST=${M_LEVELIST},
589ACCURACY=${M_ACCURACY}, REPRES=SH,
590DATE=${DAY1}/TO/${DAY2},
591TIME=${M_TIME3},
592STEP=${M_STEP3},
593TARGET="UV_G.[date].[time].[step]00"
594EOF
595fi
596
597cat <<EOF > mf_t_1
598RETRIEVE,
599TYPE=${M_TYPE},
600CLASS=${M_CLASS},NUMBER=${M_NUMBER},
601EXPVER=${M_EXPVER},STREAM=${M_STREAM},
602PARAM=T,
603RESOL=${M_RESOL},
604AREA=${M_AREA},
605GRID=${D_GRID}/${D_GRID},
606LEVTYPE=ML,
607LEVELIST=${M_LEVELIST},
608ACCURACY=${M_ACCURACY}, REPRES=SH,
609DATE=${DAY1}/TO/${DAY2},
610TIME=${M_TIME},
611STEP=${M_STEP},
612TARGET="T_G.[date].[time]${SUFF}"
613EOF
614
615
616cat <<EOF > mf_t_2
617RETRIEVE,
618TYPE=${M_TYPE2},
619CLASS=${M_CLASS},NUMBER=${M_NUMBER},
620EXPVER=${M_EXPVER},STREAM=${M_STREAM},
621PARAM=T,
622RESOL=${M_RESOL},
623AREA=${M_AREA},
624GRID=${D_GRID}/${D_GRID},
625LEVTYPE=ML,
626LEVELIST=${M_LEVELIST},
627ACCURACY=${M_ACCURACY}, REPRES=SH,
628DATE=${DAY1}/TO/${DAY2},
629TIME=${M_TIME2},
630STEP=${M_STEP2},
631TARGET="T_G.[date].[time]${SUFF}"
632EOF
633
634if [ ${M_DATA} = "VAR12" ]; then
635cat <<EOF > mf_t_3
636RETRIEVE,
637TYPE=${M_TYPE3},
638CLASS=${M_CLASS},NUMBER=${M_NUMBER},
639EXPVER=${M_EXPVER},STREAM=${M_STREAM},
640PARAM=T,
641RESOL=${M_RESOL},
642AREA=${M_AREA},
643GRID=${D_GRID}/${D_GRID},
644LEVTYPE=ML,
645LEVELIST=${M_LEVELIST},
646ACCURACY=${M_ACCURACY}, REPRES=SH,
647DATE=${DAY1}/TO/${DAY2},
648TIME=${M_TIME3},
649STEP=00,
650TARGET="T_G.[date].[time]"
651EOF
652fi
653
654if [ ${M_DATA} = "VAR12EI" -o  ${M_DATA} = "EPS" ]; then
655cat <<EOF > mf_t_3
656RETRIEVE,
657TYPE=${M_TYPE3},
658CLASS=${M_CLASS},NUMBER=${M_NUMBER},
659EXPVER=${M_EXPVER},STREAM=${M_STREAM},
660PARAM=T,
661RESOL=${M_RESOL},
662AREA=${M_AREA},
663GRID=${D_GRID}/${D_GRID},
664LEVTYPE=ML,
665LEVELIST=${M_LEVELIST},
666ACCURACY=${M_ACCURACY}, REPRES=SH,
667DATE=${DAY1}/TO/${DAY2},
668TIME=${M_TIME3},
669STEP=${M_STEP3},
670TARGET="T_G.[date].[time].[step]00"
671EOF
672fi
673
674#humidity on Gaussian grid for initialization
675#of spectral transformations
676if [ ${M_GAUSS} -eq 1 ] ; then
677NGRID=$(( ( ${M_RESOL} + 1 ) / 2 ))
678cat <<EOF >mf_qg_1
679RETRIEVE,
680TYPE=${M_TYPE},
681CLASS=${M_CLASS},NUMBER=${M_NUMBER},
682EXPVER=${M_EXPVER},STREAM=${M_STREAM},
683PARAM=Q,
684RESOL=${M_RESOL},
685AREA=G,
686GAUSSIAN=REDUCED,
687GRID=${QG_GRID},
688LEVTYPE=ML,
689LEVELIST=1,
690ACCURACY=${M_ACCURACY}, REPRES=GG,
691DATE=${DAY1}/TO/${DAY2},
692TIME=${M_TIME},
693STEP=00,
694TARGET="QG_G.[date].[time]"
695EOF
696
697fi
698
699#humidity on lat/lon grid
700cat <<EOF >mf_q_1
701RETRIEVE,
702TYPE=${M_TYPE},
703CLASS=${M_CLASS},NUMBER=${M_NUMBER},
704EXPVER=${M_EXPVER},STREAM=${M_STREAM},
705PARAM=Q,
706RESOL=${M_RESOL},
707AREA=${M_AREA},
708GRID=${D_GRID}/${D_GRID},
709LEVTYPE=ML,
710LEVELIST=${M_LEVELIST},
711ACCURACY=${M_ACCURACY}, REPRES=GG,
712DATE=${DAY1}/TO/${DAY2},
713TIME=${M_TIME},
714STEP=${M_STEP},
715TARGET="Q_G.[date].[time]${SUFF}"
716EOF
717
718cat <<EOF >mf_q_2
719RETRIEVE,
720TYPE=${M_TYPE2},
721CLASS=${M_CLASS},NUMBER=${M_NUMBER},
722EXPVER=${M_EXPVER},STREAM=${M_STREAM},
723PARAM=Q,
724RESOL=${M_RESOL},
725AREA=${M_AREA},
726GRID=${D_GRID}/${D_GRID},
727LEVTYPE=ML,
728LEVELIST=${M_LEVELIST},
729ACCURACY=${M_ACCURACY}, REPRES=GG,
730DATE=${DAY1}/TO/${DAY2},
731TIME=${M_TIME2},
732STEP=${M_STEP2},
733TARGET="Q_G.[date].[time]${SUFF}"
734EOF
735
736if [ ${M_DATA} = "VAR12" ]; then
737cat <<EOF >mf_q_3
738RETRIEVE,
739TYPE=${M_TYPE3},
740CLASS=${M_CLASS},NUMBER=${M_NUMBER},
741EXPVER=${M_EXPVER},STREAM=${M_STREAM},
742PARAM=Q,
743RESOL=${M_RESOL},
744AREA=${M_AREA},
745GRID=${D_GRID}/${D_GRID},
746LEVTYPE=ML,
747LEVELIST=${M_LEVELIST},
748ACCURACY=${M_ACCURACY}, REPRES=GG,
749DATE=${DAY1}/TO/${DAY2},
750TIME=${M_TIME3},
751STEP=00,
752TARGET="Q_G.[date].[time]"
753EOF
754fi
755
756if [ ${M_DATA} = "VAR12EI" -o  ${M_DATA} = "EPS" ]; then
757cat <<EOF >mf_q_3
758RETRIEVE,
759TYPE=${M_TYPE3},
760CLASS=${M_CLASS},NUMBER=${M_NUMBER},
761EXPVER=${M_EXPVER},STREAM=${M_STREAM},
762PARAM=Q,
763RESOL=${M_RESOL},
764AREA=${M_AREA},
765GRID=${D_GRID}/${D_GRID},
766LEVTYPE=ML,
767LEVELIST=${M_LEVELIST},
768ACCURACY=${M_ACCURACY}, REPRES=GG,
769DATE=${DAY1}/TO/${DAY2},
770TIME=${M_TIME3},
771STEP=${M_STEP3},
772TARGET="Q_G.[date].[time].[step]00"
773EOF
774fi
775
776#divergence
777cat <<EOF >mf_d_1
778RETRIEVE,
779TYPE=${M_TYPE},
780CLASS=${M_CLASS},NUMBER=${M_NUMBER},
781EXPVER=${M_EXPVER},STREAM=${M_STREAM},
782PARAM=D,
783RESOL=${M_RESOL},
784AREA=${M_AREA},
785GRID=${G_GRID},
786LEVTYPE=ML,
787LEVELIST=${M_LEVELIST},
788ACCURACY=${M_ACCURACY}, REPRES=SH,
789DATE=${DAY1}/TO/${DAY2},
790TIME=${M_TIME},
791STEP=${M_STEP},
792TARGET="D_G.[date].[time]${SUFF}"
793EOF
794
795cat <<EOF >mf_d_2
796RETRIEVE,
797TYPE=${M_TYPE2},
798CLASS=${M_CLASS},NUMBER=${M_NUMBER},
799EXPVER=${M_EXPVER},STREAM=${M_STREAM},
800PARAM=D,
801RESOL=${M_RESOL},
802AREA=${M_AREA},
803GRID=${G_GRID},
804LEVTYPE=ML,
805LEVELIST=${M_LEVELIST},
806ACCURACY=${M_ACCURACY}, REPRES=SH,
807DATE=${DAY1}/TO/${DAY2},
808TIME=${M_TIME2},
809STEP=${M_STEP2},
810TARGET="D_G.[date].[time]${SUFF}"
811EOF
812
813if [ ${M_DATA} = "VAR12" ]; then
814cat <<EOF >mf_d_3
815RETRIEVE,
816TYPE=${M_TYPE3},
817CLASS=${M_CLASS},NUMBER=${M_NUMBER},
818EXPVER=${M_EXPVER},STREAM=${M_STREAM},
819PARAM=D,
820RESOL=${M_RESOL},
821AREA=${M_AREA},
822GRID=${G_GRID},
823LEVTYPE=ML,
824LEVELIST=${M_LEVELIST},
825ACCURACY=${M_ACCURACY}, REPRES=SH,
826DATE=${DAY1}/TO/${DAY2},
827TIME=${M_TIME3},
828STEP=00,
829TARGET="D_G.[date].[time]"
830EOF
831fi
832
833if [ ${M_DATA} = "VAR12EI" -o ${M_DATA} = "EPS"  ]; then
834cat <<EOF >mf_d_3
835RETRIEVE,
836TYPE=${M_TYPE3},
837CLASS=${M_CLASS},NUMBER=${M_NUMBER},
838EXPVER=${M_EXPVER},STREAM=${M_STREAM},
839PARAM=D,
840RESOL=${M_RESOL},
841AREA=${M_AREA},
842GRID=${G_GRID},
843LEVTYPE=ML,
844LEVELIST=${M_LEVELIST},
845ACCURACY=${M_ACCURACY}, REPRES=SH,
846DATE=${DAY1}/TO/${DAY2},
847TIME=${M_TIME3},
848STEP=${M_STEP3},
849TARGET="D_G.[date].[time].[step]00"
850EOF
851fi
852
853#pressure vertical velocity (omega)
854if [ ${M_OMEGA} -eq 1 ]; then
855cat <<EOF >mf_omega_1
856RETRIEVE,
857TYPE=${M_TYPE},
858CLASS=${M_CLASS},NUMBER=${M_NUMBER},
859EXPVER=${M_EXPVER},STREAM=${M_STREAM},
860PARAM=W,
861RESOL=${OMRES},
862AREA=${M_AREA},
863GRID=${D_GRID}/${D_GRID},
864LEVTYPE=ML,
865LEVELIST=${M_LEVELIST},
866ACCURACY=${M_ACCURACY}, REPRES=SH,
867DATE=${DAY1}/TO/${DAY2},
868TIME=${M_TIME},
869STEP=${M_STEP},
870TARGET="OMEGA_G.[date].[time]${SUFF}"
871EOF
872
873cat <<EOF >mf_omega_2
874RETRIEVE,
875TYPE=${M_TYPE2},
876CLASS=${M_CLASS},NUMBER=${M_NUMBER},
877EXPVER=${M_EXPVER},STREAM=${M_STREAM},
878PARAM=W,
879RESOL=${OMRES},
880AREA=${M_AREA},
881GRID=${D_GRID}/${D_GRID},
882LEVTYPE=ML,
883LEVELIST=${M_LEVELIST},
884ACCURACY=${M_ACCURACY}, REPRES=SH,
885DATE=${DAY1}/TO/${DAY2},
886TIME=${M_TIME2},
887STEP=${M_STEP2},
888TARGET="OMEGA_G.[date].[time]${SUFF}"
889EOF
890
891if [ ${M_DATA} = "VAR12" ]; then
892cat <<EOF >mf_omega_3
893RETRIEVE,
894TYPE=${M_TYPE3},
895CLASS=${M_CLASS},NUMBER=${M_NUMBER},
896EXPVER=${M_EXPVER},STREAM=${M_STREAM},
897PARAM=W,
898RESOL=${OMRES},
899AREA=${M_AREA},
900GRID=${D_GRID}/${D_GRID},
901LEVTYPE=ML,
902LEVELIST=${M_LEVELIST},
903ACCURACY=${M_ACCURACY}, REPRES=SH,
904DATE=${DAY1}/TO/${DAY2},
905TIME=${M_TIME3},
906STEP=00,
907TARGET="OMEGA_G.[date].[time]"
908EOF
909fi
910
911if [ ${M_DATA} = "VAR12EI" -o  ${M_DATA} = "EPS" ]; then
912cat <<EOF >mf_omega_3
913RETRIEVE,
914TYPE=${M_TYPE3},
915CLASS=${M_CLASS},NUMBER=${M_NUMBER},
916EXPVER=${M_EXPVER},STREAM=${M_STREAM},
917PARAM=W,
918RESOL=${OMRES},
919AREA=${M_AREA},
920GRID=${D_GRID}/${D_GRID},
921LEVTYPE=ML,
922LEVELIST=${M_LEVELIST},
923ACCURACY=${M_ACCURACY}, REPRES=SH,
924DATE=${DAY1}/TO/${DAY2},
925TIME=${M_TIME3},
926STEP=${M_STEP3},
927TARGET="OMEGA_G.[date].[time].[step]00"
928EOF
929fi
930
931fi
932
933# surface pressure
934cat <<EOF >mf_lnsp_1
935RETRIEVE,
936TYPE=${M_TYPE},
937CLASS=${M_CLASS},NUMBER=${M_NUMBER},
938EXPVER=${M_EXPVER},STREAM=${M_STREAM},
939PARAM=LNSP,
940RESOL=${M_RESOL},
941AREA=${M_AREA},
942GRID=OFF,
943LEVTYPE=ML,
944LEVELIST=OFF,
945ACCURACY=${M_ACCURACY}, REPRES=SH,
946DATE=${DAY1}/TO/${DAY2},
947TIME=${M_TIME},
948STEP=${M_STEP},
949TARGET="LNSP_G.[date].[time]${SUFF}"
950EOF
951
952cat <<EOF >mf_lnsp_2
953RETRIEVE,
954TYPE=${M_TYPE2},
955CLASS=${M_CLASS},NUMBER=${M_NUMBER},
956EXPVER=${M_EXPVER},STREAM=${M_STREAM},
957PARAM=LNSP,
958RESOL=${M_RESOL},
959AREA=${M_AREA},
960GRID=OFF,
961LEVTYPE=ML,
962LEVELIST=OFF,
963ACCURACY=${M_ACCURACY}, REPRES=SH,
964DATE=${DAY1}/TO/${DAY2},
965TIME=${M_TIME2},
966STEP=${M_STEP2},
967TARGET="LNSP_G.[date].[time]${SUFF}"
968EOF
969
970if [ ${M_DATA} = "VAR12" ]; then
971cat <<EOF >mf_lnsp_3
972RETRIEVE,
973TYPE=${M_TYPE3},
974CLASS=${M_CLASS},NUMBER=${M_NUMBER},
975EXPVER=${M_EXPVER},STREAM=${M_STREAM},
976PARAM=LNSP,
977RESOL=${M_RESOL},
978AREA=${M_AREA},
979GRID=OFF,
980LEVTYPE=ML,
981LEVELIST=OFF,
982ACCURACY=${M_ACCURACY}, REPRES=SH,
983DATE=${DAY1}/TO/${DAY2},
984TIME=${M_TIME3},
985STEP=00,
986TARGET="LNSP_G.[date].[time]"
987EOF
988fi
989
990if [ ${M_DATA} = "VAR12EI" -o  ${M_DATA} = "EPS" ]; then
991cat <<EOF >mf_lnsp_3
992RETRIEVE,
993TYPE=${M_TYPE3},
994CLASS=${M_CLASS},NUMBER=${M_NUMBER},
995EXPVER=${M_EXPVER},STREAM=${M_STREAM},
996PARAM=LNSP,
997RESOL=${M_RESOL},
998AREA=${M_AREA},
999GRID=OFF,
1000LEVTYPE=ML,
1001LEVELIST=OFF,
1002ACCURACY=${M_ACCURACY}, REPRES=SH,
1003DATE=${DAY1}/TO/${DAY2},
1004TIME=${M_TIME3},
1005STEP=${M_STEP3},
1006TARGET="LNSP_G.[date].[time].[step]00"
1007EOF
1008fi
1009
1010#surf parameters
1011cat <<EOF >ms_1
1012RETRIEVE,
1013TYPE=${M_TYPE},
1014CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1015EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1016PARAM=SD/MSL/TCC/10U/10V/2T/2D,
1017AREA=${M_AREA},
1018GRID=${D_GRID}/${D_GRID},
1019LEVTYPE=SFC,
1020ACCURACY=${M_ACCURACY}, REPRES=GG,
1021DATE=${DAY1}/TO/${DAY2},
1022TIME=${M_TIME},
1023STEP=${M_STEP},
1024TARGET="SURF.[date].[time]${SUFF}"
1025EOF
1026
1027cat <<EOF >ms_2
1028RETRIEVE,
1029TYPE=${M_TYPE2},
1030CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1031EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1032PARAM=SD/MSL/TCC/10U/10V/2T/2D,
1033AREA=${M_AREA},
1034GRID=${D_GRID}/${D_GRID},
1035LEVTYPE=SFC,
1036ACCURACY=${M_ACCURACY}, REPRES=GG,
1037DATE=${DAY1}/TO/${DAY2},
1038TIME=${M_TIME2},
1039STEP=${M_STEP2},
1040TARGET="SURF.[date].[time]${SUFF}"
1041EOF
1042
1043if [ ${M_DATA} = "VAR12" ]; then
1044cat <<EOF >ms_3
1045RETRIEVE,
1046TYPE=${M_TYPE3},
1047CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1048EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1049PARAM=SD/MSL/TCC/10U/10V/2T/2D,
1050AREA=${M_AREA},
1051GRID=${D_GRID}/${D_GRID},
1052LEVTYPE=SFC,
1053ACCURACY=${M_ACCURACY}, REPRES=GG,
1054DATE=${DAY1}/TO/${DAY2},
1055TIME=${M_TIME3},
1056STEP=00,
1057TARGET="SURF.[date].[time]"
1058EOF
1059fi
1060
1061if [ ${M_DATA} = "VAR12EI" -o  ${M_DATA} = "EPS" ]; then
1062cat <<EOF >ms_3
1063RETRIEVE,
1064TYPE=${M_TYPE3},
1065CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1066EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1067PARAM=SD/MSL/TCC/10U/10V/2T/2D,
1068AREA=${M_AREA},
1069GRID=${D_GRID}/${D_GRID},
1070LEVTYPE=SFC,
1071ACCURACY=${M_ACCURACY}, REPRES=GG,
1072DATE=${DAY1}/TO/${DAY2},
1073TIME=${M_TIME3},
1074STEP=${M_STEP3},
1075TARGET="SURF.[date].[time].[step]00"
1076EOF
1077fi
1078
1079#orography
1080cat <<EOF >ms_oro_1
1081RETRIEVE,
1082TYPE=${M_TYPE},
1083CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1084EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1085PARAM=129/172/160${M_ADDPAR},
1086AREA=${M_AREA},
1087GRID=${D_GRID}/${D_GRID},
1088LEVTYPE=SFC,
1089ACCURACY=${M_ACCURACY}, REPRES=GG,
1090DATE=${DAY1}/TO/${DAY2},
1091TIME=${M_TIME},
1092STEP=${M_STEP},
1093TARGET="OROLSM.[date].[time]${SUFF}"
1094EOF
1095
1096cat <<EOF >ms_oro_2
1097RETRIEVE,
1098TYPE=${M_TYPE2},
1099CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1100EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1101PARAM=129/172/160${M_ADDPAR},
1102AREA=${M_AREA},
1103GRID=${D_GRID}/${D_GRID},
1104LEVTYPE=SFC,
1105ACCURACY=${M_ACCURACY}, REPRES=GG,
1106DATE=${DAY1}/TO/${DAY2},
1107TIME=${M_TIME2},
1108STEP=${M_STEP2},
1109TARGET="OROLSM.[date].[time]${SUFF}"
1110EOF
1111
1112if [ ${M_DATA} = "VAR12" ]; then
1113cat <<EOF >ms_oro_3
1114RETRIEVE,
1115TYPE=${M_TYPE3},
1116CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1117EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1118PARAM=129/172/160${M_ADDPAR},
1119AREA=${M_AREA},
1120GRID=${D_GRID}/${D_GRID},
1121LEVTYPE=SFC,
1122ACCURACY=${M_ACCURACY}, REPRES=GG,
1123DATE=${DAY1}/TO/${DAY2},
1124TIME=${M_TIME3},
1125STEP=00,
1126TARGET="OROLSM.[date].[time]"
1127EOF
1128fi
1129
1130if [ ${M_DATA} = "VAR12EI" -o  ${M_DATA} = "EPS" ]; then
1131cat <<EOF >ms_oro_3
1132RETRIEVE,
1133TYPE=${M_TYPE3},
1134CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1135EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1136PARAM=129/172/160${M_ADDPAR},
1137AREA=${M_AREA},
1138GRID=${D_GRID}/${D_GRID},
1139LEVTYPE=SFC,
1140ACCURACY=${M_ACCURACY}, REPRES=GG,
1141DATE=${DAY1}/TO/${DAY2},
1142TIME=${M_TIME3},
1143STEP=${M_STEP3},
1144TARGET="OROLSM.[date].[time].[step]00"
1145EOF
1146fi
1147
1148# Some parameters
1149# 160?stddev of orography
1150# 27,28 = low/high vegetation cover
1151# 173=surface roughness
1152# are not available for forecasts.
1153# The patch below avoids nasty error messages
1154# Success of patch depends on setting of M_ADDPAR and M_ORO
1155#
1156if [ ${M_TYPE} == 'FC' ] ; then
1157  sed s,160/27/28/173/,, ms_orox_1 > ms_oro_1
1158else
1159  mv ms_orox_1 ms_oro_1
1160fi
1161if [ ${M_TYPE2} == 'FC' ] ; then
1162  sed s,160/27/28/173/,, ms_orox_2 > ms_oro_2
1163else
1164  mv ms_orox_2 ms_oro_2
1165fi
1166if [ ${M_TYPE3} == 'FC' ] ; then
1167  sed s,160/27/28/173/,, ms_orox_3 > ms_oro_3
1168else
1169  mv ms_orox_3 ms_oro_3
1170fi
1171
1172mars mf_1
1173[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1174mars mf_t_1
1175[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1176mars mf_d_1
1177[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1178mars mf_q_1
1179[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1180if [ ${M_GAUSS} -eq 1 ] ; then
1181  mars mf_qg_1
1182  [ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1183fi
1184mars mf_lnsp_1
1185[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1186mars ms_1
1187[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1188mars ms_oro_1
1189[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1190if [ ${M_OMEGA} -eq 1 ] ; then
1191  mars mf_omega_1
1192  [ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1193fi
1194
1195#get intermediate fields
1196if [ $DTIME -eq 3 ]; then
1197
1198mars mf_2
1199[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1200mars mf_t_2
1201[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1202mars mf_d_2
1203[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1204mars mf_q_2
1205[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1206mars mf_lnsp_2
1207[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1208mars ms_2
1209[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1210mars ms_oro_2
1211[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1212if [ ${M_OMEGA} -eq 1 ] ; then
1213  mars mf_omega_2
1214  [ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1215fi
1216
1217if [ ${M_DATA} = "VAR12" -o ${M_DATA} = "VAR12EI"  -o ${M_DATA} = "EPS" ]; then
1218mars mf_3
1219[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1220mars mf_t_3
1221[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1222mars mf_d_3
1223[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1224mars mf_q_3
1225[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1226mars mf_lnsp_3
1227[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1228mars ms_3
1229[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1230mars ms_oro_3
1231[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1232if [ ${M_OMEGA} -eq 1 ] ; then
1233  mars mf_omega_3
1234  [ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1235fi
1236fi
1237
1238fi
1239
1240#fix filenames (ERA40 FG fields)
1241if [ ${M_DATA} = "ERA40" -a ${DTIME} -eq 3 ]; then
1242for TIME in ${TLIST1}
1243do
1244    SUFFIX=.${TIME}.300
1245    for OLDNAME in *${SUFFIX}
1246    do
1247    (( NEWSUFFIX = ${TIME} + 300 ))
1248    NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1249    mv ${OLDNAME} ${NEWNAME}
1250    done
1251    SUFFIX=.${TIME}.000
1252    for OLDNAME in *${SUFFIX}
1253    do
1254    (( NEWSUFFIX = ${TIME} + 000 ))
1255    NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1256    mv ${OLDNAME} ${NEWNAME}
1257    done
1258done
1259fi
1260
1261#fix filenames (VAR12 FC fields)
1262
1263if [ ${M_DATA} = "VAR12" -a ${DTIME} -eq 3 ]; then
1264for TIME in ${TLIST1}
1265do
1266    SUFFIX=.${TIME}.300
1267    for OLDNAME in *${SUFFIX}
1268    do
1269        (( NEWSUFFIX = ${TIME} + 300 ))
1270        NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1271        mv ${OLDNAME} ${NEWNAME}
1272    done
1273    SUFFIX=.${TIME}.600
1274    for OLDNAME in *${SUFFIX}
1275    do
1276        (( NEWSUFFIX = ${TIME} + 600 ))
1277        NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1278        mv ${OLDNAME} ${NEWNAME}
1279    done
1280    SUFFIX=.${TIME}.900
1281    for OLDNAME in *${SUFFIX}
1282    do
1283        (( NEWSUFFIX = ${TIME} + 900 ))
1284        NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1285        mv ${OLDNAME} ${NEWNAME}
1286    done
1287done
1288fi
1289
1290#fix filenames (VAR12 FC fields)
1291
1292if [ ${M_DATA} = "VAR12EI" -a ${DTIME} -eq 3 ]; then
1293for TIME in ${TLIST1}
1294do
1295    SUFFIX=.${TIME}.300
1296    for OLDNAME in *${SUFFIX}
1297    do
1298        (( NEWSUFFIX = ${TIME} + 300 ))
1299        NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1300        mv ${OLDNAME} ${NEWNAME}
1301    done
1302    SUFFIX=.${TIME}.600
1303    for OLDNAME in *${SUFFIX}
1304    do
1305        (( NEWSUFFIX = ${TIME} + 600 ))
1306        NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1307        mv ${OLDNAME} ${NEWNAME}
1308    done
1309    SUFFIX=.${TIME}.900
1310    for OLDNAME in *${SUFFIX}
1311    do
1312        (( NEWSUFFIX = ${TIME} + 900 ))
1313        NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1314        mv ${OLDNAME} ${NEWNAME}
1315    done
1316done
1317fi
1318
1319
1320#fix filenames (EPS fields) always need a fix since 12 hourly
1321
1322if [ ${M_DATA} = "EPS" -o  ${M_DATA} = "VAR12" -o  ${M_DATA} = "VAR12EI" ]; then
1323for TIME in ${TLIST1}
1324do
1325    SUFFIX=.${TIME}.000
1326    for OLDNAME in *${SUFFIX}
1327    do
1328        (( NEWSUFFIX = ${TIME} + 000 ))
1329        NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1330        mv ${OLDNAME} ${NEWNAME}
1331    done
1332    SUFFIX=.${TIME}.300
1333    for OLDNAME in *${SUFFIX}
1334    do
1335        (( NEWSUFFIX = ${TIME} + 300 ))
1336        NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1337        mv ${OLDNAME} ${NEWNAME}
1338    done
1339    SUFFIX=.${TIME}.600
1340    for OLDNAME in *${SUFFIX}
1341    do
1342        (( NEWSUFFIX = ${TIME} + 600 ))
1343        NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1344        mv ${OLDNAME} ${NEWNAME}
1345    done
1346    SUFFIX=.${TIME}.900
1347    for OLDNAME in *${SUFFIX}
1348    do
1349        (( NEWSUFFIX = ${TIME} + 900 ))
1350        NEWNAME=`echo $OLDNAME | sed "s/${SUFFIX}/.${NEWSUFFIX}/"`
1351        mv ${OLDNAME} ${NEWNAME}
1352    done
1353done
1354fi
1355#
1356#MARS requests (flux)
1357#
1358
1359export FAC=16
1360cat <<EOF >mars_flux_1
1361RETRIEVE,
1362TYPE=${M_TYPE2},
1363CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1364EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1365PARAM=LSP/CP/SSHF/EWSS/NSSS/SSR,
1366AREA=${M_AREA},
1367GRID=${D_GRID}/${D_GRID},
1368LEVTYPE=SFC,
1369LEVELIST=OFF,
1370ACCURACY=${FAC}, REPRES=GG,
1371DATE=${DAY1M1}/TO/${DAY2P1},
1372TIME=00/12,
1373AC=N,
1374STEP=03,
1375TARGET="surf_03_ub"
1376EOF
1377
1378cat <<EOF >mars_flux_2
1379RETRIEVE,
1380TYPE=${M_TYPE2},
1381CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1382EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1383PARAM=LSP/CP/SSHF/EWSS/NSSS/SSR,
1384AREA=${M_AREA},
1385GRID=${D_GRID}/${D_GRID},
1386LEVTYPE=SFC,
1387LEVELIST=OFF,
1388ACCURACY=${FAC}, REPRES=GG,
1389DATE=${DAY1M1}/TO/${DAY2P1},
1390TIME=00/12,
1391AC=N,
1392STEP=06,
1393TARGET="surf_06_ub"
1394EOF
1395
1396cat <<EOF >mars_flux_3
1397RETRIEVE,
1398TYPE=${M_TYPE2},
1399CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1400EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1401PARAM=LSP/CP/SSHF/EWSS/NSSS/SSR,
1402AREA=${M_AREA},
1403GRID=${D_GRID}/${D_GRID},
1404LEVTYPE=SFC,
1405LEVELIST=OFF,
1406ACCURACY=${FAC}, REPRES=GG,
1407DATE=${DAY1M1}/TO/${DAY2P1},
1408TIME=00/12,
1409AC=N,
1410STEP=09,
1411TARGET="surf_09_ub"
1412EOF
1413
1414cat <<EOF >mars_flux_4
1415RETRIEVE,
1416TYPE=${M_TYPE2},
1417CLASS=${M_CLASS},NUMBER=${M_NUMBER},
1418EXPVER=${M_EXPVER},STREAM=${M_STREAM},
1419PARAM=LSP/CP/SSHF/EWSS/NSSS/SSR,
1420AREA=${M_AREA},
1421GRID=${D_GRID}/${D_GRID},
1422LEVTYPE=SFC,
1423LEVELIST=OFF,
1424ACCURACY=${FAC}, REPRES=GG,
1425DATE=${DAY1M1}/TO/${DAY2P1},
1426TIME=00/12,
1427AC=N,
1428STEP=12,
1429TARGET="surf_12_ub"
1430EOF
1431
1432mars mars_flux_1
1433[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1434mars mars_flux_2
1435[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1436mars mars_flux_3
1437[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1438mars mars_flux_4
1439[ $? -ne 0 ] && echo WARNING: check MARS request && (( NRW = NRW + 1 ))
1440
1441#
1442# FLXACC job
1443#
1444#input for FLXACC job
1445
1446
1447${EXEDIR}/FLXACC2
1448
1449#
1450# CONVERT job
1451#
1452
1453#loop over DATE and TIME for CONVERT/CHECK/ECtrans job
1454
1455FSTEP=0
1456
1457IJULDAY=${JULDAY1}
1458while [ $IJULDAY -le $JULDAY2 ];
1459do
1460
1461MDATE=`civildate2 ${IJULDAY}`
1462MDATEX=`echo ${MDATE} | cut -c3-8`
1463
1464echo $TIMELIST
1465
1466for TIME in $TIMELIST
1467do
1468
1469\rm fort.1[0-7]
1470\rm fort.19 fort.25
1471
1472
1473#take care of funny MARS file nameing
1474if [ $TIME -eq 00 ]; then
1475    XTIME=0
1476elif [ $TIME -lt 10 ]; then
1477    XTIME=`echo ${TIME} | cut -c2`00
1478else
1479    XTIME=${TIME}00
1480fi
1481
1482echo $TIME $XTIME
1483
1484#flux data
1485mv flux${MDATE}${TIME}      fort.16
1486
1487#fields
1488mv UV_G.${MDATE}.${XTIME}  fort.10
1489mv VD_G.${MDATE}.${XTIME}  fort.30
1490mv T_G.${MDATE}.${XTIME}  fort.11
1491mv LNSP_G.${MDATE}.${XTIME} fort.12
1492mv D_G.${MDATE}.${XTIME}    fort.13
1493mv SURF.${MDATE}.${XTIME}   fort.14
1494mv Q_G.${MDATE}.${XTIME}    fort.17
1495mv QG_G.${MDATE}.${XTIME}    fort.18
1496#if [ ${M_OMEGA} -eq 1] ; then
1497  mv OMEGA_G.${MDATE}.${XTIME}  fort.19
1498#fi
1499# Topography etc data are only available within main
1500# analysis dates (0/6/12/18)
1501mv OROLSM.${MDATE}.0        fort.20
1502
1503${EXEDIR}/CONVERT2
1504
1505if [ -s fort.15 ]; then
1506    mv fort.15 EO179${MDATEX}${TIME}
1507    cat fort.14 >>  EO179${MDATEX}${TIME}
1508    cat fort.16 >>  EO179${MDATEX}${TIME}
1509    cat fort.20 >>  EO179${MDATEX}${TIME}
1510else
1511    echo ERROR: ENfile ${MDATEX}${TIME} missing!
1512    echo ABORT!
1513    for MUSER in $MAILFAIL
1514    do
1515      mailx -s ERROR:${JOBNAME} ${MUSER} <${LOG_FILE}
1516    done
1517    exit 1
1518fi
1519
1520INFILE=EO179${MDATEX}${TIME}
1521
1522\rm fort.15
1523ln -s ${INFILE} fort.15
1524
1525if [ -s fort.25 ]; then
1526    mv fort.25 OMEGA${MDATEX}${TIME}
1527    ln -s  OMEGA${MDATEX}${TIME} fort.25
1528fi
1529#check ENxxx file & ECtrans to Vienna
1530
1531
1532[ -s CHECK.SUCCESS ] && rm CHECK.SUCCESS
1533
1534${EXEDIR}/CHECK
1535
1536#check fields
1537if [ -s CHECK.SUCCESS ]; then
1538    SUCCESS=1
1539else
1540    echo 'ERROR: check on ENfile failed:' ${INFILE}
1541    echo ABORT!
1542    for MUSER in $MAILFAIL
1543    do
1544      mailx -s ERROR:${JOBNAME} ${MUSER} <${LOG_FILE}
1545    done
1546    exit 1
1547fi
1548
1549#
1550# Convert to GRIB2 if needed
1551#
1552ls -l ${INFILE}
1553cat >rule.filter<<EOF
1554if (shortName is "t" || shortName is "u" || shortName is "v" || shortName is "q"
1555|| shortName is "w" || shortName is "etadot" || shortName is "msl" || shortName is "sp" || shortName is
1556"10u" || shortName is "10v" || shortName is "2t" || shortName is "2d") {
1557  set edition=2;
1558    set packingType="grid_jpeg";
1559  write "[file]_2";
1560} else {
1561  write "[file]_2";
1562}
1563EOF
1564
1565# Only conversion to GRIB2 is allowed, but no backward conversion
1566if [ ${M_FORMAT} == GRIB2 ] ; then
1567 grib_filter rule.filter ${INFILE}
1568 mv ${INFILE}_2 ${INFILE}
1569fi
1570ls -l ${INFILE}
1571
1572#ECtrans
1573[ $SUCCESS -eq 1 -a $ECTRANS -eq 1 ] && ectrans -overwrite -gateway ${GATEWAY} -remote ${DESTINATION} -source $INFILE
1574[ $M_OMEGA -eq 1 -a $SUCCESS -eq 1 -a $ECTRANS -eq 1 ] && ectrans -overwrite -gateway ${GATEWAY} -remote ${DESTINATION} -source OMEGA${MDATEX}${TIME}
1575
1576#ECFS
1577[ $SUCCESS -eq 1 -a $ECSTORAGE -eq 1 ] && ecp -o $INFILE $ECFSDIR
1578[ $SUCCESS -eq 1 -a $ECSTORAGE -eq 1 ] && ecp -o OMEGA${MDATEX}${TIME} $ECFSDIR
1579
1580#done TIME
1581done
1582
1583(( IJULDAY = IJULDAY + 1 ))
1584
1585#done JULDAY
1586done
1587
1588#any warnings ?
1589[ $NRW -gt 0 ] && echo There were $NRW warnings !
1590
1591#mail logfile (list MAILOPS)
1592for MUSER in $MAILOPS
1593do
1594
1595mailx -s ${JOBNAME} ${MUSER} <${LOG_FILE}
1596done
1597
1598#
1599# cleanup
1600#
1601cd ${SCRATCH}
1602echo $SCRATCHDIR not removed!
1603\rm -fR $SCRATCHDIR
1604
1605exit 0
hosted by ZAMG