4 SUBROUTINE suecrad (KULOUT, KLEV, PETAH )
103 & nlw ,ntsw ,ncsradf ,&
104 & nmode ,nlngr1h ,nswnl ,nswtl ,nuv ,&
105 & lerad1h ,leradhs ,lepo3ra ,lradlb ,lonewsw ,&
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 ,&
159 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
160 INTEGER(KIND=JPIM),
INTENT(IN) :: KULOUT
161 REAL(KIND=JPRB) ,
INTENT(IN) :: PETAH(klev+1)
163 INTEGER(KIND=JPIM) :: NRGRI(
jpmxgl)
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
179 LOGICAL :: LLINEAR_GRID
180 LOGICAL :: LLDEBUG,LLP
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
188 CHARACTER (LEN = 300) :: CLFN
189 INTEGER(KIND=JPIM),
PARAMETER :: JPIOMASTER=1
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(:)
205 REAL(KIND=JPRB),
ALLOCATABLE :: ZLATX(:)
206 REAL(KIND=JPRB),
ALLOCATABLE :: ZLONX(:)
207 REAL(KIND=JPRB) :: ZHOOK_HANDLE
210 #include "setup_trans.h"
211 #include "trans_inq.h"
214 #include "abor1.intfb.h"
215 #include "posnam.intfb.h"
216 #include "rrtm_init_140gp.intfb.h"
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"
247 #include "clesphys.h"
296 print *,
'SUECRAD: NRADLP, NRADIP=',nradlp,nradip
302 IF (iflag_rrtm.EQ.1)
THEN
347 IF (.NOT.
yo3%LGP)
THEN
373 ruvlam(juv)=280._jprb+(juv-1)*5._jprb
391 WRITE(nulout,
'("SUECRAD: NSMAX=",I6)')
nsmax
392 WRITE(nulout,
'("SUECRAD: NDLON=",I6)')
ndlon
393 WRITE(nulout,
'("SUECRAD: LLINEAR_GRID=",L5)')llinear_grid
400 SELECT CASE (overlap)
408 print *,
'SUECRAD: NOVLP=',
novlp
415 IF(
nsmax >= 106)
THEN
417 ELSEIF(
nsmax == 63)
THEN
451 rcco2 = 348.e-06_jprb
452 rcch4 = 1.65e-06_jprb
453 rcn2o = 306.e-09_jprb
504 IF (nmcica /= 0)
THEN
516 WRITE(nulout,
'("SUECRAD: NRADINT=",I2)')nradint
517 WRITE(nulout,
'("SUECRAD: NRADRES=",I4)')nradres
525 IF( nradint > 0 .AND. nradres ==
nsmax )
THEN
526 WRITE(nulout,.AND.
'("SUECRAD: NRADINT > 0 NRADRES = NSMAX, NRADINT RESET TO 0")')
530 IF( nradint > 0 .AND.
lrayfm .AND.
naer /= 0 .AND. .NOT.lhvolca )
THEN
533 WRITE(nulout,.AND.
'("SUECRAD: NRADINT>0, LRAYFM=T NAER /= 0 LHVOLCA=F,",&
534 & " NRADRES RESET TO NSMAX (NO INTERPOLATION)")')
543 IF( nradint == -1 )
THEN
555 CALL abor1(
'JUSTE APRES CALL SUECRADL COMMENTE')
557 ELSEIF( nradint == 0 )
THEN
559 IF( nradres /=
nsmax )
THEN
560 WRITE(nulout,
'("SUECRAD: NRADINT=0 REQUESTED, NRADRES RESET TO NSMAX")')
568 ELSEIF( nradint >=1 .AND. nradint <= 3 )
THEN
575 IF( nradres == 0 )
THEN
576 IF( llinear_grid )
THEN
577 IF(
nsmax == 63 )
THEN
581 IF(
nsmax == 95 ) nradres= 95
582 IF(
nsmax == 159 ) nradres= 63
583 IF(
nsmax == 255 ) nradres= 95
584 IF(
nsmax == 319 ) nradres= 159
585 IF(
nsmax == 399 ) nradres= 159
586 IF(
nsmax == 511 ) nradres= 255
587 IF(
nsmax == 639 ) nradres= 319
588 IF(
nsmax == 799 ) nradres= 399
589 IF(
nsmax == 1023 ) nradres= 511
590 IF(
nsmax == 1279 ) nradres= 639
591 IF(
nsmax == 2047 ) nradres= 1023
593 IF(
nsmax == 21 ) nradres= 21
594 IF(
nsmax == 42 ) nradres= 21
595 IF(
nsmax == 63 ) nradres= 42
596 IF(
nsmax == 106 ) nradres= 63
597 IF(
nsmax == 170 ) nradres= 63
598 IF(
nsmax == 213 ) nradres= 106
599 IF(
nsmax == 266 ) nradres= 106
600 IF(
nsmax == 341 ) nradres= 170
601 IF(
nsmax == 426 ) nradres= 213
602 IF(
nsmax == 533 ) nradres= 266
603 IF(
nsmax == 682 ) nradres= 341
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')
615 IF( nradint > 0 .AND. nradres ==
nsmax )
THEN
616 WRITE(nulout,.AND.
'("SUECRAD: NRADINT > 0 NRADRES = NSMAX, NRADINT RESET TO 0")')
622 IF( crtablefil ==
'not set' )
THEN
623 IF( llinear_grid )
THEN
624 IF( nradres < 1000 )
THEN
625 WRITE(crtablefil,
'("rtablel_2",I3.3)')nradres
627 WRITE(crtablefil,
'("rtablel_2",I4.4)')nradres
630 IF( nradres < 1000 )
THEN
631 WRITE(crtablefil,
'("rtable_2" ,I3.3)')nradres
633 WRITE(crtablefil,
'("rtable_2" ,I4.4)')nradres
641 IF(
myproc == jpiomaster )
THEN
642 idir=len_trim(crtabledir)
643 ifil=len_trim(crtablefil)
644 clfn=crtabledir(1:idir)//crtablefil(1:ifil)
657 DO WHILE( nrgri(idgl)>0 )
659 WRITE(nulout,
'("SUECRAD: NRGRI(",I4,")=",I4)')idgl,nrgri(idgl)
666 WRITE(nulout,
'("SUECRAD: RADGRID%NDGLG=",I4)')
radgrid%NDGLG
672 stop
'Pas pret pour proc > 1'
676 IF(
myproc == jpiomaster )
THEN
680 stop
'Pas pret pour proc > 1'
686 IF ( nradint == 1 )
THEN
687 WRITE(nulout,
'("SUECRAD: INTERPOLATION METHOD - SPECTRAL TRANSFORM")')
697 ELSEIF( nradint == 2 )
THEN
698 WRITE(nulout,
'("SUECRAD: INTERPOLATION METHOD - 4 POINT")')
700 ELSEIF( nradint == 3 )
THEN
701 WRITE(nulout,
'("SUECRAD: INTERPOLATION METHOD - 12 POINT")')
704 WRITE(nulout,
'("SUECRAD: RADGRID%NDGSUR =",I8)')
radgrid%NDGSUR
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
731 & ldlinear_grid=llinear_grid, &
752 & kgptotmx =
radgrid%NGPTOTMX, &
753 & kptrfrstlat=
radgrid%NPTRFRSTLAT, &
754 & kfrstlat =
radgrid%NFRSTLAT, &
756 & kfrstloff =
radgrid%NFRSTLOFF, &
759 & kptrfloff =
radgrid%NPTRFLOFF, &
762 IF( nradint == 2 .OR. nradint == 3 )
THEN
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
825 DO jlon=istlon,iendlon
826 zlon=
REAL(jlon-1,
jprb)*2.0_JPRB*RPI &
827 & /REAL(RADGRID%NLOENG(JGLAT),JPRB)
830 radgrid%GELAT(ioff) = asin(zgemu)
831 radgrid%GESLO(ioff) = sin(zlon)
832 radgrid%GECLO(ioff) = cos(zlon)
837 IF( nradint == 2 .OR. nradint == 3 )
THEN
842 ALLOCATE(zlatx(
radgrid%NGPTOTMX))
843 ALLOCATE(zlonx(
radgrid%NGPTOTMX))
845 zlatx(j)=
radgrid%GELAT(j)/rpi*2.0_jprb*90.0
846 zlonx(j)=(
radgrid%GELAM(j)-rpi)/rpi*180.0
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))
853 WRITE(nulout,
'("RADGRID,BEGIN")')
855 stop
'Pas pret pour proc > 1'
864 WRITE(nulout,
'(F7.2,2X,F7.2,2X,I6)')zlatx(j),zlonx(j),
myproc
867 stop
'Pas pret pour proc > 1'
872 WRITE(nulout,
'(F7.2,2X,F7.2,2X,I6)')zlatx(j),zlonx(j),jroc
877 WRITE(nulout,
'("RADGRID,END")')
885 zlatx(j)=
gelat(j)/rpi*2.0_jprb*90.0
886 zlonx(j)=(
gelam(j)-rpi)/rpi*180.0
888 zminmdllat=minval(zlatx(1:
ngptot))
889 zmaxmdllat=maxval(zlatx(1:
ngptot))
890 zminmdllon=minval(zlonx(1:
ngptot))
891 zmaxmdllon=maxval(zlonx(1:
ngptot))
893 WRITE(nulout,
'("MODELGRID,BEGIN")')
895 stop
'Pas pret pour proc > 1'
905 WRITE(nulout,
'(F7.2,2X,F7.2,2X,I6,2X,I12)')zlatx(j),zlonx(j),
myproc,
nglobalindex(j)
908 stop
'Pas pret pour proc > 1'
912 ALLOCATE(iglobalindex(1:igptot))
915 WRITE(nulout,
'(F7.2,2X,F7.2,2X,I6,2X,I12)')zlatx(j),zlonx(j),jroc,iglobalindex(j)
917 DEALLOCATE(iglobalindex)
921 WRITE(nulout,
'("MODELGRID,END")')
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
938 ilats_diff_c=ceiling(abs(zminradlat-zminmdllat)*zlat)
939 ilats_diff_f=floor(abs(zminradlat-zminmdllat)*zlat)
940 IF( zminradlat < zminmdllat )
THEN
943 nriwides=max(0,jp_min_halo-ilats_diff_f)
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)
952 ilats_diff_c=ceiling(abs(zminradlon-zminmdllon)*zlat)
953 ilats_diff_f=floor(abs(zminradlon-zminmdllon)*zlat)
954 IF( zminradlon < zminmdllon )
THEN
957 nriwidew=max(0,jp_min_halo-ilats_diff_f)
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)
968 ilats_diff_c=ceiling(abs(zminradlat-zminmdllat)*zlat)
969 ilats_diff_f=floor(abs(zminradlat-zminmdllat)*zlat)
970 IF( zminmdllat < zminradlat )
THEN
973 nrowides=max(0,jp_min_halo-ilats_diff_f)
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)
982 ilats_diff_c=ceiling(abs(zminradlon-zminmdllon)*zlat)
983 ilats_diff_f=floor(abs(zminradlon-zminmdllon)*zlat)
984 IF( zminmdllon < zminradlon )
THEN
987 nrowidew=max(0,jp_min_halo-ilats_diff_f)
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)
1003 WRITE(nulout,
'("SUECRAD: RADGRID%NDGSAH =",I8)')
radgrid%NDGSAH
1004 WRITE(nulout,
'("SUECRAD: RADGRID%NDGENH =",I8)')
radgrid%NDGENH
1006 IF( nradint == 2 .OR. nradint == 3 )
THEN
1008 ilbrlati = max(
radgrid%NDGSAG,&
1010 iubrlati = min(
radgrid%NDGENG,&
1012 ALLOCATE(
radgrid%RLATI(ilbrlati:iubrlati))
1013 ALLOCATE(
radgrid%RIPI0(ilbrlati:iubrlati))
1014 ALLOCATE(
radgrid%RIPI1(ilbrlati:iubrlati))
1015 ALLOCATE(
radgrid%RIPI2(ilbrlati:iubrlati))
1017 DO jgl= ilbrlati,iubrlati
1019 IF(iglglo >= 0.AND.iglglo <=
radgrid%NDGLG)
THEN
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)
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))
1063 CALL abor1(
'JUSTE APRES CALL RDCSET COMMENTE')
1064 WRITE(nulout,
'("SUECRAD: NARIB1=",I12)')
narib1
1075 DEALLOCATE(irisendpos)
1076 DEALLOCATE(irirecvpos)
1077 DEALLOCATE(irisendptr)
1078 DEALLOCATE(irirecvptr)
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))
1115 CALL abor1(
'JUSTE APRES CALL RDCSET COMMENTE')
1116 WRITE(nulout,
'("SUECRAD: NAROB1=",I12)')
narob1
1127 DEALLOCATE(irosendpos)
1128 DEALLOCATE(irorecvpos)
1129 DEALLOCATE(irosendptr)
1130 DEALLOCATE(irorecvptr)
1135 WRITE(nulout,
'("")')
1157 stop
'Pas pret pour proc > 1'
1163 stop
'Pas pret pour proc > 1'
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)
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,
'("")')
1209 WRITE(nulout,
'("SUECRAD: INVALID VALUE FOR NRADINT=",I6)')nradint
1210 CALL abor1(
'SUECRAD: NRADINT INVALID')
1223 r10e = 0.4342945_jprb
1228 IF (ninhom == 0)
THEN
1247 IF (klev >
jplay)
THEN
1249 & fmt=
'('' RRTM MAXIMUM NUMBER OF LAYERS IS REACHED'',&
1250 & '' CALL ABORT'')')
1251 CALL abor1(
' ABOR1 CALLED SUECRAD')
1266 CALL suswn (ntsw, nsw)
1267 CALL suclopn (ntsw, nsw, klev)
1276 WRITE(
unit=kulout,fmt=
'(''SRTM Configuration'',L8,3I4)')lsrtm,ntsw,isw,
jpgpt
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
1283 CALL suswn (ntsw,nsw)
1286 WRITE(
unit=kulout,fmt=
'('' NLW,NTSW,NSW SET EQUAL TO:'',3I3)') inblw,ntsw,nsw
1309 CALL suaerv ( klev , petah,&
1328 IF (
lephys .AND. nmode > 1)
THEN
1345 ztstep=max(tstep,1.0_jprb)
1346 zstphr=3600._jprb/ztstep
1360 ist1hr=zstphr+0.05_jprb
1361 istnhr= nlngr1h *zstphr+0.05_jprb
1362 IF (mod(3600._jprb,ztstep) > 0.1_jprb)
THEN
1365 IF (mod(istnhr,ist1hr) /= 0)
GO TO 801
1388 IF(llp)
WRITE(iu,9)
'EMTD ',
SIZE(
emtd ),shape(
emtd )
1390 IF(llp)
WRITE(iu,9)
'TRSW ',
SIZE(
trsw ),shape(
trsw )
1392 IF(llp)
WRITE(iu,9)
'EMTC ',
SIZE(
emtc ),shape(
emtc )
1394 IF(llp)
WRITE(iu,9)
'TRSC ',
SIZE(
trsc ),shape(
trsc )
1396 IF(llp)
WRITE(iu,9)
'SRSWD ',
SIZE(
srswd ),shape(
srswd )
1398 IF(llp)
WRITE(iu,9)
'SRLWD ',
SIZE(
srlwd ),shape(
srlwd )
1404 IF(llp)
WRITE(iu,9)
'SRSWDV ',
SIZE(
srswdv ),shape(
srswdv )
1408 IF(llp)
WRITE(iu,9)
'EDRO ',
SIZE(
edro ),shape(
edro )
1416 IF(llp)
WRITE(iu,9)
'EMTD ',
SIZE(
emtd ),shape(
emtd )
1418 IF(llp)
WRITE(iu,9)
'TRSW ',
SIZE(
trsw ),shape(
trsw )
1420 IF(llp)
WRITE(iu,9)
'EMTC ',
SIZE(
emtu ),shape(
emtu )
1422 IF(llp)
WRITE(iu,9)
'RMOON ',
SIZE(
rmoon ),shape(
rmoon )
1429 9
FORMAT(1
x,
'ARRAY ',a10,
' ALLOCATED ',8i8)
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)')&
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 &
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 &
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 &
1463 WRITE(
unit=kulout,fmt=
'('' NINHOM = '',I1 &
1464 & ,'' NLAYINH='',I1 &
1465 & ,'' RLWINHF='',F4.2 &
1466 & ,'' RSWINHF='',F4.2 &
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 &
1475 & npertaer,lnotroaer,npertoz,rpertoz
1477 WRITE(
unit=kulout,fmt=
'('' NRADINT = '',I2)')nradint
1478 WRITE(
unit=kulout,fmt=
'('' NRADRES = '',I4)')nradres
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)
1486 WRITE(
unit=kulout,fmt=
'('' LCCNL = '',L5 &
1487 & ,'' LCCNO = '',L5 &
1488 & ,'' RCCNLND= '',F5.0 &
1489 & ,'' RCCNSEA= '',F5.0 &
1490 & ,'' LE4ALB = '',L5 &
1492 & lccnl,lccno,rccnlnd,rccnsea,
le4alb
1494 WRITE(
unit=kulout,fmt=
'('' HISTORY OF VOLCANIC AEROSOLS= '',L5)')lhvolca
1496 WRITE(
unit=kulout,fmt=
'('' LONEWSW= '',L5 &
1497 & ,'' NRADIP = '',I1 &
1498 & ,'' NRADLP = '',I1 &
1499 & ,'' NICEOPT= '',I1 &
1500 & ,'' NLIQOPT= '',I1 &
1501 & ,'' LDIFFC = '',L5 &
1503 & lonewsw,nradip,nradlp,niceopt,nliqopt,ldiffc
1504 WRITE(
unit=kulout,fmt=
'('' WARNING! CLOUD OVERLAP ASSUMPT. IS''&
1505 & ,'' NOVLP = '',I2 &
1510 WRITE(
unit=kulout,fmt=
'('' LUVPROC = '',L5 &
1511 & ,'' LUVTDEP= '',L5 &
1512 & ,'' NRADUV = '',I2 &
1514 & ,'' NDAYUV = '',I5 &
1515 & ,'' RMUZUV = '',E9.3 &
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)
1521 WRITE(
unit=kulout,fmt=
'('' NMCICA= '',I2 &
real(kind=jprb), dimension(:,:), allocatable srswuvb
real(kind=jprb), dimension(:,:), allocatable srswdcs
real(kind=jprb), dimension(:,:), allocatable edro
type(radiation_grid_struct) radgrid
integer(kind=jpim), parameter jpmxgl
integer(kind=jpim) nrimpbufsz
integer(kind=jpim), dimension(:), allocatable nricore
integer(kind=jpim), dimension(:), allocatable nricomm
integer(kind=jpim) nrirpt
integer(kind=jpim) mtagrad
integer(kind=jpim), dimension(:), allocatable nrioff
integer(kind=jpim), dimension(:), allocatable, target nloeng
integer(kind=jpim) nozocl
real(kind=jprb), dimension(:), allocatable rsqm2
integer(kind=jpim) narob1
real(kind=jprb), dimension(:,:), allocatable srswparc
integer(kind=jpim) nradpla
integer(kind=jpim) nradfr
integer(kind=jpim) nroprocs
integer(kind=jpim) myproc
integer(kind=jpim) nradnfr
real(kind=jprb), dimension(:,:,:), allocatable trsc
integer(kind=jpim), dimension(:), allocatable, target nlstlat
integer(kind=jpim) nrowides
integer(kind=jpim) ngptotmx
integer(kind=jpim), dimension(:), allocatable nglobalindex
integer(kind=jpim), dimension(:), allocatable nrisendpos
integer(kind=jpim) nptrfloff
subroutine rrtm_init_140gp
integer(kind=jpim) nradpfr
integer(kind=jpim) nproma
integer(kind=jpim), dimension(:), allocatable nrisendptr
integer(kind=jpim) nriwides
real(kind=jprb), dimension(:,:), allocatable srlwd
integer(kind=jpim) nfrstloff
integer(kind=jpim) nrompbufsz
integer(kind=jpim) n_regions_ew
integer(kind=jpim) nraduv
real(kind=jprb), dimension(3) rcaeadk
integer(kind=jpim), dimension(:), allocatable nrocomm
integer(kind=jpim) ndgsal
integer(kind=jpim), dimension(:), allocatable nrorecvptr
real(kind=jprb), dimension(:), allocatable cvdaes
integer(kind=jpim) nflevg
integer(kind=jpim) narib1
integer(kind=jpim) nrispt
real(kind=jprb), dimension(:), allocatable gelam
integer(kind=jpim) nrowidew
integer(kind=jpim), dimension(:), allocatable nrosta
integer(kind=jpim) ngptot
integer(kind=jpim), dimension(:), allocatable nroonl
!$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
real(kind=jprb), dimension(:,:), allocatable srswd
real(kind=jprb), dimension(:,:), allocatable rmoon
real(kind=jprb), dimension(:,:), allocatable srswtinc
integer(kind=jpim), dimension(:), allocatable nrocore
integer(kind=jpim) n_regions_ns
integer(kind=jpim) myfrstactlat
integer(kind=jpim) mylstactlat
real(kind=jprb), dimension(:,:), allocatable srlwdcs
integer(kind=jpim), parameter jpgpt
real(kind=jprb), dimension(:,:,:), allocatable emtc
integer(kind=jpim), dimension(:), allocatable nrosendpos
integer(kind=jpim) nprintlev
!$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
integer(kind=jpim), dimension(:), allocatable nrirecvpos
integer(kind=jpim) ngptotg
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)
integer(kind=jpim) ndgenl
type(type_gfl_comp), pointer yo3
subroutine suecrad(KULOUT, KLEV, PETAH)
real(kind=jprb), dimension(:), allocatable cvdael
real(kind=jprb), dimension(:), allocatable cvdaed
real(kind=jprb), dimension(:,:), allocatable srswduv
integer(kind=jpim) nrproma
!$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
integer(kind=jpim) my_region_ns
integer(kind=jpim) nrospt
real(kind=jprb), dimension(:,:,:), allocatable emtu
!$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
integer(kind=jpim), dimension(:,:), allocatable, target nonl
integer(kind=jpim) napsets
integer(kind=jpim), dimension(:), allocatable nrirecvptr
real(kind=jprb), dimension(3000) ruvlam
real(kind=jprb), dimension(:), allocatable rmu
subroutine suaersn(KTSW, KSW)
real(kind=jprb), dimension(:,:,:), allocatable trsw
subroutine suswn(KTSW, KSW)
integer(kind=jpim), dimension(:), allocatable nrionl
integer(kind=jpim), dimension(3000) juvlam
integer(kind=jpim) nrowidee
integer(kind=jpim) nriprocs
subroutine setup_trans(KSMAX, KDGL, KLOEN, LDLINEAR_GRID, LDSPLIT, KAPSETS, KTMAX, KRESOL)
integer(kind=jpim) ndlsur
integer(kind=jpim) nriwidee
integer(kind=jpim), parameter jplay
subroutine suaerv(KLEV, PETAH, PVDAES, PVDAEL, PVDAEU, PVDAED, PTRBGA, PVOBGA, PSTBGA, PAEOPS, PAEOPL, PAEOPU, PAEOPD, PTRPT, PAEADK, PAEADM, PAEROS)
real(kind=jprb), dimension(:,:,:), allocatable emtd
integer(kind=jpim) nriwidew
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
integer(kind=jpim), dimension(:), allocatable nrorecvpos
integer(kind=jpim) ndgsag
integer(kind=jpim) nriwiden
integer(kind=jpim), dimension(:), allocatable, target nptrfrstlat
integer(kind=jpim) nrorpt
integer(kind=jpim), dimension(:), allocatable nrooff
integer(kind=jpim), dimension(:,:), allocatable nriext
integer(kind=jpim) nuvtim
integer(kind=jpim) nrowiden
subroutine suclopn(KTSW, KSW, KLEV)
integer(kind=jpim) ngpblks
integer(kind=jpim) ntraer
integer(kind=jpim) nulrad
integer(kind=jpim) ndlnpr
integer(kind=jpim) ndgsur
integer(kind=jpim) ndsur1
integer(kind=jpim), dimension(:), allocatable nprcids
integer(kind=jpim) my_region_ew
integer(kind=jpim) ndgeng
real(kind=jprb), dimension(:), allocatable cvdaeu
integer(kind=jpim), dimension(:), allocatable nrista
real(kind=jprb), dimension(:,:), allocatable srswdv
integer(kind=jpim), dimension(:), allocatable, target nfrstlat
!$Header!integer nvarmx s s unit
real(kind=jprb), dimension(:), allocatable gelat
integer(kind=jpim), dimension(:), allocatable nrosendptr
integer(kind=jpim), dimension(:,:), allocatable nroext
real(kind=jprb), dimension(:,:), allocatable srswpar
integer(kind=jpim) nradsfr