Ada, Adapp : documentation NCAR

Présentation

NCAR est un ensemble de sous-programmes graphiques écrits en Fortran et interfacés avec le logiciel de base GKS. Il est distribué par le National Center for Atmospheric Research (Boulder Colorado). NCAR permet la réalisation de tracés (courbes, histogrammes, courbes de niveaux, visualisation 3D, contours cartographiques etc.) par l'appel de quelques sous-programmes.

NCAR est composé de sous programmes appelés utilitaires qui peuvent se répartir en grandes classes de fonctions graphiques.

  • AREAS Définition de zones polygonales
  • AUTOGRAPH Tracé de courbe du type y=f(x)
  • COLCONV gestion des couleurs (conversion RGB,HLS,HSV)
  • CONPACK Tracé d'isocontours
  • EZMAP Tracé cartographique en mode ligne
  • EZMAPA Tracé cartographique en mode surface
  • GRIDAL Tracé de grilles, d'axes, de cadres
  • HISTGR Tracé d'histogrammes
  • ISOSRF Visualisation 3D
  • LABELBAR Cartouches donnant la correspondance entre couleur et valeurs
  • SOFTFILL Remplissage de surface par des couleurs ou des motifs
  • SRFACE Tracé de surface de type y=f(x,y)
  • PLOTCHAR Tracé de caractères spéciaux
  • STRMLM Tracé de lignes de courants
  • THREED Tracé de courbes 3D
  • VELVCT Tracé de champs de vecteurs

GKS

NCAR peut être utilisé avec le logiciel GKS d'origine NCAR qui permet des sorties metafichier CGM (niveau 0A). GKS Graphical Kernel System est un ensemble de fonctions graphiques de bas niveaux. GKS est une norme AFNOR depuis 1984 et une norme ISO depuis 1985.

Principales primitives GKS

GKS comprend un certain nombre de fonctions de bases (primitives) qui peuvent être reparties en classes .

  • Polyline
    • GPL - Polyline
    • GSLN - Set line type
    • GSLWSC - Set linewidth scale factor
    • GSPLCI - Polyline color index
  • Polymarker
    • GPM - Polymarker.
    • GSMK - Set marker type.
    • GSMKSC - Set marker size scale factor.
    • GSPMCI - Polymarker color index.
  • Text
    • GTX - Text
    • GSTXAL - Set text alignment.
    • GSTXCI - Set text color index.
    • GSTXFP - Set text font and precision.
    • GSTXP - Set text path
    • GSCHH - Set character height.
    • GSCHSP - Set character spacing.
    • GSCHUP - Set character up vector.
    • GSCHXP - Set character expansion factor.
  • Fill area
    • GCA - Cell array.
    • GFA - Set marker type.
    • GSFACI - Set fill area color index.
    • GSFAIS - Set fill area interior style.
  • Gestion du poste de travail
    • GACWK - Activate workstation
    • GCLKS - Close GKS
    • GCLRWK - Clear workstation
    • GCLWK - Close workstation
    • GDAWK - Deactivate workstation
    • GESC - Escape.
    • GOPKS - Open GKS.
    • GOPWK - Open workstation.
    • GSELNT - Select normalization transformation.
    • GSCLIP - Set clipping indicator.
    • GSCR - Set color representation.
    • GSVP - Set viewport.
    • GSWN - Set window.
  • Fonctions d'interrogations
    • GQCHH - Inquire character height.
    • GQCHSP - Inquire character spacing.
    • GQCHUP - Inquire character up vector.
    • GQCHXP - Inquire character expansion factor.
    • GQCLIP - Inquire clipping indicator.
    • GQCNTN - Inquire current transformation number.
    • GQCR - Inquire color representation.
    • GQFACI - Inquire fill area color index.
    • GQFAIS - Inquire fill area interior style.
    • GQFASI - Inquire fill area style index.
    • GQLN - Inquire line type.
    • GQLWSC - Inquire linewidth scale factor.
    • GQMK - Inquire marker type.
    • GQMKSC - Inquire marker size scale factor.
    • GQMNTN - Inquire maximum transformation number.
    • GQNT - Inquire normalization transformation.
    • GQOPS - Inquire operating state value.
    • GQOPSG - Inquire name of open segment.
    • GQPLCI - Inquire polyline color index.
    • GQPMCI - Inquire polymarker color index.
    • GQSGUS - Inquire set of segment names in use.
    • GQTXAL - Inquire text alignment.
    • GQTXCI - Inquire text color index.
    • GQTXFP - Inquire text font and precision.
    • GQTXP - Inquire text path.

