BMF

(BMF_get2)



integer FUNCTION bmf_get2(name,time1,time2,hgrid,vgrid,array,imin,imax,jmin,jmax,kmin,kmax) &
result(error)

ARGUMENTS

name Nom de la variable désirée character(len=4) I
time1,time2 Dates, format AAAAMMDD et HHMMSSCC integer I
hgrid,vgrid Indicateurs de grilles horizontales et verticales integer I
array Tableau qui contiendra la variable désiré All supported types O
[ijk]min,[ijk]max Dimensions du tableau integer I


DESCRIPTION

Routine qui met dans le vecteur spécifié les données lues par bmf_gobe ou bmf_blocgobe.

Le tableau doit être dimensionné selon les règles suivantes: ( imin:imax , jmin:jmax , kmin:kmax ) où
imin <= 1 < ni <= imax
jmin <= 1 < nj <= jmax
kmin <= 1 < nk <= kmax,

ni,nj,nk sont les tailles caractéristiques du champ (voir bmf_write)

Il est alors possible de... (ici, a,b >=0):

  1. ...Écrire un champ de taille (1:nx,1:ny,1:nz) avec bmf_write et le lire avec bmf_get2 dans un vecteur plus large
  2. ...Écrire un champ de taille (1-a : nx+a , 1:ny , 1:nz ) avec bmf_write (appeler bmf_write avec ni=nx+2a, istart=1, iend=nx+2a) et le lire dans un vecteur de taille (minx: maxx , miny:maxy , minz,maxz ) où minx <=1-a <=nx +2a <= maxx (appeler bmf_get2 avec imin=minx+a , imax= maxx+a)
  3. ...Écrire un champ de taille (1-a : nx-b , 1:ny , 1:nz ) (évidemment on a 1+a < nx -b) avec un appel standard à bmf_write. On lit le champ dans un vecteur de taille (minx: maxx , miny:maxy , minz,maxz ) avec un appel normal à bmf_get2.



EXEMPLE

  call bmf_init

  length=bmf_gobe(filename)

  allocate(ni(length),nj(length,nk(length))
  allocate(dtyp(length),hgrid(length),vgrid(length))
  allocate(nom(length),time1(length),time2(length))
  allocate(ndata(length),scrap(length))

  call bmf_catalog(nom,ni,scrap,scrap,nj,scrap,scrap,nk, &
        scrap,scrap,time1,time2,hgrid,vgrid,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

  err = bmf_get2('HUMI',time1(ivar),time2(ivar), &
     hgrid(ivar),vgrid(ivar),humi,1,ni(ivar),1,nj(ivar),1,nk(ivar))

  call bmf_clear  

  deallocate(ni,nj,nk,dtyp,hgrid,vgrid,time1,time2,nom,ndata,scrap)


VOIR AUSSI

BMF_*


Auteur: Luc Corbeil, February 24 2003, 13h22


Return to RPN Libraries home page