;+
;
; @file_comments
; lit les moyennes annuelles
; sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS
;
; @obsolete
;
; @categories
; Reading
;
; @examples
; IDL> res=nlecsaison(nom, numsortie79, nbretps)
;
; @param nom {in}{required}
; nom du tableau contenant le champ que l'on veut (le
; trouver avec ncdflec,fichier,/var
;
; @param numsortie79 {in}{required}
; le numero du pas de temps que l'on veut sortir du
; fichier (compte a partir de 1) a partir de 79
;
; @param nbretps {in}{required}
; nombre de pas de temps a extraire
;
; @keyword BOITE
; boite sur laquelle integrer (par defaut tt le domaine)
;
; @keyword GRILLE
; impose la grille a laquelle est rapporte le champ. rq permet
; d'aller plus vite ds la lecture
;
; @keyword TOUT
; oblige a lire le tableau entier en non pas celui reduit a domdef
;
; @keyword _EXTRA
; Used to pass keywords
;
; @returns
; tableau 2d (qd la serie ne fait que 1 pas de temps) ou
; 3d (valable ds 1 premier tps que pour les tableaux 2d)
;
; @uses
; common.pro
;
; @restrictions
; appele par nlec
;
; @history
; Sebastien Masson (smasson\@lodyc.jussieu.fr)
;
; @version
; $Id$
;
;-
function nlecsaison, nom, numsortie79, nbretps $
, BOITE=boite, GRILLE=grille, TOUT=tout, _EXTRA=ex
;
;------------------------------------------------------------
;REF.saisonnier.climato.grid.T.nc
;------------------------------------------------------------
compile_opt idl2, strictarrsubs, obsolete
;
@common
;------------------------------------------------------------
;------------------------------------------------------------
res=-1
anneedepart=1979
;------------------------------------------------------------
; gestion du nom de la grille en testant les differentes possibilites
; et ouverture du fichier
;------------------------------------------------------------
if keyword_set(grille) then begin
vargrid=grille
nomfich=prefix+'.saisonnier.climato.grid.'+vargrid+'.nc'
IF !version.OS_FAMILY EQ 'unix' THEN spawn, '\file '+iodir+nomfich+' > /dev/null'
cdfid=ncdf_open(iodir+nomfich)
varcontient=ncdf_varinq(cdfid,nom)
endif else begin
; liste des fichiers pouvant convenir
quelsfichiers = findfile(iodir+prefix+'.saisonnier.climato.grid.*')
IF quelsfichiers[0] EQ '' THEN $ ; liste vide
return, report('LES FICHIERS: '+iodir+prefix+'.saisonnier.climato.grid... n''existe pas.')
for i=0,n_elements(quelsfichiers)-1 do begin
IF !version.OS_FAMILY EQ 'unix' THEN spawn, '\file '+quelsfichiers[i]+' > /dev/null'
cdfid=ncdf_open(quelsfichiers[i])
contient=ncdf_inquire(cdfid)
for varid=0,contient.nvars-1 do BEGIN ; ds les fichiers existants on
varcontient=ncdf_varinq(cdfid,varid) ; cherche le nom des variables
if varcontient.name eq nom then BEGIN
vargrid=strmid(quelsfichiers[i],strpos(quelsfichiers[i],'grid')+5,1) ;nom de grille
goto, grilletrouvee
ENDIF
endfor
ncdf_close,cdfid
endfor
return, report('La variable '+nom+' n''existe pas ds les fichiers'+iodir+prefix+'.saisonnier.climato.grid...')
endelse
grilletrouvee:
;------------------------------------------------------------
; lecture de certains attributs et de l'axe des temps
;------------------------------------------------------------
ncdf_attget,cdfid,nom,'title',value
varname=string(value)
ncdf_attget,cdfid,nom,'units',value
varunit=string(value)
if rstrpos(varname,'(') eq -1 then varname=varname+' ('+varunit+')'
varexp=prefix
;------------------------------------------------------------
; lecture de l'axe des temps
;------------------------------------------------------------
ncdf_varget,cdfid,'time_counter',time, offset = [numsortie79-1],count=[nbretps]
time = long(time)+julday(12, 31, 1978)
jpt=nbretps
IF jpt EQ 1 THEN BEGIN
IF numsortie79 EQ 13 THEN vardate='CLIMATOLOGIE '+prefix $
ELSE begin
vardate='climato mensuelle '+strtrim(numsortie79,1)
endelse
endif
;------------------------------------------------------------
;------------------------------------------------------------
; extraction du tableau qui nous interesse
;------------------------------------------------------------
;------------------------------------------------------------
;------------------------------------------------------------
; determination du domaine geographique
;------------------------------------------------------------
if keyword_set(tout) then begin
nx=jpi
ny=jpj
nz=jpk
glam=[1]
gphi=[1]
gdep=[1]
premierx = 0
premiery = 0
premierz = 0
endif else BEGIN
;------------------------------------------------------------
; redefinition eventuelle du domaine ajuste a boite (a 6 elements)
; + on recupere la dim du nouveau domaine
;------------------------------------------------------------
if keyword_set(boite) then BEGIN
CASE N_Elements(Boite) Of
1:Domdef, lon1, lon2, lat1, lat2, 0.,boite[0],GRILLE=vargrid, _EXTRA = ex
2:Domdef, lon1, lon2, lat1, lat2, boite[0],boite[1],GRILLE=vargrid, _EXTRA = ex
4:Domdef, [Boite, prof1, prof2],GRILLE=vargrid, _EXTRA = ex
5:Domdef, [Boite[0:3], 0, Boite[4]],GRILLE=vargrid, _EXTRA = ex
6:Domdef, Boite,GRILLE=vargrid, _EXTRA = ex
Else:return, report('Mauvaise Definition de Boite')
endcase
ENDIF
grille, mask, glam, gphi, gdep, nx, ny,nz,premierx,premiery,premierz
ENDELSE
;------------------------------------------------------------
if varcontient.ndims eq 3 then $
ncdf_varget,cdfid,nom,res $
,offset=[premierx,premiery,numsortie79-1],count=[nx,ny,nbretps] else $
ncdf_varget,cdfid,nom,res $
,offset=[premierx,premiery,premierz,numsortie79-1],count=[nx,ny,nz,nbretps]
;------------------------------------------------------------
ncdf_close,cdfid
return,res
;------------------------------------------------------------
;------------------------------------------------------------
end