Niveaux

GKS peut être utilisé dans différents modes de fonctionnalités selon les possibilités des dispositifs d'entrée (locator, stroke, valuator, choice, pick, string)

  • mode requête (request mode) : le mode requête correspond à peu près au type d'entrée utilisé en FORTRAN.
  • mode échantillonnage (sample mode) : le programme d'application et le processus d'entrée sont actifs simultanément. Le processus d'entrée fournit des données au programme GKS qui les prend au vol. Selon la quantité de données et la vitesse d'acquisition, des données peuvent être perdues.
  • mode événement (event mode) : le programme GKS et le processus d'entrée sont actifs simultanément, les valeurs saisies sont placées dans une file d'attente que le programme doit lire dans l'ordre chronologique.
    • Niveau d'entrée
      • a - Aucune fonction d'entrée disponible
      • b - Mode requête uniquement
      • c - Mode requête, échantillonnage et événement
    • Niveau de sortie
      • 0 - Sortie minimale, un seul poste de travail en sortie à la fois.
      • 1 - Plusieurs postes de travail en sortie disponibles en même temps. Utilisation de segments et de plusieurs transformations de normalisation.
      • 2 - Utilisation du poste de stockage de segments indépendant WISS.

Structure d'un programme GKS

pgm.f90
 integer ecran,pilote
 ecran = 1
 pilote = 8
 call gopks(6,10000)        ! ouverture de GKS
 call gopwk(ecran,1,pilote) ! ouverture X-window
 call gacwk(ecran)          ! activation du poste de travail
  ...
  Programme GKS
  ...
 call gclrwk(ecran,1)       ! effacement de l'ecran/avance papier
 call gdawk(ecran)          ! desactivation poste de travai
 call gclwk(ecran)          ! fermeture du poste de travail
 call gclks                 ! fermeture de GKS

On peut remplacer les trois premiers appels (gopks, gopwk, gacwk) par opngks pour une sortie fichier CGM et les trois derniers (gdawk, gclwk, gclks) par clsgks.

Les noms des exemples en légende des tracés font réference au programme NCAR qui peuvent être obtenus par la procédure ncargex.

Courbes : Autograph

Tracé de courbes ou de familles de courbes avec ou sans annotations.

  • EZY Dessin d'une courbe définie par les points (i,y(i), i=1,npoints)
  • EZXY Dessin d'une courbe définie par les points (x(i), y(i), i=1,npoints)
  • EZMXY Ensemble de courbes définies par les points (x(i), y(i,j), i=1,npoints), j=1,nbcourbe)
  • AGSETx Définition des paramètres autograph_params
pgm.f90
  real   x(20),Y(20)
  call opngks
  do i=1,20
  	x(i) = float(i-1)*.314
  	y(i) = x(i) + cos(x(i))*2.0
  enddo
  call ezxy (x,y,20,'Example (EZXY)$')
  call clsgks
  end

Grilles et axes: Gridal

Tracé de grilles d'axes et de cadres.

  • GRID Tracé d'une grille sans labels.
  • GRIDL Tracé d'une grille avec labels.
  • HALFAX Tracé d'une paire d'axes.
  • PERIM Tracé d'un périmètre sans labels.
  • PERIML Tracé d'un ensemble de grilles, périmètre.
  • GRIDAL Tracé de l'ensemble des fonctions ci-dessus .
  • GASETx Définition des paramètres gridall_params

Isocontours : Conpack

