Index: LMDZ6/trunk/libf/phylmd/radlwsw_m.F90
===================================================================
--- LMDZ6/trunk/libf/phylmd/radlwsw_m.F90	(revision 6016)
+++ LMDZ6/trunk/libf/phylmd/radlwsw_m.F90	(revision 6018)
@@ -301,5 +301,5 @@
     REAL(KIND=8) ZFLDNC0(KDLON,KFLEV+1)
     REAL(KIND=8) zx_alpha1, zx_alpha2
-    INTEGER k, kk, i, j, iof, nb_gr,jb !FC
+    INTEGER k, kk, i, j, l, iof, nb_gr,jb !FC
     INTEGER ist,iend,ktdia,kmode
     REAL(KIND=8) PSCT
@@ -490,5 +490,8 @@
     CHARACTER (LEN=80) :: modname='radlwsw_m'
 
-    REAL zdir, zdif
+    REAL zdir(klon), zdif(klon)
+    INTEGER :: dimoz
+
+    dimoz=size(wo,3)
 
     ! =========  INITIALISATIONS ==============================================
@@ -592,7 +595,10 @@
           zfract(i) = fract(iof+i)
           zrmu0(i) = rmu0(iof+i)
-
-
-          IF (iflag_rrtm==0) THEN
+       ENDDO
+
+
+       IF (iflag_rrtm==0) THEN
+         DO i = 1, kdlon
+
              !     Albedo
              PALBD(i,1)=alb_dif(iof+i,1)
@@ -601,13 +607,19 @@
              PALBP(i,2)=alb_dir(iof+i,2)
              ! AI 02.2021 cas iflag_rrtm=1 et 2
-          ELSEIF (iflag_rrtm==1.OR.iflag_rrtm==2) THEN
-             DO kk=1,NSW
+          ENDDO
+
+        ELSEIF (iflag_rrtm==1.OR.iflag_rrtm==2) THEN
+            DO kk=1,NSW
+               DO i = 1, kdlon
+
                 PALBD_NEW(i,kk)=alb_dif(iof+i,kk)
                 PALBP_NEW(i,kk)=alb_dir(iof+i,kk)
-             ENDDO
+               ENDDO
+            ENDDO
+
              !
-          ENDIF
+        ENDIF
           !albedo SB <<<
-
+       DO i = 1, kdlon
           PEMIS(i) = 1.0    ! A REVOIR (MPL) 
           PVIEW(i) = 1.66
@@ -619,4 +631,5 @@
           PDT0(i) = tsol(iof+i) - PTL(i,1)
        ENDDO
+
        DO k = 2, kflev
           DO i = 1, kdlon
@@ -624,4 +637,18 @@
           ENDDO
        ENDDO
+
+       !       Confert from  column density of ozone in a cell, in kDU, to a mass fraction
+       DO l=1, dimoz
+         DO k = 1, kflev
+            DO i = 1, kdlon
+               POZON(i,k, l) = wo(iof+i, k, l) * RG * dobson_u * 1e3 &
+                      / (paprs(iof+i, k) - paprs(iof+i, k+1))
+        !       A activer pour CCMVAL on prend l'ozone impose (MPL 07042010)
+        !       POZON(i,k,:) = wo(i,k,:)  
+        !       print *,'RADLWSW: POZON',k, POZON(i,k,1) 
+            ENDDO
+         ENDDO
+       ENDDO
+
        DO k = 1, kflev
           DO i = 1, kdlon
@@ -630,10 +657,4 @@
              PWV(i,k) = MAX (q(iof+i,k), 1.0e-12)
              PQS(i,k) = PWV(i,k)
-             !       Confert from  column density of ozone in a cell, in kDU, to a mass fraction
-             POZON(i,k, :) = wo(iof+i, k, :) * RG * dobson_u * 1e3 &
-                  / (paprs(iof+i, k) - paprs(iof+i, k+1))
-             !       A activer pour CCMVAL on prend l'ozone impose (MPL 07042010)
-             !       POZON(i,k,:) = wo(i,k,:)  
-             !       print *,'RADLWSW: POZON',k, POZON(i,k,1) 
              PCLDLD(i,k) = cldfra(iof+i,k)*cldemi(iof+i,k)
              PCLDLU(i,k) = cldfra(iof+i,k)*cldemi(iof+i,k)
