external COLOR parameter (m=21,n=25) parameter (nb_niveaux=10,nb_labels=nb_niveaux+1) integer orient_barre,orient_texte,ai(10),ag(10) real niveau_min,niveau_max dimension z(m,n) dimension rwrk(1000),iwrk(1000),map(20000) dimension xca(1000),yca(1000) dimension index_col(nb_niveaux) character*7 labels(nb_labels) ! liste des labels ! ! Definition des indices de couleurs data index_col / 6,7,8,9,10,11,12,13,14,15 / ! ! Calcul des valeurs de z(i,j) ! do i=1,m x=.1*(i-m/2) do j=1,n y = .1*(j-n/2) z(i,j)=x+y+1./((x-.10)**2+y**2+.09) + -1./((x+.10)**2+y**2+.09) enddo enddo call GSFAIS (1) call DEFCOL ! ! Definition du cadre dans la partie gauche ! call CPSETR ('VPR - VIEWPORT RIGHT',.75) ! ! Calcul du minimum et maximum du tableau Z ! niveau_min = z(1,1) niveau_max = niveau_min do j=1,n do i=1 ,m zij = z(i,j) if (zij.lt.niveau_min) niveau_min = zij if (zij.gt.niveau_max) niveau_max = zij end do end do zc = niveau_min dz = (niveau_max-niveau_min)/nb_niveaux ! ! Ecriture des labels de nb_niveaux aires ! do i=1,nb_niveaux + 1 write(labels(i),'(f7.1)') zc zc = niveau_min + dz + (i-1) * dz end do ! ! Fixation du nombre de courbes de niveau ! call CPSETI('CLS',0) ! Pour prendre le controle call CPSETI('NCL',nb_niveaux) ! Nombre de contours do i=1,nb_niveaux ! Ident. d'aires : 1 a nb_niveaux zc = niveau_min + dz + (i-1) * dz call CPSETI('PAI',i) ! Travail sur le ieme niveau call CPSETR('CLV',zc) ! Valeur de ce niveau call CPSETI('CLU',1) ! type de ligne de contour call CPSETI('AIB',i) ! Indice aire au-dessous niveau i call CPSETI('AIA',i+1) ! Indice aire au-dessus niveau i end do ! ! Initialisation Conpack ! call CPRECT (z,m,m,n,rwrk,1000,iwrk,1000) ! ! Initialisation area map et ligne de contours lines au-dessus ! call ARINAM (map,20000) call CPCLAM (z,rwrk,iwrk,map) ! ! Coloration par appel au sous-programme COLOR ! call ARSCAM (map,xca,yca,1000,ai,ag,10,color) ! ! Trace des lignes de contours en noir ! call GSPLCI (0) call CPCLDR (z,rwrk,iwrk) call GSPLCI (1) ! ! Trace de la legende ! orient_barre = 1 ! labels dessous (horizontal) a droite (vertical) orient_texte = 1 xorlab=.80 xfinlab=.95 yorlab=.05 yfinlab=.95 call LBLBAR(orient_barre,xorlab,xfinlab,yorlab,yfinlab, + nb_niveaux,.5,1.,index_col,0,labels,nb_niveaux+1,orient_texte) stop end