Aller au contenu principal

Introduction à NCL

NCL illustration

Présentation

NCL 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). NCL permet la réalisation de tracés (courbes, histogrammes, courbes de niveaux, visualisation 3D, contours cartographiques etc.) par l'appel de quelques sous-programmes.

NCL 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

NCL 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

NCL autograph illustration

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

NCL gridal illustration

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

NCL conpack1 illustration

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

NCL conpack2 illustration

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

NCL ezmap illustration
Exemple mpex04

NCL mpex04 illustration
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

NCL ezmap1 illustration

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 strmln

strmln.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

NCL strmln illustration

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

NCL vvex02 illustration

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

NCL labelbar illustration

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

NCL isosrf illustration

Surface 3D : Srface

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

NCL srface illustration

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

NCL threed illustration

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.

NCL coex02 illustration
Exemple coex02

NCL HSV (V=0.8) illustration
Représentation HSV (V=0.8)

NCL HSV (V=1.0) illustration
Représentation HSV (V=1.0)

Utilisation

Programme NCL avec GKS NCAR

La commande ncargf90 permet de faire la compilation et l'édition 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

Visualisation de fichier cgm

Idt

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

NCL Idt illustration
Fenêtre Idt

Documentation

La documentation de NCL est disponible en ligne : https://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/.