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