Tracé d'isocontours et d'isosurfaces à partir de données régulièrement espacées sur une grille rectangulaire.

  • CPRECT Initialisation de la fonction d'isocontours associée à un tableau rectangulaire.
  • CPSPS1 Interpolation d'un tableau non dense sur une grille rectangulaire régulière dense.
  • CPCLDR Tracé de ligne de contour
  • CPCLAM Tracé de ligne de contour sur une surface.
  • CPLBDR Tracé des labels sur une ligne de contour.
  • CPSETx Définition des paramètres conpack_params
  • CPGETx Récupération des paramètres
  • CPSETC Affectation d'un paramètre de type caractère
  • CPSETI Affectation d'un paramètre de type entier
  • CPSETR Affectation d'un paramètre de type réel

Quelques paramètres Conpack

Les paramètres sont des variables caractère de longueur 3 auxquelles on affecte au choix une valeur .

  • `AIA' - Area Identifier Above - Integer Array
  • `AIB' - Area Identifier Below - Integer Array
  • `CIS' - Contour Interval Specifier - Real
  • `CLS' - Contour Level Selection Flag- Integer
  • `CLU' - Contour Level Use Flags - Integer Array
  • `CLV' - Contour Level Values - Real Array
  • `NCL' - Number of Contour Levels - Integer
  • `CMN' - Contour Minimum - Real
  • `CMX' - Contour Maximum - Real
  • `ORV' - Out-of-Range Value
  • `PAI' - Parameter Array Index - Integer
  • `T2D' - Tension on 2-Dimensional Splines - Real
  • `VPB' - Viewport Bottom - Real
  • `VPL' - Viewport Left - Real
  • `VPR' - Viewport Right - Real
  • `VPT' - Viewport Top - Real
  • `XC1' - X Coordinate at Index 1 - Real
  • `XCM' - X Coordinate at Index M - Real
  • `YC1' - Y Coordinate at Index 1 - Real
  • `YCM' - Y Coordinate at Index M - Real

Choix du nombre de contours égal à 13 :

  CALL CPSETI('NCL --- NUMBER OF CONTOURS',13)

Exemple - Conpack1

