sous programmes FORTRAN
List of FORTRAN subroutines and functions
Liste des sous-programmes et fonctions FORTRAN
AFIX AMAX AMEAN AMIN A4R4A BCONW2 BILIN
CORCOR CORIOL COUPE DATEC DATMGP DEFVEC DGAUSS
D1 D1INTR D1INT1 D1INT2 FCONW FDM FD1
GDADCN GDADGD GDMPGD GDSQRT GETMSQ GRAPH GRAPHM
GRGG GRLL GRPS IDATMG IDXES IGAXG IIPAK
INCDAT INTRP INT1D1 IPAKER IPSORT IUNPAK JDATEC
LIRCHCK LLFXY MSCALE MWERMS NPSPIN ORDLEG PCONW2
PERMUT POLAGR ROSSR3 R4AA4 R4ASTRG SCINT SCINT1
SCINT2 SCONW SETINTX SGLO SGLOGG SLL SORT
SPAUV SPD SPLAT SPS SQADSQ STDCKP STDEOF
STDIPK STDIUP STDOPT STRGR4A S1SCOR UVINT VALIDE
VCONW VGLO VGLOGG VLL VPOLAGR VPS WINDV
XGAIG XXPAK83 XXPAK XYFLL
SUBROUTINE AFIX (R,CON,NA)
REAL R(NA)
OBJECT(AFIX)
- SETS ARRAY R(NA) TO CONSTANT CON
ARGUMENTS
OUT - R - RESULTS
IN - CON - CONSTANT
- NA - LENGTH OF ARRAY R
FUNCTION AMAX(A,NI,NJ,N)
REAL A(NI,NJ)
OBJECT(AMAX)
- FINDS MAXIMUM VALUE OF A(NI,NJ) OMITTING N BORDER ROWS
ARGUMENTS
IN - A - ARRAY WHERE MAXIMUM VALUE IS TO BE FOUND
- NI - X-DIMENSION
- NJ - Y-DIMENSION
- N - NUMBER OF BORDER ROWS TO BE OMITTED
FUNCTION AMEAN (A,NI,NJ,N)
REAL A(NI,NJ)
OBJECT(AMEAN)
- CALCULATES MEAN OF A(NI,NJ) OMITTING N BORDER ROWS
ARGUMENTS
IN - A - ARRAY WHERE THE MEAN IS CALCULATED FROM
- NI - X-DIMENSION
- NJ - Y-DIMENSION
- N - NUMBER OF BORDER ROWS TO BE OMITTED
FUNCTION AMIN (A,NI,NJ,N)
REAL A(NI,NJ)
OBJECT(AMIN)
- FINDS MINIMUM VALUE OF A(NI,NJ) OMITTING N BORDER ROWS
ARGUMENTS
IN - A - ARRAY WHERE THE MINIMUM VALUE IS TO BE FOUND
- NI - X-DIMENSION
- NJ - Y-DIMENSION
- N - NUMBER OF BORDER ROWS TO BE OMITTED
SUBROUTINE A4R4A(R4A,A4,N)
IMPNONE
INTEGER R4A(*), A4(*), N
INTEGER NBMOT,NI,ASC,I
OBJET(A4R4A)
TRANSFORMER N CARACTERES CONTENUS DANS DES MOT A4 (4 CAR ALIGNES A GAUCHE)
EN N CARACTERES CONTENUS DANS DES MOT R4A (4 CAR DE 8 BATS ALIGNES DANS LA
PARTIE DROITE DU MOT)
ARGUMENTS
IN A4 TABLEAU D'ENTIERS CONTENANT LES CAR. DE TYPE A4
OUT R4A TABLEAU D'ENTIERS CONTENANT LES CAR. DE TYPE R4A
IN N NOMBRE DE CARACTERES A TRANSFORMER
SUBROUTINE BCONW2(Z,CINT,SCALE,LI,LJ,FIP,FJP,IW,JW,LL,MM,MTYPE)
REAL Z(LI,LJ)
OBJECT(BCONW2)
- MAPS LL BY MM WINDOW FROM POINT (IW,JW) IN GRID Z(LI,LJ)
WITH NORTH POLE AT (FIP,FJP) USING A CUBIC INTERPOLATION
THE CONTINENTAL OUTLINE IS INTERPOLATED FROM A 1/20M SCALE
GRID OF SIZE (51,55) WITH NORTH POLE AT (26,28).
ARGUMENTS
IN - Z - ARRAY TO BE CONTOURED
FUNCTION BILIN(Z,NI,NJ,X,Y,OK)
REAL Z(NI,NJ)
OBJET(BILIN)
- CALCULE LA VALEUR AUX POINTS X, Y (INDICES FRACTIONNAIRES)
DANS UN CHAMP Z DE DIMENSION NI*NJ. L'INTERPOLATION
EST FAITE DE FACON BI-LINEAIRE.
ARGUMENTS
- Z - CHAMP A PARTIR DUQUEL ON CALCULE LA COUPE (NI,NJ)
- NI - X-DIMENSION DU CHAMP Z
- NJ - Y-DIMENSION DU CHAMP Z
- X - COORDONNEE X DU POINT A CALCULER
- Y - COORDONNEE Y DU POINT A CALCULER
- OK - CLE LOGIQUE, TRUE = LES COORDONNEES SONT DANS LES
LIMITES DU CHAMP Z
FALSE = LES COORDONNEES NE SONT PAS
DANS LES LIMITES DU CHAMP Z
SUBROUTINE CORCOF(CC,FI,FF,FV,W,NI,NJ,IW1,IW2,NW1,NW2)
REAL FI(NI,NJ),FF(NI,NJ),FV(NI,NJ),W(NI,NJ),R(5)
OBJECT(CORCOF)
_ GIVEN AN INITIAL FIELD, A FORECAST AND A VERIFYING FIELD,
FINDS THE CORRELATION COEFFICIENT.
ARGUMENTS
OUT - CC - CORRELATION COEFFICIENT
IN - FI - INITIAL FIELD
- FF - FORECAST FIELD
- FV - VERIFYING FIELD
- W - WEIGHT FIELD
- NI - X-DIMENSION
- NJ - Y-DIMENSION
- IW1 - BOTTOM LEFT CORNER OF X-COORDINATE OF WINDOW
- IW2 - BOTTOM LEFT CORNER OF Y-COORDINATE OF WINDOW
- NW1 - UPPER RIGHT CORNER OF X-COORDINATE OF WINDOW
- NW2 - UPPER RIGHT CORNER OF Y-COORDINATE OF WINDOW
SUBROUTINE CORIOL (FF,D60,PI,PJ,NI,NJ)
REAL FF(NI,NJ)
OBJECT(CORIOL)
- COMPUTES THE CORIOLIS PARAMETER AT ALL POINTS OF A GRID OF
INIFORM MESH-LENGTH. THE GRID IS ASSUMED TO BE SUPERIMPOSED
ON A POLAR STEREOGRAPHIC PROJECTION OF THE EARTH TRUE AT
LATITUDE 60 DEGREES.
ARGUMENTS
OUT - FF - ARRAY CONTAINING THE CORIOLIS PARAMETER
IN - D60 - GRID-LENGTH AT 60 DEG. LAT. IN METRES
- PI - X-COORDINATE OF POLE RELATIVE TO BOTTOM
LEFT-HAND CORNER OF GRID
- PJ - Y-COORDINATE OF POLE RELATIVE TO BOTTOM
LEFT-HAND CORNER OF GRID
- NI - X-DIMENSION
- NJ - Y-DIMENSION
SUBROUTINE COUPE(R,NP,Z,NI,NJ,X1,Y1,X2,Y2,OK)
REAL R(NP), Z(NI,NJ)
OBJET(COUPE)
- CALCULE UNE COUPE DE NP POINTS DANS LE CHAMP Z
- A PARTIR DES INDICES X1, Y1 AUX POINTS X2, Y2.
X1, Y1, X2 ET Y2 SONT DES INDICES FRACTIONNAIRES
ARGUMENTS
- R - CHAMP QUI CONTIENT LES RESULTATS DE LA COUPE (NP)
- NP - NOMBRE DE POINTS DANS LA COUPE
- Z - CHAMP A PARTIR DUQUEL ON CALCULE LA COUPE (NI,NJ)
- NI - X-DIMENSION DU CHAMP Z
- NJ - Y-DIMENSION DU CHAMP Z
- X1 - COORDONNEE X DU COIN GAUCHE DE LA COUPE
- Y1 - COORDONNEE Y DU COIN GAUCHE DE LA COUPE
- X2 - COORDONNEE X DU COIN DROIT DE LA COUPE
- Y2 - COORDONNEE Y DU COIN DROIT DE LA COUPE
- OK - CLE LOGIQUE, TRUE = LES COORDONNEES SONT DANS LES
LIMITES DU CHAMP Z
FALSE = LES COORDONNEES NE SONT PAS DANS
LES LIMITES DU CHAMP Z
SUBROUTINE DATEC(JD,I,J,K)
OBJECT(DATEC)
- DATEC CONVERTS A JULIAN DAY TO THREE INTEGERS, YEAR(I),
MONTH(J) AND DAY(K).
ARGUMENTS
IN - JD - JULIAN DAY, A UNIQUE INTEGER WHICH MAPS ONE-TO-ONE ONTO
TRIPLES OF INTEGERS REPRESENTING YEAR, MONTH,
DAY OF MONTH.
OUT - I - YEAR
- J - MONTH
- K - DAY OF THE MONTH
SUBROUTINE DATMGP (IDATE)
OBJECT(DATMGP)
- CREATES A CANADIAN METEOROLOGICAL CENTRE DATE TIME GROUP
IN THE OPERATIONAL CMC FORMAT USING THE CMC DATE TIME STAMP
ARGUMENTS
IN/OUT - IDATE - 14 WORDS INTEGER ARRAY. ON INPUT, WORD 14 IS SET TO
THE DATE TIME STAMP. ON OUTPUT ALL 14 WORDS OF IDATE ARE
SET TO THE DATE TIME GROUP WHICH CORRESPONDS TO THAT
DATE TIME STAMP.
SUBROUTINE DEFVEC (A,L,DELTAA,A1)
OBJECT(DEFVEC)
- THIS ROUTINE IS USED TO DEFINE A VECTOR OF COORDINATES WITH
CONSTANT SPACING.
- THIS ROUTINE IS PART OF THE SPLINE INTERPOLATION PACKAGE.
SEE THE WRITE-UPS ON INTRP AND INT1D1 FOR INFORMATION ABOUT
USING THE PACKAGE.
ARGUMENTS
- A - VECTOR OF COORDINATES.
- L - LENGTH OF VECTOR A.
- DELTAA - SPACING CONSTANT.
- A1 - 1ST VALUE OF VECTOR OF COORDINATES.
SUBROUTINE DGAUSS (N,ROOTS,KASE)
REAL ROOTS(*)
OBJECT(DGAUSS)
- CALCULATES THE ZEROES OF THE ORDINARY LEGENDRE
POLYNOMIAL OF ORDER N, I.E. DEFINE GAUSSIAN GRID
ARGUMENTS
IN - N - ORDER OF THE POLYNOMIALS
OUT - ROOTS - ARRAY CONTAINING THE ZEROES OF
THE ORDINARY LEGENDRE POLYNOMIALS
IN - KASE - =0, GLOBAL
=1, NORTH
=2, SOUTH
FUNCTION D1 (Y,H,N)
OBJECT(D1)
- D1 RETURNS A ONE-SIDED ESTIMATE OF THE DERIVATIVE AT THE
FIRST POINT, 4-TH ORDER ACCURATE.
- DN RETURNS A ONE-SIDED ESTIMATE OF THE DERIVATIVE AT THE
LAST POINT, 4-TH ORDER ACCURATE.
- THIS ROUTINE IS PART OF THE SPLINE INTERPOLATION PACKAGE.
SEE THE WRITE-UPS ON INTRP AND INT1D1 FOR INFORMATION ABOUT
USING THE PACKAGE.
ARGUMENTS
- Y - CONTAINS N POINTS EQUALLY SPACED.
- H - SEPARATION.
- N - LENGTH OF VECTOR Y.
SUBROUTINE D1INTR(FI,IFI,JFI,F,IF,JF,FX,FY,FXY,XI,YI,
X,Y,HX,HY)
OBJECT(D1INTR)
- THIS ROUTINE IS PART OF THE SPLINE INTERPOLATION PACKAGE.
SEE THE WRITE-UPS ON INTRP AND INT1D1 FOR INFORMATION ABOUT
USING THE PACKAGE.
THIS VERSION EVALUATES THE SPLINE AT A LIST OF (X,Y) PAIRS
HELD IN THE ARRAYS (XI(I,J),YI(I,J),I=1,IFI,J=1,JFI).
ARGUMENTS
OUT - FI - INTERPOLATED FIELD.
IN - IFI - X-DIMENSION OF FIELD FI.
- JFI - Y-DIMENSION OF FIELD FI.
- F - ORIGINAL FIELD.
- IF - X-DIMENSION OF FIELD F.
- JF - Y-DIMENSION OF FIELD F.
- FX - ARRAY OF SIZE (IF,JF) THAT CONTAINS COMPUTED
PARTIAL DERIVATIVE OF FIELD F WITH RESPECT TO X.
- FY - PARTIAL DERIVATIVE WITH RESPECT TO Y.
- FXY - PARTIAL SECOND DERIVATIVE WITH RESPECT TO X AND Y.
- XI - X LOCATION OF THE VALUES OF THE INTERPOLATED FIELD FI.
- YI - Y LOCATION OF THE VALUES OF THE INTERPOLATED FIELD FI.
- X - X LOCATION OF THE VALUES OF THE ORIGINAL FIELD F.
- Y - Y LOCATION OF THE VALUES OF THE ORIGINAL FIELD F.
- HX - GRID-LENGTHS DEFINED BY HX(I)=X(I+1)-X(I),I=1,IF-1
- HY - GRID-LENGTHS DEFINED BY HY(I)=Y(I+1)-Y(I),I=1,JF-1
SUBROUTINE D1INT1(FI,F,XI,X,FX,H,M,MI)
OBJECT(D1INT1)
- THIS ROUTINE IS PART OF THE SPLINE INTERPOLATION PACKAGE.
SEE THE WRITE-UPS ON INTRP AND INT1D1 FOR INFORMATION ABOUT
HOW TO USE THE PACKAGE.
ARGUMENTS
OUT - FI - VECTOR OF INTERPOLATED VALUES.
IN - F - VECTOR OF VALUES OF THE FUNCTION.
- XI - LOCATION OF THE VALUES OF THE INTERPOLATED VECTOR.
- X - LOCATION OF THE VALUES OF INPUT VECTOR F.
- FX - VECTOR CONTAINING THE SPLINE DERIVATIVES OF THE
FUNCTION AT THE ORIGINAL POINT (X).
- H - VECTOR WHICH MUST BE INITIALIZED WITH THE
CO-ORDINATE DIFFERENCES, I.E. H(I)=X(I+1)-X(I) FOR
I=1 TO (M-1). (THE M TH ELEMENT OF H IS NOT USED.)
- M - LENGTH OF VECTORS F, X AND H.
- MI - LENGTH OF VECTORS FI AND XI.
SUBROUTINE D1INT2 (FI,IFI,JFI,F,IF,JF,FX,FY,FXY,XI,YI,X,Y,HX,HY,
ZA,ZB,ZC,ZD)
OBJECT(D1INT2)
- THIS ROUTINE IS PART OF THE SPLINE INTERPOLATION PACKAGE.
SEE THE WRITE-UPS ON INTRP AND INT1D1 FOR INFORMATION ABOUT
USING THE PACKAGE.
ARGUMENTS
OUT - FI - INTERPOLATED FIELD.
IN - IFI - X-DIMENSION OF FIELD FI.
- JFI - Y-DIMENSION OF FIELD FI.
- F - ORIGINAL FIELD.
- IF - X-DIMENSION OF FIELD F.
- JF - Y-DIMENSION OF FILED F.
- FX - ARRAY OF SIZE (IF,JF) THAT CONTAINS COMPUTED
PARTIAL DERIVATIVE OF FIELD F WITH RESPECT TO X.
- FY - PARTIAL DERIVATIVE WITH RESPECT TO Y.
- FXY - PARTIAL SECOND DERIVATIVE WITH RESPECT TO X AND Y.
- XI - X LOCATION OF THE VALUES OF THE INTERPOLATED FIELD FI.
- YI - Y LOCATION OF THE VALUES OF THE INTERPOLATED FIELD FI.
- X - X LOCATION OF THE VALUES OF THE ORIGINAL FIELD F.
- Y - Y LOCATION OF THE VALUES OF THE ORIGINAL FIELD F.
- HX - GRID-LENGTHS DEFINED BY HX(I)=X(I+1)-X(I),I=1,IF-1
- HY - GRID-LENGTHS DEFINED BY HY(I)=Y(I+1)-Y(I),I=1,JF-1
- ZA - WORKING VECTOR OF LENGTH (JFI).
- ZB - WORKING VECTOR OF LENGTH (JFI).
- ZC - WORKING VECTOR OF LENGTH (JFI).
- ZD - WORKING VECTOR OF LENGTH (JFI).
SUBROUTINE FCONW (Z ,CINT,SCALE,LI,LJ,IW,JW,LL,MM,MTYPE)
REAL Z(LI,1)
OBJECT(FCONW)
- MAPS LL BY MM WINDOW FROM POINT (IW,JW) IN Z(LI,LJ) USING
A CUBIC INTERPOLATION.
ARGUMENTS
IN - Z - ARRAY TO BE CONTOURED
- CINT - CONTOUR INTERVAL, FROM 0. IF CINT .GT. 0.,
FROM (CINT/2) IF CINT .LT.0.
CINT=0, CAUSES ERROR EXIT
- SCALE - SCALE FACTOR USED TO MULTIPLY Z BEFORE CONTOURING.
- LI - X-DIMENSION
- LJ - Y-DIMENSION, IF LJ NEGATIVE, RIGHT AND TOP GRID POINTS
OMITTED FOR STAR GRIDS. MINIMUM VALUES ARE (4,4)
- IW - X-COORDINATE OF BOTTOM LEFT CORNER OF WINDOW IN ARRAY Z
- JW - Y-COORDINATE OF BOTTOM LEFT CORNER OF WINDOW IN ARRAY Z
- LL - WIDTH OF WINDOW
- MM - HEIGHT OF WINDOW. MINIMUM VALUES ARE (3,3). NO WINDOW
EXTENDS OUTSIDE THE RIGHT OR TOP SIDES OF THE GRID
REGARDLESS OF HOW LARGE LL OR MM ARE SET
- MTYPE - MAP SCALE CONTROL (ABSOLUTE VALUE USED)
SIGN (+) CONTOURS 6 LINES/INCH
SIGN (-) CONTOURS 8 LINES/INCH
- MTYPE = MAPSCL+MESH
- MAPSCL = 20 FOR GRID POINTS 3/4" APART
- MAPSCL = 30 FOR GRID POINTS 1/2" APART
- IF THE GRID IS 381KM POLAR STEREOGRAPHIC THESE
VALUES RESULT IN 1/20M AND 1/30M SCALE MAPS
- MESH SHRINKS THE MAP SCALE (FROM 1 TO 10 EXCEPT 7)
1=FULL, 2=HALF SIZE, 3=1/3 SIZE, ETC...
SUBROUTINE FDM(GDM,F,H,M)
REAL F(*),H(*)
OBJECT(FDM)
- THIS ROUTINE RETURNS AN ESTIMATE OF THE DERIVATIVE
AT THE LAST POINT, 4-TH ORDER ACCURATE.
- THIS ROUTINE IS PART OF THE SPLINE INTERPOLATION PACKAGE.
SEE THE WRITE-UPS ON INTRP AND INT1D1 FOR INFORMATION ABOUT
USING THE PACKAGE.
- GDM - RESULT.
- F - VECTOR OF VALUES OF THE FUNCTION.
- H - VECTOR OF COORDINATE DIFFERENCES.
- M - DIMENSION OF F AND H.
SUBROUTINE FD1(GD1,F,H)
REAL F(*),H(*)
OBJECT(FD1)
- THIS ROUTINE RETURNS ONE-SIDED ESTIMATE OF THE DERIVATIVE
AT THE FIRST POINT, 4TH ORDER ACCURATE.
- THIS ROUTINE IS PART OF THE SPLINE INTERPOLATION PACKAGE.
SEE THE WRITE-UPS ON INTRP AND INT1D1 FOR INFORMATION ABOUT
USING THE PACKAGE.
ARGUMENTS
- GD1 - RESULT.
- F - VECTOR OF VALUES OF THE FUNCTION.
- H - VECTOR OF COORDINATE DIFFERENCES.
SUBROUTINE GDADCN (R,A,CON,NI,NJ,NB)
REAL R(NI,NJ), A(NI,NJ)
OBJECT(GDADCN)
- ADDS A CONSTANT TO EVERY ELEMENT OF A 2-DIMENSIONAL ARRAY
OMITTING NB BORDER ROWS OR ENTRY (GDMPCN) MULTIPLY AN ARRAY
BY A CONSTANT.
ARGUMENTS
OUT - R - ARRAY CONTAINING RESULT
IN - A - ARRAY TO BE OPERATED ON
- CON - CONSTANT
- NI - X-DIMENSION
- NJ - Y-DIMENSION
- NB - 4-DIGIT DECIMAL NUMBER WHICH ALLOWS AT MOST NINE ROWS
ON ANY SIDE OF THE GRID TO BE SKIPPED.
- NB = D1*10E3 + D2*10E2 +.D3*10 + D4
- D1 = COLUMNS ARE SKIPPED FROM LEFT
- D2 = ROWS ARE SKIPPED FROM BOTTOM
-.D3 = COLUMNS ARE SKIPPED FROM RIGHT
- D4 = ROWS ARE SKIPPED FROM TOP
- E.G. NB=0000 INCLUDE ALL BORDERS (WRITTEN AS 0) NB=1111
OMIT ONE ROW ALL AROUND THE GRID NB=2241 INDICATES
THAT THE 2 COLUMNS ON THE LEFT OF A, 2 ROWS AT THE
BOTTOM, 4 COLUMNS AT THE RIGHT AND 1 ROW AT THE
TOP ARE NOT OPERATED ON AND THE CORRESPONDING ROWS
AND COLUMNS OF R ARE LEFT UNDEFINED BY THE ROUTINE.
SUBROUTINE GDADGD (R,A,B,CONA,CONB,NI,NJ,NB)
REAL R(NI,NJ), A(NI,NJ), B(NI,NJ)
OBJECT(GDADGD)
- SEPARATELY SCALES TWO 2-DIMENSIONAL ARRAYS AND SUMS THE
SCALED ARRAYS OMITTING NB BORDER ROWS
R(I,J) = CONA*A(I,J) + CONB*B(I,J)
ARGUMENTS
OUT - R - ARRAY CONTAINING RESULT
IN - A - FIRST ARRAY TO BE OPERATED ON
- B - SECOND ARRAY TO BE OPERATED ON
- CONA - SCALE FACTOR FOR A
- CONB - SCALE FACTOR FOR B
- NI - X-DIMENSION
- NJ - Y-DIMENSION
- NB - 4-DIGIT DECIMAL NUMBER WHICH ALLOWS AT MOST NINE ROWS
ON ANY SIDE OF THE GRID TO BE SKIPPED.
- NB = D1*10E3 + D2*10E2 +.D3*10 + D4
- D1 = COLUMNS ARE SKIPPED FROM LEFT
- D2 = ROWS ARE SKIPPED FROM BOTTOM
-.D3 = COLUMNS ARE SKIPPED FROM RIGHT
- D4 = ROWS ARE SKIPPED FROM TOP
- E.G. NB=0000 INCLUDE ALL BORDERS (WRITTEN AS 0)
NB=1111 OMIT ONE ROW ALL AROUND THE GRID
NB=2241 INDICATES THAT THE 2 COLUMNS ON THE
LEFT OF A, 2 ROWS AT THE BOTTOM, 4 COLUMNS
AT THE RIGHT AND 1 ROW AT THE TOP ARE NOT
OPERATED ON AND THE CORRESPONDING ROWS
AND COLUMNS OF R ARE LEFT UNDEFINED BY
THE ROUTINE.
SUBROUTINE GDMPGD (R,A,B,CON,NI,NJ,NB)
REAL R(NI,NJ), A(NI,NJ), B(NI,NJ)
OBJECT(GDMDGD)
- MULTIPLIES, ELEMENT-WISE, ONE 2-DIMENSIONAL ARRAY BY ANOTHER
AND SCALES THE RESULTANT ARRAY BY A CONSTANT OMITTING NB
BORDER ROWS OR IF ENTRY (GDDVGD) IS CALLED IT DIVIDES AN
ARRAY BY ANOTHER AND SCALES THE RESULT BY A CONSTANT, ALSO
OMITTING NB BORDER ROWS.
R(I,J) = CON * A(I,J) * B(I,J)
ARGUMENTS
OUT - R - ARRAY CONTAINING RESULT
IN - A - FIRST ARRAY TO BE OPERATED ON
- B - SECOND ARRAY TO BE OPERATED ON
- CON - SCALING FACTOR
- NI - X-DIMENSION
- NJ - Y-DIMENSION
- NB - 4-DIGIT DECIMAL NUMBER WHICH ALLOWS AT MOST NINE ROWS
ON ANY SIDE OF THE GRID TO BE SKIPPED.
- NB = D1*10E3 + D2*10E2 +.D3*10 + D4
- D1 = COLUMNS ARE SKIPPED FROM LEFT
- D2 = ROWS ARE SKIPPED FROM BOTTOM
-.D3 = COLUMNS ARE SKIPPED FROM RIGHT
- D4 = ROWS ARE SKIPPED FROM TOP
- E.G. NB=0000 INCLUDE ALL BORDERS (WRITTEN AS 0)
NB=1111 OMIT ONE ROW ALL AROUND THE GRID
NB=2241 INDICATES THAT THE 2 COLUMNS ON THE
LEFT OF A, 2 ROWS AT THE BOTTOM, 4 COLUMNS
AT THE RIGHT AND 1 ROW AT THE TOP ARE NOT
OPERATED ON AND THE CORRESPONDING ROWS
AND COLUMNS OF R ARE LEFT UNDEFINED BY
THE ROUTINE.
SUBROUTINE GDSQRT (R,A,CON,NI,NJ,NB)
REAL R(NI,NJ), A(NI,NJ)
OBJECT(GDSQRT)
- COMPUTES, ELEMENT-WISE, THE SQUARE ROOT OF A 2-DIMENSIONAL
ARRAY AND SCALES THE RESULT BY A CONSTANT.
ARGUMENTS
OUT - R - ARRAY CONTAINING RESULT
IN - A - ARRAY TO BE OPERATED ON
- CON - SCALING FACTOR
- NI - X-DIMENSION
- NJ - Y-DIMENSION
- NB - 4-DIGIT DECIMAL NUMBER WHICH ALLOWS AT MOST NINE ROWS
ON ANY SIDE OF THE GRID TO BE SKIPPED.
- NB = D1*10E3 + D2*10E2 +.D3*10 + D4
- D1 = COLUMNS ARE SKIPPED FROM LEFT
- D2 = ROWS ARE SKIPPED FROM BOTTOM
-.D3 = COLUMNS ARE SKIPPED FROM RIGHT
- D4 = ROWS ARE SKIPPED FROM TOP
- E.G. NB=0000 INCLUDE ALL BORDERS (WRITTEN AS 0) NB=1111
OMIT ONE ROW ALL AROUND THE GRID NB=2241 INDICATES
THAT THE 2 COLUMNS ON THE LEFT OF A, 2 ROWS AT THE
BOTTOM, 4 COLUMNS AT THE RIGHT AND 1 ROW AT THE
TOP ARE NOT OPERATED ON AND THE CORRESPONDING ROWS
AND COLUMNS OF R ARE LEFT UNDEFINED BY THE ROUTINE.
SUBROUTINE GRAPH (Y,X,IP,LI,TITLE)
OBJECT(GRAPH)
- PRODUCES A ONE-PRINTER PAGE PLOT OF A ONE-DIMENSIONAL
VECTOR. GRAPH PLOTS POINTS (X(J), Y(J)) FOR J=1 TO LI,
WHERE Y(J) IS THE FUNCTION VALUE AT X(J).
ARGUMENTS
- Y - VECTOR OF FUNCTION-VALUES TO BE PLOTTED
- X - VECTOR OF X-VALUES TO BE PLOTTED
- IP - WORKING STORAGE VECTOR
- LI - LENGTH OF VECTORS Y,X,IP
- TITLE - TITLE OF PLOT (UP TO 50 CHARACTERS)
SUBROUTINE GRAPHM(Y,X,IP,LI,TITLE,NC,LECHEL,XMI,XMA)
OBJECT(GRAPHM)
- PRODUCES A ONE-PRINTER PAGE PLOT OF NC ONE-DIMENSIONAL
VECTORS. GRAPHM PLOTS POINTS (X(J), Y(J)) FOR J=1 TO LI,
WHERE Y(J) IS THE FUNCTION VALUE AT X(J).
ARGUMENTS
- Y - VECTOR OF VALUES. (LI)
- X - ARRAY OF FUNCTION VALUES. (LI,NC)
- IP - WORKING STORAGE VECTOR
- LI - LENGTH OF VECTORS Y,X,IP
- TITLE - TITLE OF PLOT (UP TO 50 CHARACTERS)
- NC - NUMBER OF CURVES. (UP TO 15)
- LECHEL - INTEGER VARIABLE. IF ZERO, USE AUTO SCALING.
IF NON-ZERO, USE XMI, XMA FOR SCALING.
- XMI - LOWER VALUE OF X RANGE (USED ONLY IF LECHEL .NE.0)
- XMA - UPPER VALUE OF X RANGE (USED ONLY IF LECHEL .NE.0)
SUBROUTINE GRGG(XLAT,XLON,NI,NJ,ROOTS,MODE)
REAL XLAT(NI,NJ), XLON(NI,NJ)
REAL ROOTS(NJ)
OBJET(GRGG)
- CALCULE LA LATITUDE ET LA LONGITUDE DE CHACUN
DES POINTS D'UNE GRILLE GAUSSIENNE.
ARGUMENTS
OUT - XLAT - CHAMP DE LATITUDES (NI,NJ). (NIVEAU 1 OU 2)
OUT - XLON - CHAMP DE LONGITUDES (NI,NJ). (NIVEAU 1 OU 2)
IN - NI - NOMBRE DE POINTS PAR CERCLE DE LATITUDE.
IN - NJ - NOMBRE DE CERCLES DE LONGITUDE.
IN - ROOTS - TABLE SERVANT A CALCULER LES RACINES DES
POLYNOMES DE LEGENDRE SERVANT A DEFINIR
LA LATITUDE DES NOEUDS DE LA GRILLE GAUSSIENNE.
IN - MODE - SORTE DE GRILLE UTILISEE
= 0, GLOBALE
= 1, NORD
= 2, SUD
SUBROUTINE GRLL(XLAT,XLON,NI,NJ,XLA0,XLO0,DLA0,DLO0)
REAL XLAT(NI,NJ), XLON(NI,NJ)
OBJET(GRLL)
- CALCULE LA LATITUDE ET LA LONGITUDE DE CHACUN
DES POINT D'UNE GRILLE LAT.-LON.
ARGUMENTS
OUT - XLAT - CHAMP DE LATITUDES (NI,NJ). (NIVEAU 1 OU 2)
OUT - XLON - CHAMP DE LONGITUDES (NI,NJ). (NIVEAU 1 OU 2)
IN - NI - NOMBRE DE POINTS PAR CERCLE DE LATITUDE.
IN - NJ - NOMBRE DE CERCLES DE LATITUDE.
IN - XLA0 - LATITUDE DU COIN INFERIEUR GAUCHE (DEGRES).
IN - XLO0 - LONGITUDE DU COIN INFERIEUR GAUCHE (DEGRES).
IN - DLA0 - ESPACEMENT EN LATITUDE (DEGRES).
IN - DLO0 - ESPACEMENT EN LONGITUDE (DEGRES).
SUBROUTINE GRPS(XLAT,XLON,NI,NJ,PI,PJ,D60,DGRW,HEM)
REAL XLAT(NI,NJ), XLON(NI,NJ)
OBJET(GRPS)
- CALCULE LA LATITUDE ET LA LONGITUDE DE CHACUN
DES POINTS D'UNE GRILLE POLAIRE STEREOGRAPHIQUE.
ARGUMENTS
OUT - XLAT - CHAMP DE LATITUDES (NI,NJ). (NIVEAU 1 OU 2)
OUT - XLON - CHAMP DE LONGITUDES (NI,NJ). (NIVEAU 1 OU 2)
IN - NI - PREMIERE DIMENSION DES CHAMPS XLAT,XLON.
IN - NJ - DEUXIEME DIMENSION DES CHAMPS XLAT,XLON.
IN - PI - COORDONNEE X DU POLE (REEL).
IN - PJ - COORDONNEE Y DU POLE (REEL).
IN - D60 - DISTANCE EN METRES ENTRE LES POINTS DE LA
GRILLE A 60 DEGRES DE LATITUDE.
IN - DGRW - ANGLE ENTRE L'AXE X ET LE MERIDIEN DE
GREENWICH.
IN - HEM - CODE D'HEMISPHERE (1=NORD, 2=SUD).
FUNCTION IDATMG(IDATE)
OBJECT(IDATMG)
- CONSTRUCTS A CANADIAN METEOROLOGICAL CENTRE DATE-TIME STAMP
USING THE OPERATIONAL CMC DATE-TIME GROUP (WORDS 1-6) AND
RETURNING THE STAMP IN WORD 14 AS WELL AS IN THE FUNCTION
VALUE.
ARGUMENTS
- IDATE - ARRAY OF 14 WORDS WHICH HAS IN WORDS 1-6 THE
INFORMATION NEEDED TO RECONSTRUCT THE STAMP WHICH
IS THEN PUT IN WORD 14 AS WELL AS IN THE FUNCTION
VALUE
SUBROUTINE CIGAXG(IGTYP,XG1,XG2,XG3,XG4,IG1,IG2,IG3,IG4)
CHARACTER *(*) IGTYP
OBJET(CIGAXG)
- PASSE DES PARAMETRES (ENTIERS) DESCRIPTEURS DE GRILLE
AUX PARAMETRES REELS.
ARGUMENTS
IN - IGTYP - TYPE DE GRILLE (VOIR OUVRIR)
OUT - XG1 - ** DESCRIPTEUR DE GRILLE (REEL) **
OUT - XG2 - IGTYP = 'N', PI, PJ, D60, DGRW
OUT - XG3 - IGTYP = 'L', LAT0, LON0, DLAT, DLON,
OUT - XG4 - IGTYP = 'A', 'B', 'G', XG1 = 0. GLOBAL,
= 1. NORD
= 2. SUD
IN - IG1 - DESCRIPTEUR DE GRILLE (ENTIER)
IN - IG2 - DESCRIPTEUR DE GRILLE (ENTIER)
IN - IG3 - DESCRIPTEUR DE GRILLE (ENTIER)
IN - IG4 - DESCRIPTEUR DE GRILLE (ENTIER)
SUBROUTINE IIPAK(IFLD,IPK,NI,NJ,NPAK,NB,KIND)
INTEGER NI,NJ,IFLD(*),IPK(*),NPAK,NB,KIND
OBJET(IIPAK)
- COMPACTER OU DECOMPACTER DES NOMBRES ENTIERS POSITIFS.
ARGUMENTS
IN/OUT - IFLD - INTEGER ARRAY, UNPACKED (NI,NJ)
IN/OUT - IPK - THE SAME ARRAY PACKED
IN - NI - X-DIMENSION
IN - NJ - Y-DIMENSION
IN - NPAK - NPAK > 0, DENSITE DE COMPACTION
NPAK = 0 OU 1, PAS DE COMPACTION
NPAK < 0, NOMBRE DE BITS A GARDER PAR NOMBRE
IN - NB - DEVRAIT ETRE 0
IN - KIND - 1 = PACK
2 = UNPACK
3 = PACK (POSITIF ET NEGATIF)
4 = UNPACK (POSITIF ET NEGATIF)
N.B. IIPAK works correctly IN-PLACE
SUBROUTINE INCDAT (IDATE1,IDATE2,NHOURS)
OBJECT(INCDAT)
- CONSTRUCTS A CANADIAN METEOROLOGICAL CENTRE DATE-TIME STAMP
IDATE1 WHICH IS NHOURS DIFFERENT FROM IDATE2. IDATE2 MUST
BE A VALID DATE-TIME STAMP AND NHOURS CAN BE ANY INTEGER
VALUE.
- ENTRY (DIFDAT) COMPUTES THE NUMBER OF HOURS DIFFERENCE
BETWEEN IDATE1 AND IDATE2 AND SETS NHOURS TO THIS VALUE.
IDATE1 AND IDATE2 MUST BE VALID CMC DATE-TIME STAMPS.
- IDATE1 - CMC DATE-TIME STAMP (TEN DIGITS INTEGER IN
THE FOLLOWING FORM: W MM DD YY ZZ R)
- IDATE2 - CMC DATE-TIME STAMP (TEN DIGITS INTEGER IN
THE FOLLOWING FORM: W MM DD YY ZZ R)
- NHOURS - NUMBER OF HOURS
SUBROUTINE INTRP (FI,IFI,JFI,F,IF,JF,XI,YI,X,Y,FX,FY,FXY,
HX,HY,KL,P,S,C,A,D,WORK)
OBJECT(INTRP)
- INTERPOLATE IN 2-DIMENSIONS FROM AN ARBITRARY RECTANGULAR
GRID TO ANOTHER ARBITRARY RECTANGULAR GRID.
OBJECT(INTRPR)
- INTERPOLATE FROM AN ARBITRARY RECTANGULAR GRID TO A LIST
OF POINTS AS (X,Y) COORDINATE PAIRS.
ARGUMENTS
OUT - FI - INTERPOLATED FIELD.
IN - IFI - X-DIMENSION OF FIELD FI.
- JFI - Y-DIMENSION OF FIELD FI.
- F - ORIGINAL FIELD.
- IF - X-DIMENSION OF FIELD F.
- JF - Y-DIMENSION OF FILED F.
- XI - X LOCATION OF THE VALUES OF THE INTERPOLATED FIELD FI.
- YI - Y LOCATION OF THE VALUES OF THE INTERPOLATED FIELD FI.
- X - X LOCATION OF THE VALUES OF THE ORIGINAL FIELD F.
- Y - Y LOCATION OF THE VALUES OF THE ORIGINAL FIELD F.
OUT - FX - ARRAY OF SIZE (IF,JF) THAT CONTAINS COMPUTED
PARTIAL DERIVATIVE OF FIELD F WITH RESPECT TO X.
OUT - FY - PARTIAL DERIVATIVE WITH RESPECT TO Y.
OUT - FXY - PARTIAL SECOND DERIVATIVE WITH RESPECT TO X AND Y.
IN - HX - GRID-LENGTHS DEFINED BY HX(I)=X(I+1)-X(I),I=1,IF-1
- HY - GRID-LENGTHS DEFINED BY HY(I)=Y(I+1)-Y(I),I=1,JF-1
- KL - CAN BE 0 OR 1, THE CHOICE DETERMINES THE ORDER IN
WHICH F(XY) THE PARTIAL SECOND DERIVATIVE WITH RESPECT
TO X AND Y IS CALCULATED. THE CHOICE IS IMMATERIAL.
- P - WORKING STORAGE VECTORS OF LENGTH L=MAX0(IF,JF).
- S - WORKING STORAGE VECTORS OF LENGTH L=MAX0(IF,JF).
- C - WORKING STORAGE VECTORS OF LENGTH L=MAX0(IF,JF).
- A - WORKING STORAGE VECTORS OF LENGTH L=MAX0(IF,JF).
- D - WORKING STORAGE VECTORS OF LENGTH L=MAX0(IF,JF).
- WORK - WORK AREA OF DIMENSION (JFI,4) USED BY INTRP ONLY.
SUBROUTINE INT1D1(FI,F,XI,X,FX,H,M,MI,CMU1,C1,CLMDAM,CM,A,C,D)
OBJECT(INT1D1)
- INTERPOLATE BETWEEN A NUMBER OF ARBITRARILY SPACED DATA
POINTS USING CUBIC SPLINES.
ARGUMENTS
OUT - FI - VECTOR OF INTERPOLATED VALUES.
IN - F - VECTOR OF VALUES OF THE FUNCTION.
- XI - LOCATION OF THE VALUES OF THE INTERPOLATED VECTOR.
- X - LOCATION OF THE VALUES OF INPUT VECTOR F.
OUT - FX - VECTOR CONTAINING THE SPLINE DERIVATIVES OF THE
FUNCTION AT THE ORIGINAL POINTS (X).
IN - H - VECTOR WHICH MUST BE INITIALIZED WITH THE
CO-ORDINATE DIFFERENCES, I.E. H(I)=X(I+1)-X(I) FOR
I=1 TO (M-1). (THE M TH ELEMENT OF H IS NOT USED.)
- M - LENGTH OF VECTORS F, FX, X, H, A, D AND C.
- MI - LENGTH OF VECTORS FI AND XI.
- CMU1 - CMU1,C1,CLMDAM,CM ARE CONSTANTS WHICH ARE USED TO
- C1 SPECIFY THE END CONDITIONS FOR THE SPLINE. ONE
- CLMDAM SUITABLE CHOICE IS TO SPECIFY THE END POINT SLOPES,
- CM WHICH IS DONE BY SETTING CMU1=CLMDAM=0.0, AND
PUTTING THE DESIRED SLOPES IN C1 AND CM. SUBROUTINES
FD1 AND FDM, AND FUNCTIONS D1 AND DN ARE AVAILABLE
TO CALCULATE END POINT SLOPES. FD1 AND FDM USE THE
ANALYTICALLY DIFFERENTIATED FORM OF THE CUBIC
LAGRANGE INTERPOLATING POLYNOMIAL, AND MAY BE USED
- (CM) FOR GENERALLY SPACED POINTS. THEY ARE USED AS...
CALL FD1 (GD1,F,H)
CALL FDM (GDM,F,H,M)
THE DERIVATIVES ARE RETURNED IN GD1 OR GDM. (F,H,M
AS BEFORE). THE FUNCTIONS D1 AND DN, (DN IS AN ENTRY
POINT IN D1), ARE SPECIALIZED TO UNIFORM SPACING,
AND ARE USED AS ... GD1 = D1(F,H,M)
GDM = DN(F,H,M)
WHERE H IS NOW THE CONSTANT VALUE OF X(I+1) - X(I).
(F,M AS BEFORE.)
- A - WORKING VECTOR OF LENGTH M.
- C - WORKING VECTOR OF LENGTH M.
- D - WORKING VECTOR OF LENGTH M.
SUBROUTINE IPSORT(IP,A,N)
OBJECT(IPSORT)
- CREATES A POINTER OR INDEX VECTOR TO ADDRESS A REAL
ARRAY IN NON-DECREASING ORDER
ARGUMENTS
OUT - IP - VECTOR CONTAINING POINTERS TO ADDRESS THE REAL ARRAY A
IN NON-DECREASING ORDER
IN - A - REAL ARRAY FOR WHICH INDEX VECTOR WILL BE CALCULATED
- N - NUMBER OF ELEMENTS IN IP AND A
SUBROUTINE JDATEC(JD,I,J,K)
OBJECT(JDATEC)
- COMPUTES THE JULIAN CALENDAR DAY, GIVEN A YEAR,
A MONTH AND A DAY.
ARGUMENTS
- JD - JULIAN DAY, A UNIQUE INTEGER WHICH MAPS ONE-TO-ONE
ONTO TRIPLES OF INTEGERS REPRESENTING YEAR, MONTH,
DAY OF THE MONTH.
- I - YEAR
- J - MONTH
- K - DAY OF THE MONTH.
SUBROUTINE LLFXY(DLAT,DLON,X,Y,D60,DGRW,NHEM)
OBJECT(LLFXY)
- COMPUTES LATITUDE AND LONGITUDE OF A POINT IN A POLAR STEREOGRAPHIC
GRID FROM CO-ORDINATES IN THE GRID MEASURED FROM THE POLE.
ARGUMENTS
OUT - DLAT - LATITUDE IN DEGREES (-90 TO +90, POSITIVE N).
- DLON - LONGITUDE IN DEGREES (-180 TO +180, POSITIVE E).
IN - X - X-CO-ORDINATE OF THE POINT AS MEASURED WITH POLE
AS ORIGIN
- Y - Y-CO-ORDINATE OF THE POINT AS MEASURED WITH POLE
AS ORIGIN
- D60 - GRID LENGTH (IN METRES) OF THE POLAR STEREOGRAPHIC
GRID AT 60 DEGREES
- DGRW - ORIENTATION OF GREENWICH MERIDIAN WITH RESPECT TO
THE GRID (IN DEGREES)
- NHEM - 1 FOR NORTHERN HEMISPHERE
2 FOR SOUTHERN HEMISPHERE
SUBROUTINE MSCALE (R,D60,PI,PJ,NI,NJ)
REAL R(NI,NJ)
OBJECT(MSCALE)
- COMPUTES THE MAP-SCALE FACTOR AT ALL POINTS OF A GRID OF
UNIFORM MESH-LENGTH. THE GRID IS ASSUMED TO BE SUPERIMPOSED
ON A POLAR STEREOGRAPHIC PROJECTION OF THE EARTH TRUE AT
LATITUDE 60 DEGREES.
ARGUMENTS
- R - ARRAY WHERE THE RESULTS ARE STORED
- D60 - GRID-LENGTH AT LATITUDE 60 DEGREES (IN METRES)
- PI - X-CO-ORDINATE OF POLE RELATIVE TO BOTTOM LEFT
CORNER OF GRID
- PJ - Y-CO-ORDINATE OF POLE RELATIVE TO BOTTOM LEFT
CORNER OF GRID
- NI - X-DIMENSION
- NJ - Y-DIMENSION
SUBROUTINE MWERMS(BIAS,STD,F,V,W,NI,NJ,IW1,IW2,NW1,NW2)
REAL F(NI,NJ), V(NI,NJ), W(NI,NJ)
OBJECT(MWERMS)
- GIVEN A FORECAST, A VERIFICATION, A WEIGHT FIELD AND THE
CO-ORDINATES OF THE WINDOW, COMPUTES THE MEAN WEIGHTED ERROR
AND THE WEIGHTED R.M.S. DEVIATION FROM THE MEAN.
ARGUMENTS
OUT - BIAS - MEAN WEIGHTED ERROR
- STD - R.M.S. DEVIATION FROM THE MEAN
IN - F - FORECAST FIELD
- V - VERIFYING FIELD
- W - WEIGHT FIELD (SET TO 1'S IF WEIGHTING IS NOT DESIRED)
- NI - X-DIMENSION
- NJ - Y-DIMENSION
- IW1 - BOTTOM LEFT CORNER OF X-COORDINATE OF WINDOW
- IW2 - BOTTOM LEFT CORNER OF Y-COORDINATE OF WINDOW
- NW1 - UPPER RIGHT CORNER OF X-COORDINATE OF WINDOW
- NW2 - UPPER RIGHT CORNER OF Y-COORDINATE OF WINDOW
SUBROUTINE ORDLEG(SX,COA,IR)
OBJECT(ORDLEG)
- THIS ROUTINE IS A SUBSET OF BELOUSOVS ALGORITHM
USED TO CALCULATE ORDINARY LEGENDRE POLYNOMIALS.
ARGUMENTS
OUT - SX - LEGENDRE POLYNOMIAL EVALUATED AT COA
IN - COA - COSINE OF COLATITUDE
IN - IR - WAVE NUMBER
SUBROUTINE PCONW2 (ZZ,CINT,SCALE,LI,LJ,IP,JP,IW,JW,LL,MM,MTYPE)
REAL ZZ(LI,LJ)
OBJECT(PCONW2)
- MAPS LL BY MM WINDOW FROM POINT (IW,JW) IN GRID ZZ(LI,LJ)
WITH NORTH POLE AT (IP,JP) USING A CUBIC INTERPOLATION
THE CONTINENTAL OUTLINE IS INTERPOLATED FROM A 1/20M SCALE
GRID OF SIZE (51,55) WITH NORTH POLE AT (26,28).
ARGUMENTS
SEE BCONW2, EXCEPT IP,JP REAL IN BCONW2
SUBROUTINE PERMUT(Z,NI,NJ)
REAL Z(NI,NJ)
OBJET(PERMUT)
- ROTATION D'UNE MATRICE AUTOUR DE LA LIGNE DU MILIEU.
CETTE ROUTINE EST UTILISEE POUR RE=ARRANGER LES DONNEES
DANS UN CHAMP. EX: POUR CONTOURER, ON A DES DONNEES DANS
L'ORDRE SUIVANT, DU SUD AU NORD ALORS QUE POUR
L'INTERPOLATION ELLES DOIVENT ETRE ETALEES DU NORD AU SUD.
ARGUMENTS
IN/OUT - Z - CHAMP QUI SUBIT LA ROTATION
IN - NI - PREMIERE DIMENSION DE Z
IN - NJ - DEUXIEME DIMENSION DE Z
FUNCTION POLAGR(ZZ,F,Z,NPLUS1)
REAL Z(NPLUS1), F(NPLUS1)
OBJET(POLAGR)
- TROUVE LA VALEUR AU POINT ZZ DE L'INTERPOLATION
DE LAGRANGE DE DEGRE N, (NPLUS1 = N+1), QUI
PREND LES VALEURS DE F AUX POINTS DE Z.
ARGUMENTS
- ZZ - POINT POUR LEQUEL ON CHERCHE F(ZZ)
- F - VALEURS DE LA FONCTION
- Z - LISTE DE COORDONNEES
- NPLUS1 - DEGRE MAXIMUM DES POLYNOMES DE LAGRANGE + 1
SUBROUTINE ROSSR3(P,A,DELTA,C,D,M)
OBJECT(ROSSR3)
- SOLVE A TRI-DIAGONAL SYSTEM OF LINEAR EQUATIONS.
ARGUMENTS
- P - SOLUTION VECTOR.
- A - VECTOR OF SUB-DIAGONAL ELEMENTS.
- DELTA - WORK VECTOR.
- C - VECTOR OF SUPER-DIAGONAL ELEMENTS.
- D - RIGHT-HAND SIDE VECTOR.
- M - NUMBER OF EQUATIONS TO BE SOLVED.
SUBROUTINE R4AA4(R4A,A4,N)
IMPNONE
INTEGER R4A(*), A4(*), N
INTEGER NBMOT,BLANK,NI,DPC,I
OBJET(R4AA4)
TRANSFORMER N CARACTERES CONTENUS DANS DES MOT R4A (4 CAR DE 8 BITS
ALIGNES DANS LA PARTIE DROITE DU MOT) EN N CARACTERES CONTENUS DANS DES
MOT DE TYPE A4 (4 CAR ALIGNES A GAUCHE DANS LE MOT)
ARGUMENTS
OUT A4 TABLEAU D'ENTIERS CONTENANT LES CAR. DE TYPE A4
IN R4A TABLEAU D'ENTIERS CONTENANT LES CAR. DE TYPE R4A
IN N NOMBRE DE CARACTERES A TRANSFORMER
SUBROUTINE R4ASTRG(STRG,R4A,POSDEB,POSFIN)
IMPNONE
CHARACTER * (*) STRG
INTEGER R4A(0:*)
INTEGER POSDEB,POSFIN,POS,LNG,MAXCAR,MOT,CARPOS,SHFCNT,C,I,MSK
OBJET(R4ASTRG)
TRANSFORMER N CARACTERES CONTENUS DANS DES MOT R4A (4 CAR. DE 8 BITS
ALIGNES DANS LA PARTIE DROITE DU MOT) EN N CARACTERES CONTENUS DANS UNE
CHAINE DE "CHARACTER".
ARGUMENTS
IN R4A TABLEAU D'ENTIERS CONTENANT LES CARACTERES DE TYPE R4A
OUT STRG TABLEAU DE CARACTERES TRANSFORMES
IN POSDEB POSITION DU PREMIER CARACTERE DANS R4A
IN POSFIN POSITION DU DERNIER CARACTERE DANS R4A
SUBROUTINE SCINT(ZO,LI,LJ,XLAT,XLON,ZI,NI,NJ,IGTYP,
IG1,IG2,IG3,IG4,SYM)
INTEGER NI,NJ,LI,LJ
REAL ZO(LI,LJ),ZI(NI,NJ),XLAT(LI,LJ),XLON(LI,LJ)
INTEGER IGTYP,GI1,IG2,IG3,IG4
LOGICAL SYM
OBJET(SCINT)
- INTERPOLATION D'UNE GRILLE A UNE AUTRE HORIZONTALEMENT
VERIFIER LA SORTE DE GRILLE, RENVERSER LE CHAMP AU BESOIN.
ARGUMENTS
OUT - ZO - CHAMP DE SORTIE LI X LJ
IN - LI - NOMBRE DE POINTS EST- OUEST
IN - LJ - NOMBRE DE POINTS NORD - SUD
IN - XLAT - LATITUDES SUR LA GRILLE DE SORTIE (LI,LJ)
IN - XLON - LONGITUDES SUR LA GRILLE DE SORTIE (LI,LJ)
IN - ZI - CHAMP D'ENTREE (NI,NJ)
IN - NI - NOMBRE DE POINTS DANS DIRECTION EST - OUEST
IN - NJ - NOMBRE DE POINTS DANS DIRECTION NORD - SUD
IN - IGTYP - TYPE DE GRILLE(ZI) (HOLLERITH, 1 CAR)
IN - IG1 - DESCRIPTEUR DE GRILLE (GRILLE D'ENTREE)
IN - IG2 - '' '' '' ''
IN - IG3 - '' '' '' ''
IN - IG4 - '' '' '' ''
IN - SYM - INDICATEUR DE SYMETRIE (VRAI SI VARIABLE EST SYMETRIQUE)
SUBROUTINE SCINT1(ZI,NI,NJ,IGTYP,IG1,IG2,IG3,IG4,SYM)
INTEGER NI,NJ
REAL ZI(NI,NJ)
INTEGER IGTYP,GI1,IG2,IG3,IG4
LOGICAL SYM
OBJET(SCINT1)
- INTERPOLATION D'UNE GRILLE A UNE AUTRE HORIZONTALEMENT
VERIFIER LA SORTE DE GRILLE, RENVERSER LE CHAMP AU BESOIN.
ARGUMENTS
IN - ZI - CHAMP D'ENTREE (NI,NJ)
IN - NI - NOMBRE DE POINTS DANS DIRECTION EST - OUEST
IN - NJ - NOMBRE DE POINTS DANS DIRECTION NORD - SUD
IN - IGTYP - TYPE DE GRILLE(ZI) (HOLLERITH, 1 CAR)
IN - IG1 - DESCRIPTEUR DE GRILLE (GRILLE D'ENTREE)
IN - IG2 - '' '' '' ''
IN - IG3 - '' '' '' ''
IN - IG4 - '' '' '' ''
IN - SYM - INDICATEUR DE SYMETRIE (VRAI SI VARIABLE EST SYMETRIQUE)
FUNCTION SCINT2(XLAT,XLON,ZI,NI,NJ)
REAL ZI(NI,NJ),XLAT,XLON
OBJET(SCINT2)
- INTERPOLATION D'UNE GRILLE A UNE AUTRE HORIZONTALEMENT
ARGUMENTS
IN - XLAT - LATITUDE SUR LA GRILLE DE SORTIE
IN - XLON - LONGITUDE SUR LA GRILLE DE SORTIE
IN - ZI - CHAMP D'ENTREE (NI,NJ)
IN - NI - NOMBRE DE POINTS DANS DIRECTION EST - OUEST
IN - NJ - NOMBRE DE POINTS DANS DIRECTION NORD - SUD
SUBROUTINE SCONW (ZZ,CINT,SCALE,LI,LJ,IW,JW,LL,MM,MTYPE)
REAL ZZ(51,55)
OBJECT(SCONW)
- MAPS LL BY MM WINDOW FROM POINT (IW,JW) IN GRID ZZ(LI,LJ)
USING A CUBIC INTERPOLATION
THE CONTINENTAL OUTLINE IS INTERPOLATED FROM A 1/20M SCALE
GRID OF SIZE (51,55) WITH NORTH POLE AT (26,28).
ARGUMENTS
SEE BCONW2
SUBROUTINE SETINTX(ORDRE)
INTEGER ORDRE
OBJET(SETINTX)
PERMET DE FORCER LES SOUS-PROGRAMMES D'INTERPOLATION HORIZONTALE
A UTILISER UNE INTERPOLATION D'ORDRE ZER0 (PLUS PROCHE VOISIN)
OU D'ORDRE 1 (INTERPOLATION BILINEAIRE) PLUTOT QU'UNE INTERPOLATION
D'ORDRE TROIS (BICUBIQUE). LES SOUS PROGRAMMES AFFECTES SONT
--SGLO/SANH/SSNH-- --SGLOGG/SANHGG/SSNHGG-- --SLL-- --SPS--
ARGUMENTS
E ORDRE ORDRE DE L'INTERPOLATION 0,1, OU 3
FUNCTION SGLO (LAMBDA,PHI,F,LI,LJ)
REAL F(LI,LJ)
OBJECT(SGLO)
- RETURNS THE INTERPOLATED VALUE FROM THE FIELD F,
AT THE POINT WITH CO-LATITUDE PHI, LONGITUDE LAMBDA.
RANGES PHI 0 TO PI, 0 AT NORTH POLE, LAMBDA, EITHER
0 TO 2 PI OR -PI TO +PI, 0 IS GREENWICH, +VE TOWARDS
THE EAST.
ARGUMENTS
OUT - SGLO - INTERPOLATED VALUE
IN - LAMBDA - LONGITUDE
- PHI - CO-LATITUDE (90. - LAT)
- F - A UNIFORM LON-LAT. GRID (STAGGERED)
- LI - POINTS PER CIRCLE. MUST BE EVEN. THE FIRST
CIRCLE IS DISPLACED FROM THE NORTH POLE BY
OFFSET = 90.0 / LJ DEG.
- LJ - NUMBER OF LATITUDE CIRCLES
FUNCTION SGLOGG(G,LI,LJ,ROOTS,LAMBDA,PHI)
REAL G(LI,LJ)
OBJET(SGLOGG)
- TROUVER LA VALEUR D'UNE FONCTION EN UN POINT QUELCONQUE D'UNE
GRILLE GAUSSIENNE
ARGUMENTS
OUT - SGLOGG - VALEUR INTERPOLEE AU POINT DEMANDE
IN - G - CHAMP SOURCE
IN - LI - PREMIERE DIMENSION DE G
IN - LJ - DEUXIEME DIMENSION DE G
IN - ROOTS - TABLE SERVANT A CALCULER LES RACINES DES POLYNOMES DE
LEGENDRE SEVANT A DEFINIR LA GRILLE GAUSSIENNE. SI
ROOTS CONTIENT DEJA CES RACINES (I.E. SI ROOTS(1) EST
POSITIF ET INFERIEUR A 1.0) LES VALEURS DE ROOTS SERONT
UTILISEES DIRECTEMENT.
IN - LAMBDA - LONGITUDE DU POINT DESIRE
IN - PHI - COLATITUDE (90.0-LATITUDE) DU POINT DESIRE
FUNCTION SLL(LAMBDA,PHI,F,LI,LJ,XLA0,XLO0,DLAT,DLON)
REAL F(LI,LJ), T(4)
OBJET(SLL)
- EXTRAIRE LA VALEUR DE LA FONCTION F AU POINT DE COORDONNEES
LAMBDA(LONGITUDE) ET PHI(COLATITUDE) DANS UNE GRILLE
LAT-LON.
ARGUMENTS
OUT - SLL - VALEUR DE LA FONCTION AU POINT DEMANDE
IN - LAMBDA - LONGITUDE DU POINT (REEL)
IN - PHI - COLATITUDE(LATITUDE-90.0) DU POINT (REEL)
IN - F - CHAMP SOURCE (LI,LJ)
IN - LI - PREMIERE DIMENSION DE LA GRILLE FF (PS)
IN - LJ - DEUXIEME DIMENSION DE LA GRILLE FF (PS)
IN - XLA0 - LATITUDE DU COIN INFERIEUR GAUCHE (DEGRES).
IN - XLO0 - LONGITUDE DU COIN INFERIEUR GAUCHE (DEGRES).
IN - DLAT - ESPACEMENT EN LATITUDE (DEGRES).
IN - DLON - ESPACEMENT EN LONGITUDE (DEGRES).
SUBROUTINE SORT (A,N)
REAL A (N)
OBJECT(SORT)
- RE-ARRANGES THE ELEMENTS OF A REAL ARRAY INTO
NON-DECREASING ORDER.
ARGUMENTS
IN/OUT - A - REAL ARRAY TO BE SORTED
IN - N - NUMBER OF ELEMENTS IN A
SUBROUTINE SPAUV(SPD,PSI,LI,LJ,ITYP,XG1,XG2,XG3,XG4)
REAL SPD(LI,LJ), PSI(LI,LJ)
OBJET(SPAUV)
- PASSE DE VITESSE (SPEED) ET PSI (DIRECTION) AUX VRAIES
COMPOSANTES U ET V SELON LE TYPE DE GRILLE.
ARGUMENTS
IN/OUT - SPD - A L'ENTREE CONTIENT LA VITESSE DU VENT ET
A LA SORTIE LA COMPOSANTE U.
IN/OUT - PSI - A L'ENTREE CONTIENT LA DIRECTION DU VENT ET
A LA SORTIE LA COMPOSANTE V.
IN - LI - PREMIERE DIMENSION DES CHAMPS SPD ET PSI
IN - LJ - DEUXIEME DIMENSION DES CHAMPS SPD ET PSI
IN - ITYP - TYPE DE GRILLE (HOLLERITH 1 CAR)
IN - XG1 - ** DESCRIPTEUR DE GRILLE (REEL),
IN - XG2 - ITYP = 1HN, PI, PJ, D60, DGRW
IN - XG3 - ITYP = 1HL, LAT0, LON0, DLAT, DLON,
IN - XG4 - ITYP = 1HA, 1HB, IHG, XG1 = 0. GLOBAL,
= 1. NORD
= 2. SUD **
SUBROUTINE SPD (P,S,M,H,CMU1,C1,CLMDAM,CM,A,C,D)
OBJECT(SPD)
- THIS ROUTINE IS USED TO COMPUTE SPLINE DERIVATIVES.
- THIS ROUTINE IS PART OF THE SPLINE INTERPOLATION PACKAGE.
SEE THE WRITE-UPS ON INTRP AND INT1D1 FOR INFORMATION ABOUT
USING THE PACKAGE.
ARGUMENTS
- P - SOLUTION VECTOR.
- S - VECTOR OF VALUES OF THE FUNCTION.
- M - LENGTH OF VECTORS P, S, A, C, D AND H.
- H - VECTOR WHICH MUST BE INITIALIZED WITH THE
COORDINATE DIFFERENCES.
- CMU1 - CONSTANT USED TO SPECIFY THE END CONDITIONS
FOR THE SPLINE.
- C1 - CONSTANT USED TO SPECIFY THE END CONDITIONS
FOR THE SPLINE.
- CLMDAM - CONSTANT USED TO SPECIFY THE END CONDITIONS
FOR THE SPLINE.
- CM - CONSTANT USED TO SPECIFY THE END CONDITIONS
FOR THE SPLINE.
- A - WORKING VECTOR OF LENGTH M.
- C - WORKING VECTOR OF LENGTH M.
- D - WORKING VECTOR OF LENGTH M.
SUBROUTINE SPLAT(A,LI,NC,II,INCR,GMIN,GMAX)
REAL A(LI,NC)
OBJECT(SPLAT)
- DRAWS UP TO FIFTEEN CURVES ON THE SAME GRAPH, THE Y-AXIS EXTENDS
HORIZONTALLY ACROSS THE PAGE AND THE X-AXIS EXTENDS DOWN THE
PAGE FOR AS MANY PAGES AS REQUIRED
ARGUMENTS
- A - ARRAY TO BE PLOTTED
- LI - X-DIMENSION
- NC - NUMBER OF CURVES TO BE DRAWN (MAXIMUM 15)
- II - NUMBER OF ELEMENTS IN THE X-DIRECTION TO BE DRAWN
FROM EACH ROW OF A, MUST BE LESS OR EQUAL TO LI
- INCR - X-AXIS INCREMENT, ABSOLUTE VALUE IS USED.
- INCR=1 DRAWS EVERY POINT
- INCR=2 DRAWS EVERY SECOND POINT ETC...
- IF INCR>0, THE VALUES OF CURVE NC ARE WRITTEN ALONG
THE X-AXIS
- IF INCR<0, these values are omitted. - gmin - minimum value on y-axis - gmax - maximum value on y-axis - values of the curve falling outside these limits are simply omitted, if gmin=GMAX, the subroutine selects the smallest and largest of all the values to be plotted as the graph limits. function sps(lambda,phi,f,li,lj,pi,pj,d60,dgrw,hem) real f(li,lj), t(4) objet(sps) - extraire la valeur de la fonction f au point de coordonnees lambda(longitude) et phi(colatitude) dans une grille polaire stereographique. arguments out - sps - valeur de la fonction au point demande in - lambda - longitude du point (reel) in - phi - colatitude(latitude-90.0) du point (reel) in - f - champ source (li,lj) in - li - premiere dimension de la grille f (ps) in - lj - deuxieme dimension de la grille f (ps) in - pi - coordonnee x du pole (reel) in - pj - coordonnee y du pole (reel) in - d60 - distance en metres entre les points de la grille a 60 degres de latitude in - dgrw - angle entre l'axe x et le meridien de grenwich in - hem - code d'hemisphere (1=NORD , 2=SUD) subroutine sqadsq (r,a,b,cona,conb,ni,nj,nb) real r(ni,nj), a(ni,nj), b(ni,nj) object(sqadsq) - computes the squares, element wise, of two 2-dimensional arrays, scales each result and sums the scaled arrays. r(i,j)=CONA*(A(I,J)**2) + conb*(b(i,j)**2) arguments out - r - array containing result in - a - first array to be operated on - b - second array to be operated on - cona - scaling factor for array a - conb - scaling factor for array b - ni - x-dimension in - nj - y-dimension - nb - 4-digit decimal number which allows at most nine rows on any side of the grid to be skipped. - nb=D1*10E3 + d2*10e2 +.d3*10 + d4 - d1=COLUMNS are skipped from left - d2=ROWS are skipped from bottom -.d3=COLUMNS are skipped from right - d4=ROWS are skipped from top - e.g. nb=0000 include all borders (written as 0) nb=1111 omit one row all around the grid nb=2241 indicates that the 2 columns on the left of a, 2 rows at the bottom, 4 columns at the right and 1 row at the top are not operated on and the corresponding rows and columns of r are left undefined by the routine. subroutine strgr4a(strg,r4a,posdeb,posfin) character * (*) strg integer r4a(0:*) integer posdeb,posfin,pos,lng,maxcar,mot,carpos,shfcnt,c,i,msk objet(strgr4a) transformer une chaine de caracteres en mot de type r4a (4 car. de 8 bits alignes dans la partie droite du mot). arguments in strg chaine de caracteres a transformer out r4a tableau d'entiers qui contiendra les car r4a in posdeb position du premier caractere dans r4a in posfin position du dernier caractere dans r4a subroutine s1scor(s1,f,v,ni,nj,iw1,iw2,nw1,nw2,igl) real f(ni,nj), v(ni,nj) object(s1scor) - given a forecast, a verifying field and the co-ordinates of the window, computes the s1 (gradient) score. arguments out - s1 - s1 score in - f - forecast field - v - verifying field - ni - x-dimension - nj - y-dimension - iw1 - bottom left corner of x-coordinate of window - iw2 - bottom left corner of y-coordinate of window - nw1 - upper right corner of x-coordinate of window - nw2 - upper right corner of y-coordinate of window - igl - grid point interval for verification (set to 1 or 2) subroutine uvint(spdo,psio,li,lj,xlat,xlon,ui,vi,ni,nj,igtyp, ig1,ig2,ig3,ig4,sws) real spdo(li,lj),psio(li,lj),xlat(li,lj),xlon(li,lj) real ui(ni,nj),vi(ni,nj) objet(uvint) - interpolation d'une grille a une autre horizontalement verifier la sorte de grille renverser le champ arguments out - spdo - champ de sortie li x lj (vitesse du vent) out - psio - champ de sortie li x lj (direction du vent) in - li - nombre de points est - ouest (sortie) in - lj - nombre de points nord - sud (sortie) in - xlat - latitudes sur la grille de sortie (li,lj) in - xlon - longitudes sur la grille de sortie (li,lj) in - ui - champ d'entree (ni,nj) (composante u du vent) in - vi - champ d'entree (ni,nj) (composante v du vent) in - ni - nombre de points dans direction est - ouest in - nj - nombre de points dans direction nord - sud in - igtyp - type de grille(ui,vi) (hollerith 1 car) in - ig1 - descripteur de grille (grille d'entree) in - ig2 - '' '' '' '' in - ig3 - '' '' '' '' in - ig4 - '' '' '' '' in - sws - sws=.TRUE., spdo et psio - .false. spdo seulement logical function valide(nom, ichk, min, max) objet(valide) - verifier si ichk> MIN OU =< MAX
- MESSAGE SI ICHK N'EST PAS DANS LES LIMITES
ARGUMENTS
IN - NOM - NOM DE LA VARIABLE EMPLOYE PAR LA ROUTINE
IN - ICHK - VALEUR DE LA VARIABLE POUR VERIFICATION
IN - MIN - VALEUR MINIMUM DE ICHK
IN - MAX - VALEUR MAXIMUM DE ICHK
SUBROUTINE VCONW(F,CINT,SCALE,X,Y,LI,LJ,XST,XND,YST,YND,SIZE,NSK)
REAL F(LI,LJ), X(LI), Y(LJ)
OBJECT(VCONW)
VCONW WILL CONTOUR A WINDOW OF A VARIABLE MESH GRID ON THE LINE
PRINTER (6 LINES PER INCH). CUBIC INTERPOLATION WILL BE USED.
ARGUMENTS
INP- F(LI,LJ) FIELD TO BE CONTOURED
CINT CONTOUR INTERVAL (0. MEANS INTERNAL CHOICE)
CINT <0. means first contour at -.5*abs(cint) scale scaling factor (0. means auto scaling) x(li) array of x coordinates of the f field (i direction) y(lj) array of y coordinates of the f field (j direction) li i dimension of f and x lj j dimension of f and y xst coordinate of left edge of window xnt coordinate of right edge of window yst coordinate of bottom edge of window ynd coordinate of top edge of window size size of contour map in the x direction (inches e.g. 10.7) nsk print grid point values every nsk points subroutine vglo(speed , psi , clamda, phi , u, v, li, lj ) real u(li,lj), v(li,lj) object(vglo) - return 2 scalars quantities using u-v vector field - on lat lon compute speed and psi with a cubic - interpolation on east to west and north to south arguments out - speed - wind speed, same units as u,v out - psi - angle between the wind and greenwich on p.s. grid in - clamda - longitude of pt / to pi or -pi to +pi east=+ in - phi - colatitude of u or v (0=N.P. 180=S.P.) in - u,v - are uniform long lat grids in - li - points per circle, must be even first circle displace from pole by offset (90.0/deg) in - lj - latitude circles subroutine vglogg(speed , psi ,clamda, phi ,u,v,li,lj ,roots) real u(li,lj), v(li,lj) object(vglogg) - return 2 scalars quantities using u-v vector field - on lat lon compute speed and psi with a cubic - interpolation on east to west and north to south arguments out - speed - wind speed, same units as u,v out - psi - angle between the wind and greenwich on p.s. grid in - clamda - longitude of pt / to pi or -pi to +pi east=+ in - phi - colatitude of u or v (0=N.P. 180=S.P.) in - u,v - are uniform long lat grids in - li - points per circle, must be even first circle displace from pole by offset (90.0/deg) in - lj - latitude circles in - roots - table servant a calculer les racines des polynomes de legendre servant a definir la latitude des noeuds de la grille gaussienne. si roots contient deja ces racines (i.e. si roots(1) est positif et inferieur a 1.0) les valeurs de roots seront utilises directement. subroutine vll(s,psi,lambda,phi,u,v,li,lj,xla0,xlo0,dlat,dlon) real u(li,lj), v(li,lj) object(vll) interpolation de vecteurs a partir d'une grille ll arguments out - s - vitesse du vent au point demande out - psi - direction du vent in - lambda - longitude du point (reel) in - phi - colatitude(latitude-90.0) du point (reel) in - u,v - composantes u et v du vent (li,lj) in - li - premiere dimension des champs u et v (ps) in - lj - deuxieme dimension des champs u et v (ps) in - xla0 - latitude du coin inferieur gauche (degres). in - xlo0 - longitude du coin inferieur gauche (degres). in - dlat - espacement en latitude (degres). in - dlon - espacement en longitude (degres). subroutine vpolagr(ff,zz,f,z,na,nplus1) real ff(na), f(na,nplus1), z(nplus1) objet(vpolagr) - etant donne f(*,j)=FONCTION de z(j), on veut evaluer ff(*) qui est egale a la valeur de la fonction a z=ZZ arguments out - ff - champ de sortie (na) - zz - coordonnee a laquelle on veut interpoler - f - champ source (na,nplus1) - z - coordonnee verticale (nplus1) - na - dimension horizontale de ff, f - nplus1 - degre maximum des polynomes de lagrange + 1 subroutine vps(s,psi,lambda,phi,u,v,li,lj,pi,pj,d60,dgrw,hem) real u(li,lj), v(li,lj) object(vps) interpolation de vecteurs a partir d'une grille ps arguments out - s - vitesse du vent au point demande out - psi - direction du vent in - lambda - longitude du point (reel) in - phi - colatitude(latitude-90.0) du point (reel) in - u,v - composantes u et v du vent (li,lj) in - li - premiere dimension des champs u et v (ps) in - lj - deuxieme dimension des champs u et v (ps) in - pi - coordonnee x du pole (reel) in - pj - coordonnee y du pole (reel) in - d60 - distance en metres entre les points de la grille a 60 degres de latitude in - dgrw - angle entre l'axe x et le meridien de grenwich in - hem - code d'hemisphere (1=NORD , 2=SUD) subroutine windv(rms,fu,fv,vu,vv,w,ni,nj,iw1,iw2,nw1,nw2) real fu(ni,nj),fv(ni,nj),vu(ni,nj),vv(ni,nj),w(ni,nj) object(windv) - given a forecast, a verification, a weight field and the co-ordinates of the window, computes the weighted r.m.s. error. arguments out - rms - weighted r.m.s. error of vectors in - fu - x-component of forecasted wind - fv - y-component of forecasted wind - vu - x-component of verifying wind - vv - y-component of verifying wind - w - weight field (set to 1's if weighting not desired) - ni - x-dimension - nj - y-dimension - iw1 - bottom left corner of x-coordinate of window - iw2 - bottom left corner of y-coordinate of window - nw1 - upper right corner of x-coordinate of window - nw2 - upper right corner of y-coordinate of window subroutine cxgaig(igtyp,ig1,ig2,ig3,ig4,xg1,xg2,xg3,xg4) character *1 igtyp objet(cxgaig) - passe des parametres (reels) descripteurs de grille aux parametres entiers. arguments in - igtyp - type de grille out - ig1 - descripteur de grille (entier) out - ig2 - descripteur de grille (entier) out - ig3 - descripteur de grille (entier) out - ig4 - descripteur de grille (entier) in - xg1 - ** descripteur de grille (reel), in - xg2 - igtyp=N , pi, pj, d60, dgrw in - xg3 - igtyp=L , lat0, lon0, dlat, dlon, in - xg4 - igtyp=A , 'b', 'g', xg1=0, global=1, nord=2, sud ** subroutine xxpak(ifld,ipk,ni,nj,npak,nb,kind) integer ifld(*),ipk(*),ni,nj,npak,nb,kind objet(xxpak) - compacter ou decompacter des nombres reels. (version rapide) arguments in/ - ifld - floating point array, unpacked (ni,nj) in/ - ipk - the same array packed in - ni - x-dimension in - nj - y-dimension in - npak - npak> 0, DENSITE DE COMPACTION
NPAK = 0 OU 1, PAS DE COMPACTION
NPAK < 0, NOMBRE DE BITS A GARDER PAR NOMBRE
IN - NB - MUST BE 0 (LEFT FOR COMPATIBILITY)
IN - KIND - 1 = PACK
2 = UNPACK
SUBROUTINE XYFLL(X,Y,DLAT,DLON,D60,DGRW,NHEM)
OBJECT(XYFLL)
- COMPUTES THE GRID CO-ORDINATES MEASURED FROM THE POLE OF A
POINT, GIVEN THE LATITUDE AND LONGITUDE IN DEGREES.
ARGUMENTS
OUT - X - X-CO-ORDINATE OF THE POINT AS MEASURED WITH POLE
AS ORIGIN
- Y - Y-CO-ORDINATE OF THE POINT AS MEASURED WITH POLE
AS ORIGIN
IN - DLAT - LATITUDE IN DEGREES (-90 TO +90, POSITIVE N)
- DLON - LONGITUDE IN DEGREES (-180 TO +180, POSITIVE E)
ARGUMENTS
- D60 - GRID LENGTH (IN METRES) OF THE POLAR STEREOGRAPHIC
GRID AT 60 DEGREES
- DGRW - ORIENTATION OF GREENWICH MERIDIAN WITH RESPECT TO
THE GRID (IN DEGREES)
- NHEM - 1 FOR NORTHERN HEMISPHERE
2 FOR SOUTHERN HEMISPHERE