NCEPLIBS-ip  5.0.0
sptruns.f File Reference

Spectrally interpolate scalars to polar stereo. More...

Go to the source code of this file.

Functions/Subroutines

subroutine sptruns (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, KMAX, NPS, IPRIME, ISKIPI, JSKIPI, KSKIPI, KGSKIP, NISKIP, NJSKIP, JCPU, TRUE, XMESH, ORIENT, GRIDI, GN, GS)
 This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to specific pairs of polar stereographic scalar fields. More...
 

Detailed Description

Spectrally interpolate scalars to polar stereo.

Author
IREDELL
Date
96-02-29

Definition in file sptruns.f.

Function/Subroutine Documentation

◆ sptruns()

subroutine sptruns (   IROMB,
  MAXWV,
  IDRTI,
  IMAXI,
  JMAXI,
  KMAX,
  NPS,
  IPRIME,
  ISKIPI,
  JSKIPI,
  KSKIPI,
  KGSKIP,
  NISKIP,
  NJSKIP,
  JCPU,
  TRUE,
  XMESH,
  ORIENT,
real, dimension(*)  GRIDI,
real, dimension(*)  GN,
real, dimension(*)  GS 
)

This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to specific pairs of polar stereographic scalar fields.

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.

PROGRAM HISTORY LOG: 96-02-29 IREDELL

Parameters
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.
NPS- INTEGER ODD ORDER OF THE POLAR STEREOGRAPHIC GRIDS
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 NPS*NPS 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 NPS IF NJSKIP=0)
JCPU- INTEGER NUMBER OF CPUS OVER WHICH TO MULTIPROCESS (DEFAULTS TO ENVIRONMENT NCPUS IF JCPU=0)
TRUE- REAL LATITUDE AT WHICH PS GRID IS TRUE (USUALLY 60.)
XMESH- REAL GRID LENGTH AT TRUE LATITUDE (M)
ORIENT- REAL LONGITUDE AT BOTTOM OF NORTHERN PS GRID (SOUTHERN PS GRID WILL HAVE OPPOSITE ORIENTATION.)
GRIDI- REAL (*) INPUT GRID FIELDS
GN- REAL (*) NORTHERN POLAR STEREOGRAPHIC FIELDS
GS- REAL (*) SOUTHERN POLAR STEREOGRAPHIC FIELDS

SUBPROGRAMS CALLED:

  • sptran() Perform a scalar spherical transform
  • sptgps() Transform spectral scalar to polar stereo.
  • ncpus() Gets environment number of cpus

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

Definition at line 71 of file sptruns.f.

References ncpus(), sptgps(), and sptran().

Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().