LMDZ
yomprad.F90
Go to the documentation of this file.
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 
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 
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
integer(kind=jpim), dimension(:), allocatable mask_ro2
Definition: yomprad.F90:78
type(radiation_grid_struct) radgrid
Definition: yomprad.F90:66
integer(kind=jpim), dimension(:,:,:), allocatable nrcsndw
Definition: yomprad.F90:139
integer(kind=jpim), dimension(:,:), allocatable nrcneedw
Definition: yomprad.F90:137
integer(kind=jpim), dimension(:,:), allocatable nrcrcvt
Definition: yomprad.F90:144
integer(kind=jpim) nrimaxt
Definition: yomprad.F90:131
logical lodbgradl
Definition: yomprad.F90:119
integer(kind=jpim), dimension(:,:,:), allocatable nrcrcveo
Definition: yomprad.F90:146
integer(kind=jpim) nrlbdata
Definition: yomprad.F90:124
integer(kind=jpim) nrlrdata
Definition: yomprad.F90:125
integer(kind=jpim), dimension(:), allocatable mask_ri1
Definition: yomprad.F90:75
integer(kind=jpim), dimension(:), allocatable mask_ri2
Definition: yomprad.F90:76
integer(kind=jpim), dimension(:,:), allocatable nrlastoff
Definition: yomprad.F90:129
logical lradondem
Definition: yomprad.F90:72
integer(kind=jpim), dimension(jpmaxloadp) nrimaxla
Definition: yomprad.F90:134
integer(kind=jpim), dimension(:), allocatable mask_ro1
Definition: yomprad.F90:77
integer(kind=jpim), dimension(:,:), allocatable nrcneede
Definition: yomprad.F90:138
integer, parameter jprb
Definition: parkind1.F90:31
integer(kind=jpim), dimension(:,:,:), allocatable nrcsnde
Definition: yomprad.F90:140
integer(kind=jpim) nrlprcs
Definition: yomprad.F90:133
integer(kind=jpim), dimension(:,:,:), allocatable nrcrcvw
Definition: yomprad.F90:141
logical lradondem_active
Definition: yomprad.F90:73
integer(kind=jpim), parameter jpmaxloadp
Definition: yomprad.F90:126
integer(kind=jpim), dimension(jpmaxloadp) nrimaxln
Definition: yomprad.F90:136
integer(kind=jpim), dimension(jpmaxloadp) nrimaxlb
Definition: yomprad.F90:135
integer(kind=jpim), dimension(2) nfixradfld
Definition: yomprad.F90:74
integer(kind=jpim), dimension(:,:,:), allocatable nrcrcve
Definition: yomprad.F90:142
logical lodbgradi
Definition: yomprad.F90:118
integer(kind=jpim) nrlbpoints
Definition: yomprad.F90:122
integer(kind=jpim) nrlbchunks
Definition: yomprad.F90:120
integer, parameter jpim
Definition: parkind1.F90:13
integer(kind=jpim) nrlrchunks
Definition: yomprad.F90:121
integer(kind=jpim) nrlrpoints
Definition: yomprad.F90:123
integer(kind=jpim), dimension(:,:), allocatable nrimax
Definition: yomprad.F90:130
integer(kind=jpim), dimension(:,:,:), allocatable nrcrcvwo
Definition: yomprad.F90:145
integer(kind=jpim), dimension(:,:), allocatable nrcsndt
Definition: yomprad.F90:143
integer(kind=jpim) nrimaxlt
Definition: yomprad.F90:132
integer(kind=jpim), dimension(:), allocatable nrirint
Definition: yomprad.F90:127
integer(kind=jpim), dimension(:,:), allocatable nrfrstoff
Definition: yomprad.F90:128