@@ -679,14 +700,18 @@
           ENDDO
        ENDDO
+    
+  
+     DO l=1,naero_grp
        DO k = 1, kflev
           DO i = 1, kdlon
-             tauaero(i,k,:,1)=tau_aero(iof+i,k,:,1)
-             pizaero(i,k,:,1)=piz_aero(iof+i,k,:,1)
-             cgaero(i,k,:,1) =cg_aero(iof+i,k,:,1)
-             tauaero(i,k,:,2)=tau_aero(iof+i,k,:,2)
-             pizaero(i,k,:,2)=piz_aero(iof+i,k,:,2)
-             cgaero(i,k,:,2) =cg_aero(iof+i,k,:,2)
+             tauaero(i,k,l,1)=tau_aero(iof+i,k,l,1)
+             pizaero(i,k,l,1)=piz_aero(iof+i,k,l,1)
+             cgaero(i,k,l,1) =cg_aero(iof+i,k,l,1)
+             tauaero(i,k,l,2)=tau_aero(iof+i,k,l,2)
+             pizaero(i,k,l,2)=piz_aero(iof+i,k,l,2)
+             cgaero(i,k,l,2) =cg_aero(iof+i,k,l,2)
           ENDDO
        ENDDO
+    ENDDO
        !
        !===== iflag_rrtm ================================================
@@ -847,7 +872,7 @@
           !--aerosol NAT  - natural only          - index 1
           !
-          DO i = 1, kdlon
-             DO k = 1, kflev
-                DO kk=1, NSW
+        DO kk=1, NSW
+          DO k = 1, kflev
+            DO i = 1, kdlon
                    !
                    PTAU_TOT(i,kflev+1-k,kk)=tau_aero_sw_rrtm(i,k,2,kk)
@@ -868,7 +893,7 @@
           !--aerosol NAT  - natural only          - index 1
           !
-          DO i = 1, kdlon
-             DO k = 1, kflev
-                DO kk=1, NLW
+          DO kk=1, NLW
+            DO k = 1, kflev
+              DO i = 1, kdlon
                    !
                    PTAU_LW_TOT(i,kflev+1-k,kk)=tau_aero_lw_rrtm(i,k,2,kk)
@@ -892,5 +917,8 @@
              PFSDNN(i)=0.
              PFSDNV(i)=0.
-             DO kk = 1, NSW
+          ENDDO
+
+          DO kk = 1, NSW
+            DO i = 1, kdlon
                 PSFSWDIR(i,kk)=0.
                 PSFSWDIF(i,kk)=0.
@@ -902,28 +930,36 @@
           paprs_i(:,1)=paprs(:,klev+1)
           DO k=1,klev
-             paprs_i(1:klon,k+1) =paprs(1:klon,klev+1-k)
-             pplay_i(1:klon,k)   =pplay(1:klon,klev+1-k)
-             cldfra_i(1:klon,k)  =cldfra(1:klon,klev+1-k)
-             PDP_i(1:klon,k)     =PDP(1:klon,klev+1-k)
-             t_i(1:klon,k)       =t(1:klon,klev+1-k)
-             q_i(1:klon,k)       =q(1:klon,klev+1-k)
-             qsat_i(1:klon,k)    =qsat(1:klon,klev+1-k)
-             flwc_i(1:klon,k)    =flwc(1:klon,klev+1-k)
-             fiwc_i(1:klon,k)    =fiwc(1:klon,klev+1-k)
-             ref_liq_i(1:klon,k) =ref_liq(1:klon,klev+1-k)
-             ref_ice_i(1:klon,k) =ref_ice(1:klon,klev+1-k)
+            DO i = 1, klon
+             paprs_i(i,k+1) =paprs(i,klev+1-k)
+             pplay_i(i,k)   =pplay(i,klev+1-k)
+             cldfra_i(i,k)  =cldfra(i,klev+1-k)
+             PDP_i(i,k)     =PDP(i,klev+1-k)
+             t_i(i,k)       =t(i,klev+1-k)
+             q_i(i,k)       =q(i,klev+1-k)
+             qsat_i(i,k)    =qsat(i,klev+1-k)
+             flwc_i(i,k)    =flwc(i,klev+1-k)
+             fiwc_i(i,k)    =fiwc(i,klev+1-k)
+             ref_liq_i(i,k) =ref_liq(i,klev+1-k)
+             ref_ice_i(i,k) =ref_ice(i,klev+1-k)
              !-OB
