source: LMDZ6/branches/IPSLCM6.0.13/libf/phylmd/rrtm/yomfpc.F90 @ 3040

Last change on this file since 3040 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: 10.7 KB
Line 
1MODULE YOMFPC
2
3USE PARKIND1  ,ONLY : JPIM     ,JPRB
4
5USE PARFPOS, ONLY : JPOS2DF  ,JPOS3DF  ,JPOS3H   ,JPOS3P   ,JPOS3PV  , &
6 & JPOS3S   ,JPOS3TH  ,JPOSCFU  ,JPOSDIR  ,JPOSLEN  ,JPOSDOM  , &
7 & JPOSSGP  ,JPOSXFU 
8
9IMPLICIT NONE
10
11SAVE
12
13!     ------------------------------------------------------------------
14
15!*    Scientific and technical variables
16
17! === TECHNICAL VARIABLES ===
18
19!     CFPDIR : prefix (path) for the output files
20!     CFPIDEN: identificator of the output files
21!     CFPFMT : format of the output files ('MODEL','GAUSS','LELAM' or 'LALON')
22!     CFPDOM, C1FPDOM : names of the subdomains
23!     CFP3DF, C1FP3DF : names 3D dynamics fields to compute
24!     CFP3DFS,C1FP3DFS: names 3D dynamics fields to compute on model levels
25!     CFP3DFP,C1FP3DFP: names 3D dynamics fields to compute on Pressure levels
26!     CFP3DFH,C1FP3DFH: names 3D dynamics fields to compute on H levels
27!     CFP3DFT,C1FP3DFT: names 3D dynamics fields to compute on THETA levels
28!     CFP3DFV,C1FP3DFV: names 3D dynamics fields to compute on PV levels
29!     CFP2DF, C1FP2DF : names 2D dynamics fields to compute
30!     CFPPHY, C1FPPHY : names of physical fields to be post-processed
31!     CFPCFU, C1FPCFU : names of cumulated fluxes fields to be post-processed
32!     CFPXFU, C1FPXFU : names of instantaneous fluxes fields to be post-proc
33!     Remark: C1FPXXX=CFPXXX(1)//CFPXXX(2)//...//CFPXXX(JPOSXXX)
34!      for XXX=DOM,3DF,2DF,PHY,CFU,XFU.
35
36!     Variables used for ECMWF
37
38!     MFP3DFS: Gribcodes of  3D dynamics fields to compute on model levels
39!     MFP3DFH: Gribcodes of  3D dynamics fields to compute on H levels
40!     MFP3DFT: Gribcodes of  3D dynamics fields to compute on THETA levels
41!     MFP3DFV: Gribcodes of  3D dynamics fields to compute on PV levels
42!     MFP3DFP: Gribcodes of  3D dynamics fields to compute on P levels
43!     MFP2DF : Gribcodes of  2D dynamics fields to compute
44!     MFPPHY : Gribcodes of  physical fields to processed
45
46!     RFP3P  : post-processing pressure levels
47!     RFP3H  : post-processing height (above orography) levels
48!     RFP3TH : post-processing potential temperature levels
49!     RFP3PV : post-processing potential vorticity levels
50!     NRFP3S : post-processing eta levels (CONF. 927 only)
51
52!     LFPCNT : control varying output variables according to time step
53!     LTRACEFP: trace for Full-POS
54!     NFPGRIB : level of GRIB coding in output file ARPEGE/ALADIN.
55!               0 : no packing at all
56!               1 : standart GRIB encoding
57!               2 : modified GRIB encoding
58
59!     NFPDOM : useful dimension of CFPDOM
60!     NFP3DF : useful dimension of CFP3DF
61!     NFP3DFS: useful dimension of CFP3DFS
62!     NFP3DFH: useful dimension of CFP3DFH
63!     NFP3DFT: useful dimension of CFP3DFT
64!     NFP3DFV: useful dimension of CFP3DFV
65!     NFP3DFP: useful dimension of CFP3DFP
66!     NFP2DF : useful dimension of CFP2DF
67!     NFPPHY : useful dimension of CFPPHY
68!     NFPCFU : useful dimension of CFPCFU
69!     NFPXFU : useful dimension of CFPXFU
70!     NFP3P  : useful dimension of RFP3P
71!     NFP3H  : useful dimension of RFP3H
72!     NFP3TH : useful dimension of RFP3TH
73!     NFP3PV : useful dimension of RFP3PV
74!     NFP3S  : useful dimension of NRFP3S
75!     NFPXLEV: max. number of pp. levels
76!     MFP3DYN : max. number of 3D-dynamic fields neeeded for LFPART2
77!     MFP2DYN : max. number of 2D-dynamic fields neeeded for LFPART2
78!     NFPDPHY : maximum number of physical fields
79
80!     The next keys force variables to be primitive for the post-processing :
81!     LFPNHPD : .TRUE. if pp of NH pressure departure
82!     LFPNHVD : .TRUE. if pp of NH vertical divergence
83!     LFPNHVW : .TRUE. if pp of NH true vertical velocity
84
85!     LFPLOSP : .TRUE. = Fill Ps array with Log(Ps)
86!     LFPRH100 : .TRUE. to convert relative humidity in percent
87
88! === SCIENTIFIC VARIABLES ===
89
90!     LFPSPEC: =.T. if pp. dyn. fields are written out as spectral coefficients
91!              =.F. if pp. dyn. fields are written out as grid point values.
92!     LFITP  : =1 if pp. fields on P levels should be fited ; =0 otherwise
93!     LFITT  : =1 if pp. fields on THETA levels should be fited ; =0 otherwise
94!     LFITV  : =1 if pp. fields on PV levels should be fited ; =0 otherwise
95
96!     NFPCLI : usage level for climatology
97!              =0 no climatology
98!              =1 orography and land-sea mask of output only
99!              =2 all available climatological fields of the current month
100!              =3 shifting mean from the climatological fields of the current
101!                 month to the ones of the closest month
102
103!     NFPINDYN : type of interpolations for dynamical fields
104!     NFPINPHY : type of interpolations for  physical fields
105!                4 for bilinear, 12 for quadratic
106
107!     LFPQ   : =.TRUE. if specific humidity is interpolated
108!            : =.FALSE. if relative humidity is interpolated
109!     LASQ   : =.TRUE. if ASQ set to 80% saturation
110
111!     WSXI   : max. surface moisture in input
112!     WDXI   : max. deep soil moisture in input
113!     WSXO   : max. surface moisture in output
114!     WDXO   : max. deep soil moisture in output
115
116!     FPBL   : Critical Thickness of PBL
117!     RFPCORR: Critical orography difference for correcting surface
118!              temperature through standart profile.
119!     RFPCSAB: Critical sand percentage difference for computing relative
120!              soil moisture in ISBA
121!     RFPCD2 : Critical soil depth difference for computing relative
122!              soil moisture in ISBA
123!     RFPVCAP: Minimum pressure of model level to provide an equatorial
124!              cap in the computation of variables on constant PV surfaces
125!     NFPLNPR : 0 => conventional formulation of (delta P) : ln(P(l)/P(l-1))
126!               1 => formulation of (delta P) used in non hydrostatic model,
127!                    i.e. (P(l)-P(l-1))/SQRT(P(l)*P(l-1))
128!     LFPMOIS: Month allowed for climatology usage :
129!               .F. => month of the model (forecast)
130!               .T. => month of the file
131!     NFPINCR : Bogussing indicator ; =0 for no bogussing ; =1 for bogussing
132!     NFPLAKE : To overwrite created lakes or islands by specific data :
133!               0 => do not overwrite
134!              -1 => overwrite with rhoughly interpolated data
135!              +1 => overwrite with climatology
136!     NFPCAPE : Kind of computation for CAPE & CIN :
137!               1 => from bottom model layer
138!               2 => from the most unstable layer
139!               3 => from mto standart height (2 meters) as recomputed values
140!               4 => from mto standart height (2 meters) out of fluxes
141!                    (used for analysis)
142!     NFPSURFEX : Subcontract surface fields to SURFEX
143!               0 => no subcontract
144!               1 => transform native arp/ald surface fields to surfex fields
145!                    and write out by surfex
146!     NFPMASK   : number of masks for the interpolation of surface fields
147!                 0 => no mask
148!                 1 => land-sea mask
149!                 2 => land mask, sea mask
150!     LMOCONVAR  : if true mocon is computed from N-1 level parameters (for varpack use)
151
152CHARACTER (LEN = JPOSDIR) ::  CFPDIR
153CHARACTER (LEN = 5) ::  CFPFMT
154CHARACTER (LEN = 8) ::  CFPIDEN
155CHARACTER (LEN = JPOSLEN) ::  CFPDOM(JPOSDOM)
156CHARACTER (LEN = 12) ::  CFP3DF(JPOS3DF)
157CHARACTER (LEN = 12) ::  CFP3DFS(JPOS3DF)
158CHARACTER (LEN = 12) ::  CFP3DFP(JPOS3DF)
159CHARACTER (LEN = 12) ::  CFP3DFH(JPOS3DF)
160CHARACTER (LEN = 12) ::  CFP3DFT(JPOS3DF)
161CHARACTER (LEN = 12) ::  CFP3DFV(JPOS3DF)
162CHARACTER (LEN = 16) ::  CFP2DF(JPOS2DF)
163CHARACTER (LEN = 16) ::  CFPPHY(JPOSSGP)
164CHARACTER (LEN = 16) ::  CFPCFU(JPOSCFU)
165CHARACTER (LEN = 16) ::  CFPXFU(JPOSXFU)
166CHARACTER (LEN = 12*JPOS3DF) :: C1FP3DF
167CHARACTER (LEN = 12*JPOS3DF) :: C1FP3DFS
168CHARACTER (LEN = 12*JPOS3DF) :: C1FP3DFP
169CHARACTER (LEN = 12*JPOS3DF) :: C1FP3DFH
170CHARACTER (LEN = 12*JPOS3DF) :: C1FP3DFT
171CHARACTER (LEN = 12*JPOS3DF) :: C1FP3DFV
172CHARACTER (LEN = 16*JPOS2DF) :: C1FP2DF
173CHARACTER (LEN = 16*JPOSSGP) :: C1FPPHY
174CHARACTER (LEN = 16*JPOSCFU) :: C1FPCFU
175CHARACTER (LEN = 16*JPOSXFU) :: C1FPXFU
176CHARACTER (LEN = JPOSLEN*JPOSDOM) :: C1FPDOM
177INTEGER(KIND=JPIM) :: MFP3DFS(JPOS3DF)
178INTEGER(KIND=JPIM) :: MFP3DFP(JPOS3DF)
179INTEGER(KIND=JPIM) :: MFP3DFH(JPOS3DF)
180INTEGER(KIND=JPIM) :: MFP3DFT(JPOS3DF)
181INTEGER(KIND=JPIM) :: MFP3DFV(JPOS3DF)
182INTEGER(KIND=JPIM) :: MFP2DF(JPOS2DF)
183INTEGER(KIND=JPIM) :: MFPPHY(JPOSSGP)
184
185REAL(KIND=JPRB) :: RFP3P(JPOS3P)
186REAL(KIND=JPRB) :: RFP3H(JPOS3H)
187REAL(KIND=JPRB) :: RFP3TH(JPOS3TH)
188REAL(KIND=JPRB) :: RFP3PV(JPOS3PV)
189INTEGER(KIND=JPIM) :: NRFP3S(JPOS3S)
190
191INTEGER(KIND=JPIM) :: NFPDOM
192INTEGER(KIND=JPIM) :: NFP3DF
193INTEGER(KIND=JPIM) :: NFP3DFS
194INTEGER(KIND=JPIM) :: NFP3DFP
195INTEGER(KIND=JPIM) :: NFP3DFH
196INTEGER(KIND=JPIM) :: NFP3DFT
197INTEGER(KIND=JPIM) :: NFP3DFV
198INTEGER(KIND=JPIM) :: NFP2DF
199INTEGER(KIND=JPIM) :: NFPPHY
200INTEGER(KIND=JPIM) :: NFPCFU
201INTEGER(KIND=JPIM) :: NFPXFU
202INTEGER(KIND=JPIM) :: NFP3P
203INTEGER(KIND=JPIM) :: NFP3H
204INTEGER(KIND=JPIM) :: NFP3TH
205INTEGER(KIND=JPIM) :: NFP3PV
206INTEGER(KIND=JPIM) :: NFP3S
207INTEGER(KIND=JPIM) :: NFPGRIB
208INTEGER(KIND=JPIM) :: NFPCLI
209INTEGER(KIND=JPIM) :: MFP3DYN
210INTEGER(KIND=JPIM) :: MFP2DYN
211INTEGER(KIND=JPIM) :: NFPLNPR
212INTEGER(KIND=JPIM) :: NFPINCR
213INTEGER(KIND=JPIM) :: NFPINDYN
214INTEGER(KIND=JPIM) :: NFPINPHY
215INTEGER(KIND=JPIM) :: NFPCAPE
216REAL(KIND=JPRB) :: WSXI
217REAL(KIND=JPRB) :: WDXI
218REAL(KIND=JPRB) :: WSXO
219REAL(KIND=JPRB) :: WDXO
220REAL(KIND=JPRB) :: FPBL
221REAL(KIND=JPRB) :: RFPCORR
222REAL(KIND=JPRB) :: RFPCSAB
223REAL(KIND=JPRB) :: RFPCD2
224REAL(KIND=JPRB) :: RFPVCAP
225LOGICAL :: LFPSPEC
226LOGICAL :: LFITP
227LOGICAL :: LFITT
228LOGICAL :: LFITV
229LOGICAL :: LFPQ
230LOGICAL :: LTRACEFP
231LOGICAL :: LFPCNT
232LOGICAL :: LASQ
233LOGICAL :: LFPNHPD
234LOGICAL :: LFPNHVD
235LOGICAL :: LFPNHVW
236LOGICAL :: LFPMOIS
237LOGICAL :: LFPLOSP
238LOGICAL :: LFPRH100
239LOGICAL :: LMOCONVAR
240INTEGER(KIND=JPIM) :: NFPLAKE
241INTEGER(KIND=JPIM) :: NFPXLEV
242INTEGER(KIND=JPIM) :: NFPDPHY
243INTEGER(KIND=JPIM) :: NFPSURFEX
244INTEGER(KIND=JPIM) :: NFPMASK
245!     ------------------------------------------------------------------
246!$OMP THREADPRIVATE(c1fp2df,c1fp3df,c1fp3dfh,c1fp3dfp,c1fp3dfs,c1fp3dft,c1fp3dfv,c1fpcfu,c1fpdom,c1fpphy,c1fpxfu)
247!$OMP THREADPRIVATE(cfp2df,cfp3df,cfp3dfh,cfp3dfp,cfp3dfs,cfp3dft,cfp3dfv,cfpcfu,cfpdir,cfpdom,cfpfmt,cfpiden)
248!$OMP THREADPRIVATE(cfpphy,cfpxfu,fpbl,lasq,lfitp,lfitt,lfitv,lfpcnt,lfplosp,lfpmois,lfpnhpd,lfpnhvd,lfpnhvw)
249!$OMP THREADPRIVATE(lfpq,lfprh100,lfpspec,lmoconvar,ltracefp,mfp2df,mfp2dyn,mfp3dfh,mfp3dfp,mfp3dfs,mfp3dft)
250!$OMP THREADPRIVATE(mfp3dfv,mfp3dyn,mfpphy,nfp2df,nfp3df,nfp3dfh,nfp3dfp,nfp3dfs,nfp3dft,nfp3dfv,nfp3h,nfp3p)
251!$OMP THREADPRIVATE(nfp3pv,nfp3s,nfp3th,nfpcape,nfpcfu,nfpcli,nfpdom,nfpdphy,nfpgrib,nfpincr,nfpindyn,nfpinphy)
252!$OMP THREADPRIVATE(nfplake,nfplnpr,nfpmask,nfpphy,nfpsurfex,nfpxfu,nfpxlev,nrfp3s,rfp3h,rfp3p,rfp3pv,rfp3th)
253!$OMP THREADPRIVATE(rfpcd2,rfpcorr,rfpcsab,rfpvcap,wdxi,wdxo,wsxi,wsxo)
254END MODULE YOMFPC
Note: See TracBrowser for help on using the repository browser.