SUBROUTINE BMF_write(iun,nom,ni,istart,iend,nj,jstart,jend,nk,kstart, &
kend,time1,time2,hgrid,vgrid,dtyp,scat,ndata,vecteur)
ARGUMENTS
IN
- iun numéro
de l'unité du
fichier
integer
- nom nom de
la variable
écrite
character*4
- ni,nj,nj dimensions "totales" du
tableau
integer
- (ijk)start indice du début de la tranche en
i,j,k integer
- (ijk)end indice de fin de la tranche en
i,j,k integer
- time1 timestamp
1: yyyymmdd
integer
- time2 timestamp
2: hhmmsscc
integer
- hgrid identificateur
de grille horizontale
integer
- vgrid identificateur
de grille
verticale
integer
- dtyp type de donnée
integer
- scat
identificateur de scatter
list
integer
- ndata nombre de
données dans le
vecteur
integer
- vecteur vecteur contenant les
données
dépend de dtyp
DESCRIPTION
Routine qui écrit dans le fichier indiqué par iun le tableau vecteur et ses
caractéristiques. Nous recommandons fortement d'ouvrir le fichier comme suit
(routine FNOM, incluse dans rmnlib)
ierr = FNOM(iun,filename,'SEQ/UNF',0)
Le vecteur est de taille ndata*nb_mots ou le nombre de mots dépend du
type de variable envoyé.
Voici les types reconnus (variable dtyp)
integer
=> 40
real*4 => 41
integer*8 =>
80
real*8 => 81
complex
=> 82
character =>
10
Pour les caractès, voir ce document
Les variables ni,nj,nk, (ijk)start et (ijk)end sont des attributs qui
permettront à la lecture de placer les champs ayant le même nom de
variable et les mêmes attributs time1, time2, hgrid et vgrid dans un
tableau de dimension (ni,nj,nk) à la section délimitée par (istart:iend,
jstart:jend, kstart:kend).
On doit avoir:
1 <= imin < imax <= ni
1 <= jmin < jmax <= nj
1 <= kmin < kmax <= nk
Pour écrire un tableau dont une des dimensions irait de 1-a à nx+a, un
changement d'indice approprié doit être fait à l'appel (ici, imin=1,
imax=nx+2*a et ni=nx+2*a). Voir la documentation de bmf_get2
pour récupérer un tel tableau en lecture.
À ce jour, l'attribut scat n'est pas utilisé. Gardez cette valeur
à zéro pour l'instant.
EXEMPLE
ndata=ni*nj*nk
time1=20010405
time2=16490300
dtyp=41
hgrid=0
vgrid=0
scat=0
do i=1,ni
do j=1,nj
do k=1,nk
vecteur(i,j,k)=(100*i+10*j+k)
enddo
enddo
enddo
ierr =
FNOM(iun,filename,'SEQ/UNF',0)
call
bmf_write(iun,nom,ni,istart,iend,nj,&
jstart,jend,nk,kstart,kend,&
time1,time2,hgrid,vgrid,dtyp,&
scat,ndata,vecteur)
call fclos(iun)
VOIR AUSSI
BMF_* , FNOM
Auteur: Luc Corbeil, 5 avril 2001, 16h51
Return to RPN Libraries home page