-             ref_liq_pi_i(1:klon,k) =ref_liq_pi(1:klon,klev+1-k)
-             ref_ice_pi_i(1:klon,k) =ref_ice_pi(1:klon,klev+1-k)
-          ENDDO
-          DO k=1,kflev
-             POZON_i(1:klon,k,:)=POZON(1:klon,kflev+1-k,:)
+             ref_liq_pi_ii,k) =ref_liq_pi(i,klev+1-k)
+             ref_ice_pi_i(i,k) =ref_ice_pi(i,klev+1-k)
+            ENDDO
+          ENDDO
+          
+          DO l=1,dimoz
+            DO k=1,kflev
+               POZON_i(1:klon,k,l)=POZON(1:klon,kflev+1-k,l)
              !            POZON_i(1:klon,k)=POZON(1:klon,k)	    ! on laisse 1=sol et klev=top 
              !          print *,'Juste avant RECMWFL: k tsol temp',k,tsol,t(1,k)
              ! Modif MPL 6.01.09 avec RRTM, on passe de 5 a 6      
-             DO i=1,6
-                PAER_i(1:klon,k,i)=PAER(1:klon,kflev+1-k,i)
-             ENDDO
-          ENDDO
+            ENDDO
+          ENDDO
+
+            DO l=1,6
+               DO k=1,kflev
+                 PAER_i(1:klon,k,l)=PAER(1:klon,kflev+1-k,l)
+               ENDDO
+            ENDDO
 
           !       print *,'RADLWSW: avant RECMWFL, RI0,rmu0=',solaire,rmu0
@@ -1107,12 +1143,19 @@
 
           !--fraction of diffuse radiation in surface SW downward radiation
-          DO i = 1, kdlon
-             IF (fract(i).GT.0.0) THEN
-                zdir=SUM(PSFSWDIR(i,:))
-                zdif=SUM(PSFSWDIF(i,:))
-                zsolswfdiff(i) = zdif/(zdir+zdif)
-             ELSE  !--night
-                zsolswfdiff(i) = 1.0
-             ENDIF
+          zdir(:)=0.
+          zdif(:)=0.
+          DO k=1,NSW
+            DO i = 1, kdlon
+              zdir(i)=zdir(i) + PSFSWDIR(i,k)
+              zdif(i)=zdif(i) + PSFSWDIF(i,k)
+            ENDDO
+          ENDDO
+          
+          DO i = 1, kdlon
+              IF (fract(i).GT.0.0) THEN  
+                zsolswfdiff(i) = zdif(i)/(zdir(i)+zdif(i))
+              ELSE  !--night
+                 zsolswfdiff(i) = 1.0
+              ENDIF
           ENDDO
           !
@@ -1178,9 +1221,9 @@
           ENDDO
                     !FC
-          DO i=1,kdlon
           DO jb = 1, nbands_lw_rrtm !FC
-          lwtoab(i,jb) = ZTOAB_i(i,jb)
-          lwtoa0b(i,jb) = ZTOACB_i(i,jb)
-          ENDDO
+            DO i=1,kdlon
+              lwtoab(i,jb) = ZTOAB_i(i,jb)
+              lwtoa0b(i,jb) = ZTOACB_i(i,jb)
+            ENDDO
           ENDDO
 
@@ -1219,7 +1262,7 @@
           !
           ! AI ATTENTION Aerosols A REVOIR
-          DO i = 1, kdlon
+          DO kk= 1, naero_spc
              DO k = 1, kflev
-                DO kk= 1, naero_spc
+                DO i = 1, kdlon
                    !      DO kk=1, NSW
                    !
@@ -1263,5 +1306,8 @@
              PFSDNN(i)=0.
              PFSDNV(i)=0.