Conpack1.f90
  	parameter (nb_niveaux=14,nb_labels=nb_niveaux+1)
  	parameter (m=23,n=14)
  	dimension z(m,n),rwrk(1000),iwrk(1000),map(20000)
  	dimension xca(1000),yca(1000),aia(10),gia(10)
  	dimension index_col(nb_niveaux) ! indices de couleurs
  	data 	index_col / 2,3,4,5,6,7,8,9,10,11,12,13,14,15 /
  	character*10 labels(nb_labels)  ! liste des labels
  	integer   orient_barre,orient_texte
  	character*10 labels(nb_labels)  ! liste des labels
  	external COLOR 	! sp externe pour colorer les surfaces
 
  	call OPNGKS 	! Ouverture de GKS
  	call GSFAIS(1) 	! Remplissage en mode plein
  	call DEFCOL 	! Definition des couleurs
  !
  ! Generation du fichier des donnees 23x14 de -136. a 451.
  !
  	call GENDAT (z,m,m,n,20,20,-136.,451.)
  !
  ! 	Definition du cadre du trace dans la partie superieure
  !
  	call CPSETR ('VPB - viewport bottom',.25)
  !
  ! 	Definition de 13 niveaux repartis en 14 intervals
  !
  	call CPSETI ('CLS - contour level selector',-13)
  !
  ! Initialisation de conpack
  !
  	call CPRECT (z,m,m,n,rwrk,1000,iwrk,1000)
  !
  ! 	Initialisation area map et lignes de contour lines au-dessus
  !
  	call ARINAM (map,20000)
  	call CPCLAM (z,rwrk,iwrk,map)
  !
  ! Coloration par appel du sous-programme COLOR
  !
  	call ARSCAM (map,xca,yca,1000,ai,ag,10,color)
  !
  ! Trace des lignes de contours
  !
  	call GSPLCI (0)
  	call CPCLDR (zt,rwrk,iwrk)
  	call GSPLCI (1)
  !
  ! Ecriture labels apres recuperation des valeurs min et max
  !
  	orient_barre = 0
  	orient_texte = 1
  	xorlab=.05
  	xfinlab=.95
  	yorlab=.15
  	yfinlab=.25
  	call CPGETR ('ZMN',zmin)
  	call CPGETR ('ZMX',zmax)
  	do i=1,nb_labels
  		 call CPSETR ('ZDV - z data value',
  + 		zmin+real(i-1)*(zmax-zmin)/nb_niveaux)
  		call CPGETC ('ZDV - z data value',labels(i))
  	enddo
  	call LBSETI ('CBL - color of box lines',0)
  	call LBLBAR (orient_barre,xorlab,xfinlab,yorlab,yfinlab,
  + 	nb_niveaux,1.,.5,index_col,0,labels,nb_labels,orient_texte)
  	call CLSGKS             ! Fermeture de GKS
  	end
 
  	subroutine COLOR(xca,yca,nca,ai,ag,nai)
  	implicit none
  	real xca(nca),yca(nca)
  	integer ai(nai),ag(nai)
  	integer fill
  !
  !       Les tableaux xca et yca contiennent les coordonnees de
  ! 	polygones de nca points
  !
  !        Les tableaux ai et ag sont de longueur 2
  !         ai : identificateur d'aire
  !         ai(1) = 1 a nb_niveau representant un identificateur d'aire
  !         ai(2) = -1 -> zone hors cadre - ai(2) = 0 -> zone hors cadre
  !         ag = 1-2 (ezmap) 3-4 (conpack) identificateur de groupes
  !
  	fill = 1 		   	 ! Par defaut, polygone rempli
  	do i=1,nai
  		if (ai(i).lt.0) fill = 0 !Mais pas si un ai < 0
  	end do
  *
  	if (fill.ne.0) then            	 ! Si polygone a remplir
  	  fill = 0
  	  do i=1,nai             	 ! Balayage indices d'identifier
  	    if (ag(i).eq.3) fill = ai(i) ! Si groupe 3 c'est un contour
  	  end do
  	  if (fill.gt.0) then
  	    call gsfaci(fill+2)
  	    call gfa(nca-1,xca,yca)
            end if
  	end if
  	return
  	end
 
  	subroutine DEFCOL
  	dimension rgbv(3,0:15)
  	data rgbv /0.00 , 0.00 , 0.00 , 	! noir
  + 			 1.00 , 1.00 , 1.00 , 	! blanc
  + 			 0.70 , 0.70 , 0.70 ,
  +			 0.75 , 0.50 , 1.00 ,
  +  			 0.50 , 0.00 , 1.00 ,
  + 			 0.00 , 0.00 , 1.00 ,
  + 			 0.00 , 0.50 , 1.00 ,
  + 			 0.00 , 1.00 , 1.00 ,
  +  			 0.00 , 1.00 , 0.00 ,
  + 			 0.70 , 1.00 , 0.00 ,
  +  			 1.00 , 1.00 , 0.00 ,
  + 			 1.00 , 0.75 , 0.00 ,
  + 			 1.00 , 0.38 , 0.38 ,
  +  			 1.00 , 0.00 , 0.38 ,
  + 			 1.00 , 0.00 , 0.00 /
  	do  i=0,15	! Definition de 16 couleurs en mode RGB
  		call gscr(1,i,rgbv(1,i),rgbv(2,i),rgbv(3,i))
  	enddo
  	return
  	end

Exemple - Conpack2

Conpack2.f90
  	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

Tracé cartographique en mode ligne : Ezmap

Ezmap réalise la projection sur la surface terrestre des limites continentales des pays . On peut choisir le type de projection (lambert, stéréographique, …), l'origine du point de vue, l'orientation et la représentation des parallèles et méridiens

  • MAPDRW Tracé d'une carte complète.
  • MAPINT Initialisation EZMAP.
  • MAPGRD Tracé des parallèles et méridiens.
  • MAPROJ Définition du type de projection de la latitude et de la longitude du point de vue et de l'angle de rotation de la terre
  • MAPSET Définition de la zone géographique visible.
    • vue maximum.
    • latitude et longitude min. et max.
    • limites en coordonnées normalisées.
  • MAPTRN Transformation des données latitude et longitude en coordonnées normalisées.
  • MPSETx Définition des paramètres ezmap_params

Exemple mpex04

Différents types de projections

Tracé cartographique en mode surface : Ezmapa

