SPTRUND

The SPTRUND routine spectrally truncates scalar fields
            on a global cylindrical grid, returning their means and
            gradients to a possibly different global cylindrical grid.
            The wave-space can be either Triangular or Rhomboidal.
            Either 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.
            Over zonal wavenumber to ensure reproducibility.
            Transform several fields at a time to improve vectorization.
            Subprogram can be called from a multiprocessing environment.
 
USAGE:    CALL SPTRUND(IROMB,MAXWV,IDRTI,IMAXI,JMAXI,
                       IDRTO,IMAXO,JMAXO,KMAX,
                       IPRIME,ISKIPI,JSKIPI,KSKIPI,
                       ISKIPO,JSKIPO,KSKIPO,JCPU,GRID,
                       GRIDMN,GRIDX,GRIDY)

   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.
      IDRTO    - INTEGER OUTPUT GRID IDENTIFIER
                 (IDRTO=4 FOR GAUSSIAN GRID,
                  IDRTO=0 FOR EQUALLY-SPACED GRID INCLUDING POLES,
                  IDRTO=256 FOR EQUALLY-SPACED GRID EXCLUDING POLES)
      IMAXO    - INTEGER EVEN NUMBER OF OUTPUT LONGITUDES.
      JMAXO    - INTEGER NUMBER OF OUTPUT LATITUDES.
      KMAX     - INTEGER NUMBER OF FIELDS TO TRANSFORM.
      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)
      ISKIPO   - INTEGER SKIP NUMBER BETWEEN OUTPUT LONGITUDES
                 (DEFAULTS TO 1 IF ISKIPO=0)
      JSKIPO   - INTEGER SKIP NUMBER BETWEEN OUTPUT LATITUDES FROM SOUTH
                 (DEFAULTS TO -IMAXO IF JSKIPO=0)
      KSKIPO   - INTEGER SKIP NUMBER BETWEEN OUTPUT GRID FIELDS
                 (DEFAULTS TO IMAXO*JMAXO IF KSKIPO=0)
      JCPU     - INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS
                 (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
      GRID     - REAL (*) INPUT GRID FIELDS

   Output arguments:
      GRIDMN   - REAL (KMAX) OUTPUT GLOBAL MEANS
      GRIDX    - REAL (*) OUTPUT X-GRADIENTS
      GRIDY    - REAL (*) OUTPUT Y-GRADIENTS
 
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