LMDZ
suecrad.F90
Go to the documentation of this file.
1 !
2 ! $Id: suecrad.F90 2152 2014-11-19 16:52:35Z fhourdin $
3 !
4 SUBROUTINE suecrad (KULOUT, KLEV, PETAH )
5 
6 !**** *SUECRAD* - INITIALIZE COMMONS YOERxx CONTROLLING RADIATION
7 
8 ! PURPOSE.
9 ! --------
10 ! INITIALIZE YOERAD, THE COMMON THAT CONTROLS THE
11 ! RADIATION OF THE MODEL, AND YOERDU THAT INCLUDES
12 ! ADJUSTABLE PARAMETERS FOR RADIATION COMPUTATIONS
13 
14 !** INTERFACE.
15 ! ----------
16 ! CALL *SUECRAD* FROM *SUPHEC*
17 ! ------- ------
18 
19 ! EXPLICIT ARGUMENTS :
20 ! --------------------
21 ! NONE
22 
23 ! IMPLICIT ARGUMENTS :
24 ! --------------------
25 ! COMMONS YOERAD, YOERDU
26 
27 ! METHOD.
28 ! -------
29 ! SEE DOCUMENTATION
30 
31 ! EXTERNALS.
32 ! ----------
33 ! SUAER, SUAERH, SUAERV, SULW, SUSW, SUOCST, SUSAT
34 ! SUAERL, SUAERSN, SUSRTAER, SRTM_INIT, SUSRTCOP
35 
36 ! REFERENCE.
37 ! ----------
38 ! ECMWF Research Department documentation of the IFS
39 
40 ! AUTHOR.
41 ! -------
42 ! JEAN-JACQUES MORCRETTE *ECMWF*
43 
44 ! MODIFICATIONS.
45 ! --------------
46 ! ORIGINAL : 88-12-15
47 ! P.COURTIER AND M.HAMRUD NAME SURAD ALREADY USED
48 ! Modified 93-11-15 by Ph. Dandin : FMR scheme with MF
49 ! Modified 95-12 by PhD : Cloud overlapping hypothesis for FMR
50 ! 980317 JJMorcrette clean-up (NRAD, NFLUX)
51 ! 000118 JJMorcrette variable concentr. uniformly mixed gases
52 ! 990525 JJMorcrette GISS volcanic and new tropospheric aerosols
53 ! 990831 JJMorcrette RRTM
54 ! R. El Khatib 01-02-02 proper initialization of NFRRC moved in SUCFU
55 ! 010129 JJMorcrette clean-up LERAD1H, NLNGR1H
56 ! 011105 GMozdzynski support new radiation grid
57 ! 011005 JJMorcrette CCN --> Re Water clouds
58 ! R. El Khatib 01-02-02 LRRTM=lecmwf by default
59 ! 020909 GMozdzynski support NRADRES to specify radiation grid
60 ! 021001 GMozdzynski support on-demand radiation communications
61 ! 030422 GMozdzynski automatic min-halo
62 ! 030501 JJMorcrette new radiation grid on, new aerosols on (default)
63 ! 030513 JJMorcrette progn. O3 / radiation interactions off (default)
64 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
65 ! 050315 JJMorcrette prog.aerosols v1
66 ! 041214 JJMorcrette SRTM
67 ! 050111 JJMorcrette new cloud optical properties
68 ! 050415 GMozdzynski Reduced halo support for radiation interpolation
69 ! 051004 JJMorcrette UV surface radiation processor
70 ! 051220 JJMorcrette SRTM112g+LWSCAT+UVprocessor+(bgfx:swclr, radaca)
71 ! 060510 JJMorcrette MODIS albedo (UVis, NIR)x(parallel+diffuse)
72 ! 060510 JJMorcrette MODIS albedo (UVis, NIR)x(parallel+diffuse)
73 ! JJMorcrette 20060721 PP of clear-sky PAR and TOA incident solar radiation
74 ! 060625 JJMorcrette MODIS albedo (UVis, NIR)x(parallel+diffuse)
75 ! 060726 JJMorcrette McICA default operational configuration
76 ! ------------------------------------------------------------------
77 
78 USE parkind1 ,ONLY : jpim ,jprb
79 USE yomhook ,ONLY : lhook, dr_hook
80 
81 USE pardim , ONLY : jpmxgl
82 USE parrrtm , ONLY : jplay
83 USE parsrtm , ONLY : jpgpt
84 USE yomct0 , ONLY : loutput ,nprintlev,lallopr,&
86 USE yomdim , ONLY : ndlon ,nsmax ,ndgenl ,&
89 USE yomct0b , ONLY : lecmwf
90 USE yomdyn , ONLY : tstep
91 ! Ce qui concerne NULRAD commente par MPL le 15.04.09
92 !USE YOMLUN , ONLY : NULNAM ,NULRAD ,NULOUT
93 USE yomlun , ONLY : nulrad ,nulout
94 USE yomcst , ONLY : rday ,rg ,rcpd ,rpi ,ri0
95 USE yomphy , ONLY : lmphys, lrayfm ,lrayfm15
96 USE yoephy , ONLY : lephys ,leradi, le4alb
97 USE yoerdi , ONLY : rcco2, rcch4, rcn2o, rccfc11, rccfc12, rsolinc
98 USE yoerad , ONLY : naer , nozocl ,&
99  & nradfr ,nradpfr ,nradpla ,nrint ,&
100  & nradnfr ,nradsfr ,novlp ,nrproma ,&
101 !& NLW ,NSW ,NTSW ,NCSRADF ,&
102 ! NSW mis dans .def MPL 20140211
103  & nlw ,ntsw ,ncsradf ,&
104  & nmode ,nlngr1h ,nswnl ,nswtl ,nuv ,&
105  & lerad1h ,leradhs ,lepo3ra ,lradlb ,lonewsw ,&
106  & lccnl ,lccno ,&
107  & lecsrad ,lhvolca ,lnewaer ,lrrtm ,lsrtm ,ldiffc ,&
108  & nradint ,nradres ,crtabledir,crtablefil ,&
109  & niceopt ,nliqopt ,nradip ,nradlp ,ninhom ,nlayinh ,&
110  & lrayl ,loptrproma,&
111  & rccnlnd ,rccnsea ,rlwinhf ,rswinhf ,rre2de ,&
112  & rpertoz ,npertoz ,nmcica ,&
113  & lnotroaer,npertaer ,leco2var ,lhghg ,nhincsol,nscen ,&
114  & ledbug
115 USE yoerdu , ONLY : nuaer ,ntraer ,rcday ,r10e ,&
116  & replog ,repsc ,repsco ,repscq ,repsct ,&
117  & repscw ,diff
118 USE yoeaerd , ONLY : cvdaes ,cvdael ,cvdaeu ,cvdaed ,&
121  & rcaeadk
123 
124 USE yommp , ONLY : myproc ,nprcids ,lsplit ,napsets ,&
131  & nricomm ,&
135  & nrocomm
136 USE yomgc , ONLY : gelat ,gelam
137 USE yomleg , ONLY : rmu ,rsqm2
138 USE yomsc2 , ONLY : &
141 USE yomgem , ONLY : ngptot ,ngptotg ,ngptotmx ,nloeng
142 USE yomtag , ONLY : mtagrad
143 USE yomprad , ONLY : lodbgradi,lodbgradl ,radgrid ,&
144  & lradondem
145 USE yomradf , ONLY : emtd ,trsw ,emtc ,trsc ,&
146  & srswd ,srlwd ,srswdcs ,srlwdcs ,srswdv ,&
148  & emtu, rmoon
149 ! Commente par MPL 26.11.08
150 !USE YOPHNC , ONLY : LERADN2
151 ! MPLefebvre 6-11-08 commente tout ce qui concerne MPL_MODULE
152 !USE MPL_MODULE , ONLY : MPL_BROADCAST, MPL_SEND, MPL_RECV
153 USE yom_ygfl , ONLY : yo3
154 !!!!! A REVOIR (MPL) NDLNPR devrait etre initialise dans sudyn.F90
155 USE yomdyn , ONLY : ndlnpr
156 
157 IMPLICIT NONE
158 
159 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
160 INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT
161 REAL(KIND=JPRB) ,INTENT(IN) :: PETAH(klev+1)
162 ! LOCAL ARRAYS FOR THE PURPOSE OF READING NAMRGRI (RADIATION GRID)
163 INTEGER(KIND=JPIM) :: NRGRI(jpmxgl)
164 
165 INTEGER(KIND=JPIM) :: IDGL,INBLW,IRADFR,IST1HR,ISTNHR,IDIR,IFIL
166 INTEGER(KIND=JPIM) :: IRIRPTSUR,IRISPTSUR,IRIMAPLEN
167 INTEGER(KIND=JPIM) :: JLON,JGLAT,JGL,JGLSUR,IDLSUR,IOFF,ILAT,ISTLON,IENDLON
168 INTEGER(KIND=JPIM) :: IRORPTSUR,IROSPTSUR,IROMAPLEN
169 INTEGER(KIND=JPIM) :: ILBRLATI,IUBRLATI,IGLGLO,IDUM,IU
170 INTEGER(KIND=JPIM) :: J,JROC,IGPTOT
171 INTEGER(KIND=JPIM) :: IROWIDEMAXN,IROWIDEMAXS,IROWIDEMAXW,IROWIDEMAXE
172 INTEGER(KIND=JPIM) :: IRIWIDEMAXN,IRIWIDEMAXS,IRIWIDEMAXW,IRIWIDEMAXE
173 INTEGER(KIND=JPIM) :: IARIB1MAX,IAROB1MAX
174 INTEGER(KIND=JPIM) :: IWIDE(10)
175 INTEGER(KIND=JPIM) :: ILATS_DIFF_F,ILATS_DIFF_C
176 INTEGER(KIND=JPIM), PARAMETER :: JP_MIN_HALO=5
177 INTEGER(KIND=JPIM) :: ISW,JUV,IDAYUV
178 
179 LOGICAL :: LLINEAR_GRID
180 LOGICAL :: LLDEBUG,LLP
181 
182 REAL(KIND=JPRB) :: ZSTPHR, ZTSTEP, ZGEMU, ZLON, ZD1, ZD2, ZD3, ZD4, ZD5, ZD6
183 REAL(KIND=JPRB) :: ZMINRADLAT,ZMAXRADLAT,ZMINRADLON,ZMAXRADLON
184 REAL(KIND=JPRB) :: ZMINMDLLAT,ZMAXMDLLAT,ZMINMDLLON,ZMAXMDLLON
185 REAL(KIND=JPRB) :: ZLAT
186 !REAL(KIND=JPRB) :: RLATVOL, RLONVOL
187 
188 CHARACTER (LEN = 300) :: CLFN
189 INTEGER(KIND=JPIM), PARAMETER :: JPIOMASTER=1
190 
191 INTEGER(KIND=JPIM), ALLOCATABLE :: IRISENDPOS(:)
192 INTEGER(KIND=JPIM), ALLOCATABLE :: IRIRECVPOS(:)
193 INTEGER(KIND=JPIM), ALLOCATABLE :: IRISENDPTR(:)
194 INTEGER(KIND=JPIM), ALLOCATABLE :: IRIRECVPTR(:)
195 INTEGER(KIND=JPIM), ALLOCATABLE :: IRICOMM(:)
196 INTEGER(KIND=JPIM), ALLOCATABLE :: IRIMAP(:,:)
197 INTEGER(KIND=JPIM), ALLOCATABLE :: IROSENDPOS(:)
198 INTEGER(KIND=JPIM), ALLOCATABLE :: IRORECVPOS(:)
199 INTEGER(KIND=JPIM), ALLOCATABLE :: IROSENDPTR(:)
200 INTEGER(KIND=JPIM), ALLOCATABLE :: IRORECVPTR(:)
201 INTEGER(KIND=JPIM), ALLOCATABLE :: IROCOMM(:)
202 INTEGER(KIND=JPIM), ALLOCATABLE :: IROMAP(:,:)
203 INTEGER(KIND=JPIM), ALLOCATABLE :: IGLOBALINDEX(:)
204 
205 REAL(KIND=JPRB),ALLOCATABLE :: ZLATX(:)
206 REAL(KIND=JPRB),ALLOCATABLE :: ZLONX(:)
207 REAL(KIND=JPRB) :: ZHOOK_HANDLE
208 
209 INTERFACE
210 #include "setup_trans.h"
211 #include "trans_inq.h"
212 END INTERFACE
213 
214 #include "abor1.intfb.h"
215 #include "posnam.intfb.h"
216 #include "rrtm_init_140gp.intfb.h"
217 
218 #include "rdcset.intfb.h"
219 #include "suaerh.intfb.h"
220 #include "suaerl.intfb.h"
221 #include "suaersn.intfb.h"
222 #include "suaerv.intfb.h"
223 #include "suclopn.intfb.h"
224 #include "suecradi.intfb.h"
225 #include "suecradl.intfb.h"
226 #include "sulwn.intfb.h"
227 #include "sulwneur.intfb.h"
228 #include "suovlp.intfb.h"
229 #include "surdi.intfb.h"
230 #include "surrtab.intfb.h"
231 #include "surrtftr.intfb.h"
232 #include "surrtpk.intfb.h"
233 #include "surrtrf.intfb.h"
234 #include "susat.intfb.h"
235 #include "suswn.intfb.h"
236 #include "susrtaer.intfb.h"
237 #include "srtm_init.intfb.h"
238 #include "susrtcop.intfb.h"
239 #include "su_aerw.intfb.h"
240 #include "su_uvrad.intfb.h"
241 #include "su_mcica.intfb.h"
242 
243 ! ----------------------------------------------------------------
244 
245 #include "naerad.h"
246 #include "namrgri.h"
247 #include "clesphys.h"
248 
249 !* 1. INITIALIZE NEUROFLUX LONGWAVE RADIATION
250 ! ---------------------------------------
251 
252 IF (lhook) CALL dr_hook('SUECRAD',0,zhook_handle)
253 !CALL GSTATS(1818,0) MPL 2.12.08
254 !IF (LERADN2) THEN
255 ! CALL SULWNEUR(KLEV)
256 !ENDIF
257 
258 !* 2. SET DEFAULT VALUES.
259 ! -------------------
260 
261 !* 2.1 PRESET INDICES IN *YOERAD*
262 ! --------------------------
263 
264 lerad1h=.false.
265 nlngr1h=6
266 
267 leradhs=.true.
268 lonewsw=.true.
269 lecsrad=.false.
270 
271 !LE4ALB=.FALSE.
272 !This is read from SU0PHY in NAEPHY and put in YOEPHY
273 
274 !- default setting of cloud optical properties
275 ! liquid water cloud 0: Fouquart (SW), Smith-Shi (LW)
276 ! 1: Slingo (SW), Savijarvi (LW)
277 ! 2: Slingo (SW), Lindner-Li (LW)
278 ! ice water cloud 0: Ebert-Curry (SW), Smith-Shi (LW)
279 ! 1: Ebert-Curry (SW), Ebert-Curry (LW)
280 ! 2: Fu-Liou'93 (SW), Fu-Liou'93 (LW)
281 ! 3: Fu'96 (SW), Fu et al'98 (LW)
282 nliqopt=2 ! before 3?R1 default=0 2
283 niceopt=3 ! before 3?R1 default=1 3
284 
285 !- default setting of cloud effective radius/diameter
286 ! liquid water cloud 0: f(P) 10 to 45
287 ! 1: 13: ocean; 10: land
288 ! 2: Martin et al. CCN 50 over ocean, 900 over land
289 ! ice water cloud 0: 40 microns
290 ! 1: f(T) 40 to 130 microns
291 ! 2: f(T) 30 to 60
292 ! 3: f(T,IWC) Sun'01: 22.5 to 175 microns
293 ! conversion factor between effective radius and particle size for ice
294 nradip=3 ! before 3?R1 default=2 3
295 nradlp=2 ! before 3?R1 default=2 2
296 print *,'SUECRAD: NRADLP, NRADIP=',nradlp,nradip
297 rre2de=0.64952_jprb ! before 3?R1 default=0.5_JPRB
298 
299 !- RRTM as LW scheme
300 lrrtm = .false.
301 lecmwf = .false.
302 IF (iflag_rrtm.EQ.1) THEN
303  lrrtm = .true.
304  lecmwf = .true.
305 ! LRRTM = .FALSE. ! Utiliser pour faire tourner le "vieux" rayonnement
306 ! LECMWF = .FALSE.
307 ENDIF
308 
309 !LRRTM = .FALSE.
310 
311 !- SRTM as SW scheme
312 !!!!! A REVOIR (MPL) verifier signification de LSRTM
313 lsrtm = .false. ! before 3?R1 default was .FALSE. true
314 
315 ! -- McICA treatment of cloud-radiation interactions
316 ! - 1 is maximum-random, 2 is generalized cloud overlap (before 31R1 default=0 no McICA)
317 nmcica = 2 ! 2 for generalized overlap
318 
319 !- Inhomogeneity factors in LW and SW (0=F, 1=0.7 in both, 2=Barker's, 3=Cairns)
320 ninhom = 0 ! before 3?R1 default=1
321 nlayinh= 0
322 rlwinhf = 1.0_jprb ! before 3?R1 default=0.7
323 rswinhf = 1.0_jprb ! before 3?R1 default=0.7
324 !- Diffusivity correction a la Savijarvi
325 ldiffc = .false. ! before 31R1 default=.FALSE.
326 
327 !- history of volcanic aerosols
328 lhvolca=.false.
329 !- monthly climatol. of tropospheric aerosols from Tegen et al. (1997)
330 lnewaer=.true.
331 !!! cpl LNOTROAER=.FALSE.
332 lnotroaer=.true.
333 npertaer=0
334 
335 !- New Rayleigh formulation
336 lrayl=.true.
337 
338 !- Number concentration of aerosols if specified
339 lccnl=.true. ! before 3?R1 default=.FALSE. true
340 lccno=.true. ! before 3?R1 default=.FALSE. true
341 rccnlnd=900._jprb ! before 3?R1 default=900. now irrelevant
342 rccnsea=50._jprb ! before 3?R1 default=50. now irrelevant
343 
344 !- interaction radiation / prognostic O3 off by default
345 lepo3ra=.false.
346 print *,'SUECRAD-0'
347 IF (.NOT.yo3%LGP) THEN
348  lepo3ra=.false.
349 ENDIF
350 rpertoz=0._jprb
351 npertoz=0
352 
353 !NAER: CONFIGURATION INDEX FOR AEROSOLS
354 !!!!! A REVOIR (MPL) a mettre dans un fichier .def
355 naer =1
356 nmode =0
357 nozocl =1
358 nradfr =-3
359 IF (nsmax >= 511) nradfr =-1
360 nradpfr=0
361 nradpla=15
362 
363 ! -- UV diagnostic of surface fluxes over the 280-400 nm interval
364 ! with up-to 24 values (5 nm wide spectral intervals)
365 luvproc=.false.
366 luvtdep=.true.
367 luvdbg =.false.
368 nraduv =-3
369 nuvtim = 0
370 nuv = 24
371 rmuzuv = 1.e-01_jprb
372 DO juv=1,nuv
373  ruvlam(juv)=280._jprb+(juv-1)*5._jprb
374 ENDDO
375 
376 !- radiation interpolation (George M's grid on by default)
377 lldebug=.true.
378 ledbug=.false.
379 nradint=3
380 nradres=0
381 
382 nrint =4
383 
384 lradlb=.true.
385 crtabledir='./'
386 crtablefil='not set'
387 lradondem=.true.
388 !GM Temporary as per trans/external/setup_trans.F90
389 llinear_grid=nsmax > (ndlon+3)/3
390 IF( lldebug )THEN
391  WRITE(nulout,'("SUECRAD: NSMAX=",I6)')nsmax
392  WRITE(nulout,'("SUECRAD: NDLON=",I6)')ndlon
393  WRITE(nulout,'("SUECRAD: LLINEAR_GRID=",L5)')llinear_grid
394 ENDIF
395 
396 nuaer = 24
397 ntraer = 15
398 ! 1: max-random, 2: max, 3: random (5,6,7,8 pour meso-NH)
399 ! le CASE qui suit car les conventions sont differentes dans ARP et LMDZ (MPL 20100415)
400 SELECT CASE (overlap)
401  CASE (:1)
402  novlp = 2
403  CASE (2)
404  novlp = 3
405  CASE (3:)
406  novlp = 1
407  END SELECT
408 print *,'SUECRAD: NOVLP=',novlp
409 nlw = 16
410 ntsw = 14
411 !NSW = 6 !!!!! Maintenant dans config.def (MPL 20140213)
412 nswnl = 6
413 nswtl = 2
414 ncsradf= 1
415 IF(nsmax >= 106) THEN
416  nrproma = 80
417 ELSEIF(nsmax == 63) THEN
418  nrproma=48
419 ELSE
420  nrproma=64
421 ENDIF
422 
423 !* 2.3 SET SECURITY PARAMETERS
424 ! -----------------------
425 
426 repsc = 1.e-04_jprb
427 repsco = 1.e-12_jprb
428 repscq = 1.e-12_jprb
429 repsct = 1.e-12_jprb
430 repscw = 1.e-12_jprb
431 replog = 1.e-12_jprb
432 
433 
434 !* 2.4 BACKGROUND GAS CONCENTRATIONS (IPCC/SACC, 1990)
435 ! -----------------------------------------------
436 
437 leco2var=.false.
438 lhghg =.false.
439 nhincsol= 0
440 nscen = 1
441 rsolinc = ri0
442 
443 ! Valeurs d origine MPL 18052010
444 !RCCO2 = 353.E-06_JPRB
445 !RCCH4 = 1.72E-06_JPRB
446 !RCN2O = 310.E-09_JPRB
447 !RCCFC11 = 280.E-12_JPRB
448 !RCCFC12 = 484.E-12_JPRB
449 
450 ! Valeurs LMDZ (physiq.def) MPL 18052010
451 rcco2 = 348.e-06_jprb
452 rcch4 = 1.65e-06_jprb
453 rcn2o = 306.e-09_jprb
454 rccfc11 = 280.e-12_jprb
455 rccfc12 = 484.e-12_jprb
456 print *,'SUECRAD-1'
457 
458 ! ------------------------------------------------------------------
459 
460 !* 3. READ VALUES OF RADIATION CONFIGURATION
461 ! --------------------------------------
462 
463 !CALL POSNAM(NULNAM,'NAERAD')
464 !READ (NULNAM,NAERAD)
465 print *,'SUECRAD-2'
466 
467 !CALL POSNAM(NULNAM,'NAEAER')
468 !READ (NULNAM,NAEAER)
469 
470 !IF (NTYPAER(9) /= 0) THEN
471 ! RGEMUV=(RLATVOL+90._JPRB)*RPI/180._JPRB
472 ! RGELAV=RLONVOL*RPI/180._JPRB
473 ! RCLONV=COS(RGELAV)
474 ! RSLONV=SIN(RGELAV)
475 ! DO J=1,NGPTOT-1
476 ! IF (RGELAV > GELAM(J) .AND. RGELAV <= GELAM(J+1) .AND. &
477 ! & RGEMUV < RMU(JL) .AND. RGEMUV >= RMU(JL+1) ) THEN
478 ! RDGMUV=ABS( RMU(J+1) - RMU(J))
479 ! RDGLAV=ABS( GELAM(J+1)-GELAM(J) )
480 ! RDSLONV=ABS( SIN(GELAM(JL+1))-SIN(GELAM(JL)) )
481 ! RDCLONV=ABS( COS(GELAM(JL+1))-COS(GELAM(JL)) )
482 ! END IF
483 ! END DO
484 !END IF
485 
486 !- reset some parameters if SW6 is used (revert to pre-CY3?R1 operational configuration)
487 IF (.NOT.lsrtm) THEN
488  nmcica = 0
489  lccnl = .false.
490  lccno = .false.
491  ldiffc = .false.
492  niceopt= 1
493  nliqopt= 0
494  nradip = 4
495  nradlp = 3
496  rre2de = 0.5_jprb
497  ninhom = 1
498  rlwinhf= 0.7_jprb
499  rswinhf= 0.7_jprb
500 ENDIF
501 print *,'SUECRAD-3'
502 
503 !- for McICA computations, make sure these parameters are as follows ...
504 IF (nmcica /= 0) THEN
505  ninhom = 0
506  rlwinhf= 1.0_jprb
507  rswinhf= 1.0_jprb
508 !-- read the XCW values for Raisanen-Cole-Barker cloud generator
509  CALL su_mcica
510 ENDIF
511 print *,'SUECRAD-4'
512 
513 
514 
515 IF( lldebug )THEN
516  WRITE(nulout,'("SUECRAD: NRADINT=",I2)')nradint
517  WRITE(nulout,'("SUECRAD: NRADRES=",I4)')nradres
518 ENDIF
519 
520 ! DETERMINE WHETHER NRPROMA IS NEGATIVE AND SET LOPTRPROMA
521 
522 loptrproma=nrproma > 0
523 nrproma=abs(nrproma)
524 
525 IF( nradint > 0 .AND. nradres == nsmax )THEN
526  WRITE(nulout,.AND.'("SUECRAD: NRADINT > 0 NRADRES = NSMAX, NRADINT RESET TO 0")')
527  nradint=0
528 ENDIF
529 
530 IF( nradint > 0 .AND. lrayfm .AND. naer /= 0 .AND. .NOT.lhvolca )THEN
531 ! This combination is not supported as aerosol data would be
532 ! required to be interpolated (see radintg)
533  WRITE(nulout,.AND.'("SUECRAD: NRADINT>0, LRAYFM=T NAER /= 0 LHVOLCA=F,",&
534  & " NRADRES RESET TO NSMAX (NO INTERPOLATION)")')
535  nradres=nsmax
536 ENDIF
537 !CALL GSTATS(1818,1) MPL 2.12.08
538 
539 100 CONTINUE
540 
541 IF( leradi )THEN ! START OF LERADI BLOCK
542 
543  IF( nradint == -1 )THEN
544 
545  ! INITIALISE DATA STRUCTURES REQUIRED FOR RADIATION INTERPOLATION
546 
547  lodbgradi=.false.
548  CALL suecradi
549 
550  ! INITIALISE DATA STRUCTURES REQUIRED FOR RADIATION COURSE GRID
551  ! LOAD BALANCING
552 
553  lodbgradl=.false.
554 ! CALL SUECRADL ! MPL 1.12.08
555  CALL abor1('JUSTE APRES CALL SUECRADL COMMENTE')
556 
557  ELSEIF( nradint == 0 )THEN
558 
559  IF( nradres /= nsmax )THEN
560  WRITE(nulout,'("SUECRAD: NRADINT=0 REQUESTED, NRADRES RESET TO NSMAX")')
561  nradres=nsmax
562  ENDIF
563  radgrid%NGPTOT=ngptot
564 
565  narib1=0
566  narob1=0
567 
568  ELSEIF( nradint >=1 .AND. nradint <= 3 )THEN
569 
570  narib1=0
571  narob1=0
572 
573 ! set the default radiation grid resolution for the current model resolution
574 ! if not already specified
575  IF( nradres == 0 )THEN
576  IF( llinear_grid )THEN ! RATIO OF GRID-POINTS (MODEL/RAD)
577  IF( nsmax == 63 )THEN
578  nradres=21 ! 3.62
579  llinear_grid=.false.
580  ENDIF
581  IF( nsmax == 95 ) nradres= 95 ! 1.00
582  IF( nsmax == 159 ) nradres= 63 ! 5.84
583  IF( nsmax == 255 ) nradres= 95 ! 6.69
584  IF( nsmax == 319 ) nradres= 159 ! 3.87
585  IF( nsmax == 399 ) nradres= 159 ! 5.99
586  IF( nsmax == 511 ) nradres= 255 ! 3.92
587  IF( nsmax == 639 ) nradres= 319 ! 3.92
588  IF( nsmax == 799 ) nradres= 399 ! 3.94
589  IF( nsmax == 1023 ) nradres= 511 ! 3.94
590  IF( nsmax == 1279 ) nradres= 639 !
591  IF( nsmax == 2047 ) nradres= 1023 !
592  ELSE ! NOT LINEAR GRID
593  IF( nsmax == 21 ) nradres= 21 ! 1.00
594  IF( nsmax == 42 ) nradres= 21 ! 3.62
595  IF( nsmax == 63 ) nradres= 42 ! 2.17
596  IF( nsmax == 106 ) nradres= 63 ! 2.69
597  IF( nsmax == 170 ) nradres= 63 ! 6.69
598  IF( nsmax == 213 ) nradres= 106 ! 3.87
599  IF( nsmax == 266 ) nradres= 106 ! 5.99
600  IF( nsmax == 341 ) nradres= 170 ! 3.92
601  IF( nsmax == 426 ) nradres= 213 ! 3.92
602  IF( nsmax == 533 ) nradres= 266 ! 3.94
603  IF( nsmax == 682 ) nradres= 341 ! 3.94
604  ENDIF
605  ENDIF
606 print *,'SUECRAD-5'
607 
608 ! test if radiation grid resolution has been set
609  IF( nradres == 0 )THEN
610  WRITE(nulout,'("SUECRAD: NRADRES NOT SET OR DEFAULT FOUND,NSMAX=",I4)')nsmax
611  CALL abor1('SUECRAD: NRADRES NOT SET OR DEFAULT FOUND')
612  ENDIF
613 
614 ! test if no interpolation is required
615  IF( nradint > 0 .AND. nradres == nsmax )THEN
616  WRITE(nulout,.AND.'("SUECRAD: NRADINT > 0 NRADRES = NSMAX, NRADINT RESET TO 0")')
617  nradint=0
618  GOTO 100
619  ENDIF
620 
621 ! CALL GSTATS(1818,0) MPL 2.12.08
622  IF( crtablefil == 'not set' )THEN
623  IF( llinear_grid )THEN
624  IF( nradres < 1000 )THEN
625  WRITE(crtablefil,'("rtablel_2",I3.3)')nradres
626  ELSE
627  WRITE(crtablefil,'("rtablel_2",I4.4)')nradres
628  ENDIF
629  ELSE
630  IF( nradres < 1000 )THEN
631  WRITE(crtablefil,'("rtable_2" ,I3.3)')nradres
632  ELSE
633  WRITE(crtablefil,'("rtable_2" ,I4.4)')nradres
634  ENDIF
635  ENDIF
636  ENDIF
637 ! CALL GSTATS(1818,1) MPL 2.12.08
638 
639  radgrid%NSMAX=nradres
640 
641  IF( myproc == jpiomaster )THEN
642  idir=len_trim(crtabledir)
643  ifil=len_trim(crtablefil)
644  clfn=crtabledir(1:idir)//crtablefil(1:ifil)
645 ! Ce qui concerne NULRAD commente par MPL le 15.04.09
646 ! OPEN(NULRAD,FILE=CLFN,ACTION="READ",ERR=999)
647 ! GOTO 1000
648 ! 999 CONTINUE
649 ! WRITE(NULOUT,'("SUECRAD: UNABLE TO OPEN FILE ",A)')CLFN
650 ! CALL ABOR1('SUECRAD: UNABLE TO OPEN RADIATION GRID RTABLE FILE')
651 ! 1000 CONTINUE
652  nrgri(:)=0
653 ! Ce qui concerne NAMRGRI commente par MPL le 15.04.09
654 ! CALL POSNAM(NULRAD,'NAMRGRI')
655 ! READ (NULRAD,NAMRGRI)
656  idgl=1
657  DO WHILE( nrgri(idgl)>0 )
658  IF( lldebug )THEN
659  WRITE(nulout,'("SUECRAD: NRGRI(",I4,")=",I4)')idgl,nrgri(idgl)
660  ENDIF
661  idgl=idgl+1
662  ENDDO
663  idgl=idgl-1
664  radgrid%NDGLG=idgl
665  IF( lldebug )THEN
666  WRITE(nulout,'("SUECRAD: RADGRID%NDGLG=",I4)')radgrid%NDGLG
667  ENDIF
668 ! CLOSE(NULRAD)
669  ENDIF
670 ! CALL GSTATS(667,0) MPL 2.12.08
671  IF( nproc > 1 )THEN
672  stop'Pas pret pour proc > 1'
673 ! CALL MPL_BROADCAST (RADGRID%NDGLG,MTAGRAD,JPIOMASTER,CDSTRING='SUECRAD:')
674  ENDIF
675  ALLOCATE(radgrid%NRGRI(radgrid%NDGLG))
676  IF( myproc == jpiomaster )THEN
677  radgrid%NRGRI(1:radgrid%NDGLG)=nrgri(1:radgrid%NDGLG)
678  ENDIF
679  IF( nproc > 1 )THEN
680  stop'Pas pret pour proc > 1'
681 ! CALL MPL_BROADCAST (RADGRID%NRGRI(1:RADGRID%NDGLG),MTAGRAD,JPIOMASTER,CDSTRING='SUECRAD:')
682  ENDIF
683 ! CALL GSTATS(667,1) MPL 2.12.08
684 
685 ! CALL GSTATS(1818,0) MPL 2.12.08
686  IF ( nradint == 1 )THEN
687  WRITE(nulout,'("SUECRAD: INTERPOLATION METHOD - SPECTRAL TRANSFORM")')
688  radgrid%NDGSUR=0
689  nriwiden=0
690  nriwides=0
691  nriwidew=0
692  nriwidee=0
693  nrowiden=0
694  nrowides=0
695  nrowidew=0
696  nrowidee=0
697  ELSEIF( nradint == 2 )THEN
698  WRITE(nulout,'("SUECRAD: INTERPOLATION METHOD - 4 POINT")')
699  radgrid%NDGSUR=2
700  ELSEIF( nradint == 3 )THEN
701  WRITE(nulout,'("SUECRAD: INTERPOLATION METHOD - 12 POINT")')
702  radgrid%NDGSUR=2
703  ENDIF
704  WRITE(nulout,'("SUECRAD: RADGRID%NDGSUR =",I8)')radgrid%NDGSUR
705 
706  radgrid%NDGSAG=1-radgrid%NDGSUR
707  radgrid%NDGENG=radgrid%NDGLG+radgrid%NDGSUR
708  radgrid%NDLON=radgrid%NRGRI(radgrid%NDGLG/2)
709  WRITE(nulout,'("SUECRAD: RADGRID%NDGSAG =",I8)')radgrid%NDGSAG
710  WRITE(nulout,'("SUECRAD: RADGRID%NDGENG =",I8)')radgrid%NDGENG
711  WRITE(nulout,'("SUECRAD: RADGRID%NDGLG =",I8)')radgrid%NDGLG
712  WRITE(nulout,'("SUECRAD: RADGRID%NDLON =",I8)')radgrid%NDLON
713  CALL flush(nulout)
714 
715  ALLOCATE(radgrid%NLOENG(radgrid%NDGSAG:radgrid%NDGENG))
716  radgrid%NLOENG(1:radgrid%NDGLG)=radgrid%NRGRI(1:radgrid%NDGLG)
717  IF(radgrid%NDGSUR >= 1)THEN
718  DO jglsur=1,radgrid%NDGSUR
719  radgrid%NLOENG(1-jglsur)=radgrid%NLOENG(jglsur)
720  ENDDO
721  DO jglsur=1,radgrid%NDGSUR
722  radgrid%NLOENG(radgrid%NDGLG+jglsur)=radgrid%NLOENG(radgrid%NDGLG+1-jglsur)
723  ENDDO
724  ENDIF
725 ! CALL GSTATS(1818,1) MPL 2.12.08
726 
727 ! Setup the transform package for the radiation grid
728  CALL setup_trans (ksmax=radgrid%NSMAX, &
729  & kdgl=radgrid%NDGLG, &
730  & kloen=radgrid%NLOENG(1:radgrid%NDGLG), &
731  & ldlinear_grid=llinear_grid, &
732  & ldsplit=lsplit, &
733  & kapsets=napsets, &
734  & kresol=radgrid%NRESOL_ID)
735 
736  ALLOCATE(radgrid%NSTA(radgrid%NDGSAG:radgrid%NDGENG+n_regions_ns-1,n_regions_ew))
737  ALLOCATE(radgrid%NONL(radgrid%NDGSAG:radgrid%NDGENG+n_regions_ns-1,n_regions_ew))
738  ALLOCATE(radgrid%NPTRFRSTLAT(n_regions_ns))
739  ALLOCATE(radgrid%NFRSTLAT(n_regions_ns))
740  ALLOCATE(radgrid%NLSTLAT(n_regions_ns))
741  ALLOCATE(radgrid%RMU(radgrid%NDGSAG:radgrid%NDGENG))
742  ALLOCATE(radgrid%RSQM2(radgrid%NDGSAG:radgrid%NDGENG))
743  ALLOCATE(radgrid%RLATIG(radgrid%NDGSAG:radgrid%NDGENG))
744 
745 ! Interrogate the transform package for the radiation grid
746 ! CALL GSTATS(1818,0) MPL 2.12.08
747  CALL trans_inq (kresol =radgrid%NRESOL_ID, &
748  & kspec2 =radgrid%NSPEC2, &
749  & knump =radgrid%NUMP, &
750  & kgptot =radgrid%NGPTOT, &
751  & kgptotg =radgrid%NGPTOTG, &
752  & kgptotmx =radgrid%NGPTOTMX, &
753  & kptrfrstlat=radgrid%NPTRFRSTLAT, &
754  & kfrstlat =radgrid%NFRSTLAT, &
755  & klstlat =radgrid%NLSTLAT, &
756  & kfrstloff =radgrid%NFRSTLOFF, &
757  & ksta =radgrid%NSTA(1:radgrid%NDGLG+n_regions_ns-1,:), &
758  & konl =radgrid%NONL(1:radgrid%NDGLG+n_regions_ns-1,:), &
759  & kptrfloff =radgrid%NPTRFLOFF, &
760  & pmu =radgrid%RMU(1:) )
761 
762  IF( nradint == 2 .OR. nradint == 3 )THEN
763  DO jgl=1,radgrid%NDGLG
764  radgrid%RSQM2(jgl) = sqrt(1.0_jprb - radgrid%RMU(jgl)*radgrid%RMU(jgl))
765  radgrid%RLATIG(jgl) = asin(radgrid%RMU(jgl))
766 ! WRITE(NULOUT,'("SUECRAD: JGL=",I6," RADGRID%RLATIG=",F10.3)')&
767 ! & JGL,RADGRID%RLATIG(JGL)
768  ENDDO
769  IF(radgrid%NDGSUR >= 1)THEN
770  DO jglsur=1,radgrid%NDGSUR
771  radgrid%RMU(1-jglsur)=radgrid%RMU(jglsur)
772  radgrid%RSQM2(1-jglsur)=radgrid%RSQM2(jglsur)
773  radgrid%RLATIG(1-jglsur)=rpi-radgrid%RLATIG(jglsur)
774  ENDDO
775  DO jglsur=1,radgrid%NDGSUR
776  radgrid%RMU(radgrid%NDGLG+jglsur)=radgrid%RMU(radgrid%NDGLG+1-jglsur)
777  radgrid%RSQM2(radgrid%NDGLG+jglsur)=radgrid%RSQM2(radgrid%NDGLG+1-jglsur)
778  radgrid%RLATIG(radgrid%NDGLG+jglsur)=-rpi-radgrid%RLATIG(radgrid%NDGLG+1-jglsur)
779  ENDDO
780  ENDIF
781  ENDIF
782 
783  radgrid%NDGSAL=1
784  radgrid%NDGENL=radgrid%NLSTLAT(my_region_ns)-radgrid%NFRSTLOFF
785  radgrid%NDSUR1=3-mod(radgrid%NDLON,2)
786  idlsur=max(radgrid%NDLON,2*radgrid%NSMAX+1)
787  radgrid%NDLSUR=idlsur+radgrid%NDSUR1
788  radgrid%MYFRSTACTLAT=radgrid%NFRSTLAT(my_region_ns)
789  radgrid%MYLSTACTLAT=radgrid%NLSTLAT(my_region_ns)
790 
791  WRITE(nulout,'("SUECRAD: RADGRID%NRESOL_ID =",I8)')radgrid%NRESOL_ID
792  WRITE(nulout,'("SUECRAD: RADGRID%NSMAX =",I8)')radgrid%NSMAX
793  WRITE(nulout,'("SUECRAD: RADGRID%NSPEC2 =",I8)')radgrid%NSPEC2
794  WRITE(nulout,'("SUECRAD: RADGRID%NGPTOT =",I8)')radgrid%NGPTOT
795  WRITE(nulout,'("SUECRAD: RADGRID%NGPTOTG =",I8)')radgrid%NGPTOTG
796  WRITE(nulout,'("SUECRAD: RADGRID%NDGSAL =",I8)')radgrid%NDGSAL
797  WRITE(nulout,'("SUECRAD: RADGRID%NDGENL =",I8)')radgrid%NDGENL
798  WRITE(nulout,'("SUECRAD: RADGRID%NDSUR1 =",I8)')radgrid%NDSUR1
799  WRITE(nulout,'("SUECRAD: RADGRID%NDLSUR =",I8)')radgrid%NDLSUR
800  WRITE(nulout,'("SUECRAD: RADGRID%MYFRSTACTLAT =",I8)')radgrid%MYFRSTACTLAT
801  WRITE(nulout,'("SUECRAD: RADGRID%MYLSTACTLAT =",I8)')radgrid%MYLSTACTLAT
802  CALL flush(nulout)
803 
804  ALLOCATE(radgrid%NASM0(0:radgrid%NSPEC2))
805  ALLOCATE(radgrid%MYMS(radgrid%NUMP))
806  CALL trans_inq (kresol =radgrid%NRESOL_ID, &
807  & kasm0 =radgrid%NASM0, &
808  & kmyms =radgrid%MYMS )
809 
810  ALLOCATE(radgrid%GELAM(radgrid%NGPTOT))
811  ALLOCATE(radgrid%GELAT(radgrid%NGPTOT))
812  ALLOCATE(radgrid%GESLO(radgrid%NGPTOT))
813  ALLOCATE(radgrid%GECLO(radgrid%NGPTOT))
814  ALLOCATE(radgrid%GEMU (radgrid%NGPTOT))
815 
816  ioff=0
817  ilat=radgrid%NPTRFLOFF
818  DO jglat=radgrid%NFRSTLAT(my_region_ns), &
819  & radgrid%NLSTLAT(my_region_ns)
820  zgemu=radgrid%RMU(jglat)
821  ilat=ilat+1
822  istlon = radgrid%NSTA(ilat,my_region_ew)
823  iendlon = istlon-1 + radgrid%NONL(ilat,my_region_ew)
824 
825  DO jlon=istlon,iendlon
826  zlon= REAL(jlon-1,jprb)*2.0_JPRB*RPI &
827  & /REAL(RADGRID%NLOENG(JGLAT),JPRB)
828  IOFF=ioff+1
829  radgrid%GELAM(ioff) = zlon
830  radgrid%GELAT(ioff) = asin(zgemu)
831  radgrid%GESLO(ioff) = sin(zlon)
832  radgrid%GECLO(ioff) = cos(zlon)
833  radgrid%GEMU (ioff) = zgemu
834  ENDDO
835  ENDDO
836 
837  IF( nradint == 2 .OR. nradint == 3 )THEN
838 
839 ! For grid point interpolations we need to calculate the halo size
840 ! required by each processor
841 
842  ALLOCATE(zlatx(radgrid%NGPTOTMX))
843  ALLOCATE(zlonx(radgrid%NGPTOTMX))
844  DO j=1,radgrid%NGPTOT
845  zlatx(j)=radgrid%GELAT(j)/rpi*2.0_jprb*90.0
846  zlonx(j)=(radgrid%GELAM(j)-rpi)/rpi*180.0
847  ENDDO
848  zminradlat=minval(zlatx(1:radgrid%NGPTOT))
849  zmaxradlat=maxval(zlatx(1:radgrid%NGPTOT))
850  zminradlon=minval(zlonx(1:radgrid%NGPTOT))
851  zmaxradlon=maxval(zlonx(1:radgrid%NGPTOT))
852  IF( lldebug )THEN
853  WRITE(nulout,'("RADGRID,BEGIN")')
854  IF( myproc /= 1 )THEN
855  stop'Pas pret pour proc > 1'
856 ! CALL MPL_SEND(RADGRID%NGPTOT,KDEST=NPRCIDS(1),KTAG=1,CDSTRING='SUECRAD.R')
857 ! CALL MPL_SEND(ZLATX(1:RADGRID%NGPTOT),KDEST=NPRCIDS(1),KTAG=2,CDSTRING='SUECRAD.R')
858 ! CALL MPL_SEND(ZLONX(1:RADGRID%NGPTOT),KDEST=NPRCIDS(1),KTAG=3,CDSTRING='SUECRAD.R')
859  ENDIF
860  IF( myproc == 1 )THEN
861  DO jroc=1,nproc
862  IF( jroc == myproc )THEN
863  DO j=1,radgrid%NGPTOT
864  WRITE(nulout,'(F7.2,2X,F7.2,2X,I6)')zlatx(j),zlonx(j),myproc
865  ENDDO
866  ELSE
867  stop'Pas pret pour proc > 1'
868 ! CALL MPL_RECV(IGPTOT,KSOURCE=NPRCIDS(JROC),KTAG=1,CDSTRING='SUECRAD.M')
869 ! CALL MPL_RECV(ZLATX(1:IGPTOT),KSOURCE=NPRCIDS(JROC),KTAG=2,CDSTRING='SUECRAD.M')
870 ! CALL MPL_RECV(ZLONX(1:IGPTOT),KSOURCE=NPRCIDS(JROC),KTAG=3,CDSTRING='SUECRAD.M')
871  DO j=1,igptot
872  WRITE(nulout,'(F7.2,2X,F7.2,2X,I6)')zlatx(j),zlonx(j),jroc
873  ENDDO
874  ENDIF
875  ENDDO
876  ENDIF
877  WRITE(nulout,'("RADGRID,END")')
878  ENDIF
879  DEALLOCATE(zlatx)
880  DEALLOCATE(zlonx)
881 
882  ALLOCATE(zlatx(ngptotmx))
883  ALLOCATE(zlonx(ngptotmx))
884  DO j=1,ngptot
885  zlatx(j)=gelat(j)/rpi*2.0_jprb*90.0
886  zlonx(j)=(gelam(j)-rpi)/rpi*180.0
887  ENDDO
888  zminmdllat=minval(zlatx(1:ngptot))
889  zmaxmdllat=maxval(zlatx(1:ngptot))
890  zminmdllon=minval(zlonx(1:ngptot))
891  zmaxmdllon=maxval(zlonx(1:ngptot))
892  IF( lldebug )THEN
893  WRITE(nulout,'("MODELGRID,BEGIN")')
894  IF( myproc /= 1 )THEN
895  stop'Pas pret pour proc > 1'
896 ! CALL MPL_SEND(NGPTOT,KDEST=NPRCIDS(1),KTAG=1,CDSTRING='SUECRAD')
897 ! CALL MPL_SEND(ZLATX(1:NGPTOT),KDEST=NPRCIDS(1),KTAG=2,CDSTRING='SUECRAD')
898 ! CALL MPL_SEND(ZLONX(1:NGPTOT),KDEST=NPRCIDS(1),KTAG=3,CDSTRING='SUECRAD')
899 ! CALL MPL_SEND(NGLOBALINDEX(1:NGPTOT),KDEST=NPRCIDS(1),KTAG=4,CDSTRING='SUECRAD')
900  ENDIF
901  IF( myproc == 1 )THEN
902  DO jroc=1,nproc
903  IF( jroc == myproc )THEN
904  DO j=1,ngptot
905  WRITE(nulout,'(F7.2,2X,F7.2,2X,I6,2X,I12)')zlatx(j),zlonx(j),myproc,nglobalindex(j)
906  ENDDO
907  ELSE
908  stop'Pas pret pour proc > 1'
909 ! CALL MPL_RECV(IGPTOT,KSOURCE=NPRCIDS(JROC),KTAG=1,CDSTRING='SUECRAD')
910 ! CALL MPL_RECV(ZLATX(1:IGPTOT),KSOURCE=NPRCIDS(JROC),KTAG=2,CDSTRING='SUECRAD')
911 ! CALL MPL_RECV(ZLONX(1:IGPTOT),KSOURCE=NPRCIDS(JROC),KTAG=3,CDSTRING='SUECRAD')
912  ALLOCATE(iglobalindex(1:igptot))
913 ! CALL MPL_RECV(IGLOBALINDEX(1:IGPTOT),KSOURCE=NPRCIDS(JROC),KTAG=4,CDSTRING='SUECRAD')
914  DO j=1,igptot
915  WRITE(nulout,'(F7.2,2X,F7.2,2X,I6,2X,I12)')zlatx(j),zlonx(j),jroc,iglobalindex(j)
916  ENDDO
917  DEALLOCATE(iglobalindex)
918  ENDIF
919  ENDDO
920  ENDIF
921  WRITE(nulout,'("MODELGRID,END")')
922  ENDIF
923  DEALLOCATE(zlatx)
924  DEALLOCATE(zlonx)
925 
926  IF( lldebug )THEN
927  WRITE(nulout,'("ZMINRADLAT=",F10.2)')zminradlat
928  WRITE(nulout,'("ZMINMDLLAT=",F10.2)')zminmdllat
929  WRITE(nulout,'("ZMAXRADLAT=",F10.2)')zmaxradlat
930  WRITE(nulout,'("ZMAXMDLLAT=",F10.2)')zmaxmdllat
931  WRITE(nulout,'("ZMINRADLON=",F10.2)')zminradlon
932  WRITE(nulout,'("ZMINMDLLON=",F10.2)')zminmdllon
933  WRITE(nulout,'("ZMAXRADLON=",F10.2)')zmaxradlon
934  WRITE(nulout,'("ZMAXMDLLON=",F10.2)')zmaxmdllon
935  ENDIF
936 
937  zlat=ndglg/180.
938  ilats_diff_c=ceiling(abs(zminradlat-zminmdllat)*zlat)
939  ilats_diff_f=floor(abs(zminradlat-zminmdllat)*zlat)
940  IF( zminradlat < zminmdllat )THEN
941  nriwides=jp_min_halo+ilats_diff_c
942  ELSE
943  nriwides=max(0,jp_min_halo-ilats_diff_f)
944  ENDIF
945  ilats_diff_c=ceiling(abs(zmaxradlat-zmaxmdllat)*zlat)
946  ilats_diff_f=floor(abs(zmaxradlat-zmaxmdllat)*zlat)
947  IF( zmaxradlat < zmaxmdllat )THEN
948  nriwiden=max(0,jp_min_halo-ilats_diff_f)
949  ELSE
950  nriwiden=jp_min_halo+ilats_diff_c
951  ENDIF
952  ilats_diff_c=ceiling(abs(zminradlon-zminmdllon)*zlat)
953  ilats_diff_f=floor(abs(zminradlon-zminmdllon)*zlat)
954  IF( zminradlon < zminmdllon )THEN
955  nriwidew=jp_min_halo+ilats_diff_c
956  ELSE
957  nriwidew=max(0,jp_min_halo-ilats_diff_f)
958  ENDIF
959  ilats_diff_c=ceiling(abs(zmaxradlon-zmaxmdllon)*zlat)
960  ilats_diff_f=floor(abs(zmaxradlon-zmaxmdllon)*zlat)
961  IF( zmaxradlon < zmaxmdllon )THEN
962  nriwidee=max(0,jp_min_halo-ilats_diff_f)
963  ELSE
964  nriwidee=jp_min_halo+ilats_diff_c
965  ENDIF
966 
967  zlat=radgrid%NDGLG/180.
968  ilats_diff_c=ceiling(abs(zminradlat-zminmdllat)*zlat)
969  ilats_diff_f=floor(abs(zminradlat-zminmdllat)*zlat)
970  IF( zminmdllat < zminradlat )THEN
971  nrowides=jp_min_halo+ilats_diff_c
972  ELSE
973  nrowides=max(0,jp_min_halo-ilats_diff_f)
974  ENDIF
975  ilats_diff_c=ceiling(abs(zmaxradlat-zmaxmdllat)*zlat)
976  ilats_diff_f=floor(abs(zmaxradlat-zmaxmdllat)*zlat)
977  IF( zmaxmdllat < zmaxradlat )THEN
978  nrowiden=max(0,jp_min_halo-ilats_diff_f)
979  ELSE
980  nrowiden=jp_min_halo+ilats_diff_c
981  ENDIF
982  ilats_diff_c=ceiling(abs(zminradlon-zminmdllon)*zlat)
983  ilats_diff_f=floor(abs(zminradlon-zminmdllon)*zlat)
984  IF( zminmdllon < zminradlon )THEN
985  nrowidew=jp_min_halo+ilats_diff_c
986  ELSE
987  nrowidew=max(0,jp_min_halo-ilats_diff_f)
988  ENDIF
989  ilats_diff_c=ceiling(abs(zmaxradlon-zmaxmdllon)*zlat)
990  ilats_diff_f=floor(abs(zmaxradlon-zmaxmdllon)*zlat)
991  IF( zmaxmdllon < zmaxradlon )THEN
992  nrowidee=max(0,jp_min_halo-ilats_diff_f)
993  ELSE
994  nrowidee=jp_min_halo+ilats_diff_c
995  ENDIF
996 
997  ENDIF
998 
999  radgrid%NDGSAH=max(radgrid%NDGSAG,&
1000  & radgrid%NDGSAL+radgrid%NFRSTLOFF-nrowiden)-radgrid%NFRSTLOFF
1001  radgrid%NDGENH=min(radgrid%NDGENG,&
1002  & radgrid%NDGENL+radgrid%NFRSTLOFF+nrowides)-radgrid%NFRSTLOFF
1003  WRITE(nulout,'("SUECRAD: RADGRID%NDGSAH =",I8)')radgrid%NDGSAH
1004  WRITE(nulout,'("SUECRAD: RADGRID%NDGENH =",I8)')radgrid%NDGENH
1005 
1006  IF( nradint == 2 .OR. nradint == 3 )THEN
1007 
1008  ilbrlati = max(radgrid%NDGSAG,&
1009  & radgrid%NDGSAL+radgrid%NFRSTLOFF-nrowiden)-radgrid%NFRSTLOFF
1010  iubrlati = min(radgrid%NDGENG,&
1011  & radgrid%NDGENL+radgrid%NFRSTLOFF+nrowides)-radgrid%NFRSTLOFF
1012  ALLOCATE(radgrid%RLATI(ilbrlati:iubrlati))
1013  ALLOCATE(radgrid%RIPI0(ilbrlati:iubrlati))
1014  ALLOCATE(radgrid%RIPI1(ilbrlati:iubrlati))
1015  ALLOCATE(radgrid%RIPI2(ilbrlati:iubrlati))
1016 
1017  DO jgl= ilbrlati,iubrlati
1018  iglglo=jgl+radgrid%NFRSTLOFF
1019  IF(iglglo >= 0.AND.iglglo <= radgrid%NDGLG) THEN
1020  zd1=radgrid%RLATIG(iglglo-1)-radgrid%RLATIG(iglglo)
1021  zd2=radgrid%RLATIG(iglglo-1)-radgrid%RLATIG(iglglo+1)
1022  zd3=radgrid%RLATIG(iglglo-1)-radgrid%RLATIG(iglglo+2)
1023  zd4=radgrid%RLATIG(iglglo )-radgrid%RLATIG(iglglo+1)
1024  zd5=radgrid%RLATIG(iglglo )-radgrid%RLATIG(iglglo+2)
1025  zd6=radgrid%RLATIG(iglglo+1)-radgrid%RLATIG(iglglo+2)
1026  radgrid%RIPI0(jgl)=-1.0_jprb/(zd1*zd4*zd5)
1027  radgrid%RIPI1(jgl)= 1.0_jprb/(zd2*zd4*zd6)
1028  radgrid%RIPI2(jgl)=-1.0_jprb/(zd3*zd5*zd6)
1029  ENDIF
1030  radgrid%RLATI(jgl)=radgrid%RLATIG(iglglo)
1031  ENDDO
1032 
1033  IF( nproc > 1 )THEN
1034  irirptsur=ngptotg
1035  irisptsur=2*ngptotg
1036  ELSE
1037  irirptsur=0
1038  irisptsur=0
1039  ENDIF
1040 
1041  ALLOCATE(nrista(ndgsal-nriwiden:ndgenl+nriwides))
1042  ALLOCATE(nrionl(ndgsal-nriwiden:ndgenl+nriwides))
1043  ALLOCATE(nrioff(ndgsal-nriwiden:ndgenl+nriwides))
1044  ALLOCATE(nriext(1-ndlon:ndlon+ndlon,1-nriwiden:ndgenl+nriwides))
1045  ALLOCATE(nricore(ngptot))
1046  ALLOCATE(irisendpos(irisptsur))
1047  ALLOCATE(irirecvpos(irirptsur))
1048  ALLOCATE(irisendptr(nproc+1))
1049  ALLOCATE(irirecvptr(nproc+1))
1050  ALLOCATE(iricomm(nproc))
1051  ALLOCATE(irimap(4,ndglg))
1052 ! MPL 1.12.08
1053 ! CALL RDCSET('RI',NRIWIDEN,NRIWIDES,NRIWIDEW,NRIWIDEE,&
1054 ! & IRIRPTSUR,IRISPTSUR,&
1055 ! & NDGLG,NDLON,NDGSAG,NDGENG,IDUM,IDUM,NDGSAL,NDGENL,&
1056 ! & NDSUR1,NDLSUR,NDGSUR,NGPTOT,IDUM,&
1057 ! & NPTRFLOFF,NFRSTLOFF,MYFRSTACTLAT,MYLSTACTLAT,&
1058 ! & NSTA,NONL,NLOENG,NPTRFRSTLAT,NFRSTLAT,NLSTLAT,&
1059 ! & RMU,RSQM2,&
1060 ! & NRISTA,NRIONL,NRIOFF,NRIEXT,NRICORE,NARIB1,&
1061 ! & NRIPROCS,NRIMPBUFSZ,NRIRPT,NRISPT,&
1062 ! & IRISENDPOS,IRIRECVPOS,IRISENDPTR,IRIRECVPTR,IRICOMM,IRIMAP,IRIMAPLEN)
1063  CALL abor1('JUSTE APRES CALL RDCSET COMMENTE')
1064  WRITE(nulout,'("SUECRAD: NARIB1=",I12)')narib1
1065  ALLOCATE(nrisendpos(nrispt))
1066  ALLOCATE(nrirecvpos(nrirpt))
1067  ALLOCATE(nrisendptr(nriprocs+1))
1068  ALLOCATE(nrirecvptr(nriprocs+1))
1069  ALLOCATE(nricomm(nriprocs))
1070  nrisendpos(1:nrispt)=irisendpos(1:nrispt)
1071  nrirecvpos(1:nrirpt)=irirecvpos(1:nrirpt)
1072  nrisendptr(1:nriprocs+1)=irisendptr(1:nriprocs+1)
1073  nrirecvptr(1:nriprocs+1)=irirecvptr(1:nriprocs+1)
1074  nricomm(1:nriprocs)=iricomm(1:nriprocs)
1075  DEALLOCATE(irisendpos)
1076  DEALLOCATE(irirecvpos)
1077  DEALLOCATE(irisendptr)
1078  DEALLOCATE(irirecvptr)
1079  DEALLOCATE(iricomm)
1080  DEALLOCATE(irimap)
1081 
1082  IF( nproc > 1 )THEN
1083  irorptsur=radgrid%NGPTOTG
1084  irosptsur=2*radgrid%NGPTOTG
1085  ELSE
1086  irorptsur=0
1087  irosptsur=0
1088  ENDIF
1089 
1090  ALLOCATE(nrosta(radgrid%NDGSAL-nrowiden:radgrid%NDGENL+nrowides))
1091  ALLOCATE(nroonl(radgrid%NDGSAL-nrowiden:radgrid%NDGENL+nrowides))
1092  ALLOCATE(nrooff(radgrid%NDGSAL-nrowiden:radgrid%NDGENL+nrowides))
1093  ALLOCATE(nroext(1-radgrid%NDLON:radgrid%NDLON+radgrid%NDLON,&
1094  & 1-nrowiden:radgrid%NDGENL+nrowides))
1095  ALLOCATE(nrocore(radgrid%NGPTOT))
1096  ALLOCATE(irosendpos(irosptsur))
1097  ALLOCATE(irorecvpos(irorptsur))
1098  ALLOCATE(irosendptr(nproc+1))
1099  ALLOCATE(irorecvptr(nproc+1))
1100  ALLOCATE(irocomm(nproc))
1101  ALLOCATE(iromap(4,radgrid%NDGLG))
1102 ! MPL 1.12.08
1103 ! CALL RDCSET('RO',NROWIDEN,NROWIDES,NROWIDEW,NROWIDEE,&
1104 ! & IRORPTSUR,IROSPTSUR,&
1105 ! & RADGRID%NDGLG,RADGRID%NDLON,RADGRID%NDGSAG,&
1106 ! & RADGRID%NDGENG,IDUM,IDUM,RADGRID%NDGSAL,RADGRID%NDGENL,&
1107 ! & RADGRID%NDSUR1,RADGRID%NDLSUR,RADGRID%NDGSUR,RADGRID%NGPTOT,IDUM,&
1108 ! & RADGRID%NPTRFLOFF,RADGRID%NFRSTLOFF,RADGRID%MYFRSTACTLAT,RADGRID%MYLSTACTLAT,&
1109 ! & RADGRID%NSTA,RADGRID%NONL,RADGRID%NLOENG,RADGRID%NPTRFRSTLAT,&
1110 ! & RADGRID%NFRSTLAT,RADGRID%NLSTLAT,&
1111 ! & RADGRID%RMU,RADGRID%RSQM2,&
1112 ! & NROSTA,NROONL,NROOFF,NROEXT,NROCORE,NAROB1,&
1113 ! & NROPROCS,NROMPBUFSZ,NRORPT,NROSPT,&
1114 ! & IROSENDPOS,IRORECVPOS,IROSENDPTR,IRORECVPTR,IROCOMM,IROMAP,IROMAPLEN)
1115  CALL abor1('JUSTE APRES CALL RDCSET COMMENTE')
1116  WRITE(nulout,'("SUECRAD: NAROB1=",I12)')narob1
1117  ALLOCATE(nrosendpos(nrospt))
1118  ALLOCATE(nrorecvpos(nrorpt))
1119  ALLOCATE(nrosendptr(nroprocs+1))
1120  ALLOCATE(nrorecvptr(nroprocs+1))
1121  ALLOCATE(nrocomm(nroprocs))
1122  nrosendpos(1:nrospt)=irosendpos(1:nrospt)
1123  nrorecvpos(1:nrorpt)=irorecvpos(1:nrorpt)
1124  nrosendptr(1:nroprocs+1)=irosendptr(1:nroprocs+1)
1125  nrorecvptr(1:nroprocs+1)=irorecvptr(1:nroprocs+1)
1126  nrocomm(1:nroprocs)=irocomm(1:nroprocs)
1127  DEALLOCATE(irosendpos)
1128  DEALLOCATE(irorecvpos)
1129  DEALLOCATE(irosendptr)
1130  DEALLOCATE(irorecvptr)
1131  DEALLOCATE(irocomm)
1132  DEALLOCATE(iromap)
1133 
1134  IF( lldebug )THEN
1135  WRITE(nulout,'("")')
1136  iriwidemaxn=0
1137  iriwidemaxs=0
1138  iriwidemaxw=0
1139  iriwidemaxe=0
1140  irowidemaxn=0
1141  irowidemaxs=0
1142  irowidemaxw=0
1143  irowidemaxe=0
1144  iarib1max=0
1145  iarob1max=0
1146  iwide(1)=nriwiden
1147  iwide(2)=nriwides
1148  iwide(3)=nriwidew
1149  iwide(4)=nriwidee
1150  iwide(5)=nrowiden
1151  iwide(6)=nrowides
1152  iwide(7)=nrowidew
1153  iwide(8)=nrowidee
1154  iwide(9)=narib1
1155  iwide(10)=narob1
1156  IF( myproc /= 1 )THEN
1157  stop'Pas pret pour proc > 1'
1158 ! CALL MPL_SEND(IWIDE(1:10),KDEST=NPRCIDS(1),KTAG=1,CDSTRING='SUECRAD.W')
1159  ENDIF
1160  IF( myproc == 1 )THEN
1161  DO jroc=1,nproc
1162  IF( jroc /= myproc )THEN
1163  stop'Pas pret pour proc > 1'
1164 ! CALL MPL_RECV(IWIDE(1:10),KSOURCE=NPRCIDS(JROC),KTAG=1,CDSTRING='SUECRAD.W')
1165  ENDIF
1166  WRITE(nulout,'("SUECRAD: PROC=",I5,2X,"NRIWIDEN=",I3,2X,"NROWIDEN=",I3 )')&
1167  & jroc,iwide(1),iwide(5)
1168  WRITE(nulout,'("SUECRAD: PROC=",I5,2X,"NRIWIDES=",I3,2X,"NROWIDES=",I3 )')&
1169  & jroc,iwide(2),iwide(6)
1170  WRITE(nulout,'("SUECRAD: PROC=",I5,2X,"NRIWIDEW=",I3,2X,"NROWIDEW=",I3 )')&
1171  & jroc,iwide(3),iwide(7)
1172  WRITE(nulout,'("SUECRAD: PROC=",I5,2X,"NRIWIDEE=",I3,2X,"NROWIDEE=",I3 )')&
1173  & jroc,iwide(4),iwide(8)
1174  WRITE(nulout,'("SUECRAD: PROC=",I5,2X,"NARIB1=",I10,2X,"NAROB1=",I10 )')&
1175  & jroc,iwide(9),iwide(10)
1176  WRITE(nulout,'("")')
1177  IF( iwide(1) > iriwidemaxn ) iriwidemaxn=iwide(1)
1178  IF( iwide(2) > iriwidemaxs ) iriwidemaxs=iwide(2)
1179  IF( iwide(3) > iriwidemaxw ) iriwidemaxw=iwide(3)
1180  IF( iwide(4) > iriwidemaxe ) iriwidemaxe=iwide(4)
1181  IF( iwide(5) > irowidemaxn ) irowidemaxn=iwide(5)
1182  IF( iwide(6) > irowidemaxs ) irowidemaxs=iwide(6)
1183  IF( iwide(7) > irowidemaxw ) irowidemaxw=iwide(7)
1184  IF( iwide(8) > irowidemaxe ) irowidemaxe=iwide(8)
1185  IF( iwide(9) > iarib1max ) iarib1max =iwide(9)
1186  IF( iwide(10) > iarob1max ) iarob1max =iwide(10)
1187  ENDDO
1188  WRITE(nulout,'("")')
1189  WRITE(nulout,'("SUECRAD: NRIWIDEN(MAX) =",I8)')iriwidemaxn
1190  WRITE(nulout,'("SUECRAD: NRIWIDES(MAX) =",I8)')iriwidemaxs
1191  WRITE(nulout,'("SUECRAD: NRIWIDEW(MAX) =",I8)')iriwidemaxw
1192  WRITE(nulout,'("SUECRAD: NRIWIDEE(MAX) =",I8)')iriwidemaxe
1193  WRITE(nulout,'("SUECRAD: NROWIDEN(MAX) =",I8)')irowidemaxn
1194  WRITE(nulout,'("SUECRAD: NROWIDES(MAX) =",I8)')irowidemaxs
1195  WRITE(nulout,'("SUECRAD: NROWIDEW(MAX) =",I8)')irowidemaxw
1196  WRITE(nulout,'("SUECRAD: NROWIDEE(MAX) =",I8)')irowidemaxe
1197  WRITE(nulout,'("SUECRAD: NARIB1(MAX) =",I10)')iarib1max
1198  WRITE(nulout,'("SUECRAD: NAROB1(MAX) =",I10)')iarob1max
1199  WRITE(nulout,'("")')
1200  ENDIF
1201  CALL flush(nulout)
1202  ENDIF
1203 
1204  ENDIF
1205 ! CALL GSTATS(1818,1) MPL 2.12.08
1206 
1207  ELSE
1208 
1209  WRITE(nulout,'("SUECRAD: INVALID VALUE FOR NRADINT=",I6)')nradint
1210  CALL abor1('SUECRAD: NRADINT INVALID')
1211 
1212  ENDIF
1213 
1214 ENDIF ! END OF LERADI BLOCK
1215 
1216 ! ----------------------------------------------------------------
1217 
1218 !* 4. INITIALIZE RADIATION COEFFICIENTS.
1219 ! ----------------------------------
1220 
1221 rcday = rday * rg / rcpd
1222 diff = 1.66_jprb
1223 r10e = 0.4342945_jprb
1224 
1225 ! CALL GSTATS(1818,0) MPL 2.12.08
1226 CALL surdi
1227 
1228 IF (ninhom == 0) THEN
1229  rlwinhf=1._jprb
1230  rswinhf=1._jprb
1231 ENDIF
1232 
1233 ! ----------------------------------------------------------------
1234 
1235 !* 5. INITIALIZE RADIATION ABSORPTION COEFFICIENTS
1236 ! --------------------------------------------
1237 
1238 !* 5.1. Initialization routine for RRTM
1239 ! -------------------------------
1240 
1241 CALL surrtab
1242 CALL surrtpk
1243 CALL surrtrf
1244 CALL surrtftr
1245 
1246 IF (lrrtm) THEN
1247  IF (klev > jplay) THEN
1248  WRITE(unit=kulout,&
1249  & fmt='('' RRTM MAXIMUM NUMBER OF LAYERS IS REACHED'',&
1250  & '' CALL ABORT'')')
1251  CALL abor1(' ABOR1 CALLED SUECRAD')
1252  ENDIF
1253 
1254 ! Read the absorption coefficient data and reduce from 256 to 140 g-points
1255 
1256  CALL rrtm_init_140gp
1257 
1258  inblw=16
1259 
1260 ELSE
1261  inblw=6
1262 
1263 ENDIF
1264 
1265 CALL sulwn
1266 CALL suswn (ntsw, nsw)
1267 CALL suclopn (ntsw, nsw, klev)
1268 
1269 !-- routines specific to SRTM
1270 IF (lsrtm) THEN
1271  ntsw=14
1272  isw =14
1273  CALL srtm_init
1274  CALL susrtaer
1275  CALL susrtcop
1276  WRITE(unit=kulout,fmt='(''SRTM Configuration'',L8,3I4)')lsrtm,ntsw,isw,jpgpt
1277 
1278 ELSE
1279  IF (.NOT.lonewsw .OR. ((nsw /= 2).AND.(nsw /= 4).AND.(nsw /= 6)) ) THEN
1280  WRITE(unit=kulout,fmt='(''Wrong SW Configuration'',L8,I3)')lonewsw,nsw
1281  ENDIF
1282 
1283  CALL suswn (ntsw,nsw)
1284  CALL suaersn (ntsw,nsw)
1285 ENDIF
1286 WRITE(unit=kulout,fmt='('' NLW,NTSW,NSW SET EQUAL TO:'',3I3)') inblw,ntsw,nsw
1287 
1288 
1289 !-- routine specific to the UV processor
1290 IF (luvproc) THEN
1291  nuvtim = nuvtim * 86400
1292  CALL su_uvrad ( nuv )
1293 ENDIF
1294 
1295 ! ----------------------------------------------------------------
1296 
1297 !* 6. INITIALIZE AEROSOL OPTICAL PARAMETERS AND DISTRIBUTION
1298 ! ------------------------------------------------------
1299 
1300 !- LW optical properties
1301 CALL suaerl
1302 !- SW optical properties moved above
1303 !CALL SUAERSN (NTSW,NSW)
1304 
1305 !- horizontal distribution
1306 CALL suaerh
1307 
1308 !- vertical distribution
1309 CALL suaerv ( klev , petah,&
1310  & cvdaes , cvdael , cvdaeu , cvdaed,&
1313  & )
1314 
1315 !-- Overlap function (only used if NOVLP=4)
1316 ! Appel supprime par MPL (30042010) car NOVLP=4 pas utilise
1317 ! sinon il faudrait calculer le geopotentiel STZ
1318 !CALL SUOVLP ( KLEV )
1319 
1320 !-- parameters for prognostic aerosols
1321 CALL su_aerw
1322 
1323 ! ----------------------------------------------------------------
1324 
1325 !* 7. INITIALIZE SATELLITE GEOMETRICAL/RADIOMETRIC PARAMETERS
1326 ! -------------------------------------------------------
1327 
1328 IF (lephys .AND. nmode > 1) THEN
1329  CALL susat
1330 ENDIF
1331 !CALL GSTATS(1818,1) MPL 2.12.08
1332 
1333 ! ----------------------------------------------------------------
1334 
1335 !* 8. INITIALIZE CLIMATOLOGICAL OZONE DISTRIBUTION
1336 ! --------------------------------------------
1337 ! (not done here!!! called from APLPAR as it depends
1338 ! on model pressure levels!)
1339 
1340 ! ----------------------------------------------------------------
1341 
1342 !* 9. SET UP MODEL CONFIGURATION FOR TIME-SPACE INTERPOLATION
1343 ! -------------------------------------------------------
1344 
1345 ztstep=max(tstep,1.0_jprb)
1346 zstphr=3600._jprb/ztstep
1347 iradfr=nradfr
1348 IF(nradfr < 0) THEN
1349  nradfr=-nradfr*zstphr+0.5_jprb
1350 ENDIF
1352 IF (mod(nradpla,2) == 0.AND. nradpla /= 0) THEN
1353  nradpla=nradpla+1
1354 ENDIF
1355 
1356 IF(nraduv < 0) THEN
1357  nraduv=-nraduv*zstphr+0.5_jprb
1358 ENDIF
1359 
1360 ist1hr=zstphr+0.05_jprb
1361 istnhr= nlngr1h *zstphr+0.05_jprb
1362 IF (mod(3600._jprb,ztstep) > 0.1_jprb) THEN
1363  801 CONTINUE
1364  ist1hr=ist1hr+1
1365  IF (mod(istnhr,ist1hr) /= 0) GO TO 801
1366 ENDIF
1367 IF (nradfr == 1) THEN
1368  nradsfr=nradfr
1369 ELSE
1370  nradsfr=ist1hr
1371 ENDIF
1373 
1374 IF(lrayfm) THEN
1375  nrproma=ndlon+6+(1-mod(ndlon,2))
1376 ENDIF
1377 
1378 ! ----------------------------------------------------------------
1379 
1380 !* 10. ALLOCATE WORK ARRAYS
1381 ! --------------------
1382 
1383 iu = nulout
1384 llp = nprintlev >= 1.OR. lallopr
1385 
1386 IF (lephys) THEN
1387  ALLOCATE(emtd(nproma,nflevg+1,ngpblks))
1388  IF(llp)WRITE(iu,9) 'EMTD ',SIZE(emtd ),shape(emtd )
1389  ALLOCATE(trsw(nproma,nflevg+1,ngpblks))
1390  IF(llp)WRITE(iu,9) 'TRSW ',SIZE(trsw ),shape(trsw )
1391  ALLOCATE(emtc(nproma,nflevg+1,ngpblks))
1392  IF(llp)WRITE(iu,9) 'EMTC ',SIZE(emtc ),shape(emtc )
1393  ALLOCATE(trsc(nproma,nflevg+1,ngpblks))
1394  IF(llp)WRITE(iu,9) 'TRSC ',SIZE(trsc ),shape(trsc )
1395  ALLOCATE(srswd(nproma,ngpblks))
1396  IF(llp)WRITE(iu,9) 'SRSWD ',SIZE(srswd ),shape(srswd )
1397  ALLOCATE(srlwd(nproma,ngpblks))
1398  IF(llp)WRITE(iu,9) 'SRLWD ',SIZE(srlwd ),shape(srlwd )
1399  ALLOCATE(srswdcs(nproma,ngpblks))
1400  IF(llp)WRITE(iu,9) 'SRSWDCS ',SIZE(srswdcs ),shape(srswdcs )
1401  ALLOCATE(srlwdcs(nproma,ngpblks))
1402  IF(llp)WRITE(iu,9) 'SRLWDCS ',SIZE(srlwdcs ),shape(srlwdcs )
1403  ALLOCATE(srswdv(nproma,ngpblks))
1404  IF(llp)WRITE(iu,9) 'SRSWDV ',SIZE(srswdv ),shape(srswdv )
1405  ALLOCATE(srswduv(nproma,ngpblks))
1406  IF(llp)WRITE(iu,9) 'SRSWDUV ',SIZE(srswduv ),shape(srswduv )
1407  ALLOCATE(edro(nproma,ngpblks))
1408  IF(llp)WRITE(iu,9) 'EDRO ',SIZE(edro ),shape(edro )
1409  ALLOCATE(srswpar(nproma,ngpblks))
1410  IF(llp)WRITE(iu,9) 'SRSWPAR ',SIZE(srswpar ),shape(srswpar )
1411  ALLOCATE(srswuvb(nproma,ngpblks))
1412  IF(llp)WRITE(iu,9) 'SRSWUVB ',SIZE(srswuvb ),shape(srswuvb )
1413 
1414 ELSEIF(lmphys .AND. (lrayfm.OR.lrayfm15)) THEN
1415  ALLOCATE(emtd(nproma,nflevg+1,ngpblks))
1416  IF(llp)WRITE(iu,9) 'EMTD ',SIZE(emtd ),shape(emtd )
1417  ALLOCATE(trsw(nproma,nflevg+1,ngpblks))
1418  IF(llp)WRITE(iu,9) 'TRSW ',SIZE(trsw ),shape(trsw )
1419  ALLOCATE(emtu(nproma,nflevg+1,ngpblks))
1420  IF(llp)WRITE(iu,9) 'EMTC ',SIZE(emtu ),shape(emtu )
1421  ALLOCATE(rmoon(nproma,ngpblks))
1422  IF(llp)WRITE(iu,9) 'RMOON ',SIZE(rmoon ),shape(rmoon )
1423 ENDIF
1424 ALLOCATE(srswparc(nproma,ngpblks))
1425 IF(llp)WRITE(iu,9) 'SRSWPARC ',SIZE(srswparc ),shape(srswparc )
1426 ALLOCATE(srswtinc(nproma,ngpblks))
1427 IF(llp)WRITE(iu,9) 'SRSWTINC ',SIZE(srswtinc ),shape(srswtinc )
1428 
1429 9 FORMAT(1x,'ARRAY ',a10,' ALLOCATED ',8i8)
1430 
1431 ! ----------------------------------------------------------------
1432 
1433 !* 10. PRINT FINAL VALUES.
1434 ! -------------------
1435 
1436 IF (loutput) THEN
1437  WRITE(unit=kulout,fmt='('' COMMON YOERAD '')')
1438  WRITE(unit=kulout,fmt='('' LERADI = '',L5 &
1439  & ,'' LERAD1H = '',L5,'' LECO2VAR= '',L5,'' LHGHG = '',L5 &
1440  & ,'' NLNGR1H = '',I2,'' NRADSFR = '',I2)')&
1441  & leradi,lerad1h,leco2var,lhghg,nlngr1h,nradsfr
1442  WRITE(unit=kulout,fmt='('' LEPO3RA = '',L5,'' YO3%LGP = '',L5 )') lepo3ra,yo3%LGP
1443  WRITE(unit=kulout,fmt='('' NRADFR = '',I2 &
1444  & ,'' NRADPFR = '',I3 &
1445  & ,'' NRADPLA = '',I2 &
1446  & ,'' NRINT = '',I1 &
1447  & ,'' NRPROMA = '',I5 &
1448  & )')&
1450  WRITE(unit=kulout,fmt='('' LERADHS= '',L5 &
1451  & ,'' LRRTM = '',L5 &
1452  & ,'' LSRTM = '',L5 &
1453  & ,'' NMODE = '',I1 &
1454  & ,'' NOZOCL= '',I1 &
1455  & ,'' NAER = '',I1 &
1456  & ,'' NHINCSOL='',I2 &
1457  & )')&
1458  & leradhs,lrrtm,lsrtm,nmode,nozocl,naer,nhincsol
1459  IF (.NOT.lhghg .AND. .NOT.leco2var) WRITE(unit=kulout,fmt='('' RCCO2= '',E10.3 &
1460  &,'' RCCH4= '',E10.3,'' RCN2O= '',E10.3,'' RCCFC11= '',E10.3,'' RCFC12= '',E10.3 &
1461  &)')&
1463  WRITE(unit=kulout,fmt='('' NINHOM = '',I1 &
1464  & ,'' NLAYINH='',I1 &
1465  & ,'' RLWINHF='',F4.2 &
1466  & ,'' RSWINHF='',F4.2 &
1467  & )')&
1468  & ninhom,nlayinh,rlwinhf,rswinhf
1469  IF (npertaer /= 0 .OR. npertoz /= 0) THEN
1470  WRITE(unit=kulout,fmt='('' NPERTAER= '',I2 &
1471  & ,'' LNOTROAER='',L5 &
1472  & ,'' NPERTOZ = '',I1 &
1473  & ,'' RPERTOZ = '',F5.0 &
1474  & )')&
1475  & npertaer,lnotroaer,npertoz,rpertoz
1476  ENDIF
1477  WRITE(unit=kulout,fmt='('' NRADINT = '',I2)')nradint
1478  WRITE(unit=kulout,fmt='('' NRADRES = '',I4)')nradres
1479  WRITE(unit=kulout,fmt='('' LRADONDEM = '',L5)')lradondem
1480  IF( nradint > 0 )THEN
1481  idir=len_trim(crtabledir)
1482  ifil=len_trim(crtablefil)
1483  WRITE(unit=kulout,fmt='('' CRTABLEDIR = '',A,'' CRTABLEFIL = '',A)')&
1484  & crtabledir(1:idir),crtablefil(1:ifil)
1485  ENDIF
1486  WRITE(unit=kulout,fmt='('' LCCNL = '',L5 &
1487  & ,'' LCCNO = '',L5 &
1488  & ,'' RCCNLND= '',F5.0 &
1489  & ,'' RCCNSEA= '',F5.0 &
1490  & ,'' LE4ALB = '',L5 &
1491  &)')&
1492  & lccnl,lccno,rccnlnd,rccnsea,le4alb
1493  IF (lhvolca) THEN
1494  WRITE(unit=kulout,fmt='('' HISTORY OF VOLCANIC AEROSOLS= '',L5)')lhvolca
1495  ENDIF
1496  WRITE(unit=kulout,fmt='('' LONEWSW= '',L5 &
1497  & ,'' NRADIP = '',I1 &
1498  & ,'' NRADLP = '',I1 &
1499  & ,'' NICEOPT= '',I1 &
1500  & ,'' NLIQOPT= '',I1 &
1501  & ,'' LDIFFC = '',L5 &
1502  & )')&
1503  & lonewsw,nradip,nradlp,niceopt,nliqopt,ldiffc
1504  WRITE(unit=kulout,fmt='('' WARNING! CLOUD OVERLAP ASSUMPT. IS''&
1505  & ,'' NOVLP = '',I2 &
1506  & )')&
1507  & novlp
1508  IF (luvproc) THEN
1509  idayuv=nuvtim/86400
1510  WRITE(unit=kulout,fmt='('' LUVPROC = '',L5 &
1511  & ,'' LUVTDEP= '',L5 &
1512  & ,'' NRADUV = '',I2 &
1513  & ,'' NUV = '',I2 &
1514  & ,'' NDAYUV = '',I5 &
1515  & ,'' RMUZUV = '',E9.3 &
1516  & )')&
1517  & luvproc,luvtdep,nraduv,nuv,idayuv,rmuzuv
1518  WRITE(unit=kulout,fmt='('' RUVLAM = '',24F6.1)') (ruvlam(juv),juv=1,nuv)
1519  WRITE(unit=kulout,fmt='('' JUVLAM = '',24(3X,I1,2X))') (juvlam(juv),juv=1,nuv)
1520  ENDIF
1521  WRITE(unit=kulout,fmt='('' NMCICA= '',I2 &
1522  & )')&
1523  & nmcica
1524 ENDIF
1525 
1526 ! ------------------------------------------------------------------
1527 
1528 
1529 IF (lhook) CALL dr_hook('SUECRAD',1,zhook_handle)
1530 END SUBROUTINE suecrad
real(kind=jprb), dimension(:,:), allocatable srswuvb
Definition: yomradf.F90:39
Definition: yoephy.F90:1
Definition: yomleg.F90:1
real(kind=jprb), dimension(:,:), allocatable srswdcs
Definition: yomradf.F90:33
real(kind=jprb), dimension(:,:), allocatable edro
Definition: yomradf.F90:37
type(radiation_grid_struct) radgrid
Definition: yomprad.F90:66
integer(kind=jpim), parameter jpmxgl
Definition: pardim.F90:19
integer(kind=jpim) nrimpbufsz
Definition: yommp.F90:454
subroutine suaerh
Definition: suaerh.F90:2
real(kind=jprb) rpi
Definition: yomcst.F90:15
logical le4alb
Definition: yoephy.F90:40
integer(kind=jpim), dimension(:), allocatable nricore
Definition: yommp.F90:404
subroutine surrtftr
Definition: surrtftr.F90:2
integer(kind=jpim), dimension(:), allocatable nricomm
Definition: yommp.F90:405
integer(kind=jpim) nrirpt
Definition: yommp.F90:455
subroutine suaerl
Definition: suaerl.F90:2
integer(kind=jpim) mtagrad
Definition: yomtag.F90:72
real(kind=jprb) rday
Definition: yomcst.F90:21
real(kind=jprb) rcch4
Definition: yoerdi.F90:23
integer(kind=jpim), dimension(:), allocatable nrioff
Definition: yommp.F90:398
integer(kind=jpim), dimension(:), allocatable, target nloeng
Definition: yomgem.F90:102
integer(kind=jpim) nozocl
Definition: yoerad.F90:15
real(kind=jprb) rccfc12
Definition: yoerdi.F90:23
integer(kind=jpim) nproc
Definition: yomct0.F90:444
real(kind=jprb), dimension(:), allocatable rsqm2
Definition: yomleg.F90:31
integer(kind=jpim) narob1
Definition: yommp.F90:460
real(kind=jprb), dimension(:,:), allocatable srswparc
Definition: yomradf.F90:40
logical lrayfm
Definition: yomphy.F90:370
integer(kind=jpim) nradpla
Definition: yoerad.F90:18
integer(kind=jpim) nradfr
Definition: yoerad.F90:16
integer(kind=jpim) nroprocs
Definition: yommp.F90:461
integer(kind=jpim) myproc
Definition: yommp.F90:79
integer(kind=jpim) nradnfr
Definition: yoerad.F90:22
real(kind=jprb), dimension(:,:,:), allocatable trsc
Definition: yomradf.F90:28
integer(kind=jpim), dimension(:), allocatable, target nlstlat
Definition: yommp.F90:351
subroutine sulwn
Definition: sulwn.F90:2
integer(kind=jpim) nrowides
Definition: yomsc2.F90:46
logical lrayfm15
Definition: yomphy.F90:371
integer(kind=jpim) ngptotmx
Definition: yomgem.F90:21
integer(kind=jpim), dimension(:), allocatable nglobalindex
Definition: yommp.F90:353
integer(kind=jpim), dimension(:), allocatable nrisendpos
Definition: yommp.F90:400
integer(kind=jpim) nptrfloff
Definition: yommp.F90:431
integer(kind=jpim) novlp
Definition: yoerad.F90:24
subroutine rrtm_init_140gp
integer(kind=jpim) nradpfr
Definition: yoerad.F90:17
logical lodbgradl
Definition: yomprad.F90:119
logical leradi
Definition: yoephy.F90:23
integer(kind=jpim) nproma
Definition: yomdim.F90:87
integer(kind=jpim), dimension(:), allocatable nrisendptr
Definition: yommp.F90:402
real(kind=jprb) repsct
Definition: yoerdu.F90:23
integer(kind=jpim) nriwides
Definition: yomsc2.F90:42
logical loutput
Definition: yomct0.F90:455
subroutine surrtrf
Definition: surrtrf.F90:2
subroutine abor1(CDTEXT)
Definition: abor1.F90:2
logical lallopr
Definition: yomct0.F90:327
real(kind=jprb), dimension(:,:), allocatable srlwd
Definition: yomradf.F90:32
integer(kind=jpim) nfrstloff
Definition: yommp.F90:427
Definition: yomct0.F90:1
real(kind=jprb) rcco2
Definition: yoerdi.F90:23
integer(kind=jpim) nrompbufsz
Definition: yommp.F90:462
integer(kind=jpim) n_regions_ew
Definition: yomct0.F90:446
integer(kind=jpim) nraduv
Definition: yoe_uvrad.F90:12
real(kind=jprb) rg
Definition: yomcst.F90:29
subroutine susrtaer
Definition: susrtaer.F90:2
real(kind=jprb), dimension(3) rcaeadk
Definition: yoeaerd.F90:35
integer(kind=jpim), dimension(:), allocatable nrocomm
Definition: yommp.F90:418
integer(kind=jpim) ndgsal
Definition: yomdim.F90:68
integer(kind=jpim) ndlon
Definition: yomdim.F90:79
integer(kind=jpim), dimension(:), allocatable nrorecvptr
Definition: yommp.F90:416
real(kind=jprb), dimension(:), allocatable cvdaes
Definition: yoeaerd.F90:13
integer(kind=jpim) nflevg
Definition: yomdim.F90:112
integer(kind=jpim) narib1
Definition: yommp.F90:452
Definition: yoerdi.F90:1
logical lephys
Definition: yoephy.F90:15
integer(kind=jpim) naer
Definition: yoerad.F90:13
integer(kind=jpim) nrispt
Definition: yommp.F90:456
real(kind=jprb), dimension(:), allocatable gelam
Definition: yomgc.F90:42
Definition: yomgc.F90:1
real(kind=jprb) rccfc11
Definition: yoerdi.F90:23
real(kind=jprb) rmuzuv
Definition: yoe_uvrad.F90:22
integer(kind=jpim) nrowidew
Definition: yomsc2.F90:47
Definition: yomgem.F90:1
integer(kind=jpim), dimension(:), allocatable nrosta
Definition: yommp.F90:409
integer(kind=jpim) ngptot
Definition: yomgem.F90:19
integer(kind=jpim), dimension(:), allocatable nroonl
Definition: yommp.F90:410
integer(kind=jpim) nrint
Definition: yoerad.F90:19
logical lradondem
Definition: yomprad.F90:72
!$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
real(kind=jprb) repscw
Definition: yoerdu.F90:24
logical lecmwf
Definition: yomct0b.F90:15
real(kind=jprb) rcvobga
Definition: yoeaerd.F90:32
subroutine surdi
Definition: surdi.F90:5
real(kind=jprb), dimension(:,:), allocatable srswd
Definition: yomradf.F90:31
subroutine susrtcop
Definition: susrtcop.F90:2
real(kind=jprb), dimension(:,:), allocatable rmoon
Definition: yomradf.F90:42
integer(kind=jpim) nsmax
Definition: yomdim.F90:187
real(kind=jprb), dimension(:,:), allocatable srswtinc
Definition: yomradf.F90:41
Definition: yomsc2.F90:1
integer(kind=jpim), dimension(:), allocatable nrocore
Definition: yommp.F90:417
integer(kind=jpim) ndglg
Definition: yomdim.F90:63
integer, parameter jprb
Definition: parkind1.F90:31
integer(kind=jpim) n_regions_ns
Definition: yomct0.F90:445
integer(kind=jpim) myfrstactlat
Definition: yommp.F90:428
integer(kind=jpim) mylstactlat
Definition: yommp.F90:429
real(kind=jprb), dimension(:,:), allocatable srlwdcs
Definition: yomradf.F90:34
real(kind=jprb) rcaeadm
Definition: yoeaerd.F90:36
integer(kind=jpim), parameter jpgpt
Definition: parsrtm.F90:27
real(kind=jprb), dimension(:,:,:), allocatable emtc
Definition: yomradf.F90:27
integer(kind=jpim), dimension(:), allocatable nrosendpos
Definition: yommp.F90:413
integer(kind=jpim) nprintlev
Definition: yomct0.F90:328
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_ener_conserv REAL solaire RCFC12 RCFC12_act CFC12_ppt!IM ajout CFMIP2 CMIP5 LOGICAL ok_4xCO2atm RCFC12_per CFC12_ppt_per!OM correction du bilan d eau global!OM Correction sur precip KE REAL cvl_corr!OM Fonte calotte dans bilan eau LOGICAL ok_lic_melt!IM simulateur ISCCP INTEGER overlap!IM seuils cdrh REAL cdhmax!IM param stabilite s terres et en dehors REAL ksta
Definition: clesphys.h:23
integer(kind=jpim), dimension(:), allocatable nrirecvpos
Definition: yommp.F90:401
Definition: yoerad.F90:1
integer(kind=jpim) ngptotg
Definition: yomgem.F90:22
subroutine trans_inq(KRESOL, KSPEC, KSPEC2, KSPEC2G, KSPEC2MX, KNUMP, KGPTOT, KGPTOTG, KGPTOTMX, KGPTOTL, KMYMS, KASM0, KUMPP, KPOSSP, KPTRMS, KALLMS, KDIM0G, KFRSTLAT, KLSTLAT, KFRSTLOFF, KPTRLAT, KPTRFRSTLAT, KPTRLSTLAT, KPTRFLOFF, KSTA, KONL, KULTPP, KPTRLS, LDSPLITLAT, PMU, PGW, PRPNM, KLEI3, KSPOLEGL, KPMS)
Definition: trans_inq.F90:9
integer(kind=jpim) nuaer
Definition: yoerdu.F90:13
integer(kind=jpim) ndgenl
Definition: yomdim.F90:72
type(type_gfl_comp), pointer yo3
Definition: yom_ygfl.F90:52
subroutine suecrad(KULOUT, KLEV, PETAH)
Definition: suecrad.F90:5
real(kind=jprb) rcn2o
Definition: yoerdi.F90:23
real(kind=jprb), dimension(:), allocatable cvdael
Definition: yoeaerd.F90:14
real(kind=jprb), dimension(:), allocatable cvdaed
Definition: yoeaerd.F90:16
logical luvdbg
Definition: yoe_uvrad.F90:14
real(kind=jprb) rcpd
Definition: yomcst.F90:41
real(kind=jprb), dimension(:,:), allocatable srswduv
Definition: yomradf.F90:36
Definition: yomdim.F90:1
subroutine srtm_init
Definition: srtm_init.F90:2
real(kind=jprb) rctrbga
Definition: yoeaerd.F90:31
integer(kind=jpim) nrproma
Definition: yoerad.F90:25
real(kind=jprb) rcaeopd
Definition: yoeaerd.F90:30
!$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) ri0
Definition: yomcst.F90:33
integer(kind=jpim) my_region_ns
Definition: yommp.F90:86
Definition: yommp.F90:1
Definition: yomlun.F90:1
integer(kind=jpim) nrospt
Definition: yommp.F90:464
real(kind=jprb) rcday
Definition: yoerdu.F90:17
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), dimension(:,:), allocatable, target nsta
Definition: yommp.F90:345
integer(kind=jpim), dimension(:,:), allocatable, target nonl
Definition: yommp.F90:346
real(kind=jprb) r10e
Definition: yoerdu.F90:18
real(kind=jprb) replog
Definition: yoerdu.F90:19
integer(kind=jpim) napsets
Definition: yommp.F90:430
logical lhook
Definition: yomhook.F90:12
integer(kind=jpim), dimension(:), allocatable nrirecvptr
Definition: yommp.F90:403
subroutine su_aerw
Definition: su_aerw.F90:2
real(kind=jprb), dimension(3000) ruvlam
Definition: yoe_uvrad.F90:21
real(kind=jprb) rcaeros
Definition: yoeaerd.F90:37
real(kind=jprb), dimension(:), allocatable rmu
Definition: yomleg.F90:27
subroutine suaersn(KTSW, KSW)
Definition: suaersn.F90:2
real(kind=jprb), dimension(:,:,:), allocatable trsw
Definition: yomradf.F90:26
subroutine suswn(KTSW, KSW)
Definition: suswn.F90:2
integer(kind=jpim), dimension(:), allocatable nrionl
Definition: yommp.F90:397
subroutine su_uvrad(KUV)
Definition: su_uvrad.F90:2
integer(kind=jpim), dimension(3000) juvlam
Definition: yoe_uvrad.F90:13
integer(kind=jpim) nrowidee
Definition: yomsc2.F90:48
real(kind=jprb) tstep
Definition: yomdyn.F90:25
real(kind=jprb) repscq
Definition: yoerdu.F90:22
integer(kind=jpim) nriprocs
Definition: yommp.F90:453
subroutine setup_trans(KSMAX, KDGL, KLOEN, LDLINEAR_GRID, LDSPLIT, KAPSETS, KTMAX, KRESOL)
Definition: setup_trans.F90:3
logical lmphys
Definition: yomphy.F90:295
integer(kind=jpim) ndlsur
Definition: yomdim.F90:81
integer(kind=jpim) nriwidee
Definition: yomsc2.F90:44
integer(kind=jpim), parameter jplay
Definition: parrrtm.F90:15
subroutine suaerv(KLEV, PETAH, PVDAES, PVDAEL, PVDAEU, PVDAED, PTRBGA, PVOBGA, PSTBGA, PAEOPS, PAEOPL, PAEOPU, PAEOPD, PTRPT, PAEADK, PAEADM, PAEROS)
Definition: suaerv.F90:7
subroutine suecradi
Definition: suecradi.F90:2
real(kind=jprb), dimension(:,:,:), allocatable emtd
Definition: yomradf.F90:25
subroutine surrtpk
Definition: surrtpk.F90:2
integer(kind=jpim) nriwidew
Definition: yomsc2.F90:43
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
real(kind=jprb) rcaeopu
Definition: yoeaerd.F90:29
integer(kind=jpim), dimension(:), allocatable nrorecvpos
Definition: yommp.F90:414
real(kind=jprb) rcaeopl
Definition: yoeaerd.F90:28
Definition: yomphy.F90:1
logical lodbgradi
Definition: yomprad.F90:118
Definition: yomdyn.F90:1
subroutine su_mcica
Definition: su_mcica.F90:8
integer(kind=jpim) ndgsag
Definition: yomdim.F90:67
integer(kind=jpim) nriwiden
Definition: yomsc2.F90:41
real(kind=jprb) rsolinc
Definition: yoerdi.F90:24
real(kind=jprb) rcstbga
Definition: yoeaerd.F90:33
integer(kind=jpim), dimension(:), allocatable, target nptrfrstlat
Definition: yommp.F90:347
integer(kind=jpim) nrorpt
Definition: yommp.F90:463
integer(kind=jpim), dimension(:), allocatable nrooff
Definition: yommp.F90:411
integer, parameter jpim
Definition: parkind1.F90:13
subroutine susat
Definition: susat.F90:2
integer(kind=jpim), dimension(:,:), allocatable nriext
Definition: yommp.F90:399
integer(kind=jpim) nuvtim
Definition: yoe_uvrad.F90:12
integer(kind=jpim) nrowiden
Definition: yomsc2.F90:45
subroutine suclopn(KTSW, KSW, KLEV)
Definition: suclopn.F90:2
logical lsplit
Definition: yommp.F90:70
integer(kind=jpim) ngpblks
Definition: yomdim.F90:97
integer(kind=jpim) ntraer
Definition: yoerdu.F90:14
integer(kind=jpim) nulrad
Definition: yomlun.F90:128
integer(kind=jpim) ndlnpr
Definition: yomdyn.F90:258
integer(kind=jpim) ndgsur
Definition: yomdim.F90:66
Definition: pardim.F90:1
integer(kind=jpim) ndsur1
Definition: yomdim.F90:80
integer(kind=jpim), dimension(:), allocatable nprcids
Definition: yommp.F90:68
real(kind=jprb) diff
Definition: yoerdu.F90:25
integer(kind=jpim) my_region_ew
Definition: yommp.F90:87
integer(kind=jpim) ndgeng
Definition: yomdim.F90:71
Definition: yomcst.F90:1
real(kind=jprb), dimension(:), allocatable cvdaeu
Definition: yoeaerd.F90:15
integer(kind=jpim), dimension(:), allocatable nrista
Definition: yommp.F90:396
logical luvtdep
Definition: yoe_uvrad.F90:14
real(kind=jprb) repsc
Definition: yoerdu.F90:20
subroutine surrtab
Definition: surrtab.F90:2
real(kind=jprb), dimension(:,:), allocatable srswdv
Definition: yomradf.F90:35
integer(kind=jpim), dimension(:), allocatable, target nfrstlat
Definition: yommp.F90:350
!$Header!integer nvarmx s s unit
Definition: gradsdef.h:20
real(kind=jprb), dimension(:), allocatable gelat
Definition: yomgc.F90:43
Definition: yoerdu.F90:1
real(kind=jprb) rctrpt
Definition: yoeaerd.F90:34
integer(kind=jpim), dimension(:), allocatable nrosendptr
Definition: yommp.F90:415
integer(kind=jpim), dimension(:,:), allocatable nroext
Definition: yommp.F90:412
real(kind=jprb) repsco
Definition: yoerdu.F90:21
logical luvproc
Definition: yoe_uvrad.F90:14
real(kind=jprb) rcaeops
Definition: yoeaerd.F90:27
real(kind=jprb), dimension(:,:), allocatable srswpar
Definition: yomradf.F90:38
integer(kind=jpim) nradsfr
Definition: yoerad.F90:23
Definition: yomtag.F90:1