NCEPLIBS-ip  5.0.0
sptrunv.f File Reference

Spectrally truncate gridded vector fields. More...

Go to the source code of this file.

Functions/Subroutines

subroutine sptrunv (IROMB, MAXWV, IDRTI, IMAXI, JMAXI, IDRTO, IMAXO, JMAXO, KMAX, IPRIME, ISKIPI, JSKIPI, KSKIPI, ISKIPO, JSKIPO, KSKIPO, JCPU, GRIDUI, GRIDVI, LUV, GRIDUO, GRIDVO, LDZ, GRIDDO, GRIDZO, LPS, GRIDPO, GRIDSO)
 This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields to a possibly different global cylindrical grid. More...
 

Detailed Description

Spectrally truncate gridded vector fields.

Author
IREDELL
Date
96-02-29

Definition in file sptrunv.f.

Function/Subroutine Documentation

◆ sptrunv()

subroutine sptrunv (   IROMB,
  MAXWV,
  IDRTI,
  IMAXI,
  JMAXI,
  IDRTO,
  IMAXO,
  JMAXO,
  KMAX,
  IPRIME,
  ISKIPI,
  JSKIPI,
  KSKIPI,
  ISKIPO,
  JSKIPO,
  KSKIPO,
  JCPU,
real, dimension(*)  GRIDUI,
real, dimension(*)  GRIDVI,
logical  LUV,
real, dimension(*)  GRIDUO,
real, dimension(*)  GRIDVO,
logical  LDZ,
real, dimension(*)  GRIDDO,
real, dimension(*)  GRIDZO,
logical  LPS,
real, dimension(*)  GRIDPO,
real, dimension(*)  GRIDSO 
)

This subprogram spectrally truncates vector fields on a global cylindrical grid, returning the fields 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.

PROGRAM HISTORY LOG:

  • 96-02-29 IREDELL
  • 1998-12-15 IREDELL OPENMP DIRECTIVES INSERTED
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.
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)
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
GRIDUO- REAL (*) OUTPUT U-WINDS IF LUV (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
GRIDVO- REAL (*) OUTPUT V-WINDS IF LUV (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
GRIDDO- REAL (*) OUTPUT DIVERGENCES IF LDZ (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
GRIDZO- REAL (*) OUTPUT VORTICITIES IF LDZ (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
GRIDPO- REAL (*) OUTPUT POTENTIALS IF LPS (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)
GRIDSO- REAL (*) OUTPUT STREAMFCNS IF LPS (MAY OVERLAY INPUT FIELDS IF GRID SHAPE IS APPROPRIATE)

SUBPROGRAMS CALLED:

  • SPWGET() GET WAVE-SPACE CONSTANTS
  • SPLAPLAC() COMPUTE LAPLACIAN IN SPECTRAL SPACE
  • SPTRAN() PERFORM A SCALAR SPHERICAL TRANSFORM
  • SPTRANV() PERFORM A VECTOR SPHERICAL TRANSFORM
  • NCPUS() GETS ENVIRONMENT NUMBER OF CPUS

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

Definition at line 90 of file sptrunv.f.

References ncpus(), splaplac(), sptran(), sptranv(), and spwget().

Referenced by spectral_interp_mod::polatev4::polatev4_grib1(), and spectral_interp_mod::polatev4::polatev4_grib2().