LMDZ
suecrad15.F90
Go to the documentation of this file.
1 !OPTIONS XOPT(NOEVAL)
2 SUBROUTINE suecrad15 (KULOUT, KLEV, PETAH )
3 
4 !**** *SUECRAD15* - INITIALIZE COMMONS YOMRxx15 CONTROLLING RADIATION
5 !**** FROZEN VERSION (CYCLE 15) OF SUECRAD
6 
7 ! PURPOSE.
8 ! --------
9 ! INITIALIZE YOMRAD15, THE COMMON THAT CONTROLS THE
10 ! RADIATION OF THE MODEL, AND YOMRDU15 THAT INCLUDES
11 ! ADJUSTABLE PARAMETERS FOR RADIATION COMPUTATIONS
12 
13 !** INTERFACE.
14 ! ----------
15 ! CALL *SUECRAD15* FROM *SUPHEC*
16 ! --------- ------
17 
18 ! EXPLICIT ARGUMENTS :
19 ! --------------------
20 ! NONE
21 
22 ! IMPLICIT ARGUMENTS :
23 ! --------------------
24 ! COMMONS YOMRAD15, YOMRDU15
25 
26 ! METHOD.
27 ! -------
28 ! SEE DOCUMENTATION
29 
30 ! EXTERNALS.
31 ! ----------
32 ! SUAER, SUAERH, SUAERV, SULW, SUSW, SUCLD, SUOCST, SUSAT
33 
34 ! REFERENCE.
35 ! ----------
36 ! ECMWF Research Department documentation of the IFS
37 
38 ! AUTHOR.
39 ! -------
40 ! 96-11: Ph. Dandin. Meteo-France
41 ! ORIGINAL : 88-12-15 BY JEAN-JACQUES MORCRETTE *ECMWF*
42 
43 ! MODIFICATIONS.
44 ! --------------
45 ! R. El Khatib 01-02-02 proper initialization of NFRRC moved in SUCFU
46 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
47 ! F. Bouyssel 27-09-04 initialisation of NSW
48 ! A. Alias 29-09-05 Sulfate aerosols (Hu Rong Ming)
49 ! ------------------------------------------------------------------
50 
51 USE parkind1 ,ONLY : jpim ,jprb
52 USE yomhook ,ONLY : lhook, dr_hook
53 
54 USE yomct0 , ONLY : nprintlev
55 USE yomdim , ONLY : ndlon ,nsmax ,ngpblks ,nflevg ,nproma
56 USE yomdyn , ONLY : tstep
57 ! Ce qui concerne NULNAM commente par MPL le 15.04.09
58 !USE YOMLUN , ONLY : NULNAM
59 USE yomcst , ONLY : rday ,rg ,rcpd
60 USE yomphy , ONLY : lrayfm15
61 USE yoephy , ONLY : lephys ,leradi
62 USE yomrad15 , ONLY : naer15 ,nflux15 ,nmode15 ,nrad15 ,&
66 USE yoerad , ONLY : naer ,ntsw
67 !USE YOERAD , ONLY : NAER ,NSW ,NTSW
68 ! NSW mis dans .def MPL 20140211
69 USE yomrdu15 , ONLY : nuaer15 ,ntraer15 ,rcday15 ,r10e15 ,&
71  & repscw15 ,diff15
73  & cvdaef15 ,&
75  & rcaeopf15,&
77  & rcaeadk15
78 USE yomprad , ONLY : lodbgradi,lodbgradl
79 USE yomradf , ONLY : emtd ,emtu ,trsw ,rmoon
80 
81 IMPLICIT NONE
82 
83 include "clesphys.h"
84 
85 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
86 INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT
87 REAL(KIND=JPRB) ,INTENT(IN) :: PETAH(klev+1)
88 LOGICAL :: LLP
89 
90 #include "namrad15.h"
91 ! ----------------------------------------------------------------
92 
93 LOGICAL :: LLMESS
94 
95 INTEGER(KIND=JPIM) :: IRADFR, IST1HR, IST6HR
96 
97 
98 REAL(KIND=JPRB) :: ZSTPHR, ZTSTEP
99 REAL(KIND=JPRB) :: ZHOOK_HANDLE
100 
101 #include "posnam.intfb.h"
102 #include "suaer15.intfb.h"
103 #include "suaerv15.intfb.h"
104 #include "suecradi15.intfb.h"
105 #include "suecradl.intfb.h"
106 #include "sulw15.intfb.h"
107 #include "surdi15.intfb.h"
108 #include "susat.intfb.h"
109 #include "susw15.intfb.h"
110 
111 ! ----------------------------------------------------------------
112 
113 !* 1. SET DEFAULT VALUES.
114 ! -------------------
115 
116 !* 1.1 PRESET INDICES IN *YOMRAD15*
117 ! --------------------------
118 
119 IF (lhook) CALL dr_hook('SUECRAD15',0,zhook_handle)
120 llmess=.false.
121 lerad6h15=.true.
122 leradhs15=.true.
123 lradaer15=.true.
125 naer15 =1
126 naer=0
127 nflux15 =6
128 nmode15 =0
129 nrad15 =1
130 nradfr15 =-3
131 nradpfr15=36
132 nradpla15=15
133 nrint15 =4
134 nradf2c15=1
135 nradc2f15=1
136 nuaer15 = 24
137 ntraer15 = 15
138 novlp15 = 1
139 nsw=2
140 ntsw=2
141 IF(nsmax >= 106) THEN
142  nrproma15 = 80
143 ELSEIF(nsmax == 63) THEN
144  nrproma15=48
145 ELSE
146  nrproma15=20
147 ENDIF
148 
149 !* 1.3 SET SECURITY PARAMETERS
150 ! -----------------------
151 
152 repsc15 = 1.e-12_jprb
153 repsco15 = 1.e-12_jprb
154 repscq15 = 1.e-12_jprb
155 repsct15 = 1.e-12_jprb
156 repscw15 = 1.e-12_jprb
157 reelog15 = 1.e-12_jprb
158 
159 ! ------------------------------------------------------------------
160 
161 !* 2. READ VALUES OF RADIATION CONFIGURATION
162 ! --------------------------------------
163 
164 ! Ce qui concerne NAMRAD15 commente par MPL le 15.04.09
165 !CALL POSNAM(NULNAM,'NAMRAD15')
166 !READ (NULNAM,NAMRAD15)
167 
168 ! INITIALISE DATA STRUCTURES REQUIRED FOR RADIATION INTERPOLATION
169 
171 CALL suecradi15
172 
173 IF( llmess )THEN
174 
175 ! INITIALISE DATA STRUCTURES REQUIRED FOR RADIATION COURSE GRID
176 ! LOAD BALANCING
177 
178  lodbgradl=.false.
179 ! CALL SUECRADL ! MPL 1.12.08
180  CALL abor1('JUSTE APRES CALL SUECRADL COMMENTE')
181 ENDIF
182 
183 ! ----------------------------------------------------------------
184 
185 !* 3. INITIALIZE RADIATION COEFFICIENTS.
186 ! ----------------------------------
187 
188 rcday15 = rday * rg / rcpd
189 diff15 = 1.66_jprb
190 r10e15 = 0.4342945_jprb
191 
192 CALL surdi15
193 
194 ! ----------------------------------------------------------------
195 
196 !* 4. INITIALIZE RADIATION ABSORPTION COEFFICIENTS
197 ! --------------------------------------------
198 
199 CALL sulw15
200 CALL susw15
201 
202 ! ----------------------------------------------------------------
203 
204 !* 5. INITIALIZE AEROSOL OPTICAL PARAMETERS AND DISTRIBUTION
205 ! ------------------------------------------------------
206 
207 ! INITIALIZATION DONE IN BLOCK DATA SUAERHBD
208 
209 !- optical properties
210 CALL suaer15
211 
212 ! CALL SUAERH
213 
214 CALL suaerv15 ( klev , petah,&
217  & rcaeopf15,&
219 
220 ! ----------------------------------------------------------------
221 
222 !* 6. INITIALIZE SATELLITE GEOMETRICAL/RADIOMETRIC PARAMETERS
223 ! -------------------------------------------------------
224 
225 IF (lephys) THEN
226  IF (nmode15 > 1) THEN
227  CALL susat
228  ENDIF
229 ENDIF
230 
231 ! ----------------------------------------------------------------
232 
233 !* 7. INITIALIZE CLIMATOLOGICAL OZONE DISTRIBUTION
234 ! --------------------------------------------
235 ! (not done here!!! called from APLPAR as it depends
236 ! on model pressure levels!)
237 
238 ! ----------------------------------------------------------------
239 
240 !* 8. SET UP MODEL CONFIGURATION FOR TIME-SPACE INTERPOLATION
241 ! -------------------------------------------------------
242 
243 ztstep=max(tstep,1.0_jprb)
244 zstphr=3600._jprb/ztstep
245 iradfr=nradfr15
246 IF(nradfr15 < 0) THEN
247  nradfr15=-nradfr15*zstphr+0.5_jprb
248 ENDIF
250 IF (mod(nradpla15,2) == 0.AND. nradpla15 /= 0) THEN
252 ENDIF
253 
254 ist1hr=zstphr+0.05_jprb
255 ist6hr=6._jprb*zstphr+0.05_jprb
256 IF (mod(3600._jprb,ztstep) > 0.1_jprb) THEN
257  ist1hr=ist1hr+1
258  DO WHILE (mod(ist6hr,ist1hr) /= 0)
259  ist1hr=ist1hr+1
260  ENDDO
261 ENDIF
262 nradsfr15=ist1hr
264 
265 IF(lrayfm15) THEN
266  nrproma15=ndlon+6+(1-mod(ndlon,2))
267 ENDIF
268 
269 
270 
271 !* 9. ALLOCATE WORK ARRAYS
272 ! --------------------
273 
274 llp = nprintlev >= 1
275 
276  ALLOCATE(emtd(nproma,nflevg+1,ngpblks))
277  IF(llp)WRITE(unit=kulout,fmt=9) 'EMTD ',SIZE(emtd ),shape(emtd )
278  ALLOCATE(trsw(nproma,nflevg+1,ngpblks))
279  IF(llp)WRITE(unit=kulout,fmt=9) 'TRSW ',SIZE(trsw ),shape(trsw )
280  ALLOCATE(emtu(nproma,nflevg+1,ngpblks))
281  IF(llp)WRITE(unit=kulout,fmt=9) 'EMTU ',SIZE(emtu ),shape(emtu )
282  ALLOCATE(rmoon(nproma,ngpblks))
283  IF(llp)WRITE(unit=kulout,fmt=9) 'RMOON ',SIZE(rmoon ),shape(rmoon )
284 
285 9 FORMAT(1x,'ARRAY ',a10,' ALLOCATED ',8i8)
286 
287 ! ----------------------------------------------------------------
288 
289 !* 9. PRINT FINAL VALUES.
290 ! -------------------
291 
292 
293 
294 
295 IF (llp) THEN
296  WRITE(unit=kulout,fmt='('' COMMON YOMRAD15 '')')
297  WRITE(unit=kulout,fmt='('' LERADI = '',L5 &
298  & ,'' LERAD6H15 = '',L5)')&
299  & leradi,lerad6h15
300  WRITE(unit=kulout,fmt='('' NRADFR15 = '',I2 &
301  & ,'' NRADPFR15 = '',I3 &
302  & ,'' NRADPLA15 = '',I2 &
303  & ,'' NRINT15 = '',I1 &
304  & ,'' NRPROMA15 = '',I5 &
305  & ,'' NRADF2C15 = '',I1 &
306  & ,'' NRADC2F15 = '',I1 &
307  & )')&
310 
311  WRITE(unit=kulout,fmt='('' LERADHS15= '',L5,'' LRADAER15= '',L5 &
312  & ,'' LNEWAER15= '',L5 &
313  & ,'' NMODE15 = '',I1 &
314  & ,'' NAER15 = '',I1 &
315  & ,'' NFLUX15 = '',I2 &
316  & ,'' NRAD15 = '',I2 &
317  & )')&
319  WRITE(kulout,fmt='('' WARNING! CLOUD OVERLAP ASSUMPTION IS''&
320  & ,'' NOVLP15 = '',I2 &
321  & )')&
322  & novlp15
323 
324  WRITE(unit=kulout,fmt='('' MODULE YOERAD '')')
325  WRITE(unit=kulout,fmt='('' NSW = '',I2, '' NTSW = '',I2)') nsw,ntsw
326 ENDIF
327 
328 ! ------------------------------------------------------------------
329 
330 IF (lhook) CALL dr_hook('SUECRAD15',1,zhook_handle)
331 END SUBROUTINE suecrad15
real(kind=jprb) repsct15
Definition: yomrdu15.F90:24
Definition: yoephy.F90:1
integer(kind=jpim) nradf2c15
Definition: yomrad15.F90:26
real(kind=jprb) repsc15
Definition: yomrdu15.F90:21
logical lradaer15
Definition: yomrad15.F90:31
real(kind=jprb), dimension(:), allocatable cvdaef15
Definition: yomaerd15.F90:18
real(kind=jprb) rcstbga15
Definition: yomaerd15.F90:27
real(kind=jprb) rcaeopl15
Definition: yomaerd15.F90:21
integer(kind=jpim) nradpla15
Definition: yomrad15.F90:20
real(kind=jprb) rday
Definition: yomcst.F90:21
logical leradhs15
Definition: yomrad15.F90:29
real(kind=jprb), dimension(:), allocatable cvdaeu15
Definition: yomaerd15.F90:16
integer(kind=jpim) nradfr15
Definition: yomrad15.F90:18
subroutine suecrad15(KULOUT, KLEV, PETAH)
Definition: suecrad15.F90:3
integer(kind=jpim) ntsw
Definition: yoerad.F90:30
real(kind=jprb), dimension(:), allocatable cvdael15
Definition: yomaerd15.F90:15
integer(kind=jpim) nradnfr15
Definition: yomrad15.F90:22
logical lerad6h15
Definition: yomrad15.F90:28
real(kind=jprb) rcaeadm15
Definition: yomaerd15.F90:29
integer(kind=jpim) nflux15
Definition: yomrad15.F90:15
logical lrayfm15
Definition: yomphy.F90:371
integer(kind=jpim) nrint15
Definition: yomrad15.F90:21
subroutine sulw15
Definition: sulw15.F90:3
subroutine suaer15
Definition: suaer15.F90:2
real(kind=jprb) reelog15
Definition: yomrdu15.F90:20
logical lodbgradl
Definition: yomprad.F90:119
logical leradi
Definition: yoephy.F90:23
real(kind=jprb) rctrbga15
Definition: yomaerd15.F90:25
subroutine surdi15
Definition: surdi15.F90:3
integer(kind=jpim) nproma
Definition: yomdim.F90:87
real(kind=jprb) repsco15
Definition: yomrdu15.F90:22
subroutine abor1(CDTEXT)
Definition: abor1.F90:2
real(kind=jprb), dimension(:), allocatable cvdaes15
Definition: yomaerd15.F90:14
integer(kind=jpim) naer15
Definition: yomrad15.F90:14
Definition: yomct0.F90:1
real(kind=jprb) r10e15
Definition: yomrdu15.F90:19
real(kind=jprb) rg
Definition: yomcst.F90:29
integer(kind=jpim) ndlon
Definition: yomdim.F90:79
integer(kind=jpim) nflevg
Definition: yomdim.F90:112
logical lephys
Definition: yoephy.F90:15
integer(kind=jpim) naer
Definition: yoerad.F90:13
real(kind=jprb) rcaeopd15
Definition: yomaerd15.F90:23
real(kind=jprb) diff15
Definition: yomrdu15.F90:27
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
Definition: calcul_STDlev.h:26
integer(kind=jpim) nrproma15
Definition: yomrad15.F90:25
real(kind=jprb) repscq15
Definition: yomrdu15.F90:23
real(kind=jprb), dimension(:,:), allocatable rmoon
Definition: yomradf.F90:42
integer(kind=jpim) nsmax
Definition: yomdim.F90:187
integer, parameter jprb
Definition: parkind1.F90:31
subroutine suaerv15(KLEV, PETAH, PVDAES, PVDAEL, PVDAEU, PVDAED, PVDAEF, PTRBGA, PVOBGA, PSTBGA, PAEOPS, PAEOPL, PAEOPU, PAEOPF, PAEOPD, PTRPT, PAEADK, PAEADM, PAEROS)
Definition: suaerv15.F90:7
integer(kind=jpim) nprintlev
Definition: yomct0.F90:328
integer(kind=jpim) nrad15
Definition: yomrad15.F90:17
real(kind=jprb) rctrpt15
Definition: yomaerd15.F90:28
real(kind=jprb) rcaeopf15
Definition: yomaerd15.F90:24
real(kind=jprb) rcday15
Definition: yomrdu15.F90:18
subroutine susw15
Definition: susw15.F90:3
Definition: yoerad.F90:1
logical lnewaer15
Definition: yomrad15.F90:32
real(kind=jprb) repscw15
Definition: yomrdu15.F90:25
integer(kind=jpim) nradsfr15
Definition: yomrad15.F90:23
real(kind=jprb) rcpd
Definition: yomcst.F90:41
Definition: yomdim.F90:1
!$Header!c c INCLUDE fxyprim h c c c Fonctions in line c c REAL fyprim REAL rj c c il faut la calculer avant d appeler ces fonctions c c c Fonctions a changer selon x(x) et y(y) choisis.c-----------------------------------------------------------------c c.....ici
real(kind=jprb), dimension(:,:,:), allocatable emtu
Definition: yomradf.F90:29
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
integer(kind=jpim) nradpfr15
Definition: yomrad15.F90:19
logical lhook
Definition: yomhook.F90:12
real(kind=jprb) rcaeros15
Definition: yomaerd15.F90:30
integer(kind=jpim) nuaer15
Definition: yomrdu15.F90:14
real(kind=jprb) rcvobga15
Definition: yomaerd15.F90:26
integer(kind=jpim) nradc2f15
Definition: yomrad15.F90:27
real(kind=jprb), dimension(:,:,:), allocatable trsw
Definition: yomradf.F90:26
real(kind=jprb) tstep
Definition: yomdyn.F90:25
integer(kind=jpim) ntraer15
Definition: yomrdu15.F90:15
real(kind=jprb), dimension(:,:,:), allocatable emtd
Definition: yomradf.F90:25
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
real(kind=jprb), dimension(:), allocatable cvdaed15
Definition: yomaerd15.F90:17
Definition: yomphy.F90:1
logical lodbgradi
Definition: yomprad.F90:118
Definition: yomdyn.F90:1
integer(kind=jpim) novlp15
Definition: yomrad15.F90:24
real(kind=jprb), dimension(3) rcaeadk15
Definition: yomaerd15.F90:40
integer, parameter jpim
Definition: parkind1.F90:13
subroutine susat
Definition: susat.F90:2
integer(kind=jpim) ngpblks
Definition: yomdim.F90:97
integer(kind=jpim) nmode15
Definition: yomrad15.F90:16
subroutine suecradi15
Definition: suecradi15.F90:3
Definition: yomcst.F90:1
!$Header!integer nvarmx s s unit
Definition: gradsdef.h:20
real(kind=jprb) rcaeops15
Definition: yomaerd15.F90:20
real(kind=jprb) rcaeopu15
Definition: yomaerd15.F90:22