BMF

(BMF_catalog)



SUBROUTINE BMF_catalog(nom,ni,istart,iend,nj,jstart,jend,nk, &
kstart,kend,time1,time2,hgrid,vgrid,dtyp,scat,ndata)

ARGUMENTS

N.B.: BMF_length correspond à la valeur de retour de la dernière fonction bmf_gobe appelée.

DESCRIPTION

Routine qui dresse un inventaire des champs contenus en mémoire et de leurs caractérisiques. Ces champs sont disponible pour acquisition via la fonction bmf_get2. L'intérêt principal de cette routine est d'obtenir la taille requise pour stocker une variable dans un tableau. Il est possible de passer en argument un vecteur "dummy" pour les attributs.


EXEMPLE

   call bmf_init
   length=bmf_gobe(filename)

! NOTE pour des raisons de performance, il serait mieux ici d'appeler une sous-routine
! avec en argument length pour dimensionner les tableaux (automatic arrays de f90) si
! le catalogue est lu souvent. NE PAS OUBLIER de faire un deallocate quand ces vecteurs
! ne seront plus nécessaires

   allocate(ni(length))
   allocate(nj(length))
   allocate(nk(length))
   allocate(dtyp(length))
   allocate(nom(length))
   allocate(time1(length))
   allocate(time2(length))
   allocate(ndata(length))
   allocate(scrap(length))
   call bmf_catalog(nom,ni,scrap,scrap,nj,scrap,scrap,nk, &
                      scrap,scrap,time1,time2,scrap,scrap,dtyp,scrap,ndata)
   trouve=.false.
   do i=1,length
      if(nom(i).eq.'HUMI') then
          trouve=.true.
          allocate(humi(ni(i),nj(i),nk(i)))
      endif
      if(trouve) exit
   enddo
   call bmf_get2(.....)
   call bmf_clear   
   deallocate(ni)
   deallocate(nj)
   deallocate(nk)
   deallocate(dtyp)
   deallocate(nom)
   deallocate(time1)
   deallocate(time2)
   deallocate(ndata)
   deallocate(scrap)


VOIR AUSSI

BMF_*


Auteur: Luc Corbeil, 6 avril 2001, 12h45


Return to RPN Libraries home page