1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
C Copyright 1981-2007 ECMWF
C
C Licensed under the GNU Lesser General Public License which
C incorporates the terms and conditions of version 3 of the GNU
C General Public License.
C See LICENSE and gpl-3.0.txt for details.
C
SUBROUTINE NMAKGG( KTRUNC, KNEXT, PLAT, KNUM, PLEG, KRET)
C
C---->
C**** NMAKGG
C
C PURPOSE
C _______
C
C This routine creates legendre functions for latitude rows from
C the given latitude.
C
C INTERFACE
C _________
C
C CALL NMAKGG( KTRUNC, KNEXT, PLAT, KNUM, PLEG, KRET)
C
C Input parameters
C ________________
C
C KTRUNC - Truncation.
C KNEXT - Index (in PLAT) of next latitude at which to start
C PLAT - Array of gaussian latitudes
C KNUM - Number of latitudes to produce
C
C Output parameters
C ________________
C
C PLEG - Array of legendre functions for the latitude.
C KRET - Return status code
C 0 = OK
C
C Common block usage
C __________________
C
C JDCNDBG
C
C Method
C ______
C
C See below.
C
C Externals
C _________
C
C INTLOG - Output log message
C INTLOGR - Output log message (with real value)
C
C Reference
C _________
C
C None.
C
C Comments
C ________
C
C None at present.
C
C AUTHOR
C ______
C
C J.D.Chambers *ECMWF* June 1999
C
C MODIFICATIONS
C _____________
C
C None.
C
C----<
C
IMPLICIT NONE
C
#include "jparams.h"
#include "parim.h"
C
C Parameters
C
INTEGER JPROUTINE
PARAMETER ( JPROUTINE = 30500 )
C
C Subroutine arguments
C
INTEGER KTRUNC, KNEXT, KRET, KNUM
REAL PLEG, PLAT
DIMENSION PLEG(*), PLAT(*)
C
C Local variables
C
INTEGER NEXT, ILAT
REAL ALAT, DEG2RAD
C
C _______________________________________________________
C
C* Section 1. Initialization.
C _______________________________________________________
C
100 CONTINUE
C
IF ( NDBG .GT. 1) THEN
CALL INTLOG(JP_DEBUG,'NMAKGG: Input parameters:',JPQUIET)
CALL INTLOG(JP_DEBUG,'NMAKGG: Truncation = ', KTRUNC)
CALL INTLOG(JP_DEBUG,'NMAKGG: Number of latitudes = ', KNUM)
CALL INTLOG(JP_DEBUG, 'NMAKGG: Next latitude = ', KNEXT)
CALL INTLOGR(JP_DEBUG, 'NMAKGG: Lat.in degrees = ', PLAT(KNEXT))
ENDIF
C
C _______________________________________________________
C
C* Section 2. Processing.
C _______________________________________________________
C
DEG2RAD = PPI / 180.0
C
NEXT = 1
DO ILAT = 1, KNUM
ALAT = PLAT(KNEXT+ILAT-1) * DEG2RAD
C
IF ( NDBG .GT. 1) CALL INTLOGR(JP_DEBUG,
X 'NMAKGG: Next latitude constructed = ', ALAT)
C
CALL JSPLEG1( PLEG(NEXT), ALAT, KTRUNC)
NEXT = NEXT + (KTRUNC+1)*(KTRUNC+4)/2
ENDDO
C _______________________________________________________
C
C* Section 9. Return to calling routine. Format statements
C _______________________________________________________
C
900 CONTINUE
KRET = 0
C
990 CONTINUE
RETURN
END
|