From 3ea676e1762360cce7bf10da5bb56afb022e8c63 Mon Sep 17 00:00:00 2001
From: cetlod <Christian.Ethe@ipsl.fr>
Date: Thu, 25 Aug 2022 18:25:16 +0200
Subject: [PATCH] Minor Fix on qsr for TOP

---
 src/OCE/SBC/sbcblk.F90 | 5 ++++-
 src/OCE/SBC/sbcflx.F90 | 4 +++-
 src/OCE/trc_oce.F90    | 2 +-
 src/TOP/trcstp.F90     | 6 ++++--
 src/TOP/trcstp_rk3.F90 | 6 ++++--
 5 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/src/OCE/SBC/sbcblk.F90 b/src/OCE/SBC/sbcblk.F90
index 9db8db10f..ba5255c90 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 b5e94d0e4..ac04e77f8 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 f7b8309ee..6810cb875 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 065d7f73d..4200f3e9a 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 cdf89df57..e42148d86 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
-- 
GitLab