From 5c46c2bc1de27fb46dd6c308eda05d7508edec1a Mon Sep 17 00:00:00 2001
From: Sibylle TECHENE <techenes@irene192.c-irene.tgcc.ccc.cea.fr>
Date: Fri, 11 Feb 2022 11:47:44 +0100
Subject: [PATCH] correct coriolis management to go from barocline mode to
 barotrope mode

---
 src/OCE/DYN/dynspg_ts.F90 | 16 +++++++++++++++-
 src/OCE/stp2d.F90         | 13 ++++---------
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/src/OCE/DYN/dynspg_ts.F90 b/src/OCE/DYN/dynspg_ts.F90
index db3a442a..3beee827 100644
--- a/src/OCE/DYN/dynspg_ts.F90
+++ b/src/OCE/DYN/dynspg_ts.F90
@@ -247,10 +247,24 @@ CONTAINS
       zCdU_v  (:,:) = CdU_v   (:,:)
 
 !!gm ==>>> !!ts    ISSUe her on en discute    changer les cas ENS ENE  et triad ?
+      !
+      !                                   !=  remove 2D Coriolis trend  =!
+      !                                   !  --------------------------  !
+      !
       IF( kt == nit000 .OR. .NOT. ln_linssh )   CALL dyn_cor_2D_init( Kmm )   ! Set zwz, the barotropic Coriolis force coefficient
       !                      ! recompute zwz = f/depth  at every time step for (.NOT.ln_linssh) as the water colomn height changes
       !
-      
+      zhU(:,:) = puu_b(:,:,Kmm) * hu(:,:,Kmm) * e2u(:,:)        ! now fluxes 
+      zhV(:,:) = pvv_b(:,:,Kmm) * hv(:,:,Kmm) * e1v(:,:)        ! NB: FULL domain : put a value in last row and column
+      !
+      CALL dyn_cor_2D( ht(:,:), hu(:,:,Kmm), hv(:,:,Kmm), puu_b(:,:,Kmm), pvv_b(:,:,Kmm), zhU, zhV,  &   ! <<== in
+         &                                                                          zu_trd, zv_trd   )   ! ==>> out
+      !
+      DO_2D( 0, 0, 0, 0 )                          ! Remove coriolis term (and possibly spg) from barotropic trend
+         zu_frc(ji,jj) = zu_frc(ji,jj) - zu_trd(ji,jj) * ssumask(ji,jj)
+         zv_frc(ji,jj) = zv_frc(ji,jj) - zv_trd(ji,jj) * ssvmask(ji,jj)
+      END_2D
+
 #else
       !                    !========================================!
       !                    !==  Phase 1 for MLF time integration  ==!
diff --git a/src/OCE/stp2d.F90 b/src/OCE/stp2d.F90
index 3f3db5de..0cea844f 100644
--- a/src/OCE/stp2d.F90
+++ b/src/OCE/stp2d.F90
@@ -109,16 +109,12 @@ CONTAINS
       uu(:,:,:,Krhs) = 0._wp        ! set dynamics trends to zero
       vv(:,:,:,Krhs) = 0._wp
       !
-      !                             !*  compute advection  *!
+      !                             !*  compute advection + coriolis *!
       !
-      CALL dyn_adv( kstp, Kbb, Kbb      , uu, vv, Krhs)     !- vector form KEG+ZAD 
+      CALL dyn_adv( kt, Kbb, Kbb      , uu, vv, Krhs)       !- vector form KEG+ZAD 
       !                                                     !- flux   form ADV
-      SELECT CASE( n_dynadv )
-      CASE( np_VEC_c2  )                                    !- vector form (add relative vorticity term)
-         CALL dyn_vor( kt,            Kbb, uu, vv, Krhs, np_RVO )
-      CASE( np_FLX_c2 , np_FLX_ubs )                        !-  flux  form (add metric term)
-         CALL dyn_vor     ( kt      , Kbb, uu, vv, Krhs, np_MET )
-      END SELECT
+      CALL dyn_vor( kt,            Kbb, uu, vv, Krhs )      !- vector form COR+RVO
+      !                                                     !- flux   form COR+MET
       !
       !                             !*  lateral viscosity  *!
       CALL dyn_ldf( kt,   Kbb, Kbb, uu, vv, Krhs )
@@ -145,7 +141,6 @@ CONTAINS
       CALL dyn_drg_init( Kbb, Kbb, uu, vv, uu_b, vv_b, Ue_rhs, Ve_rhs, CdU_u, CdU_v )
       !
       !                             !* wind forcing *!
-!!st ATTENTION stoke drift !!
       IF( ln_bt_fw ) THEN
          DO_2D( 0, 0, 0, 0 )
             Ue_rhs(ji,jj) =  Ue_rhs(ji,jj) + r1_rho0 * utau(ji,jj) * r1_hu(ji,jj,Kbb)
-- 
GitLab