EZMAPA autorise la redirection des sorties obtenues par EZMAP dans l'utilitaire AREAS permettant ainsi la superposition de surfaces colorées avec des fonds cartographiques.

  • MAPINT Initialisation EZMAP
  • MAPBLA Définit les limites d'une zone géographique sur une surface calculée par EZMAP.
  • MAPLOT Tracé de contours géographiques
  • MAPGRM Tracé des lignes de longitude et latitude masquées par une surface
  • I=MAPACI(A) Fournit l'index de couleur I d'une zone A.
  • MPSETx Définition des paramètres ezmap_params

Exemple ezmap1

Ezmap1.f90
  	parameter (nb_niveaux=14,nb_labels=nb_niveaux)
  	parameter (m=40,n=40
  	integer   orient_barre,orient_texte
  	dimension z(m,n),rwrk(1000),iwrk(1000),map(200000
  	dimension xca(5000),yca(5000)
  	integer   ai(10),ag(10)
  	dimension index_col(nb_niveaux)
  	data index_col/ 7,2,3,4,5,6,8,9,10,11,12,13,14,15
  	character*10 labels(nb_labels)
  	data labels / `ocean  ` , `land   ` , `< 0    ` , `0-10   `
  	+ 	      `10-20  ` , `20-30  ` , `30-40  ` , `40-50  `  ,
  	+	      `50-60  ` , `60-70  ` , `70-80  ` , `80-90  `  ,
  	+             `90-100 ` , `> 100  ` /
  	call opngks
  	call gfais (1)  ! Remplissage en mode plein
  	call defcol 	! Definition des couleurs
  !
  ! Creation des donnees
  !
  	call gendat (z,40,40,40,15,15,-10.,110.)
  !
  ! Initialisation area map.
  !
  	call arinam (map,200000)
  !
  ! Initialisation Ezmap
  !
  	call mappos (.01,.74,.01,.99)
  	call maproj ('OR - orthographic projection',15.,15.,0.)
  	call mapset ('MA - maximal area',0.,0.,0.,0.)
  	call mapstc ('OU - outline dataset','co')
  	call mapin
  	call mapbla (map)
  !
  ! L'appel du sp SET est fait par ezmap en non par conpack (set=0)
  ! Definition des limites en latitude et longitude
  ! Les coordonnees(x,y) sont vues comme des latitudes et des logitudes.
  !
  	call cpseti ('SET - do-set-call flag',0)
  	call cpseti ('MAP - mapping flag',1)
  	call cpsetr ('XC1 - x coordinate at i=1',-18.)
  	call cpsetr ('XCM - x coordinate at i=m',+52.)
  	call cpsetr ('YC1 - y coordinate at j=1',-35.
  	call cpsetr ('YCN - y coordinate at j=n',+38.)
  !
  ! Definition des n niveaux de contours tels que
  ! cmn < cmn + cis*cls < cmx
  !
  	call cpseti ('CLS - contour level selector',1)
  	call cpsetr ('CMN - contour level minimum',0.)
  	call cpsetr ('CMX - contour level maximum',100.)
  	call cpsetr ('CIS - contour interval specifier',10.)
  	call cpsetr ('ORV - out-of-range value',1.e12)
  	call cprect (z,m,m,n,rwrk,1000,iwrk,1000)
  	call cpclam (z,rwrk,iwrk,map)
  	call arscam (map,xca,yca,5000,ai,ag,10,color)
  !
  ! Trace des limites continentales en noir et des paralleles et
  ! meridiens au-dessus des oceans
  !
  	call gsplci (0)
  	call maplot
  	call cpcldm (z,rwrk,iwrk,map,colrcl)
  	call gsplci (2)
  	call mapgrm (map,xca,yca,5000,ai,ag,10,colrll)
  	call gsplci (1)
  !
  ! Trace echelle de couleurs
  !
  	orient_barre = 1
  	orient_texte = 1
  	orlab=.76
  	xfinlab=.99
  	orlab=.13
  	yfinlab=.87
  	call lbseti ('CBL - color of box lines',0)
  	call LBLBAR(orient_barre,xorlab,xfinlab,yorlab,yfinlab,
         + nb_niveaux,.5,1.,index_col,0,labels,nb_labels,orient_texte)
  	call clsgks
  	stop
  	end
 
  	subroutine COLOR (xca,yca,nca,ai,ag,nai)
  	implicit none
  	real xca(*),yca(*)
  	integer ai(*),ag(*),index_co(12)
  	integer ncs,i,nai,ai1,ai3,mapaci
  !
  ! 	Tableau des indices de couleurs
  !
  	data index_col / 3,4,5,6,8,9,10,11,12,13,14,15 /
  !
  ! Recherche des identificateurs d'aire pour les groupes 1 et 3 le
  ! premier indique si la zone est au-dessus de la terre ou l'ocean
  !
  	ai1=-1
  	ai3=-1
  	do  i=1,nai
  	  if (ag(i).eq.1) ai1=ai(i)           ! Ezmap
  	  if (ag(i).eq.3) ai3=ai(i)           ! Conpack
  	enddo
 
  	if (ai1.gt.0) then                    ! zone Ezmap a representer
            if (mapaci(ai1).eq.1) then        ! zone au dessus de l'ocean
  	    call gsfaci (7)    	              ! couleur cyan (index 7 de rgbv )
  	    call gfa (nca-1,xca,yca)
            else 	     		      ! zone au dessus de la terre
  	    if (ai3.le.0) then                ! qui est hors limites
                 call gsfaci (2)              ! couleur  gris
                 call gfa (nca-1,xca,yca)
              else                            ! zone au dessus de la terre
                 call gsfaci (index_col(ai3)) ! dans les limites ai3 > 0
  	       call gfa (ncs-1,xca,yca)       ! a representer par conpack
  	    end if
  	  end if
  	end if
  	return
  	end

Remplissage de surface : Areas

Définition de zones polygonales pour hachurage ou coloriage. Les surfaces ainsi définies peuvent être utilisées en relation avec EZMAPA.

  • ARINAM Initialisation AREAS.
  • AREDAM Définition des différents types de zones constituant la surface.
  • ARPRAM Prétraitement de la surface
  • ARSCAM Utilisation de définitions de surface pour coloration par un sous-programme utilisateur.
  • ARSETx Définition des paramètres areas_params

Lignes de courants : Strmln

  • STINIT Initialisation d'un tracé de lignes courants
  • STREAM Tracé de lignes courants
  • STSETx Définition des paramètres streamlines_params

Exemple tstrml

trmln.f90
  parameter (m=21, n=25, iwsize = 2*m*n)
  real u(m,n), v(m,n), wrk(iwsize)
  gisize = 2.0*pi/float(m)
  gjsize = 2.0*pi/float(n)
  do j = 1,n
  do  i = 1,m
  u(i,j) = cos(gisize*(float(i)-1.0))	! Calcul des valeurs
  horizontales
  v(i,j) = cos(gjsize*(float(j)-1.0))	! et verticales des vecteurs u et  v
  enddo
  enddo
  idm = 0
  rdm = 0.0
  call stinit(u,m,v,m,rdm,idm,m,n,wrk,iwsize)
  call stream(u,v,rdm,idm,idm,wrk)	!Trace des lignes de courant

Champ de vecteurs : Velvct

Tracé de champs de vecteurs en 2 dimensions, la taille de la flèche et son orientation sont fonction de la longueur et de l'angle du vecteur vitesse à ce point.

Exemple - vvex02

vvex02.f90
  ! VVINIT Initialisation d'un tracé de champ de vecteurs
  ! VVECTR Tracé de lignes courants
  ! VVSETx **Définition des paramètres vectors_params
 
  	parameter (mize=21, n=25, iwsize = 2*m*n)
  	real u(m,n), v(m,n), wrk(iwsize
  	gisize = 2.0*pi/float(m)
  	gjsize = 2.0*pi/float(n)
  	do j = 1,n
  	do  i = 1,m
  	  u(i,j) = cos(gisize*(float(i)-1.0))	! Calcul valeurs horizontales
  	  v(i,j) = cos(gjsize*(float(j)-1.0))	! et verticales vecteurs u et v
  	enddo
  	enddo
  	idm = 0
  	rdm = 0.0
  	call vvinit(u,m,v,m,rdm,idm,m,n,rdm,idm)
  	call vvectr(u,v,rdm,idm,idm,rdm)	! Trace des vecteurs

Labels et légendes : Labelbar

Tracé de cartouches donnant la correspondance entre couleurs et plage de valeurs. Le remplissage des couleurs se fait par un sous-programme NCAR ou un sous-programme utilisateur.

  • LBLBAR Création d'une barre de labels complète.
  • LBFILL Remplissage d'une barre de labels déjà créée .
  • LBSETx Définition des paramètres labelbar_params

Isosurface 3D : Isosrf

Visualisation d'isosurface à partir d'un tableau 3D et suppression des lignes cachées, ISOSRF constitue la version de base et ISOSRFHR la version haute résolution.

  • ISOSRF Tracé d'une isosurface
  • EZISO Tracé d'une isosurface sous forme simplifiée
  • ISSETx Définition des paramètres isosurface_params

Surface 3D : Srface

  • SRFACE Tracé d'une surface en perspective
  • ISSETx Définition des paramètres decrits par man surface_params

Courbe 3D : Threed

  • SET3 Définition de l'espace utilisateur et du point de vue.
  • CURVE3 Tracé d'une courbe 3D passant par N points.
  • LINE3 Tracé d'une ligne passant par 2 points (x1,y1,z1) et (x2,y2,z2).

Conversion de couleurs : Colconv

  • COLCONV permet le passage d'un mode de représentation des couleurs à un autre. Les différents types de représentations sont les suivants :
  • RGB : Red, Green, Blue utilisé par les écrans video (synthèse de couleur additive).
  • CMY : Cyan, Magenta, Yellow utilisé par les imprimantes (synthèse soustractive).
  • HSV : Hue, Saturation,Value (teinte,saturation,valeur)
  • HLS : Hue, Lightness, Saturation(teinte, brillance, saturation)
  • HLSRGB ( H, L, S, R, G, B ) Conversion HLS en RGB.
  • HSVRGB ( H, S, V, R, G, B ) Conversion HSV en RGB.
  • RGBHLS ( R, G, B, H, L, S ) Conversion RGB en HLS.
  • RGBHSV ( R, G, B, H, S, V ) Conversion RGB en HSV.

Exemple coex02

Représentation HSV (V=0.8)

Représentation HSV (V=1.0)

Utilisation

Programme NCAR avec GKS NCAR

La commande ncargf90 permet de faire la compilation et l'edition de liens avec les librairies NCAR.

  • Pilotes
    • CGM binaire : 1
    • X-Window : 8
 La procedure *ncargex* permet le lancement d'un ou plusieurs exemples NCAR 
 ncargex [-all, -A] [-allexamples,-E] [-allfundamental,-F] ....
  • -n l'exemple n'est pas compilé ou exécuté
  • -allexamples génération de tous les exemples disponibles
  • -alltests génération de tous les tests disponibles

L'appel de ncargex sans paramètres fourni la liste des exemples disponibles :

  usage: ncargex [-all,-A] [-allexamples,-E] [-alltests,-T]
  [-allfundamental,-F] [-alltutorial,-U] [-allpdocs,-P] [-areas]
  [-autograph] [-bivar] [-colconv] [-conpack] [-conran_family]
  [-conrec_family] [-dashline] [-ezmap] [-field_flow] [-gflash]
  [-gridall] [-halftone] [-histogram] [-isosrfhr] [-isosurface]
  [-labelbar] [-ngmisc] [-plotchar] [-pwrite_family] [-scrolled_title]
  [-softfill] [-spps] [-streamlines] [-surface] [-threed] [-vectors]
  [-gks] [-misc] [-clean] [-n] [-onebyone] names

Création et exécution de l'exemple agex01 avec sauvegarde du programme agex01.f , du programme agex01 et du fichier cgm agex01.cgm *ncargex agex01*

Visualisation de fichier cgm

Idt

Idt est le produit X-Window fourni par NCAR pour est le produit X-Window fourni par NCAR pour la visualisation de fichier CGM.

                     Fenêtre Idt