;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; NAME: calendriertotem ; ; PURPOSE: exemple de fonction calculant un calendrier. Il s''agit ici ; du calendrier utiliser pour le run totem/ecmwf, c.a.d. un calendrier ; qui va de 1979 a 1993 dont le pas est de 5 jour et qui ds lequel ; chaque 1ere sortie d''une nouvelle annee est le 5 janvier (si le mot ; cle mensuel n''est pas active) ; ; CATEGORY: calendrier ; ; CALLING SEQUENCE:res=calendriertotem() ; ; INPUTS: ; ; KEYWORD PARAMETERS: ; YYYYMMDD: pour que le format des jours fournis par le ; calendrier soit du style 19991019. c'est le format par ; defaut. ; ; JULIAN_DAY: pour que le calendrier soit exprime en jour julien ; d''IDL. ; ; MENSUEL: pour obtenir un calendier mensuel plutot qu''a 5 ; jours. ; ; YBEGIN: annee de debut codee sur 2 chiffres ; ; YEND annee de fin codee sur 2 chiffres ; ; OUTPUTS: un vecteur de longinteger contenant l''ensemble des dates. ; ; COMMON BLOCKS: ; ; SIDE EFFECTS: ; ; RESTRICTIONS: ; ; EXAMPLE: ; ; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr) ; ??/??/1999 ;- ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ FUNCTION calendriertotem, YYYYMMDD = yyyymmdd, JULIAN_DAY = julian_day, MENSUEL = mensuel, ybegin = ybegin, yend = yend ; cheking for yyyymmdd and julian_day keywords julian_day = keyword_set(julian_day)*(1-keyword_set(yyyymmdd)) yyyymmdd = keyword_set(yyyymmdd)*(1-keyword_set(julian_day))+(keyword_set(yyyymmdd) EQ julian_day) ; if NOT keyword_set(yend) then yend = 93 if NOT keyword_set(ybegin) then ybegin = 79 nyear = yend-ybegin+1 ; if keyword_set(mensuel) then begin res = lonarr(12*nyear) for an = 0, nyear-1 do BEGIN for sor = 0, 11 do BEGIN if keyword_set(julian_day) then res[0+an*12+sor] = julday(sor+1, 15, 1900+ybegin+an) $ ELSE BEGIN caldat, julday(sor+1, 15, 1900+ybegin+an), month, day, year if day EQ 15 then day = 0 res[0+an*12+sor] = 10000L*year+100L*month+day ENDELSE endfor ENDFOR return, res endif ; res = lonarr(73*nyear) for an = 0, nyear-1 do BEGIN if keyword_set(julian_day) then $ res[0+an*73:0+(an+1)*73-1] = julday(1, 5, 1900+ybegin+an)+5L*lindgen(73) $ ELSE BEGIN for sor = 0, 72 do begin caldat, julday(1, 5+sor*5, 1900+ybegin+an), month, day, year res[0+an*73+sor] = 10000L*year+100L*month+day endfor ENDELSE endfor return, res end