-             DO kk = 1, NSW
+           ENDDO
+
+          DO kk = 1, NSW
+            DO i = 1, kdlon
                 PSFSWDIR(i,kk)=0.
                 PSFSWDIF(i,kk)=0.
@@ -1274,25 +1320,30 @@
           paprs_i(:,1)=paprs(:,klev+1)
           DO k=1,klev
-             paprs_i(1:klon,k+1) =paprs(1:klon,klev+1-k)
-             pplay_i(1:klon,k)   =pplay(1:klon,klev+1-k)
-             cldfra_i(1:klon,k)  =cldfra(1:klon,klev+1-k)
-             PDP_i(1:klon,k)     =PDP(1:klon,klev+1-k)
-             t_i(1:klon,k)       =t(1:klon,klev+1-k)
-             q_i(1:klon,k)       =q(1:klon,klev+1-k)
-             qsat_i(1:klon,k)    =qsat(1:klon,klev+1-k)
-             flwc_i(1:klon,k)    =flwc(1:klon,klev+1-k)
-             fiwc_i(1:klon,k)    =fiwc(1:klon,klev+1-k)
-             ref_liq_i(1:klon,k) =ref_liq(1:klon,klev+1-k)*1.0e-6
-             ref_ice_i(1:klon,k) =ref_ice(1:klon,klev+1-k)*1.0e-6
+            DO i=1,klon
+             paprs_i(i,k+1) =paprs(i,klev+1-k)
+             pplay_i(i,k)   =pplay(i,klev+1-k)
+             cldfra_i(i,k)  =cldfra(i,klev+1-k)
+             PDP_i(i,k)     =PDP(i,klev+1-k)
+             t_i(i,k)       =t(i,klev+1-k)
+             q_i(i,k)       =q(i,klev+1-k)
+             qsat_i(i,k)    =qsat(i,klev+1-k)
+             flwc_i(i,k)    =flwc(i,klev+1-k)
+             fiwc_i(i,k)    =fiwc(i,klev+1-k)
+             ref_liq_i(i,k) =ref_liq(i,klev+1-k)*1.0e-6
+             ref_ice_i(i,k) =ref_ice(i,klev+1-k)*1.0e-6
              !-OB
-             ref_liq_pi_i(1:klon,k) =ref_liq_pi(1:klon,klev+1-k)
-             ref_ice_pi_i(1:klon,k) =ref_ice_pi(1:klon,klev+1-k)
-          ENDDO
-          DO k=1,kflev
-             POZON_i(1:klon,k,:)=POZON(1:klon,kflev+1-k,:)
+             ref_liq_pi_i(i,k) =ref_liq_pi(i,klev+1-k)
+             ref_ice_pi_i(i,k) =ref_ice_pi(i,klev+1-k)
+            ENDDO
+          ENDDO
+
+         DO l=1,dimoz 
+           DO k=1,kflev
+             POZON_i(1:klon,k,l)=POZON(1:klon,kflev+1-k,l)
              !            ZO3_DP_i(1:klon,k)=ZO3_DP(1:klon,kflev+1-k)
              !            DO i=1,6
-             PAER_i(1:klon,k,:)=PAER(1:klon,kflev+1-k,:)
+             PAER_i(1:klon,k,l)=PAER(1:klon,kflev+1-k,l)
              !            ENDDO
+           ENDDO
           ENDDO
 
@@ -1526,5 +1577,5 @@
                 ! Direct flux
                 ZFLUX_DIR(i,k+1) = ZFLUX_DIR_i(i,klev+1-k)
-                ZFLUX_DIR_CLEAR  = ZFLUX_DIR_CLEAR_i(i,klev+1-k)
+                ZFLUX_DIR_CLEAR(i,k+1)  = ZFLUX_DIR_CLEAR_i(i,klev+1-k)
                 IF (ok_volcan) THEN
                    ZSWADAERO(i,k+1)=ZSWADAERO(i,klev+1-k)*fract(i) !--NL
@@ -1562,9 +1613,17 @@
 
           !--fraction of diffuse radiation in surface SW downward radiation
