SPTRUNMV
The SPTRUNMV routine spectrally truncates vector fields
on a global cylindrical grid, returning the fields
to a Mercator grid.
The wave-space can be either triangular or rhomboidal.
The grid-space can be either an equally-spaced grid
(with or without pole points) or a Gaussian grid.
The grid fields may have general indexing.
The transforms are all multiprocessed.
Transform several fields at a time to improve vectorization.
subprogram can be called from a multiprocessing environment.
USAGE: CALL SPTRUNMV(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,KMAX,MI,MJ,
IPRIME,ISKIPI,JSKIPI,KSKIPI,KGSKIP,
NISKIP,NJSKIP,JCPU,RLAT1,RLON1,DLAT,DLON,
GRIDUI,GRIDVI,LUV,UM,VM,LDZ,DM,ZM,LPS,PM,SM)
Input arguments:
IROMB - INTEGER SPECTRAL DOMAIN SHAPE
(0 FOR TRIANGULAR, 1 FOR RHOMBOIDAL)
MAXWV - INTEGER SPECTRAL TRUNCATION
IDRTI - INTEGER INPUT GRID IDENTIFIER
(IDRTI=4 FOR GAUSSIAN GRID,
IDRTI=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
IDRTI=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
IMAXI - INTEGER EVEN NUMBER OF INPUT LONGITUDES.
JMAXI - INTEGER NUMBER OF INPUT LATITUDES.
KMAX - INTEGER NUMBER OF FIELDS TO TRANSFORM.
MI - INTEGER NUMBER OF POINTS IN THE FASTER ZONAL DIRECTION
MJ - INTEGER NUMBER OF POINTS IN THE SLOWER MERID DIRECTION
IPRIME - INTEGER INPUT LONGITUDE INDEX FOR THE PRIME MERIDIAN.
(DEFAULTS TO 1 IF IPRIME=0)
(OUTPUT LONGITUDE INDEX FOR PRIME MERIDIAN ASSUMED 1.)
ISKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LONGITUDES
(DEFAULTS TO 1 IF ISKIPI=0)
JSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT LATITUDES FROM SOUTH
(DEFAULTS TO -IMAXI IF JSKIPI=0)
KSKIPI - INTEGER SKIP NUMBER BETWEEN INPUT GRID FIELDS
(DEFAULTS TO IMAXI*JMAXI IF KSKIPI=0)
KGSKIP - INTEGER SKIP NUMBER BETWEEN GRID FIELDS
(DEFAULTS TO MI*MJ IF KGSKIP=0)
NISKIP - INTEGER SKIP NUMBER BETWEEN GRID I-POINTS
(DEFAULTS TO 1 IF NISKIP=0)
NJSKIP - INTEGER SKIP NUMBER BETWEEN GRID J-POINTS
(DEFAULTS TO MI IF NJSKIP=0)
JCPU - INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
(DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
RLAT1 - REAL LATITUDE OF THE FIRST GRID POINT IN DEGREES
RLON1 - REAL LONGITUDE OF THE FIRST GRID POINT IN DEGREES
DLAT - REAL LATITUDE INCREMENT IN DEGREES SUCH THAT
D(PHI)/D(J)=DLAT*COS(PHI) WHERE J IS MERIDIONAL INDEX.
DLAT IS NEGATIVE FOR GRIDS INDEXED SOUTHWARD.
(IN TERMS OF GRID INCREMENT DY VALID AT LATITUDE RLATI,
THE LATITUDE INCREMENT DLAT IS DETERMINED AS
DLAT=DPR*DY/(RERTH*COS(RLATI/DPR))
WHERE DPR=180/PI AND RERTH IS EARTH'S RADIUS)
DLON - REAL LONGITUDE INCREMENT IN DEGREES SUCH THAT
D(LAMBDA)/D(I)=DLON WHERE I IS ZONAL INDEX.
DLON IS NEGATIVE FOR GRIDS INDEXED WESTWARD.
GRIDUI - REAL (*) INPUT GRID U-WINDS
GRIDVI - REAL (*) INPUT GRID V-WINDS
LUV - LOGICAL FLAG WHETHER TO RETURN WINDS
LDZ - LOGICAL FLAG WHETHER TO RETURN DIVERGENCE AND VORTICITY
LPS - LOGICAL FLAG WHETHER TO RETURN POTENTIAL AND STREAMFCN
Output arguments:
UM - REAL (*) MERCATOR U-WINDS IF LUV
VM - REAL (*) MERCATOR V-WINDS IF LUV
DM - REAL (*) MERCATOR DIVERGENCES IF LDZ
ZM - REAL (*) MERCATOR VORTICITIES IF LDZ
PM - REAL (*) MERCATOR POTENTIALS IF LPS
SM - REAL (*) MERCATOR STREAMFCNS IF LPS
REMARKS: MINIMUM GRID DIMENSIONS FOR UNALIASED TRANSFORMS TO SPECTRAL:
DIMENSION LINEAR QUADRATIC
----------------------- --------- -------------
IMAX 2*MAXWV+2 3*MAXWV/2*2+2
JMAX (IDRT=4,IROMB=0) 1*MAXWV+1 3*MAXWV/2+1
JMAX (IDRT=4,IROMB=1) 2*MAXWV+1 5*MAXWV/2+1
JMAX (IDRT=0,IROMB=0) 2*MAXWV+3 3*MAXWV/2*2+3
JMAX (IDRT=0,IROMB=1) 4*MAXWV+3 5*MAXWV/2*2+3
JMAX (IDRT=256,IROMB=0) 2*MAXWV+1 3*MAXWV/2*2+1
JMAX (IDRT=256,IROMB=1) 4*MAXWV+1 5*MAXWV/2*2+1
SPLIB.tar |
Library contains routines to be
be used for a variety of spectral transform functions. (Fortran90)
Date posted: 2/23/2007 |