diff --git a/src/OCE/SBC/sbcblk.F90 b/src/OCE/SBC/sbcblk.F90
index 9db8db10fc587b235b162610a378838b0697f01f..ba5255c909b32dffe6939c279d6c29c49abae526 100644
--- a/src/OCE/SBC/sbcblk.F90
+++ b/src/OCE/SBC/sbcblk.F90
@@ -507,6 +507,7 @@ CONTAINS
       REAL(wp), DIMENSION(A2D(0)) ::   zssq, zcd_du, zsen, zlat, zevp, zpre, ztheta
       REAL(wp) :: ztst
       LOGICAL  :: llerr
+      INTEGER  :: ji, jj 
       !!----------------------------------------------------------------------
       !
       CALL fld_read( kt, nn_fsbc, sf )             ! input fields provided at the current time-step
@@ -600,7 +601,9 @@ CONTAINS
       IF( ln_trcdc2dm )  THEN      !  diurnal cycle in TOP
          IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN
             IF( ln_dm2dc )  THEN
-                qsr_mean(:,:) = ( 1. - albo )  * sf(jp_qsr)%fnow(:,:,1)  * smask0(:,:)
+              DO_2D( 0, 0, 0, 0 )
+                qsr_mean(ji,jj) = ( 1. - albo )  * sf(jp_qsr)%fnow(ji,jj,1)  * smask0(ji,jj)
+              END_2D
             ELSE
                 ncpl_qsr_freq = sf(jp_qsr)%freqh * 3600 !   qsr_mean will be computed in TOP
             ENDIF
diff --git a/src/OCE/SBC/sbcflx.F90 b/src/OCE/SBC/sbcflx.F90
index b5e94d0e4386de1eb88c8d0a669d1e7fd88940d6..ac04e77f80b855e33844d3290d84849615f703aa 100644
--- a/src/OCE/SBC/sbcflx.F90
+++ b/src/OCE/SBC/sbcflx.F90
@@ -136,7 +136,9 @@ CONTAINS
 #if defined key_top
       IF( ln_trcdc2dm )  THEN      !  diurnal cycle in TOP
          IF( ln_dm2dc )  THEN
-            qsr_mean(:,:) = sf(jp_qsr)%fnow(:,:,1) * smask0(:,:)
+            DO_2D( 0, 0, 0, 0 )                  ! set the ocean fluxes from read fields
+               qsr_mean(ji,jj) = sf(jp_qsr)%fnow(ji,jj,1) * smask0(ji,jj)
+            END_2D
          ELSE
             ncpl_qsr_freq = sf(jp_qsr)%freqh * 3600 !  qsr_mean will be computed in TOP
          ENDIF
diff --git a/src/OCE/trc_oce.F90 b/src/OCE/trc_oce.F90
index f7b8309ee1cf970be0bbca6954d5c308ee667b70..6810cb875c9a6faf919f653d4e94082114a8617a 100644
--- a/src/OCE/trc_oce.F90
+++ b/src/OCE/trc_oce.F90
@@ -54,7 +54,7 @@ CONTAINS
       !!----------------------------------------------------------------------
       !!                  ***  trc_oce_alloc  ***
       !!----------------------------------------------------------------------
-      ALLOCATE( etot3(jpi,jpj,jpk), oce_co2(jpi,jpj), qsr_mean(jpi,jpj), STAT=trc_oce_alloc )
+      ALLOCATE( etot3(A2D(0),jpk), oce_co2(A2D(0)), qsr_mean(A2D(0)), STAT=trc_oce_alloc )
 
       IF( trc_oce_alloc /= 0 )   CALL ctl_warn('trc_oce_alloc: failed to allocate etot3 array')
       !
diff --git a/src/TOP/trcstp.F90 b/src/TOP/trcstp.F90
index 065d7f73df585f4420ee07e919d80db3e2caa3b4..4200f3e9a5986ad44b990f22f1885083c135e491 100644
--- a/src/TOP/trcstp.F90
+++ b/src/TOP/trcstp.F90
@@ -153,7 +153,7 @@ CONTAINS
       !!----------------------------------------------------------------------
       INTEGER, INTENT( in ) ::   kt   ! ocean time-step index
       !
-      INTEGER  ::   jn   ! dummy loop indices
+      INTEGER  ::   ji,jj,jn   ! dummy loop indices
       REAL(wp) ::   zkt, zrec     ! local scalars
       CHARACTER(len=1) ::   cl1   ! 1 character
       CHARACTER(len=2) ::   cl2   ! 2 characters
@@ -203,7 +203,9 @@ CONTAINS
             IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean set to nit000 values'
             rsecfst  = kt * rn_Dt
             !
-            qsr_mean(:,:) = qsr(:,:)
+            DO_2D( 0, 0, 0, 0 )
+               qsr_mean(ji,jj) = qsr(ji,jj)
+            END_2D
             DO jn = 1, nb_rec_per_day
                qsr_arr(:,:,jn) = qsr_mean(:,:)
             END DO
diff --git a/src/TOP/trcstp_rk3.F90 b/src/TOP/trcstp_rk3.F90
index cdf89df573fbfe5c939a8dd3c2ac1dd872ef0f02..e42148d86257807a3b0265df257876a76315648f 100644
--- a/src/TOP/trcstp_rk3.F90
+++ b/src/TOP/trcstp_rk3.F90
@@ -161,7 +161,7 @@ CONTAINS
       !!----------------------------------------------------------------------
       INTEGER, INTENT( in ) ::   kt   ! ocean time-step index
       !
-      INTEGER  ::   jn   ! dummy loop indices
+      INTEGER  ::   ji,jj,jn   ! dummy loop indices
       REAL(wp) ::   zkt, zrec     ! local scalars
       CHARACTER(len=1) ::   cl1   ! 1 character
       CHARACTER(len=2) ::   cl2   ! 2 characters
@@ -211,7 +211,9 @@ CONTAINS
             IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean set to nit000 values'
             rsecfst  = kt * rn_Dt
             !
-            qsr_mean(:,:) = qsr(:,:)
+            DO_2D( 0, 0, 0, 0 )
+               qsr_mean(ji,jj) = qsr(ji,jj)
+            END_2D
             DO jn = 1, nb_rec_per_day
                qsr_arr(:,:,jn) = qsr_mean(:,:)
             END DO