|
NCEPLIBS-ip 5.3.0
|
Spectrally interpolate scalars to Mercator. More...
Go to the source code of this file.
Functions/Subroutines | |
| subroutine | sptrunm (iromb, maxwv, idrti, imaxi, jmaxi, kmax, mi, mj, iprime, iskipi, jskipi, kskipi, kgskip, niskip, njskip, jcpu, rlat1, rlon1, dlat, dlon, gridi, gm) |
| This subprogram spectrally truncates scalar fields on a global cylindrical grid, returning the fields to a Mercator grid. | |
| subroutine sptrunm | ( | iromb, | |
| maxwv, | |||
| idrti, | |||
| imaxi, | |||
| jmaxi, | |||
| kmax, | |||
| mi, | |||
| mj, | |||
| iprime, | |||
| iskipi, | |||
| jskipi, | |||
| kskipi, | |||
| kgskip, | |||
| niskip, | |||
| njskip, | |||
| jcpu, | |||
| rlat1, | |||
| rlon1, | |||
| dlat, | |||
| dlon, | |||
| real, dimension(*) | gridi, | ||
| real, dimension(*) | gm ) |
This subprogram spectrally truncates scalar 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.
| 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 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) |
| 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. |
| GRIDI | - REAL (*) INPUT GRID FIELDS |
| GM | - REAL (*) MERCATOR FIELDS |
SUBPROGRAMS CALLED:
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 76 of file sptrunm.f.
References ncpus(), sptgpm(), and sptran().
Referenced by spectral_interp_mod::polates4::polates4_grib1(), and spectral_interp_mod::polates4::polates4_grib2().