-          DO i = 1, kdlon
-             zdir=SUM(PSFSWDIR(i,:))
-             zdif=SUM(PSFSWDIF(i,:))
-             IF (fract(i).GT.0.0.and.(zdir+zdif).gt.seuilmach) THEN
-                zsolswfdiff(i) = zdif/(zdir+zdif)
+
+          zdir(:)=0.
+          zdif(:)=0.
+          DO k=1,klev
+            DO i = 1, kdlon
+             zdir(i)=zdir(i)+PSFSWDIR(i,k)
+             zdif(i)=zdif(i)+PSFSWDIF(i,k)
+            ENDDO
+          ENDDO
+
+          DO i = 1, kdlon
+            IF (fract(i).GT.0.0.and.(zdir(i)+zdif(i)).gt.seuilmach) THEN
+                zsolswfdiff(i) = zdif(i)/(zdir(i)+zdif(i))
              ELSE  !--night
                 zsolswfdiff(i) = 1.0
@@ -1611,5 +1670,8 @@
           sollw(iof+i) = zsollw(i)
           sollwdown(iof+i) = zsollwdown(i)
-          DO k = 1, kflev+1
+      ENDDO
+
+      DO k = 1, kflev+1
+         DO i = 1, kdlon
              lwdn0 ( iof+i,k)   = ZFLDN0 ( i,k)
              lwdn  ( iof+i,k)   = ZFLDN  ( i,k)
@@ -1617,4 +1679,7 @@
              lwup  ( iof+i,k)   = ZFLUP  ( i,k)
           ENDDO
+      ENDDO
+
+       DO i = 1, kdlon
           topsw0(iof+i) = ztopsw0(i)
           toplw0(iof+i) = ztoplw0(i)
@@ -1622,6 +1687,8 @@
           sollw0(iof+i) = zsollw0(i)
           albpla(iof+i) = zalbpla(i)
-
-          DO k = 1, kflev+1
+        ENDDO
+
+        DO k = 1, kflev+1
+          DO i = 1, kdlon
              swdnc0( iof+i,k)   = ZFSDNC0( i,k)
              swdn0 ( iof+i,k)   = ZFSDN0 ( i,k)
@@ -1642,11 +1709,14 @@
              solswad_aero(iof+i) = zsolswadaero(i)
              solswad0_aero(iof+i) = zsolswad0aero(i)
-             topsw_aero(iof+i,:) = ztopsw_aero(i,:)
-             topsw0_aero(iof+i,:) = ztopsw0_aero(i,:)
-             solsw_aero(iof+i,:) = zsolsw_aero(i,:)
-             solsw0_aero(iof+i,:) = zsolsw0_aero(i,:)
-             topswcf_aero(iof+i,:) = ztopswcf_aero(i,:)
-             solswcf_aero(iof+i,:) = zsolswcf_aero(i,:)   
+          ENDDO
+          
+             topsw_aero(:,:) = ztopsw_aero(:,:)
+             topsw0_aero(:,:) = ztopsw0_aero(:,:)
+             solsw_aero(:,:) = zsolsw_aero(:,:)
+             solsw0_aero(:,:) = zsolsw0_aero(:,:)
+             topswcf_aero(:,:) = ztopswcf_aero(:,:)
+             solswcf_aero(:,:) = zsolswcf_aero(:,:)   
              !-LW
+          DO i = 1, kdlon
              toplwad_aero(iof+i) = ztoplwadaero(i)
              toplwad0_aero(iof+i) = ztoplwad0aero(i)
@@ -1660,9 +1730,11 @@
              topswad0_aero(iof+i) = 0.0
              solswad0_aero(iof+i) = 0.0
-             topsw_aero(iof+i,:) = 0.
-             topsw0_aero(iof+i,:) =0.
-             solsw_aero(iof+i,:) = 0.
-             solsw0_aero(iof+i,:) = 0.
+          ENDDO
+             topsw_aero(:,:) = 0.
+             topsw0_aero(:,:) =0.
+             solsw_aero(:,:) = 0.
+             solsw0_aero(:,:) = 0.
              !-LW
+          DO i = 1, kdlon
              toplwad_aero(iof+i) = 0.0
              sollwad_aero(iof+i) = 0.0
