source: LMDZ6/trunk/libf/phylmd/rrtm/suecrad15.F90 @ 3513

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

Corrections à la version r1989 pour permettre la compilation avec RRTM
Inclusion de la licence CeCILL_V2 pour RRTM


Changes to revision r1989 to enable RRTM code compilation
RRTM part put under CeCILL_V2 licence

  • 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: 8.9 KB
Line 
1!OPTIONS XOPT(NOEVAL)
2SUBROUTINE 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
51USE PARKIND1  ,ONLY : JPIM     ,JPRB
52USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
53
54USE YOMCT0   , ONLY : NPRINTLEV
55USE YOMDIM   , ONLY : NDLON    ,NSMAX   ,NGPBLKS  ,NFLEVG   ,NPROMA
56USE YOMDYN   , ONLY : TSTEP
57! Ce qui concerne NULNAM commente par MPL le 15.04.09
58!USE YOMLUN   , ONLY : NULNAM
59USE YOMCST   , ONLY : RDAY     ,RG       ,RCPD
60USE YOMPHY   , ONLY : LRAYFM15
61USE YOEPHY   , ONLY : LEPHYS   ,LERADI
62USE YOMRAD15 , ONLY : NAER15   ,NFLUX15  ,NMODE15  ,NRAD15   ,&
63 & NRADFR15 ,NRADPFR15,NRADPLA15,NRINT15  ,NRADNFR15,&
64 & NRADSFR15,NOVLP15  ,NRPROMA15,NRADF2C15,NRADC2F15,&
65 & LERAD6H15,LERADHS15,LRADAER15,LNEWAER15
66USE YOERAD   , ONLY : NAER     ,NTSW
67!USE YOERAD   , ONLY : NAER     ,NSW      ,NTSW
68! NSW mis dans .def MPL 20140211
69USE YOMRDU15 , ONLY : NUAER15  ,NTRAER15 ,RCDAY15  ,R10E15   ,&
70 & REELOG15 ,REPSC15  ,REPSCO15 ,REPSCQ15 ,REPSCT15 ,&
71 & REPSCW15 ,DIFF15 
72USE YOMAERD15, ONLY : CVDAES15 ,CVDAEL15 ,CVDAEU15 ,CVDAED15 ,&
73 & CVDAEF15 ,&
74 & RCAEOPS15,RCAEOPL15,RCAEOPU15,RCAEOPD15,RCTRBGA15,&
75 & RCAEOPF15,&
76 & RCVOBGA15,RCSTBGA15,RCTRPT15 ,RCAEADM15,RCAEROS15,&
77 & RCAEADK15 
78USE YOMPRAD  , ONLY : LODBGRADI,LODBGRADL
79USE YOMRADF  , ONLY : EMTD     ,EMTU      ,TRSW    ,RMOON
80
81IMPLICIT NONE
82
83include "clesphys.h"
84
85INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV
86INTEGER(KIND=JPIM),INTENT(IN)    :: KULOUT
87REAL(KIND=JPRB)   ,INTENT(IN)    :: PETAH(KLEV+1)
88LOGICAL :: LLP
89
90#include "namrad15.h"
91!      ----------------------------------------------------------------
92
93LOGICAL :: LLMESS
94
95INTEGER(KIND=JPIM) :: IRADFR, IST1HR, IST6HR
96
97
98REAL(KIND=JPRB) :: ZSTPHR, ZTSTEP
99REAL(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
119IF (LHOOK) CALL DR_HOOK('SUECRAD15',0,ZHOOK_HANDLE)
120LLMESS=.FALSE.
121LERAD6H15=.TRUE.
122LERADHS15=.TRUE.
123LRADAER15=.TRUE.
124LNEWAER15=.FALSE.
125NAER15   =1
126NAER=0
127NFLUX15  =6
128NMODE15  =0
129NRAD15   =1
130NRADFR15 =-3
131NRADPFR15=36
132NRADPLA15=15
133NRINT15  =4
134NRADF2C15=1
135NRADC2F15=1
136NUAER15  = 24
137NTRAER15 = 15
138NOVLP15 = 1
139NSW=2
140NTSW=2
141IF(NSMAX >= 106) THEN
142  NRPROMA15 = 80
143ELSEIF(NSMAX == 63) THEN
144  NRPROMA15=48
145ELSE
146  NRPROMA15=20
147ENDIF
148
149!*         1.3      SET SECURITY PARAMETERS
150!                   -----------------------
151
152REPSC15  = 1.E-12_JPRB
153REPSCO15 = 1.E-12_JPRB
154REPSCQ15 = 1.E-12_JPRB
155REPSCT15 = 1.E-12_JPRB
156REPSCW15 = 1.E-12_JPRB
157REELOG15 = 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
170LODBGRADI=.FALSE.
171CALL SUECRADI15
172
173IF( 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')
181ENDIF
182
183!      ----------------------------------------------------------------
184
185!*       3.    INITIALIZE RADIATION COEFFICIENTS.
186!              ----------------------------------
187
188RCDAY15  = RDAY * RG / RCPD
189DIFF15   = 1.66_JPRB
190R10E15   = 0.4342945_JPRB
191
192CALL SURDI15
193
194!      ----------------------------------------------------------------
195
196!*       4.    INITIALIZE RADIATION ABSORPTION COEFFICIENTS
197!              --------------------------------------------
198
199CALL SULW15
200CALL 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
210CALL SUAER15
211
212!     CALL SUAERH
213
214CALL SUAERV15 ( KLEV  , PETAH,&
215 & CVDAES15, CVDAEL15, CVDAEU15, CVDAED15, CVDAEF15,&
216 & RCTRBGA15, RCVOBGA15, RCSTBGA15, RCAEOPS15, RCAEOPL15, RCAEOPU15,&
217 & RCAEOPF15,&
218 & RCAEOPD15, RCTRPT15 , RCAEADK15, RCAEADM15, RCAEROS15        ) 
219
220!      ----------------------------------------------------------------
221
222!*       6.    INITIALIZE SATELLITE GEOMETRICAL/RADIOMETRIC PARAMETERS
223!              -------------------------------------------------------
224
225IF (LEPHYS) THEN
226  IF (NMODE15 > 1) THEN
227    CALL SUSAT
228  ENDIF
229ENDIF
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
243ZTSTEP=MAX(TSTEP,1.0_JPRB)
244ZSTPHR=3600._JPRB/ZTSTEP
245IRADFR=NRADFR15
246IF(NRADFR15 < 0) THEN
247  NRADFR15=-NRADFR15*ZSTPHR+0.5_JPRB
248ENDIF
249NRADPFR15=NRADPFR15*NRADFR15
250IF (MOD(NRADPLA15,2) == 0.AND. NRADPLA15 /= 0) THEN
251  NRADPLA15=NRADPLA15+1
252ENDIF
253
254IST1HR=ZSTPHR+0.05_JPRB
255IST6HR=6._JPRB*ZSTPHR+0.05_JPRB
256IF (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
261ENDIF
262NRADSFR15=IST1HR
263NRADNFR15=NRADFR15
264
265IF(LRAYFM15) THEN
266  NRPROMA15=NDLON+6+(1-MOD(NDLON,2))
267ENDIF
268
269
270
271!*       9.    ALLOCATE WORK ARRAYS
272!               --------------------
273
274LLP = 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
2859 FORMAT(1X,'ARRAY ',A10,' ALLOCATED ',8I8)
286
287!      ----------------------------------------------------------------
288
289!*       9.    PRINT FINAL VALUES.
290!              -------------------
291
292
293
294
295IF (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   & )')&
308   & NRADFR15,NRADPFR15,NRADPLA15,NRINT15,&
309   & NRPROMA15,NRADF2C15,NRADC2F15 
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   & )')&
318   & LERADHS15,LRADAER15,LNEWAER15,NMODE15,NAER15,NFLUX15,NRAD15 
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
326ENDIF
327
328!     ------------------------------------------------------------------
329
330IF (LHOOK) CALL DR_HOOK('SUECRAD15',1,ZHOOK_HANDLE)
331END SUBROUTINE SUECRAD15
Note: See TracBrowser for help on using the repository browser.