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

Last change on this file since 5300 was 5294, checked in by Laurent Fairhead, 4 weeks ago

Keeping clesphys.h was not the right solution
LF

  • 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.0 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! Temporary fix waiting for cleaner interface (or not)
81USE clesphys_mod_h, ONLY: NSW
82
83IMPLICIT NONE
84
85!!include "clesphys.h"
86
87INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV
88INTEGER(KIND=JPIM),INTENT(IN)    :: KULOUT
89REAL(KIND=JPRB)   ,INTENT(IN)    :: PETAH(KLEV+1)
90LOGICAL :: LLP
91
92#include "namrad15.h"
93!      ----------------------------------------------------------------
94
95LOGICAL :: LLMESS
96
97INTEGER(KIND=JPIM) :: IRADFR, IST1HR, IST6HR
98
99
100REAL(KIND=JPRB) :: ZSTPHR, ZTSTEP
101REAL(KIND=JPRB) :: ZHOOK_HANDLE
102
103#include "posnam.intfb.h"
104#include "suaer15.intfb.h"
105#include "suaerv15.intfb.h"
106#include "suecradi15.intfb.h"
107#include "suecradl.intfb.h"
108#include "sulw15.intfb.h"
109#include "surdi15.intfb.h"
110#include "susat.intfb.h"
111#include "susw15.intfb.h"
112
113!      ----------------------------------------------------------------
114
115!*         1.       SET DEFAULT VALUES.
116!                   -------------------
117
118!*         1.1      PRESET INDICES IN *YOMRAD15*
119!                   --------------------------
120
121IF (LHOOK) CALL DR_HOOK('SUECRAD15',0,ZHOOK_HANDLE)
122LLMESS=.FALSE.
123LERAD6H15=.TRUE.
124LERADHS15=.TRUE.
125LRADAER15=.TRUE.
126LNEWAER15=.FALSE.
127NAER15   =1
128NAER=0
129NFLUX15  =6
130NMODE15  =0
131NRAD15   =1
132NRADFR15 =-3
133NRADPFR15=36
134NRADPLA15=15
135NRINT15  =4
136NRADF2C15=1
137NRADC2F15=1
138NUAER15  = 24
139NTRAER15 = 15
140NOVLP15 = 1
141NSW=2
142NTSW=2
143IF(NSMAX >= 106) THEN
144  NRPROMA15 = 80
145ELSEIF(NSMAX == 63) THEN
146  NRPROMA15=48
147ELSE
148  NRPROMA15=20
149ENDIF
150
151!*         1.3      SET SECURITY PARAMETERS
152!                   -----------------------
153
154REPSC15  = 1.E-12_JPRB
155REPSCO15 = 1.E-12_JPRB
156REPSCQ15 = 1.E-12_JPRB
157REPSCT15 = 1.E-12_JPRB
158REPSCW15 = 1.E-12_JPRB
159REELOG15 = 1.E-12_JPRB
160
161!     ------------------------------------------------------------------
162
163!*         2.       READ VALUES OF RADIATION CONFIGURATION
164!                   --------------------------------------
165
166! Ce qui concerne NAMRAD15 commente par MPL le 15.04.09
167!CALL POSNAM(NULNAM,'NAMRAD15')
168!READ (NULNAM,NAMRAD15)
169
170!     INITIALISE DATA STRUCTURES REQUIRED FOR RADIATION INTERPOLATION
171
172LODBGRADI=.FALSE.
173CALL SUECRADI15
174
175IF( LLMESS )THEN
176
177!     INITIALISE DATA STRUCTURES REQUIRED FOR RADIATION COURSE GRID
178!     LOAD BALANCING
179
180  LODBGRADL=.FALSE.
181! CALL SUECRADL   ! MPL 1.12.08
182  CALL ABOR1('JUSTE APRES CALL SUECRADL COMMENTE')
183ENDIF
184
185!      ----------------------------------------------------------------
186
187!*       3.    INITIALIZE RADIATION COEFFICIENTS.
188!              ----------------------------------
189
190RCDAY15  = RDAY * RG / RCPD
191DIFF15   = 1.66_JPRB
192R10E15   = 0.4342945_JPRB
193
194CALL SURDI15
195
196!      ----------------------------------------------------------------
197
198!*       4.    INITIALIZE RADIATION ABSORPTION COEFFICIENTS
199!              --------------------------------------------
200
201CALL SULW15
202CALL SUSW15
203
204!      ----------------------------------------------------------------
205
206!*       5.    INITIALIZE AEROSOL OPTICAL PARAMETERS AND DISTRIBUTION
207!              ------------------------------------------------------
208
209!     INITIALIZATION DONE IN BLOCK DATA SUAERHBD
210
211!- optical properties
212CALL SUAER15
213
214!     CALL SUAERH
215
216CALL SUAERV15 ( KLEV  , PETAH,&
217 & CVDAES15, CVDAEL15, CVDAEU15, CVDAED15, CVDAEF15,&
218 & RCTRBGA15, RCVOBGA15, RCSTBGA15, RCAEOPS15, RCAEOPL15, RCAEOPU15,&
219 & RCAEOPF15,&
220 & RCAEOPD15, RCTRPT15 , RCAEADK15, RCAEADM15, RCAEROS15        ) 
221
222!      ----------------------------------------------------------------
223
224!*       6.    INITIALIZE SATELLITE GEOMETRICAL/RADIOMETRIC PARAMETERS
225!              -------------------------------------------------------
226
227IF (LEPHYS) THEN
228  IF (NMODE15 > 1) THEN
229    CALL SUSAT
230  ENDIF
231ENDIF
232
233!      ----------------------------------------------------------------
234
235!*       7.    INITIALIZE CLIMATOLOGICAL OZONE DISTRIBUTION
236!              --------------------------------------------
237!                  (not done here!!!  called from APLPAR as it depends
238!                     on model pressure levels!)
239
240!      ----------------------------------------------------------------
241
242!*       8.    SET UP MODEL CONFIGURATION FOR TIME-SPACE INTERPOLATION
243!              -------------------------------------------------------
244
245ZTSTEP=MAX(TSTEP,1.0_JPRB)
246ZSTPHR=3600._JPRB/ZTSTEP
247IRADFR=NRADFR15
248IF(NRADFR15 < 0) THEN
249  NRADFR15=-NRADFR15*ZSTPHR+0.5_JPRB
250ENDIF
251NRADPFR15=NRADPFR15*NRADFR15
252IF (MOD(NRADPLA15,2) == 0.AND. NRADPLA15 /= 0) THEN
253  NRADPLA15=NRADPLA15+1
254ENDIF
255
256IST1HR=ZSTPHR+0.05_JPRB
257IST6HR=6._JPRB*ZSTPHR+0.05_JPRB
258IF (MOD(3600._JPRB,ZTSTEP) > 0.1_JPRB) THEN
259  IST1HR=IST1HR+1
260  DO WHILE (MOD(IST6HR,IST1HR) /= 0)
261    IST1HR=IST1HR+1
262  ENDDO
263ENDIF
264NRADSFR15=IST1HR
265NRADNFR15=NRADFR15
266
267IF(LRAYFM15) THEN
268  NRPROMA15=NDLON+6+(1-MOD(NDLON,2))
269ENDIF
270
271
272
273!*       9.    ALLOCATE WORK ARRAYS
274!               --------------------
275
276LLP = NPRINTLEV >= 1
277
278  ALLOCATE(EMTD(NPROMA,NFLEVG+1,NGPBLKS))
279  IF(LLP)WRITE(UNIT=KULOUT,FMT=9) 'EMTD     ',SIZE(EMTD     ),SHAPE(EMTD     )
280  ALLOCATE(TRSW(NPROMA,NFLEVG+1,NGPBLKS))
281  IF(LLP)WRITE(UNIT=KULOUT,FMT=9) 'TRSW     ',SIZE(TRSW     ),SHAPE(TRSW     )
282  ALLOCATE(EMTU(NPROMA,NFLEVG+1,NGPBLKS))
283  IF(LLP)WRITE(UNIT=KULOUT,FMT=9) 'EMTU     ',SIZE(EMTU     ),SHAPE(EMTU     )
284  ALLOCATE(RMOON(NPROMA,NGPBLKS))
285  IF(LLP)WRITE(UNIT=KULOUT,FMT=9) 'RMOON    ',SIZE(RMOON    ),SHAPE(RMOON    )
286
2879 FORMAT(1X,'ARRAY ',A10,' ALLOCATED ',8I8)
288
289!      ----------------------------------------------------------------
290
291!*       9.    PRINT FINAL VALUES.
292!              -------------------
293
294
295
296
297IF (LLP) THEN
298  WRITE(UNIT=KULOUT,FMT='('' COMMON YOMRAD15 '')')
299  WRITE(UNIT=KULOUT,FMT='('' LERADI  = '',L5 &
300   & ,'' LERAD6H15 = '',L5)')&
301   & LERADI,LERAD6H15 
302  WRITE(UNIT=KULOUT,FMT='('' NRADFR15  = '',I2 &
303   & ,'' NRADPFR15 = '',I3 &
304   & ,'' NRADPLA15 = '',I2 &
305   & ,'' NRINT15   = '',I1 &
306   & ,'' NRPROMA15 = '',I5 &
307   & ,'' NRADF2C15 = '',I1 &
308   & ,'' NRADC2F15 = '',I1 &
309   & )')&
310   & NRADFR15,NRADPFR15,NRADPLA15,NRINT15,&
311   & NRPROMA15,NRADF2C15,NRADC2F15 
312   
313  WRITE(UNIT=KULOUT,FMT='('' LERADHS15= '',L5,'' LRADAER15= '',L5 &
314   & ,'' LNEWAER15= '',L5 &
315   & ,'' NMODE15 = '',I1 &
316   & ,'' NAER15  = '',I1 &
317   & ,'' NFLUX15 = '',I2 &
318   & ,'' NRAD15  = '',I2 &
319   & )')&
320   & LERADHS15,LRADAER15,LNEWAER15,NMODE15,NAER15,NFLUX15,NRAD15 
321  WRITE(KULOUT,FMT='('' WARNING! CLOUD OVERLAP ASSUMPTION IS''&
322   & ,'' NOVLP15   = '',I2 &
323   & )')&
324   & NOVLP15 
325
326  WRITE(UNIT=KULOUT,FMT='('' MODULE YOERAD '')')
327  WRITE(UNIT=KULOUT,FMT='('' NSW = '',I2, '' NTSW = '',I2)') NSW,NTSW
328ENDIF
329
330!     ------------------------------------------------------------------
331
332IF (LHOOK) CALL DR_HOOK('SUECRAD15',1,ZHOOK_HANDLE)
333END SUBROUTINE SUECRAD15
Note: See TracBrowser for help on using the repository browser.