Ticket #9: flex_ecmwf_91_finegrid_ecgate.2

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