[3331] | 1 | MODULE YOMPRAD |
---|
| 2 | |
---|
| 3 | USE PARKIND1 ,ONLY : JPIM ,JPRB |
---|
| 4 | |
---|
| 5 | IMPLICIT NONE |
---|
| 6 | |
---|
| 7 | SAVE |
---|
| 8 | |
---|
| 9 | !---------------------------------------------------------------- |
---|
| 10 | !* new radiation grid data structures |
---|
| 11 | !---------------------------------------------------------------- |
---|
| 12 | |
---|
| 13 | ! NRESOL_ID : transformation package resolution identifier |
---|
| 14 | ! NSMAX : spectral truncation |
---|
| 15 | ! NASM0 : address in a spectral array of (m, n=m) |
---|
| 16 | ! MYMS : actual wave numbers handled by this processor |
---|
| 17 | ! NDGLG : number of latitude rows |
---|
| 18 | ! NDLON : length of a row of latitude near equator |
---|
| 19 | ! NDGSAL : Local version of NDGSA , always 1 |
---|
| 20 | ! NDGENL : Number of latitude rows for which this process has grid points |
---|
| 21 | ! NDGSAH : 1-NROWIDE |
---|
| 22 | ! NDGENH : NDGENL+NROWIDE |
---|
| 23 | ! NDGSAG : Global version of NDGSA |
---|
| 24 | ! NDGENG : Global version of NDGEN |
---|
| 25 | ! NDSUR1 : over dimensioning of NDLON for technical reasons (at least 2) |
---|
| 26 | ! NDLSUR : NDLON+NDSUR1 |
---|
| 27 | ! NDGSUR : number of additional rows at each pole for semi-lagrangian |
---|
| 28 | ! : interpolation |
---|
| 29 | ! MYFRSTACTLAT : first actual lat on this PE in grid-point space, |
---|
| 30 | ! : it is nfrstlat(my_region_ns) |
---|
| 31 | ! MYLSTACTLAT : last actual lat on this PE in grid-point space, |
---|
| 32 | ! : it is nlstlat(my_region_ns) |
---|
| 33 | ! NGPTOT : number of local grid points |
---|
| 34 | ! NGPTOTG : total number of grid points |
---|
| 35 | ! NRGRI : number of grid points on a latitude row |
---|
| 36 | ! NLOENG : as above but extended at poles for SL interpolation |
---|
| 37 | ! GELAM : radiation grid geographic longitude "lambda" |
---|
| 38 | ! GELAT : radiation grid geographic latitude "theta" |
---|
| 39 | ! GESLO : sine of geographic longitude "sin(lambda)" |
---|
| 40 | ! GECLO : cosine of geographic longitude "cos(lambda) |
---|
| 41 | ! GEMU : sine of geographic latitude "sin(theta)" |
---|
| 42 | ! RMU : mu sin(theta) |
---|
| 43 | ! RSQM2 : SQRT(R1MU2) cos(theta) |
---|
| 44 | ! RLATIG : arcsin(mu) theta GLOBAL VIEW |
---|
| 45 | ! RLATI : arcsin(mu) theta |
---|
| 46 | ! RIPI0 : bi-cubic interpolation coefficients |
---|
| 47 | ! RIPI1 : bi-cubic interpolation coefficients |
---|
| 48 | ! RIPI2 : bi-cubic interpolation coefficients |
---|
| 49 | |
---|
| 50 | TYPE RADIATION_GRID_STRUCT |
---|
| 51 | INTEGER(KIND=JPIM) :: NRESOL_ID, NGPTOT, NGPTOTG, & |
---|
| 52 | & NGPTOTMX, NSPEC2, NSMAX, & |
---|
| 53 | & NPTRFLOFF, NUMP, NDLON, & |
---|
| 54 | & NDGSAL, NDGENL, NDGSAH, NDGENH, & |
---|
| 55 | & NDGLG, NDGSAG, NDGENG, NDLSUR, & |
---|
| 56 | & NFRSTLOFF, NDSUR1,NDGSUR, & |
---|
| 57 | & MYFRSTACTLAT, MYLSTACTLAT |
---|
| 58 | INTEGER(KIND=JPIM), POINTER, DIMENSION(:) :: NRGRI, NLOENG, NPTRFRSTLAT, NFRSTLAT, & |
---|
| 59 | & NLSTLAT, MYMS, NASM0 |
---|
| 60 | INTEGER(KIND=JPIM), POINTER, DIMENSION(:,:) :: NSTA, NONL |
---|
| 61 | REAL(KIND=JPRB), POINTER, DIMENSION(:) :: GELAM, GELAT, GECLO, GESLO, GEMU, & |
---|
| 62 | & RMU, RSQM2, RLATIG, RLATI, & |
---|
| 63 | & RIPI0, RIPI1, RIPI2 |
---|
| 64 | END TYPE RADIATION_GRID_STRUCT |
---|
| 65 | |
---|
| 66 | TYPE(RADIATION_GRID_STRUCT) :: RADGRID |
---|
| 67 | |
---|
| 68 | !---------------------------------------------------------------- |
---|
| 69 | !* radiation on demand comms data structures |
---|
| 70 | !---------------------------------------------------------------- |
---|
| 71 | |
---|
| 72 | LOGICAL :: LRADONDEM |
---|
| 73 | LOGICAL :: LRADONDEM_ACTIVE |
---|
| 74 | INTEGER(KIND=JPIM) :: NFIXRADFLD(2) |
---|
| 75 | INTEGER(KIND=JPIM),ALLOCATABLE :: MASK_RI1(:) |
---|
| 76 | INTEGER(KIND=JPIM),ALLOCATABLE :: MASK_RI2(:) |
---|
| 77 | INTEGER(KIND=JPIM),ALLOCATABLE :: MASK_RO1(:) |
---|
| 78 | INTEGER(KIND=JPIM),ALLOCATABLE :: MASK_RO2(:) |
---|
| 79 | |
---|
| 80 | !---------------------------------------------------------------- |
---|
| 81 | !* radiation interpolation/load balancing data structures |
---|
| 82 | !---------------------------------------------------------------- |
---|
| 83 | |
---|
| 84 | ! NRIRINT : INTERPOLATION INTERVAL FOR LOCAL LATITUDES |
---|
| 85 | ! NRFRSTOFF: OFFSET TO FIRST COURSE POINT FROM FIRST FINE POINT |
---|
| 86 | ! NRLASTOFF: OFFSET TO FIRST COURSE POINT FROM LAST FINE POINT |
---|
| 87 | ! NRIMAX : NUMBER OF COURSE POINTS FOR LOCAL LATITUDES |
---|
| 88 | ! NRIMAXT : TOTAL NUMBER OF COURSE POINTS IN THIS PROCESSOR |
---|
| 89 | ! NRIMAXLT : TOTAL NUMBER OF COURSE POINTS TO BE PROCESSED BY THIS PROC |
---|
| 90 | ! NRLPRCS : NUMBER OF PROCESSORS REQUIRED FOR LOAD BALANCING |
---|
| 91 | ! NRIMAXLA : LOAD BALANCING DATA - SETA OF PROCESSOR TO COMMUNICATE WITH |
---|
| 92 | ! NRIMAXLB : LOAD BALANCING DATA - SETB OF PROCESSOR TO COMMUNICATE WITH |
---|
| 93 | ! NRIMAXLN : LOAD BALANCING DATA - NUMBER OF COURSE POINTS TO SND/RCV |
---|
| 94 | ! NRCNEEDW : NUMBER OF COURSE POINTS NEEDED ON WESTERN END OF LOCAL LATS |
---|
| 95 | ! NRCNEEDE : NUMBER OF COURSE POINTS NEEDED ON EASTERN END OF LOCAL LATS |
---|
| 96 | ! NRCSNDW : NUMBER OF WESTERN COURSE POINTS TO SEND TO LOCAL PROCS |
---|
| 97 | ! NRCSNDE : NUMBER OF EASTERN COURSE POINTS TO SEND TO LOCAL PROCS |
---|
| 98 | ! NRCRCVW : NUMBER OF WESTERN COURSE POINTS TO RCV FROM LOCAL PROCS |
---|
| 99 | ! NRCRCVE : NUMBER OF WESTERN COURSE POINTS TO RCV FROM LOCAL PROCS |
---|
| 100 | ! NRCSNDT : TOTAL NUMBER OF COURSE POINTS TO SEND TO LOCAL PROCESSORS |
---|
| 101 | ! NRCRCVT : TOTAL NUMBER OF COURSE POINTS TO RCV FROM LOCAL PROCESSORS |
---|
| 102 | ! NRCRCVWO : OFFSET OF WESTERN BOUNDARY COURSE POINTS IN BOUNDARY ARRAY |
---|
| 103 | ! NRCRCVEO : OFFSET OF EASTERN BOUNDARY COURSE POINTS IN BOUNDARY ARRAY |
---|
| 104 | |
---|
| 105 | ! LODBGRADI: DEBUGGING FLAG, EACH PROCESSOR WILL DUMP ABOVE INFO TO A |
---|
| 106 | ! PER PROCESSOR FILE CALLED 'debug_aaa_bbb' |
---|
| 107 | ! where aaa=my_region_ns and bbb=my_region_ew |
---|
| 108 | ! LODBGRADL: DEBUGGING FLAG, EACH PROCESSOR WILL DUMP LOAD BALANCING |
---|
| 109 | ! ARRAYS as above |
---|
| 110 | |
---|
| 111 | ! NRLBCHUNKS: NUMBER OF BLOCKING LOOPS FOR LOAD-BALANCING COMMS |
---|
| 112 | ! NRLRCHUNKS: NUMBER OF BLOCKING LOOPS FOR LOAD-BALANCING COMMS (RESTORING) |
---|
| 113 | ! NRLBPOINTS: MAX NUMBER OF POINTS FOR LOAD-BALANCING COMMS |
---|
| 114 | ! NRLRPOINTS: MAX NUMBER OF POINTS FOR LOAD-BALANCING COMMS (RESTORING) |
---|
| 115 | ! NRLBDATA : NUMBER OF DATA VALUES PER LOAD-BALANCING POINT |
---|
| 116 | ! NRLRDATA : NUMBER OF DATA VALUES PER LOAD-BALANCING POINT (RESTORING) |
---|
| 117 | |
---|
| 118 | LOGICAL :: LODBGRADI |
---|
| 119 | LOGICAL :: LODBGRADL |
---|
| 120 | INTEGER(KIND=JPIM) :: NRLBCHUNKS |
---|
| 121 | INTEGER(KIND=JPIM) :: NRLRCHUNKS |
---|
| 122 | INTEGER(KIND=JPIM) :: NRLBPOINTS |
---|
| 123 | INTEGER(KIND=JPIM) :: NRLRPOINTS |
---|
| 124 | INTEGER(KIND=JPIM) :: NRLBDATA |
---|
| 125 | INTEGER(KIND=JPIM) :: NRLRDATA |
---|
| 126 | INTEGER(KIND=JPIM), PARAMETER :: JPMAXLOADP=32 |
---|
| 127 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRIRINT(:) |
---|
| 128 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRFRSTOFF(:,:) |
---|
| 129 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRLASTOFF(:,:) |
---|
| 130 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRIMAX(:,:) |
---|
| 131 | INTEGER(KIND=JPIM) :: NRIMAXT |
---|
| 132 | INTEGER(KIND=JPIM) :: NRIMAXLT |
---|
| 133 | INTEGER(KIND=JPIM) :: NRLPRCS |
---|
| 134 | INTEGER(KIND=JPIM) :: NRIMAXLA(JPMAXLOADP) |
---|
| 135 | INTEGER(KIND=JPIM) :: NRIMAXLB(JPMAXLOADP) |
---|
| 136 | INTEGER(KIND=JPIM) :: NRIMAXLN(JPMAXLOADP) |
---|
| 137 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRCNEEDW(:,:) |
---|
| 138 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRCNEEDE(:,:) |
---|
| 139 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRCSNDW(:,:,:) |
---|
| 140 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRCSNDE(:,:,:) |
---|
| 141 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRCRCVW(:,:,:) |
---|
| 142 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRCRCVE(:,:,:) |
---|
| 143 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRCSNDT(:,:) |
---|
| 144 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRCRCVT(:,:) |
---|
| 145 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRCRCVWO(:,:,:) |
---|
| 146 | INTEGER(KIND=JPIM),ALLOCATABLE:: NRCRCVEO(:,:,:) |
---|
| 147 | !$OMP THREADPRIVATE(lodbgradi,lodbgradl,lradondem,lradondem_active,nfixradfld,nrimaxla,nrimaxlb) |
---|
| 148 | !$OMP THREADPRIVATE(nrimaxln,nrimaxlt,nrimaxt,nrlbchunks,nrlbdata,nrlbpoints,nrlprcs,nrlrchunks) |
---|
| 149 | !$OMP THREADPRIVATE(nrlrdata,nrlrpoints,radgrid) |
---|
| 150 | !$OMP THREADPRIVATE(mask_ri1,mask_ri2,mask_ro1,mask_ro2,nrcneede,nrcneedw,nrcrcve,nrcrcveo,nrcrcvt) |
---|
| 151 | !$OMP THREADPRIVATE(nrcrcvw,nrcrcvwo,nrcsnde,nrcsndt,nrcsndw,nrfrstoff,nrimax,nrirint,nrlastoff) |
---|
| 152 | END MODULE YOMPRAD |
---|