12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294 |
- #! /bin/sh
- set -e
- call="$0 $*"
- case $0 in
- /* ) script=$0 ;;
- * ) script="`/bin/pwd`/$0" ;;
- esac
- bindir=`/usr/bin/dirname ${script}`
- prog=`basename ${script}`
- DisplayHelp ()
- {
- ${PAGER:-less} << EOF
- NAME
- $prog - setup meteo files for TM5 run
- USAGE ('runtm5.py' scripting)
- $prog [-v] <rcfile> <ccyymmddhh1> <ccyymmddhh2> [<fcday0>]
- USAGE ('pycasso' scripting)
- $prog [-v] <rcfile>
-
- DESCRIPTION
-
- Install meteo files for all days covering the requested
- time interval.
- The horizontal and vertical grids that should be installed
- are read from the rcfile, as well as the type of files.
- Daily meteo files are installed in a buffer directory,
- either as link or unpacked from a monthly tarchive.
-
- ARGUMENTS
- -v
- Verbose mode; messages about progress are written.
-
- <rcfile>
- Text file with settings, see below.
- For 'runtm5.py' scripting :
- <ccyymmddhh1> <ccyymmddhh2>
- Start and end time (day and hour).
-
- <fcday0>
- Forecast start day (ccyymmdd).
-
- RCFILE
- !
- ! Meteo files are linked to or unpacked in a buffer directory.
- ! o the clean flag (T|F) such that files that have not been accessed
- ! for a long time are removed if a maximum buffer usage is exceeded.
- ! o specify a maximum size in Mb
- !
- tmm.dir : /scratch/TM5/tmm-buf
- tmm.dir.clean : T
- tmm.dir.size : 500
- !
- ! Meteo files could be setup before the actual program is started.
- ! First set the main switch to apply this or not.
- ! If to be applied, specify details for a number of sets;
- ! each set can be applied by a seperate flag.
- !
- tmm.setup.apply : T
- ! display progress ?
- tmm.setup.verbose : T
- ! file permission mode for newly created files:
- ! o user archive : 644
- ! o archive shared by group : 664
- tmm.setup.mode : 664
- ! number of sets defined below:
- tmm.setup.nset : 6
- !
- ! setup by TMPP produced hdf files:
- tmm.setup.001.apply : T
- tmm.setup.001.files : uvsp w spm t q cld sub surf
- tmm.setup.001.sources : tmpp:class=od;type=fc;levs=ml60;grid=glb3x2;tres=_21p06
- tmm.setup.001.search : ecfs:/nlh/TM/meteo
- !
- ! setup by TM5 produced hdf files:
- tmm.setup.002.apply : T
- tmm.setup.002.files : mfuv mfw sp t q cld sub
- tmm.setup.002.sources : tm5:mdir=era2003-ml60-glb3x2;tres=_fc012up2tr3
- tmm.setup.002.search : ecfs:/nl5/gems/meteo
- !
- ! extracted from MARS archive
- tmm.setup.003.apply : T
- tmm.setup.003.files : T/Q/W/CLWC/CIWC/CC
- tmm.setup.003.sources : ecmwf-mars:class=od;type=fc;levs=${LEVS};grid=N80
- tmm.setup.003.search :
- !
- ! extracted from MARS archive: MACC fire emissions
- tmm.setup.003.apply : T
- tmm.setup.003.files : CH4FIRE
- tmm.setup.003.sources : ecmwf-mars:class=rd;type=fc;levs=sfc;grid=N80;tres=_fc000up24tr1
- tmm.setup.003.search :
- !
- ! NCEP re-analysis data (cdc)
- tmm.setup.004.apply : T
- tmm.setup.004.files : pres.nlog vort div vair shum hgt land sfcr pres icec skt uwnd.10m vwnd.10m lhtfl shtfl ugwd vgwd prate cprat
- tmm.setup.004.sources : ncep-cdc:
- tmm.setup.004.search : /co2/data/ncep.reanalysis
- !
- ! NCEP operational data (gfs)
- tmm.setup.005.apply : T
- tmm.setup.005.files : SF SFLUXGrbF
- tmm.setup.005.sources : ncep-gfs:
- tmm.setup.005.search : /co2/data/ncep.gfs
- !
- ! Olsson surface roughness files
- tmm.setup.006.apply : T
- tmm.setup.006.files : SR
- tmm.setup.006.sources : olsson:mdir=OLSSON
- tmm.setup.006.search : ecfs:/nl5/MARS
- EOF
- exit 0
- }
- err ()
- {
- echo "$1" 1>&2
- }
- errit ()
- {
- err "$prog - ERROR - in call : ${call}"
- err "$prog - ERROR - use '$prog --help' for more info."
- exit $1
- }
- rcfile=''
- ccyymmddhh1=''
- ccyymmddhh2=''
- fcday0=''
- verbose=''
- for arg in "$@" ; do
- case ${arg} in
- -h | --help ) DisplayHelp ;;
- -* )
- options="${options} ${arg}"
- case ${arg} in
- -v | --verbose ) verbose='true' ;;
- esac
- ;;
- * )
- if [ -z "${rcfile}" ]; then
- rcfile=${arg}
- elif [ -z "${ccyymmddhh1}" ]; then
- ccyymmddhh1=${arg}
- elif [ -z "${ccyymmddhh2}" ]; then
- ccyymmddhh2=${arg}
- elif [ -z "${fcday0}" ]; then
- fcday0=${arg}
- else
- err "$prog - ERROR - unknown argument : ${arg}"
- errit 1
- fi
- ;;
- esac
- done
- if [ -z "${rcfile}" ]; then
- err "$prog - ERROR - missing arguments"
- errit 1
- fi
- case ${rcfile} in
- /* ) rcfile=${rcfile} ;;
- * ) rcfile="`/bin/pwd`/${rcfile}" ;;
- esac
- echo "$prog - start"
- tmm_setup_apply=`${bindir}/go_readrc ${rcfile} 'tmm.setup.apply' 'F'`
- if [ "${tmm_setup_apply}" != "T" ] ; then
-
- echo "$prog - flag to setup meteo files is false; return"
-
- exit 0
- fi
- if [ -z "${ccyymmddhh1}${ccyymmddhh2}" ]; then
-
- ccyymmddhh1=`${bindir}/go_readrc $rcfile 'jobstep.timerange.start' | cut -d ':' -f 1 | tr -d '\-/ '`
- ccyymmddhh2=`${bindir}/go_readrc $rcfile 'jobstep.timerange.end' | cut -d ':' -f 1 | tr -d '\-/ '`
- fi
- if [ -z "${fcday0}" ]; then
-
- fcday0=`${bindir}/go_readrc $rcfile 'time.fc.day0' 'None'`
-
- if [ "${fcday0}" == "None" ]; then
-
- fcday0=''
- else
-
- fcday0=`echo ${fcday0} | tr -d '\-/'`
- fi
- fi
- fcmode_read=`${bindir}/go_readrc $rcfile 'time.fc' 'F'`
- tmm_dir=`${bindir}/go_readrc $rcfile 'tmm.dir'`
- tmm_dir_clean=`${bindir}/go_readrc $rcfile 'tmm.dir.clean'`
- tmm_dir_size=`${bindir}/go_readrc $rcfile 'tmm.dir.size'`
- verboseTF=`${bindir}/go_readrc $rcfile 'tmm.setup.verbose'`
- nset=`${bindir}/go_readrc $rcfile 'tmm.setup.nset'`
- tmm_mode=`${bindir}/go_readrc $rcfile 'tmm.setup.mode' '644'`
- transfermode=`${bindir}/go_readrc $rcfile 'tmm.setup.transfermode' 'link -s -f'`
- test "${verbose}" -o "${verboseTF}" = "T" && verbose='--verbose'
-
- test ${verbose} && echo "$prog - Start at `date`"
- if [ ${verbose} ]; then
- echo "$prog - "
- echo "$prog - time range : ${ccyymmddhh1} ${ccyymmddhh2}"
- echo "$prog - fc day 0 : ${fcday0}"
- fi
- test ! -d ${tmm_dir} && /bin/mkdir -p ${tmm_dir}
- owd=`/bin/pwd`
- cd ${tmm_dir}
- echo "$prog - "
- echo "$prog - changed to : ${tmm_dir}"
- test ! -d ${tmm_dir} && /bin/mkdir -p ${tmm_dir}
- mars_jb='./mars.jb'
- /bin/rm -f ${mars_jb}
- iset=0
- while true ; do
-
- iset=`expr ${iset} + 1`
-
- test ${iset} -gt ${nset} && break
-
- sset=`/usr/bin/printf '%3.3i' ${iset}`
-
- apply=`${bindir}/go_readrc $rcfile "tmm.setup.${sset}.apply"`
- test "${apply}" != "T" && continue
-
- mfiles=`${bindir}/go_readrc $rcfile "tmm.setup.${sset}.files"`
- msources=`${bindir}/go_readrc $rcfile "tmm.setup.${sset}.sources"`
- search_locs=`${bindir}/go_readrc $rcfile "tmm.setup.${sset}.search"`
-
- test "${apply}" != "T" && continue
-
- if [ ${verbose} ]; then
- echo "$prog - "
- echo "$prog - sources : ${msources}"
- echo "$prog - files : ${mfiles}"
- fi
-
- for mfile in ${mfiles} ; do
-
- for msource in ${msources} ; do
-
-
-
-
- ccyymmdd1=`echo ${ccyymmddhh1} | /usr/bin/cut -c 1-8`
- ccyy1=`echo ${ccyymmddhh1} | /usr/bin/cut -c 1-4`
- mm1=`echo ${ccyymmddhh1} | /usr/bin/cut -c 5-6`
- dd1=`echo ${ccyymmddhh1} | /usr/bin/cut -c 7-8`
- hh1=`echo ${ccyymmddhh1} | /usr/bin/cut -c 9-10`
-
- ccyymmdd2=`echo ${ccyymmddhh2} | /usr/bin/cut -c 1-8`
- ccyy2=`echo ${ccyymmddhh2} | /usr/bin/cut -c 1-4`
- mm2=`echo ${ccyymmddhh2} | /usr/bin/cut -c 5-6`
- dd2=`echo ${ccyymmddhh2} | /usr/bin/cut -c 7-8`
- hh2=`echo ${ccyymmddhh2} | /usr/bin/cut -c 9-10`
-
- case ${msource} in
-
- tmpp:* )
-
-
-
- test ${hh1} -ge 21 && ccyymmdd1=`${bindir}/date_add ${ccyymmdd1} 1`
- test ${hh2} -ge 21 && ccyymmdd2=`${bindir}/date_add ${ccyymmdd2} 1`
-
- ccyymmdd=${ccyymmdd1}
- while [ ${ccyymmdd} -le ${ccyymmdd2} ]; do
-
- ccyy=`echo ${ccyymmdd} | /usr/bin/cut -c 1-4`
- mm=`echo ${ccyymmdd} | /usr/bin/cut -c 5-6`
- dd=`echo ${ccyymmdd} | /usr/bin/cut -c 7-8`
-
-
-
-
-
- class='od'
- type='fc'
- levs='ml60'
- grid='glb3x2'
- tres='_21p06'
-
- keys=`echo ${msource} | /usr/bin/cut -d ':' -f 2-`
-
- eval ${keys}
-
- test "${mfile}" = "spm" && levs='ml1'
- test "${mfile}" = "surf" && levs='sfc'
-
- test "${mfile}" = "surf" && grid='glb1x1'
-
- test "${mfile}" = "spm" && tres='_00p06'
- test "${mfile}" = "surf" && tres='_21p03'
-
- mdir="${class}/${type}/${ccyy}/${mm}/${levs}/${grid}"
-
- meteodir=`echo ${mdir} | /usr/bin/tr '-' '/'`
- meteofile="${mfile}_${ccyymmdd}${tres}.hdf"
-
- tarfile="${mfile}_${ccyy}${mm}${tres}.tar"
- trkfile="${mfile}.tar"
-
- meteodir_long=`echo ${meteodir} | /usr/bin/tr '/' '-'`
-
- meteofile_full="${meteodir}/${meteofile}"
- meteofile_long="${meteodir_long}-${meteofile}"
-
- tarfile_full="${meteodir}/${tarfile}"
- tarfile_long="${meteodir_long}-${tarfile}"
- trkfile_full="${meteodir}/${trkfile}"
- trkfile_long="${meteodir_long}-${trkfile}"
-
- found=''
-
-
-
-
- if [ -z "${found}" ]; then
- fname=./${meteofile_long}
- test ${verbose} && echo "$prog - try ${fname}"
- if [ -f ${fname} ]; then
- test ${verbose} && echo "$prog - found ..."
- test -w ${fname} && touch ${fname}
- test -O ${fname} && chmod ${tmm_mode} ${fname}
- found='true'
- fi
- fi
-
-
-
-
- if [ -z "${found}" ]; then
-
- for loc in ${search_locs} ; do
-
- fname=${loc}/${meteofile_full}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- test -w ${bname} && touch ${bname}
- test -O ${bname} && chmod ${tmm_mode} ${bname}
- found='true'
- break
- fi
-
- fname=${loc}/${meteofile_long}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- test -w ${bname} && touch ${bname}
- test -O ${bname} && chmod ${tmm_mode} ${bname}
- found='true'
- break
- fi
-
- fname=${loc}/${tarfile_full}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- ${bindir}/gss ${transfermode} ${fname} ${tarfile_long}
-
- test ${verbose} && echo "$prog - unpack ..."
-
- ndir=0
- while /bin/true ; do
- ndir=`/usr/bin/expr ${ndir} + 1`
- tmpdir="./tmp.${ndir}"
- test ! -d ${tmpdir} && break
- done
- /bin/mkdir -p ${tmpdir}
- cd ${tmpdir}
-
- ${bindir}/gss tar-extract ../${tarfile_long}
-
- for mf in `/bin/ls *.hdf` ; do
- /bin/mv ${mf} ../${meteodir_long}-${mf}
- done
-
- cd ..
- /bin/rm -r -f ${tmpdir}
-
- ${bindir}/gss unlink ${tarfile_long}
-
- bname=./${meteofile_long}
- if [ ! -f ${bname} ]; then
- err "$prog - ERROR - meteofile not found after unpacking tarfile:"
- err "$prog - ERROR - pwd : `/bin/pwd`"
- err "$prog - ERROR - tarfile : ${tarfile_long}"
- err "$prog - ERROR - meteofile : ${bname}"
- errit 1
- fi
-
- test -w ./${meteofile_long} && touch ./${meteofile_long}
- test -O ${meteofile_long} && chmod ${tmm_mode} ${meteofile_long}
- for file2 in *${class}*${type}*${ccyy}*${mm}*${levs}*${grid}* ; do
- test -O ${file2} && chmod ${tmm_mode} ${file2}
- done
- found='true'
- break
- fi
-
- fname=${loc}/${trkfile_full}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- ${bindir}/gss ${transfermode} ${fname} ${trkfile_long}
-
- test ${verbose} && echo "$prog - unpack ..."
-
- ndir=0
- while /bin/true ; do
- ndir=`/usr/bin/expr ${ndir} + 1`
- tmpdir="./tmp.${ndir}"
- test ! -d ${tmpdir} && break
- done
- /bin/mkdir -p ${tmpdir}
- cd ${tmpdir}
-
- ${bindir}/gss tar-extract ../${trkfile_long}
-
- for mf in `/bin/ls *.hdf` ; do
- /bin/mv ${mf} ../${meteodir_long}-${mf}
- done
-
- cd ..
- /bin/rm -r -f ${tmpdir}
-
- ${bindir}/gss unlink ${trkfile_long}
-
- test -w ./${meteofile_long} && touch ./${meteofile_long}
- test -O ${meteofile_long} && chmod ${tmm_mode} ${meteofile_long}
- for file2 in *${class}*${type}*${ccyy}*${mm}*${levs}*${grid}* ; do
- test -O ${file2} && chmod ${tmm_mode} ${file2}
- done
- found='true'
- break
- fi
- done
- fi
-
- if [ -z "${found}" ]; then
- err "$prog - ERROR : do not know how to retrieve meteo file:"
- err "$prog - ERROR : directory : `/bin/pwd`"
- err "$prog - ERROR : meteofile : ${meteofile_long}"
- errit 1
- fi
-
- ccyymmdd=`${bindir}/date_add ${ccyymmdd} 1`
- done
- ;;
-
- tm5:* | tm5-hdf:* | tm5-nc:* )
-
-
-
- keys=`echo ${msource} | /usr/bin/cut -d ':' -f 2-`
-
-
- for keyval in `echo ${keys} | tr ';' ' '` ; do
- key=`echo ${keyval} | cut -d '=' -f 1`
- val=`echo ${keyval} | cut -d '=' -f 2`
- eval "${key}='${val}'"
- done
-
-
- case "${msource}" in
- tm5:* | tm5-hdf:* ) mext='hdf' ;;
- tm5-nc:* ) mext='nc' ;;
- * ) err "$prog - ERROR - could not set meteo file extension for source : ${msource}" ; errit 1 ;;
- esac
-
-
- case ${mfile} in
-
-
- 'sp' )
- case ${tres} in
- '_00p06' ) test ${hh2} -gt 18 && ccyymmdd2=`${bindir}/date_add ${ccyymmdd2} 1` ;;
- '_00p03' ) test ${hh2} -gt 21 && ccyymmdd2=`${bindir}/date_add ${ccyymmdd2} 1` ;;
- esac
- ;;
-
-
- 'albedo' | 'sr' | 'veg' )
- case ${tres} in
- '_00p06' ) test ${hh2} -gt 18 && ccyymmdd2=`${bindir}/date_add ${ccyymmdd2} 1` ;;
- esac
- ;;
-
- 'cp' | 'lsp' | 'slhf' | 'sshf' | 'ssr' | 'ewss' | 'nsss' )
- test ${hh2} -eq 0 && ccyymmdd2=`${bindir}/date_add ${ccyymmdd2} -1`
- ;;
- esac
-
- ccyymmdd=${ccyymmdd1}
- while [ ${ccyymmdd} -le ${ccyymmdd2} ]; do
-
- ccyy=`echo ${ccyymmdd} | /usr/bin/cut -c 1-4`
- mm=`echo ${ccyymmdd} | /usr/bin/cut -c 5-6`
- dd=`echo ${ccyymmdd} | /usr/bin/cut -c 7-8`
-
- ccyymm=`echo ${ccyymmdd} | /usr/bin/cut -c 1-6`
- ccyymmd=`echo ${ccyymmdd} | /usr/bin/cut -c 1-7`
- d=`echo ${ccyymmdd} | /usr/bin/cut -c 8`
-
-
-
-
- if [ "${tres}" = "_fg006up4tr3" ] && [ ${ccyymmdd} -ge 20000912 ] ; then
- tres='_fc012up2tr3'
- fi
-
-
- meteodir=`echo ${mdir} | /usr/bin/tr '-' '/'`
- meteofile="${mfile}_${ccyymmdd}${tres}.${mext}"
-
-
- tarext='tar'
-
-
-
-
-
- tarfiles="${mfile}_${ccyymm}${tres}.${tarext}"
- tarfiles="${tarfiles} ${mfile}_${ccyymmd}${tres}.${tarext}"
- if [ ${d} -lt 5 ]; then
- tarfiles="${tarfiles} ${mfile}_${ccyymmd}0${tres}.${tarext}"
- else
- tarfiles="${tarfiles} ${mfile}_${ccyymmd}5${tres}.${tarext}"
- fi
-
- case ${mfile} in
- 'oro' | 'lsm' )
- meteofile="${mfile}.${mext}"
- tarfiles="${mfile}.tar"
- mdir_yyyy='0000'
- mdir_mm='00'
- ;;
- 'srols' )
- meteofile="${mfile}_${ccyy}${mm}.${mext}"
- tarfiles="${mfile}_${ccyy}${mm}.${tarext}"
- mdir_yyyy="${ccyy}"
- mdir_mm="${mm}"
- ;;
- * )
- mdir_yyyy="${ccyy}"
- mdir_mm="${mm}"
- ;;
- esac
-
-
- meteodir=`echo ${meteodir} | sed -e "s/<yyyy>/${mdir_yyyy}/"`
- meteodir=`echo ${meteodir} | sed -e "s/<mm>/${mdir_mm}/"`
-
- meteodir_long=`echo ${meteodir} | /usr/bin/tr '/' '-'`
-
- meteofile_full="${meteodir}/${meteofile}"
- meteofile_long="${meteodir_long}-${meteofile}"
-
- found=''
-
-
-
-
- if [ -z "${found}" ]; then
- fname=./${meteofile_long}
- test ${verbose} && echo "$prog - try ${fname}"
- if [ -f ${fname} ]; then
- test ${verbose} && echo "$prog - found ..."
- test -w ${fname} && touch ${fname}
- found='true'
- fi
- fi
-
-
-
-
- if [ -z "${found}" ]; then
-
- for loc in ${search_locs} ; do
-
- fname=${loc}/${meteofile_full}
- test ${verbose} && echo "$prog - try full ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - ${transfermode} ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- test -w ${bname} && touch ${bname}
- found='true'
- break
- fi
-
- fname=${loc}/${meteofile_long}
- test ${verbose} && echo "$prog - try long ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - ${transfermode} ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- test -w ${bname} && touch ${bname}
- found='true'
- break
- fi
-
-
- for tarfile in ${tarfiles} ; do
-
-
- tarfile_full="${meteodir}/${tarfile}"
- tarfile_long="${meteodir_long}-${tarfile}"
-
-
- fnames="${loc}/${tarfile_full} ${loc}/${tarfile_long}"
-
- for fname in ${fnames} ; do
- test ${verbose} && echo "$prog - try tar ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- ${bindir}/gss ${transfermode} ${fname} ${tarfile_long}
-
- test ${verbose} && echo "$prog - unpack ..."
- ${bindir}/gss tar-extract ${tarfile_long}
-
- test -f "${meteofile_long}.gz" && gunzip -f *.gz
- test -f "${meteofile_long}.bz2" && bunzip2 -f *.bz2
-
- bname=./${meteofile_long}
- if [ ! -f ${bname} ]; then
- err "$prog - ERROR - meteofile not found after unpacking tarfile:"
- err "$prog - ERROR - pwd : `/bin/pwd`"
- err "$prog - ERROR - tarfile : ${tarfile_long}"
- err "$prog - ERROR - meteofile : ${bname}"
- errit 1
- fi
-
- ${bindir}/gss unlink ${tarfile_long}
-
- test -w ${bname} && touch ${bname}
- test -O ${bname} && chmod ${tmm_mode} ${bname}
- for file2 in *${mfile}_${ccyymm}* ; do
- test -O ${file2} && chmod ${tmm_mode} ${file2}
- done
- found='true'
- break
- fi
-
- test "${found}" && break
-
- done
-
- test "${found}" && break
- done
-
-
- test "${found}" && break
- done
- fi
-
- if [ -z "${found}" ]; then
- err "$prog - ERROR : do not know how to retrieve meteo file:"
- err "$prog - ERROR : directory : `/bin/pwd`"
- err "$prog - ERROR : meteofile : ${meteofile_long}"
- errit 1
- fi
-
- case ${mfile} in
-
- 'oro' | 'lsm' )
-
- break
- ;;
-
- 'srols' )
-
-
-
-
-
- ccyymmdd=`${bindir}/date_add ${ccyy}${mm}${dd} 1`
- ;;
-
- * )
-
- ccyymmdd=`${bindir}/date_add ${ccyymmdd} 1`
- ;;
- esac
- done
- ;;
-
- ecmwf:* )
-
-
-
- test ${hh1} -eq 00 && ccyymmdd1=`${bindir}/date_add ${ccyymmdd1} -1`
-
- ccyymmdd=${ccyymmdd1}
- while [ ${ccyymmdd} -le ${ccyymmdd2} ]; do
-
- ccyy=`echo ${ccyymmdd} | /usr/bin/cut -c 1-4`
- mm=`echo ${ccyymmdd} | /usr/bin/cut -c 5-6`
- dd=`echo ${ccyymmdd} | /usr/bin/cut -c 7-8`
-
-
-
-
- keys=`echo ${msource} | /usr/bin/cut -d ':' -f 2-`
-
- class='class'
- type='type'
- levs='ml60'
- sh=0
- gg=0
- tres='_tres'
- eval ${keys}
-
- case ${mfile} in
- S0 ) type='an' ;;
- esac
-
- case ${mfile} in
- S1 | S0 | Z | LSM ) levs='sfc' ;;
- LNSP ) levs='ml1' ;;
- esac
-
- case ${mfile} in
- Q | CLD | S1 | S0 | Z | LSM ) grid="N${gg}" ;;
- * ) grid="T${sh}" ;;
- esac
-
- case ${mfile} in
- Z | LSM )
- meteodir="${class}/${type}/0000/00/${levs}/${grid}"
- meteofile="${mfile}.gb"
- ;;
- * )
- meteodir="${class}/${type}/${ccyy}/${mm}/${levs}/${grid}"
- meteofile="${mfile}_${ccyy}${mm}${dd}${tres}.gb"
- ;;
- esac
-
- meteodir_long=`echo ${meteodir} | /usr/bin/tr '/' '-'`
-
- meteofile_full="${meteodir}/${meteofile}"
- meteofile_long="${meteodir_long}-${meteofile}"
-
- found=''
-
-
-
-
- if [ -z "${found}" ]; then
- fname=./${meteofile_long}
- test ${verbose} && echo "$prog - try ${fname}"
- if [ -f ${fname} ]; then
- test ${verbose} && echo "$prog - found ..."
- test -w ${fname} && touch ${fname}
- found='true'
- fi
- fi
-
-
-
-
- if [ -z "${found}" ]; then
-
- for loc in ${search_locs} ; do
-
- fname=${loc}/${meteofile_full}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
-
- fname=${loc}/${meteofile_long}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
- done
- fi
-
- if [ -z "${found}" ]; then
- err "$prog - ERROR : do not know how to retrieve meteo file:"
- err "$prog - ERROR : directory : `/bin/pwd`"
- err "$prog - ERROR : meteofile : ${meteofile_long}"
- errit 1
- fi
-
- ccyymmdd=`${bindir}/date_add ${ccyymmdd} 1`
- done
- ;;
-
-
- ecmwf-mars:* | ecmwf-tmpp:* | ecmwf-tm5:* )
-
-
- keys=`echo ${msource} | /usr/bin/cut -d ':' -f 2-`
-
- class='class'
- stream='oper'
- expver=1
- type='type'
- levs='ml60'
- grid='X00'
- eval ${keys}
-
- if [ ${hh1} -eq 00 ]; then
-
-
-
- ccyymmdd1=`${bindir}/date_add ${ccyymmdd1} -1`
- fi
- if [ "${class}" != 'ei' -a "${class}" != 'od' ]; then
-
- if [ ${hh2} -eq 00 ]; then
-
-
-
- ccyymmdd2=`${bindir}/date_add ${ccyymmdd2} -1`
- fi
- fi
-
-
-
-
-
-
-
-
- ccyymmdd=${ccyymmdd1}
- fcmode=''
- while [ ${ccyymmdd} -le ${ccyymmdd2} ]; do
-
- test "${fcmode}" && break
-
-
- if [ "${fcday0}" -a "${fcmode_read}" == "T" ]; then
-
- if [ ${ccyymmdd} -lt ${fcday0} ]; then
- fcday00=${ccyymmdd}
- else
- fcday00=${fcday0}
- fcmode='true'
- fi
- else
-
- fcday00=${ccyymmdd}
- fi
-
- eval ${keys}
-
-
- test "${expver}" == "29" -a ${ccyymmdd} -gt 20060201 && expver='1'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- case ${class}-${type} in
-
- 'od-an' | 'e4-an' | 'ei-an' | 'rd-an' )
-
-
-
- dates=`${bindir}/date_add ${fcday00} -1`
-
-
- times="0000/0600/1200/1800 2400"
-
- steps="000 000"
-
- expvers="${expver} ${expver}"
-
-
- if [ "${class}" = "od" -a ${expver} -eq 29 ]; then
- if [ ${dates} -eq 20050930 ] ; then
- times="0600/1200/1800 2400"
- fi
- fi
- ;;
-
-
- 'ea-an' )
-
-
-
-
- dates="${ccyymmdd}"
-
- times="0000/0100/0200/0300/0400/0500/0600/0700/0800/0900/1000/1100/1200/1300/1400/1500/1600/1700/1800/1900/2000/2100/2200/2300"
-
- steps="000"
-
- expvers="${expver}"
- ;;
-
- 'od-fc' | 'e4-fc' | 'ei-fc' )
-
-
- if [ "${fcmode}" ]; then
-
- dates="${fcday00}"
-
- fcp1=`${bindir}/date_diff ${fcday00} ${ccyymmdd}`
- fcp2=`${bindir}/date_diff ${fcday00} ${ccyymmdd2}`
- if [ ${fcp1} -lt 0 -o ${fcp1} -gt 10 -o ${fcp2} -lt 0 -o ${fcp2} -gt 10 ]; then
- err "$prog - ERROR - found obscure forecast period range: ${fcp1} ${fcp2}"
- err "$prog - ERROR - fcday0 : ${fcday00}"
- err "$prog - ERROR - ccyymmdd : ${ccyymmdd}"
- err "$prog - ERROR - ccyymmdd2 : ${ccyymmdd2}"
- errit 1
- fi
- else
-
- dates="${ccyymmdd}"
-
- fcp1=0
- fcp2=0
- fi
-
-
- if [ ${fcp1} -eq 0 -a ${fcp2} -eq 0 ] ; then
-
- times="0000/1200"
- steps="003/006/009/012"
- expvers="${expver}"
-
-
-
- test "${levs}" = "sfc" && steps="003/006/009/012/015"
-
- if [ "${class}" = "od" -a ${expver} -eq 29 ]; then
- if [ ${ccyymmdd} -eq 20050930 ] ; then
- times="1200"
- steps="003/006/009/012"
- test "${levs}" = "sfc" && steps="003/006/009/012/015"
- fi
- if [ ${ccyymmdd} -eq 20060201 ] ; then
- times="0000 1200"
- steps="003/006/009/012 003/006/009/012/"
- test "${levs}" = "sfc" && steps="003/006/009/012/015 003/006/009/012/015"
- expvers="29 1"
- fi
- fi
-
- if [ "${class}" = "e4" -a ${expver} -eq 500 ]; then
-
- steps="003/006/009/012"
- fi
- else
-
-
- if [ ${fcp1} -eq 0 ] ; then
-
-
- times="0000 1200"
- steps="003/006/009/012/015 003/006/009/012/015"
- expvers="${expver} ${expver}"
-
- test ${expver} -eq 29 -a ${ccyymmdd} -eq 20060201 && expvers="29 1"
- else
-
- times="1200"
- steps=""
- expvers="${expver}"
-
- test ${expver} -eq 29 -a ${ccyymmdd} -eq 20060201 && expvers="1"
- fi
-
- fcp=${fcp1}
- test ${fcp} -eq 0 && fcp=1
- while [ ${fcp} -le ${fcp2} ]; do
-
- test "${steps}" && steps="${steps}/"
-
- if [ ${ccyymmdd} -lt 20060314 ]; then
- case ${fcp} in
- 1 ) steps="${steps}018/021/024/027/030/033/036" ;;
- 2 ) steps="${steps}039/042/045/048/051/054/057/060" ;;
- 3 ) steps="${steps}063/066/069/072/078/084" ;;
- 4 ) steps="${steps}090/096/102/108" ;;
- 5 ) steps="${steps}114/120/126/132" ;;
- 6 ) steps="${steps}138/144/150/156" ;;
- 7 ) steps="${steps}162/168/174/180" ;;
- 8 ) steps="${steps}186/192/198/204" ;;
- 9 ) steps="${steps}210/216/222/228" ;;
- 10 ) steps="${steps}234/240" ;;
- * )
- err "$prog - ERROR - forecast periode ${fcp} not supported for steps"
- errit 1 ;;
- esac
- else
- case ${fcp} in
- 1 ) steps="${steps}018/021/024/027/030/033/036/039" ;;
- 2 ) steps="${steps}042/045/048/051/054/057/060/063" ;;
- 3 ) steps="${steps}066/069/072/075/078/081/084/087" ;;
- 4 ) steps="${steps}090/093/096/102/108" ;;
- 5 ) steps="${steps}114/120/126/132" ;;
- 6 ) steps="${steps}138/144/150/156" ;;
- 7 ) steps="${steps}162/168/174/180" ;;
- 8 ) steps="${steps}186/192/198/204" ;;
- 9 ) steps="${steps}210/216/222/228" ;;
- 10 ) steps="${steps}234/240" ;;
- * )
- err "$prog - ERROR - forecast periode ${fcp} not supported for steps"
- errit 1 ;;
- esac
- fi
-
- fcp=`/usr/bin/expr ${fcp} + 1`
- done
- fi
- ;;
-
- 'ea-fc' )
-
-
-
- case "${levs}" in
- 'sfc' )
- expvers="${expver}"
- dates="${ccyymmdd}"
- times="0600/1800"
- steps="001/002/003/004/005/006/007/008/009/010/011/012"
- ;;
- * )
- expvers="${expver}"
- dates="${ccyymmdd}"
- times="0600/1800"
- steps="003/006/009/012"
- ;;
- esac
- ;;
-
- 'rd-fc' )
-
-
- if [ -z "${tres}" ] ; then
- err "$prog - ERROR - sources definition line should contain a 'tres' value"
- errit 1
- fi
-
- case ${tres} in
- '_fc000up24tr1' )
- expvers="${expver}"
- dates="${ccyymmdd}"
- times="0030/0130/0230/0330/0430/0530/0630/0730/0830/0930/1030/1130/1230/1330/1430/1530/1630/1730/1830/1930/2030/2130/2230/2330"
- steps="000"
- ;;
- '_fc000up1tr24' )
- expvers="${expver}"
- dates="${ccyymmdd}"
- times="1200"
- steps="000"
- ;;
- * )
- err "$prog - ERROR - tres value '${tres}' not supported for class-type : ${class}-${type}"
- errit 1 ;;
- esac
- ;;
-
- * )
-
- err "$prog - unsupported class-type for mars data : ${class}-${type}"
- errit 1
- ;;
- esac
-
-
- case ${levs} in
- sfc )
- levtype='sfc'
- ;;
- ml* )
- nlev=`echo ${levs} | /usr/bin/tr -d 'ml'`
- levtype="ml,levelist=1/to/${nlev}"
- ;;
- * )
- err "$prog - levs '${levs}' not supported ..."
- errit 1
- ;;
- esac
-
- params=${mfile}
-
- case ${grid} in
- T* )
- resol=`echo ${grid} | /usr/bin/tr -d 'T'`
- repres="sh,resol=${resol},grid=off"
- ;;
- N* )
- resol=`echo ${grid} | /usr/bin/tr -d 'N'`
- repres="gg,grid=${resol},gaussian=reduced"
- ;;
- R0.5 )
-
-
-
-
-
-
-
- repres="ll,grid=off,resol=off,gaussian=off"
- ;;
- * )
- err "$prog - grid '${grid}' not supported ..."
- errit 1
- ;;
- esac
-
- targets="${class}-${type}-[date]-[time]-${levs}-[param]-${grid}.gb"
-
-
-
-
-
-
-
-
- export MARS_MULTITARGET_STRICT_FORMAT=1
-
-
-
-
-
- notfound=0
-
-
- for date in `echo ${dates} | /usr/bin/tr '/' ' '` ; do
-
- for time in `echo ${times} | /usr/bin/tr '/' ' '` ; do
-
- test "${class}-${expver}" = "e4-500" -a ${date} -lt 20021031 && continue
-
- test "${class}-${expver}" = "od-29" -a ${date}${time} -lt 200509301200 && continue
-
-
- if [ "${time}" = "2400" ]; then
- xdate=`${bindir}/date_add ${date} 1`
- xtime='0000'
- else
- xdate=${date}
- xtime=${time}
- fi
-
-
- mars_params=''
-
- for param in `echo ${params} | /usr/bin/tr '/' ' '` ; do
-
- mars_param=${param}
- case ${param} in
- CVL ) mars_param=27.128 ;;
- CVH ) mars_param=28.128 ;;
- TVL ) mars_param=29.128 ;;
- TVH ) mars_param=30.128 ;;
- CI ) mars_param=31.128 ;;
- SSTK ) mars_param=34.128 ;;
- SWVL1 ) mars_param=39.128 ;;
- SWVL2 ) mars_param=40.128 ;;
- SWVL3 ) mars_param=41.128 ;;
- SWVL4 ) mars_param=42.128 ;;
- STL1 ) mars_param=139.128 ;;
- STL2 ) mars_param=170.128 ;;
- STL3 ) mars_param=183.128 ;;
- STL4 ) mars_param=236.128 ;;
- 10FG )
- mars_param=49.128
-
- if [ "${class}" == 'od' -a ${date} -ge 20111115 ] ; then
- echo " WARNING : unless you have modified TM5 code, "
- echo " WARNING : you are supposed to request 10FG3. "
- echo " WARNING : It replaces 10FG as variable name for"
- echo " WARNING : the 3-hourly accumulated gust wind."
- exit 1
- fi
- ;;
- 10FG3 )
- mars_param=28.228
-
- if [ "${class}" == 'od' -a ${date} -lt 20111115 ] ; then
- echo " WARNING : unless you have modified TM5 code, "
- echo " WARNING : you are supposed to request 10FG. "
- echo " WARNING : It was the variable name for the 3-hourly"
- echo " WARNING : accumulated gust wind before 2011/11/15."
- exit 1
- fi
- ;;
- Z ) mars_param=129.128 ;;
- T ) mars_param=130 ;;
- Q ) mars_param=133 ;;
- SP ) mars_param=134.128 ;;
- W ) mars_param=135 ;;
- VO ) mars_param=138 ;;
- STL1 ) mars_param=139.128 ;;
- SD ) mars_param=141.128 ;;
- LSP ) mars_param=142.128 ;;
- CP ) mars_param=143.128 ;;
- SF ) mars_param=144.128 ;;
- SSHF ) mars_param=146.128 ;;
- SLHF ) mars_param=147.128 ;;
- LNSP ) mars_param=152 ;;
- D ) mars_param=155 ;;
- BLH ) mars_param=159.128 ;;
- 10U ) mars_param=165.128 ;;
- 10V ) mars_param=166.128 ;;
- 2T ) mars_param=167.128 ;;
- 2D ) mars_param=168.128 ;;
- SSRD ) mars_param=169.128 ;;
- STL2 ) mars_param=170.128 ;;
- LSM ) mars_param=172.128 ;;
- SR ) mars_param=173.128 ;;
- AL ) mars_param=174.128 ;;
- STRD ) mars_param=175.128 ;;
- SSR ) mars_param=176.128 ;;
- STR ) mars_param=177.128 ;;
- EWSS ) mars_param=180.128 ;;
- NSSS ) mars_param=181.128 ;;
- STL3 ) mars_param=183.128 ;;
- SRC ) mars_param=198.128 ;;
- TP ) mars_param=228.128 ;;
- LSRH ) mars_param=234.128 ;;
- SKT ) mars_param=235.128 ;;
- STL4 ) mars_param=236.128 ;;
- FAL ) mars_param=243.128 ;;
- FSR ) mars_param=244.128 ;;
- CLWC ) mars_param=246 ;;
- CIWC ) mars_param=247 ;;
- CC ) mars_param=248 ;;
-
- MLSPR ) mars_param=029.235 ;;
- MCPR ) mars_param=030.235 ;;
- MSR ) mars_param=031.235 ;;
- METSS ) mars_param=041.235 ;;
- MNTSS ) mars_param=042.235 ;;
- MSLHF ) mars_param=034.235 ;;
- MSSHF ) mars_param=033.235 ;;
- MSNSWRF ) mars_param=037.235 ;;
- MSDWSWRF ) mars_param=035.235 ;;
- MSNLWRF ) mars_param=038.235 ;;
- MSDWLWRF ) mars_param=036.235 ;;
-
- 104.128 ) mars_param=104.128 ;;
- 105.128 ) mars_param=105.128 ;;
- 106.128 ) mars_param=106.128 ;;
- 107.128 ) mars_param=107.128 ;;
-
- 104.162 ) mars_param=104.162 ;;
- 105.162 ) mars_param=105.162 ;;
- 106.162 ) mars_param=106.162 ;;
- 107.162 ) mars_param=107.162 ;;
-
- 109.162 ) mars_param=109.162 ;;
-
- MUMF ) mars_param=235009 ;;
- MDMF ) mars_param=235010 ;;
- MUDR ) mars_param=235011 ;;
- MDDR ) mars_param=235012 ;;
-
- MTDCH ) mars_param=235014 ;;
-
- CH4FIRE ) mars_param='82.210' ;;
-
- * )
- err "$prog - no grib code implemented for param '${param}'"
- errit 1
- ;;
- esac
-
-
- if [ -z "${mars_params}" ]; then
- mars_params="${mars_param}"
- else
- mars_params="${mars_params}/${mars_param}"
- fi
-
- fname=`echo ${targets} | /usr/bin/sed -e "s^\[date\]^${xdate}^" -e "s^\[time\]^${xtime}^" -e "s^\[param\]^${mars_param}^"`
-
- if [ -f ${fname} ]; then
- echo "$prog - found ${fname}"
-
- test -w ${fname} && touch ${fname}
- else
- echo "$prog - missing ${fname}"
-
-
- notfound=1
-
-
- fi
- done
- test ${notfound} -gt 0 && break
- done
- test ${notfound} -gt 0 && break
- done
-
- if [ ${notfound} -gt 0 ]; then
-
- istep=0
- for time in ${times} ; do
-
- istep=`/usr/bin/expr ${istep} + 1`
-
- stepi=`echo ${steps} | /usr/bin/cut -d ' ' -f ${istep}`
- expveri=`echo ${expvers} | /usr/bin/cut -d ' ' -f ${istep}`
-
- if [ "${time}" = "2400" ]; then
-
- xdate=`${bindir}/date_add ${date} 1`
- xtime='0000'
- else
-
- xdate=${dates}
- xtime=${time}
- fi
-
- echo "$prog - add line to mars job for ${xdate} ${xtime} ..."
- echo "retrieve,class=${class},stream=${stream},expver=${expveri},type=${type},date=${xdate},time=${xtime},step=${stepi},levtype=${levtype},param=${mars_params},repres=${repres},target="'"'"${targets}"'"' >> ${mars_jb}
- done
- else
-
- echo "$prog - all found for ${ccyymmdd} ..."
- fi
-
- ccyymmdd=`${bindir}/date_add ${ccyymmdd} 1`
- done
- set +x
- ;;
-
-
- ncep-cdc:* )
-
-
-
- case ${mfile} in
- 'lhtfl' )
- test "${mm1}${dd1}${hh1}" -eq "010100" && ccyy1=`/usr/bin/expr ${ccyy1} - 1`
- ;;
- esac
-
- ccyy=${ccyy1}
- while [ ${ccyy} -le ${ccyy2} ]; do
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- case ${mfile} in
- 'hgt' | 'land' )
- meteodir='surface_gauss'
- meteofile="${mfile}.sfc.gauss.nc" ;;
- 'sfcr' | 'pres' | 'icec' | 'skt' | 'lhtfl' | 'shtfl' | 'ugwd' | 'vgwd' | 'prate' | 'cprat' )
- meteodir='surface_gauss'
- meteofile="${mfile}.sfc.gauss.${ccyy}.nc" ;;
- 'uwnd.10m' | 'vwnd.10m' )
- meteodir='surface_gauss'
- meteofile="${mfile}.gauss.${ccyy}.nc" ;;
- 'pres.nlog' )
- meteodir='spectral'
- meteofile="${mfile}.sfc.spec.${ccyy}.nc" ;;
- 'vort' | 'div' | 'vair' | 'shum' )
- meteodir='spectral'
- meteofile="${mfile}.spec.${ccyy}.nc" ;;
- * )
- err "$prog - ERROR - unsupported ncep file '${mfile}' ..."
- errit 1 ;;
- esac
-
- meteodir_long=`echo ${meteodir} | /usr/bin/tr '/' '-'`
-
- meteofile_full="${meteodir}/${meteofile}"
- meteofile_long="${meteodir_long}-${meteofile}"
-
- found=''
-
-
-
-
- if [ -z "${found}" ]; then
- fname=./${meteofile_long}
-
- if [ -f ${fname} ]; then
-
- test -w ${fname} && touch ${fname}
- found='true'
- fi
- fi
-
-
-
-
- if [ -z "${found}" ]; then
-
- for loc in ${search_locs} ; do
-
- fname=${loc}/${meteofile_full}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
-
- fname=${loc}/${meteofile_long}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
- done
- fi
-
- if [ -z "${found}" ]; then
- err "$prog - ERROR : do not know how to retrieve meteo file:"
- err "$prog - ERROR : directory : `/bin/pwd`"
- err "$prog - ERROR : meteofile : ${meteofile_long}"
- errit 1
- fi
-
- ccyy=`/usr/bin/expr ${ccyy} + 1`
- done
- ;;
-
- ncep-gfs:* )
-
-
- test ${hh1} -lt 12 && ccyymmdd1=`${bindir}/date_add ${ccyymmdd1} -1`
- test ${hh2} -lt 12 && ccyymmdd2=`${bindir}/date_add ${ccyymmdd2} -1`
-
- ccyymmdd=${ccyymmdd1}
- while [ ${ccyymmdd} -le ${ccyymmdd2} ]; do
-
- ccyy=`echo ${ccyymmdd} | /usr/bin/cut -c 1-4`
- mm=`echo ${ccyymmdd} | /usr/bin/cut -c 5-6`
- dd=`echo ${ccyymmdd} | /usr/bin/cut -c 7-8`
-
- hours='12.00 12.03 12.06 12.09 12.12 12.15 12.18 12.21 12.24'
-
- for hour in ${hours} ; do
-
-
-
-
-
-
-
-
-
-
-
-
- meteodir="${ccyy}${mm}${dd}"
- meteofile="${ccyy}${mm}${dd}.${hour}.${mfile}"
-
- meteodir_long=`echo ${meteodir} | /usr/bin/tr '/' '-'`
-
- meteofile_full="${meteodir}/${meteofile}"
- meteofile_long="${meteodir_long}-${meteofile}"
-
- found=''
-
-
-
-
- if [ -z "${found}" ]; then
- fname=./${meteofile_long}
-
- if [ -f ${fname} ]; then
-
- test -w ${fname} && touch ${fname}
- found='true'
- fi
- fi
-
-
-
-
- if [ -z "${found}" ]; then
-
- for loc in ${search_locs} ; do
-
- fname=${loc}/${meteofile_full}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
-
- fname=${loc}/${meteofile_long}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
- done
- fi
-
- if [ -z "${found}" ]; then
- err "$prog - ERROR : do not know how to retrieve meteo file:"
- err "$prog - ERROR : directory : `/bin/pwd`"
- err "$prog - ERROR : meteofile : ${meteofile_long}"
- errit 1
- fi
- done
-
- ccyymmdd=`${bindir}/date_add ${ccyymmdd} 1`
- done
- ;;
-
-
- msc-data:* )
-
-
- ccyymmdd=${ccyymmdd1}
- while [ ${ccyymmdd} -le ${ccyymmdd2} ]; do
-
- ccyy=`echo ${ccyymmdd} | /usr/bin/cut -c 1-4`
- mm=`echo ${ccyymmdd} | /usr/bin/cut -c 5-6`
- dd=`echo ${ccyymmdd} | /usr/bin/cut -c 7-8`
-
-
-
-
-
- mdir='<mdir>'
- tres='<tres>'
-
-
- keys=`echo ${msource} | /usr/bin/cut -d ':' -f 2-`
-
-
- eval ${keys}
-
-
- meteodir=${mdir}'/'${type}
- meteofile="${mfile}_${ccyymmdd}${tres}.dat"
-
- meteodir_long=`echo ${meteodir} | /usr/bin/tr '/' '-'`
-
- meteofile_full="${meteodir}/${meteofile}"
- meteofile_long="${meteodir_long}-${meteofile}"
-
- found=''
-
-
-
-
- if [ -z "${found}" ]; then
- fname=./${meteofile_long}
-
- if [ -f ${fname} ]; then
-
- test -w ${fname} && touch ${fname}
- found='true'
- fi
- fi
-
-
-
-
- if [ -z "${found}" ]; then
-
- for loc in ${search_locs} ; do
-
- fname=${loc}/${meteofile_full}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
-
- fname=${loc}/${meteofile_long}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
- done
- fi
-
- if [ -z "${found}" ]; then
- err "$prog - ERROR : do not know how to retrieve meteo file:"
- err "$prog - ERROR : directory : `/bin/pwd`"
- err "$prog - ERROR : meteofile : ${meteofile_long}"
- errit 1
- fi
-
- ccyymmdd=`${bindir}/date_add ${ccyymmdd} 1`
- done
- ;;
-
-
- olsson:* )
-
-
-
-
- ccyy=${ccyy1}
- mm=${mm1}
- while [ ${ccyy}${mm} -le ${ccyy2}${mm2} ]; do
-
-
-
-
-
-
- mdir='OLSSON'
-
-
- keys=`echo ${msource} | /usr/bin/cut -d ':' -f 2-`
-
-
- eval ${keys}
-
- meteodir="${mdir}"
- meteofile="${mfile}_OLSSON_360_180_${mm}.d"
-
- meteodir_long=`echo ${meteodir} | /usr/bin/tr '/' '-'`
-
- meteofile_full="${meteodir}/${meteofile}"
- meteofile_long="${meteodir_long}-${meteofile}"
-
- found=''
-
-
-
-
- if [ -z "${found}" ]; then
- fname=./${meteofile_long}
-
- if [ -f ${fname} ]; then
-
- test -w ${fname} && touch ${fname}
- found='true'
- fi
- fi
-
-
-
-
- if [ -z "${found}" ]; then
-
- for loc in ${search_locs} ; do
-
- fname=${loc}/${meteofile}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
-
- fname=${loc}/${meteofile_full}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
-
- fname=${loc}/${meteofile_long}
- test ${verbose} && echo "$prog - try ${fname} ..."
- if ${bindir}/gss exist ${fname} ; then
-
- test ${verbose} && echo "$prog - link ..."
- bname=./${meteofile_long}
- ${bindir}/gss ${transfermode} ${fname} ${bname}
-
- found='true'
- break
- fi
- done
- fi
-
- if [ -z "${found}" ]; then
- err "$prog - ERROR : do not know how to retrieve meteo file:"
- err "$prog - ERROR : directory : `/bin/pwd`"
- err "$prog - ERROR : meteofile : ${meteofile_long}"
- errit 1
- fi
-
- mm=`/usr/bin/expr ${mm} + 1`
- if [ ${mm} -gt 12 ]; then
- ccyy=`/usr/bin/expr ${ccyy} + 1`
- mm=1
- fi
-
- mm=`/usr/bin/printf '%2.2i' ${mm}`
- done
- ;;
-
- * )
-
- err "$prog - ERROR - unsupported source:"
- err "$prog - ERROR - ${msource}"
- errit 1
- ;;
- esac
- done
- done
- done
- if [ -f ${mars_jb} ]; then
-
- mars_clean='false'
-
-
- mars_out="`/bin/pwd`/mars.out"
-
-
- mars_out="${mars_out}.$$"
- mars_clean=''
- echo "$prog - retrieve files from mars ..."
- echo "$prog - start at `/bin/date`"
- if ( /usr/bin/sort ${mars_jb} | mars > ${mars_out} 2>&1 ) ; then
- echo "$prog - end at `/bin/date`"
- test "${mars_clean}" && /bin/rm -f ${mars_jb} ${mars_out}
- else
- err "$prog - error from mars request; see:"
- err "$prog - ${mars_out}"
- errit 1
- fi
- fi
- if [ "${tmm_dir_clean}" = "T" ]; then
-
- ${bindir}/gss ${verbose} limit ${tmm_dir_size} ${tmm_dir}
- fi
- cd ${owd}
-
- test ${verbose} && echo "$prog - end"
- exit 0
|