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):
- ...É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
- ...É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)
- ...É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