source: LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/yomdim.F90 @ 5441

Last change on this file since 5441 was 2010, checked in by Laurent Fairhead, 11 years ago

Modifications pour OpenMP


OpenMP modifications

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 9.3 KB
Line 
1MODULE YOMDIM
2
3USE PARKIND1  ,ONLY : JPIM     ,JPRB
4
5IMPLICIT NONE
6
7SAVE
8
9!     ------------------------------------------------------------------
10
11!*    Dimensions of model working arrays
12
13! === COLLOCATION GRID OF THE DYNAMICS ========================================
14
15! NDGLG  : number of rows of latitudes
16! NDGLL  : number of rows of latitudes for which this process is
17!          performing Fourier Space calculations
18! NDGNH  : number of rows in the northern hemisphere
19! NDGSUR : number of additional rows at each pole for horizontal
20!          interpolations.
21! NDGSAG = -NDGSUR+1
22! NDGSAL = Local version of NDGSAG.
23! NDGSAH = 1-NSLWIDE in DM version.
24! NDGSAFPH=1-NFPWIDE in DM version.
25! NDGENG = NDGLG+NDGSUR
26! NDGENL = Number of latitude rows for which this process has grid
27!          point calculations to perform.
28! NDGENH = NDGENL+NSLWIDE in DM version.
29! NDGENFPH=NDGENL+NFPWIDE in DM version.
30! NDGUNG : first row of the area of interest in Aladin
31!        = NDGSAG in the global model
32! NDGUXG : last  row of the area of interest in Aladin
33!        = NDGENG in the global model
34! NDGUNL : local first row in C+I zone in distributed memory Aladin
35! NDGUXL : local last row in C+I zone in distributed memory Aladin
36! NDLON  : length of a row of latitude near equator
37! NDSUR1 : over dimensioning of NDLON for technical reasons (at least 2)
38! NDLSUR = NDLON+NDSUR1
39! NDLSM  = NDLSUR-1
40! NDLUNG : first meridian of the area of interest in Aladin
41!        = 1 in the global model
42! NDLUXG : last  meridian of the area of interest in Aladin
43!        = NDLON in the global model
44! NDLUNL : local first meridian in C+I zone in distributed memory Aladin
45! NDLUXL : local last meridian in C+I zone in distributed memory Aladin
46! NPROMA : working dimension for grid-point computations
47! NPROMB : working dimension for a 2nd call to DMN physics
48! NPROMC : working dimension for a 2nd call to DMN physics
49! NPROME : working dimension for ECMWF physics computations
50! NPROMM : working dimension for DMN   physics computations
51! NPROMNH: working dimension for non hydrostatic
52! NPROMNH_GWADV: working dimension for non hydrostatic (arrays used only
53!          when LGWADV=T)
54! NPROMP : working dimension for physics computations
55! NPROMV : working dimension for variational gridpoint fields
56! NPROMVC: working dimension for some additional grid-point arrays
57!          used only when "lvercor=.T.".
58! NGPBLKS: number of grid point NPROMA-blocks.
59! LOPTPROMA : .TRUE. NPROMA will be optimised
60!           : .FALSE. NPROMA will not be optimised (forced by
61!           : negative NPROMA in namelist)
62
63INTEGER(KIND=JPIM) :: NDGLG
64INTEGER(KIND=JPIM) :: NDGLL
65INTEGER(KIND=JPIM) :: NDGNH
66INTEGER(KIND=JPIM) :: NDGSUR
67INTEGER(KIND=JPIM) :: NDGSAG
68INTEGER(KIND=JPIM) :: NDGSAL
69INTEGER(KIND=JPIM) :: NDGSAH
70INTEGER(KIND=JPIM) :: NDGSAFPH
71INTEGER(KIND=JPIM) :: NDGENG
72INTEGER(KIND=JPIM) :: NDGENL
73INTEGER(KIND=JPIM) :: NDGENH
74INTEGER(KIND=JPIM) :: NDGENFPH
75INTEGER(KIND=JPIM) :: NDGUNG
76INTEGER(KIND=JPIM) :: NDGUXG
77INTEGER(KIND=JPIM) :: NDGUNL
78INTEGER(KIND=JPIM) :: NDGUXL
79INTEGER(KIND=JPIM) :: NDLON
80INTEGER(KIND=JPIM) :: NDSUR1
81INTEGER(KIND=JPIM) :: NDLSUR
82INTEGER(KIND=JPIM) :: NDLSM
83INTEGER(KIND=JPIM) :: NDLUNG
84INTEGER(KIND=JPIM) :: NDLUXG
85INTEGER(KIND=JPIM),ALLOCATABLE:: NDLUNL(:,:)
86INTEGER(KIND=JPIM),ALLOCATABLE:: NDLUXL(:,:)
87INTEGER(KIND=JPIM) :: NPROMA
88INTEGER(KIND=JPIM) :: NPROMB
89INTEGER(KIND=JPIM) :: NPROMC
90INTEGER(KIND=JPIM) :: NPROME
91INTEGER(KIND=JPIM) :: NPROMM
92INTEGER(KIND=JPIM) :: NPROMNH
93INTEGER(KIND=JPIM) :: NPROMNH_GWADV
94INTEGER(KIND=JPIM) :: NPROMP
95INTEGER(KIND=JPIM) :: NPROMV
96INTEGER(KIND=JPIM) :: NPROMVC
97INTEGER(KIND=JPIM) :: NGPBLKS
98LOGICAL :: LOPTPROMA
99
100! === VERTICAL RESOLUTION =====================================================
101
102! NFLEVG : number of levels in grid point space
103! NFLEVL : number of levels in Fourier and Legendre space
104! NFLEVLMX : maximum NFLEVL among all PEs
105! NFLSUR : over dimensioning of NFLEVL for technical reasons, always odd
106! NFLSUL : number of additional levels for semi-lagrangian
107! NFLSA  = 1    -NFLSUL
108! NFLEN  = NFLEVG+NFLSUL
109
110INTEGER(KIND=JPIM) :: NFLEVL
111INTEGER(KIND=JPIM) :: NFLEVLMX
112INTEGER(KIND=JPIM) :: NFLEVG
113INTEGER(KIND=JPIM) :: NFLSUR
114INTEGER(KIND=JPIM) :: NFLSUL
115INTEGER(KIND=JPIM) :: NFLSA
116INTEGER(KIND=JPIM) :: NFLEN
117
118! === NUMBER OF FIELDS ========================================================
119
120! NFTHER : number of spectral thermodynamic variables
121! NFAUX  : number of auxillary variables in t+dt array
122! NF3D   = number of 3D fields in the state of the model
123! NFD2D  : number of 2D fields in the dynamics
124! NFC2D  : number of 2D fields in the boundaries
125! NPPM   : Number of interpolation methods in post-processing
126! NFPPYX : Maximum number of modern dyn.met. post-processed fields
127! NFPPYE : as long as SUPP is called after SUDIM/SUALLO,
128!            NFPPYE = 1, if LMDYPP = .FALSE. (after SUALLO)
129!            NFPPYE = NFPPYX if LMDYPP = .TRUE., but it could become more flex
130! NFGPNH : number of (3D) fields in non hydrostatic gridpoint
131! NS3D   : number of 3D fields in spectral space
132! NS2D   : number of 2D fields in spectral space
133! NS1D   : number of 1D fields in spectral space (for Aladin consistency -CF)
134! NSAUX  : dimension of auxillary array == NFAUX
135
136INTEGER(KIND=JPIM) :: NFTHER
137INTEGER(KIND=JPIM) :: NFAUX
138INTEGER(KIND=JPIM) :: NF3D
139INTEGER(KIND=JPIM) :: NFD2D
140INTEGER(KIND=JPIM) :: NFC2D
141INTEGER(KIND=JPIM) :: NPPM
142INTEGER(KIND=JPIM) :: NFPPYX
143INTEGER(KIND=JPIM) :: NFPPYE
144INTEGER(KIND=JPIM) :: NFGPNH
145INTEGER(KIND=JPIM) :: NS3D
146INTEGER(KIND=JPIM) :: NS2D
147INTEGER(KIND=JPIM) :: NS1D
148INTEGER(KIND=JPIM) :: NSAUX
149
150! === GRID POINT ARRAYS =======================================================
151
152! LVOR  : controls the allocation of vorticity
153! LADER : controls the allocation of vor div and derivatives
154! LUVDER: controls the allocation of derivatives for u and v
155! LSPT  : .TRUE. if temperature variable as spectral field
156
157LOGICAL :: LVOR
158LOGICAL :: LADER
159LOGICAL :: LUVDER
160LOGICAL :: LSPT
161
162! === SPECTRAL SPACE ==========================================================
163
164! NSMAX  : truncation order
165! NMSMAX  : truncation order in longitude
166! NVARMAX: truncation order in 3d-var distributed direction
167!          this is a priori longitude, so that nvarmax = nsmax in Arp/IFS
168!          and nvarmax = nmsmax in Aladin
169! NSEFRE : number of degrees of freedom in the spectral space
170! NSPECG : number of complex spectral coefficients (global)
171! NSPEC2G = 2*NSPECG
172! NSPEC  : number of complex spectral coefficients (local, i.e. on this PE)
173! NSPEC2 = 2*NSPEC
174! NSPEC2MX : maximun NSPEC2 among all PEs
175! NSMIN  : lower troncature for configurations 911 and 912.
176! NTCMAX : truncation order for transmission coefficients.
177! NMTCMAX: truncation order for transmission coefficients in longitude.
178! NCMAX  : upper trunc. order for dilatation matrices (used in TRAGEO, fullpos)
179! NCPEC  : number of complex spectral coefficients for truncation NCMAX (local)
180! NCPEC2 : 2*NCPEC, where NCPEC (local)
181! NXMAX  : truncation order for NMI
182! NXPECG : number of complex spectral coefficients for NMI (global)
183! NXPEC  : number of complex spectral coefficients for NMI (local)
184! NTMAX  : truncation order for tendencies (on n, m<= NSMAX)
185! NTPEC2 : 2*'number of complex spectral coefficients' for tendencies
186
187INTEGER(KIND=JPIM) :: NSMAX
188INTEGER(KIND=JPIM) :: NMSMAX
189INTEGER(KIND=JPIM) :: NVARMAX
190INTEGER(KIND=JPIM) :: NSEFRE
191INTEGER(KIND=JPIM) :: NSPECG
192INTEGER(KIND=JPIM) :: NSPEC2G
193INTEGER(KIND=JPIM) :: NSPEC
194INTEGER(KIND=JPIM) :: NSPEC2
195INTEGER(KIND=JPIM) :: NSPEC2MX
196INTEGER(KIND=JPIM) :: NSMIN
197INTEGER(KIND=JPIM) :: NTCMAX
198INTEGER(KIND=JPIM) :: NMTCMAX
199INTEGER(KIND=JPIM) :: NCMAX
200INTEGER(KIND=JPIM) :: NCPEC
201INTEGER(KIND=JPIM) :: NCPEC2
202INTEGER(KIND=JPIM) :: NXMAX
203INTEGER(KIND=JPIM) :: NXPECG
204INTEGER(KIND=JPIM) :: NXPEC
205INTEGER(KIND=JPIM) :: NTMAX
206INTEGER(KIND=JPIM) :: NTPEC2
207
208! === DISTRIBUTED MEMORY DIMENSIONS ===========================================
209
210! NUMP  :  Number of spectral waves handled by this processor
211! NUMXP :  Same as NUMP, but related to NXMAX
212! NUMCP :  Same as NUMP, but related to NCMAX
213! NUMTP :  Same as NUMP, but related to NTMAX
214
215INTEGER(KIND=JPIM) :: NUMP
216INTEGER(KIND=JPIM) :: NUMXP
217INTEGER(KIND=JPIM) :: NUMCP
218INTEGER(KIND=JPIM) :: NUMTP
219
220! === OTHER QUANTITIES ========================================================
221
222! NRLEVX: dimension of NVAUTF in YOMGEM.
223! NUNDEFLD: index value for unused/undefined fields (default=-9999)
224!         : should be set to 1 when using compiler subscript checking
225
226INTEGER(KIND=JPIM) :: NRLEVX
227INTEGER(KIND=JPIM) :: NUNDEFLD
228
229!     ------------------------------------------------------------------
230!$OMP THREADPRIVATE(lader,loptproma,lspt,luvder,lvor,ncmax,ncpec,ncpec2,ndgenfph)
231!$OMP THREADPRIVATE(ndgeng,ndgenh,ndgenl,ndglg,ndgll,ndgnh,ndgsafph,ndgsag,ndgsah)
232!$OMP THREADPRIVATE(ndgsal,ndgsur,ndgung,ndgunl,ndguxg,ndguxl,ndlon,ndlsm,ndlsur)
233!$OMP THREADPRIVATE(ndlung,ndluxg,ndsur1,nf3d,nfaux,nfc2d,nfd2d,nfgpnh,nflen,nflevg)
234!$OMP THREADPRIVATE(nflevl,nflevlmx,nflsa,nflsul,nflsur,nfppye,nfppyx,nfther,ngpblks)
235!$OMP THREADPRIVATE(nmsmax,nmtcmax,nppm,nproma,npromb,npromc,nprome,npromm,npromnh)
236!$OMP THREADPRIVATE(npromnh_gwadv,npromp,npromv,npromvc,nrlevx,ns1d,ns2d,ns3d,nsaux)
237!$OMP THREADPRIVATE(nsefre,nsmax,nsmin,nspec,nspec2,nspec2g,nspec2mx,nspecg,ntcmax,ntmax)
238!$OMP THREADPRIVATE(ntpec2,numcp,nump,numtp,numxp,nundefld,nvarmax,nxmax,nxpec,nxpecg)
239!$OMP THREADPRIVATE(ndlunl,ndluxl)
240END MODULE YOMDIM
Note: See TracBrowser for help on using the repository browser.