From e928a8f61ebb347dfaaf648a4b29c991cae93deb Mon Sep 17 00:00:00 2001
From: WURTZ Jean <wurtzj@sxville>
Date: Tue, 7 Feb 2023 17:23:18 +0100
Subject: [PATCH] Some adaptation in oasis for SFXv9

---
 src/MNH/mnh_oasis_recv.F90    | 23 +++++++++++++++--------
 src/MNH/mnh_oasis_send.F90    | 20 ++++++++++++--------
 src/SURFEX/modd_sfx_oasis.F90 |  1 +
 src/SURFEX/modn_sfx_oasis.F90 |  7 ++++++-
 4 files changed, 34 insertions(+), 17 deletions(-)

diff --git a/src/MNH/mnh_oasis_recv.F90 b/src/MNH/mnh_oasis_recv.F90
index 481d2151a..f3bbff21d 100644
--- a/src/MNH/mnh_oasis_recv.F90
+++ b/src/MNH/mnh_oasis_recv.F90
@@ -75,13 +75,14 @@ SUBROUTINE MNH_OASIS_RECV   (HPROGRAM,KI,KSW,PTIMEC,PTSTEP_SURF,   &
 USE MODN_SFX_OASIS,  ONLY : XTSTEP_CPL_LAND, &
                             XTSTEP_CPL_SEA,  &
                             XTSTEP_CPL_WAVE,  &
-                            LWATER
+                            LWATER, LSEACARB
 !
 USE MODD_SFX_OASIS,  ONLY : LCPL_LAND,         &
                             LCPL_GW,LCPL_FLOOD,&
                             LCPL_SEA,          &
                             LCPL_SEAICE,       &
-                            LCPL_WAVE
+                            LCPL_WAVE,         &
+                            LSEAICE_2FLX
 !
 USE MODD_SURF_PAR,   ONLY : XUNDEF
 USE MODD_MNH_SURFEX_n
@@ -122,12 +123,14 @@ REAL, DIMENSION(KI) :: ZLAND_WTD     ! Land water table depth (m)
 REAL, DIMENSION(KI) :: ZLAND_FWTD    ! Land grid-cell fraction of water table rise (-)
 REAL, DIMENSION(KI) :: ZLAND_FFLOOD  ! Land Floodplains fraction (-)
 REAL, DIMENSION(KI) :: ZLAND_PIFLOOD ! Land Potential flood infiltration(kg/m2/s)
+REAL, DIMENSION(KI) :: ZLAND_TWS     ! RRM terrestrial water storage (kg/m2)
 REAL, DIMENSION(KI) :: ZSEA_SST      ! Sea surface temperature (K)
 REAL, DIMENSION(KI) :: ZSEA_UCU      ! Sea u-current stress (Pa)
 REAL, DIMENSION(KI) :: ZSEA_VCU      ! Sea v-current stress (Pa)
 REAL, DIMENSION(KI) :: ZSEAICE_SIT   ! Sea-ice Temperature (K)
 REAL, DIMENSION(KI) :: ZSEAICE_CVR   ! Sea-ice cover (-)
 REAL, DIMENSION(KI) :: ZSEAICE_ALB   ! Sea-ice albedo (-)
+REAL, DIMENSION(KI) :: ZSEA_FCO2     ! Sea CO2 Flux
 REAL, DIMENSION(KI) :: ZWAVE_CHA     ! Charnock coefficient (-)
 REAL, DIMENSION(KI) :: ZWAVE_UCU     ! u-current velocity (m/s)
 REAL, DIMENSION(KI) :: ZWAVE_VCU     ! v-current velocity (m/s)
@@ -161,6 +164,7 @@ IF(GRECV_LAND)THEN
   ZLAND_FWTD   (:) = XUNDEF
   ZLAND_FFLOOD (:) = XUNDEF
   ZLAND_PIFLOOD(:) = XUNDEF
+  ZLAND_TWS    (:) = XUNDEF
 ENDIF
 !
 IF(GRECV_SEA)THEN
@@ -170,6 +174,7 @@ IF(GRECV_SEA)THEN
   ZSEAICE_SIT(:) = XUNDEF
   ZSEAICE_CVR(:) = XUNDEF
   ZSEAICE_ALB(:) = XUNDEF
+  ZSEA_FCO2(:) = XUNDEF
 ENDIF
 !
 IF(GRECV_WAVE)THEN
@@ -189,8 +194,10 @@ CALL SFX_OASIS_RECV(HPROGRAM,IGPTOT,KI,KSW,ZTIME_CPL,  &
                     GRECV_LAND, GRECV_SEA, GRECV_WAVE, &
                     ZLAND_WTD    (:),ZLAND_FWTD   (:), &
                     ZLAND_FFLOOD (:),ZLAND_PIFLOOD(:), &
-                    ZSEA_SST     (:),ZSEA_UCU     (:), &
-                    ZSEA_VCU     (:),ZSEAICE_SIT  (:), &
+                    ZLAND_TWS    (:),                  &
+                    ZSEA_SST     (:),                  &
+                    ZSEA_UCU     (:),ZSEA_VCU     (:), &
+                    ZSEA_FCO2    (:),ZSEAICE_SIT  (:), &
                     ZSEAICE_CVR  (:),ZSEAICE_ALB  (:), &
                     ZWAVE_CHA    (:),ZWAVE_UCU    (:), &
                     ZWAVE_VCU    (:),ZWAVE_HS     (:), &
@@ -209,7 +216,7 @@ IF(GRECV_LAND)THEN
                     YSURF_CUR%IM%NK, YSURF_CUR%IM%NP, YSURF_CUR%U,      &
                     ILUOUT,LCPL_GW,LCPL_FLOOD,        &
                     ZLAND_WTD   (:),ZLAND_FWTD   (:), &
-                    ZLAND_FFLOOD(:),ZLAND_PIFLOOD(:)  )        
+                    ZLAND_FFLOOD(:),ZLAND_PIFLOOD(:), ZLAND_TWS  )        
 ENDIF
 !
 !-------------------------------------------------------------------------------
@@ -218,10 +225,10 @@ ENDIF
 !
 IF(GRECV_SEA)THEN
   CALL PUT_SFX_SEA(YSURF_CUR%SM%S, YSURF_CUR%U, YSURF_CUR%WM%W, &
-                   ILUOUT,LCPL_SEAICE,LWATER,                   &
+                   ILUOUT,LCPL_SEAICE, LSEAICE_2FLX,LWATER, LSEACARB,         &
                    ZSEA_SST   (:),ZSEA_UCU   (:),               &
-                   ZSEA_VCU   (:),ZSEAICE_SIT(:),               &
-                   ZSEAICE_CVR(:),ZSEAICE_ALB(:)                )
+                   ZSEA_VCU   (:), ZSEA_FCO2(:), ZSEAICE_SIT(:),               &
+                   ZSEAICE_CVR(:), ZSEAICE_ALB(:)                )
 ENDIF
 !
 !-------------------------------------------------------------------------------
diff --git a/src/MNH/mnh_oasis_send.F90 b/src/MNH/mnh_oasis_send.F90
index 283772b77..067957803 100644
--- a/src/MNH/mnh_oasis_send.F90
+++ b/src/MNH/mnh_oasis_send.F90
@@ -63,10 +63,11 @@ USE MODN_SFX_OASIS,  ONLY : XTSTEP_CPL_LAND, &
                             XTSTEP_CPL_LAKE, &
                             XTSTEP_CPL_SEA , &
                             XTSTEP_CPL_WAVE, &
-                            LWATER
+                            LWATER,LSEACARB
 !
 USE MODD_SFX_OASIS,  ONLY : LCPL_LAND,LCPL_GW,       &
                             LCPL_FLOOD,LCPL_CALVING, &
+			    LCPL_RIVCARB,            &
                             LCPL_LAKE,               &
                             LCPL_SEA,LCPL_SEAICE,    &
                             LCPL_WAVE
@@ -97,7 +98,8 @@ REAL,                  INTENT(IN) :: PSTEP_SURF    ! Model time step (s)
 REAL, DIMENSION(KI)   :: ZLAND_RUNOFF    ! Cumulated Surface runoff             (kg/m2)
 REAL, DIMENSION(KI)   :: ZLAND_DRAIN     ! Cumulated Deep drainage              (kg/m2)
 REAL, DIMENSION(KI)   :: ZLAND_CALVING   ! Cumulated Calving flux               (kg/m2)
-REAL, DIMENSION(KI)   :: ZLAND_RECHARGE  ! Cumulated Recharge to groundwater    (kg/m2)
+REAL, DIMENSION(KI)   :: ZLAND_SRCFLOOD  ! Cumulated freshwater flux            (kg/m2)
+REAL, DIMENSION(KI)   :: ZLAND_DOCFLUX   ! Cumulated doc flux                   (kg/m2)
 !
 REAL, DIMENSION(KI)   :: ZLAKE_EVAP  ! Cumulated Evaporation             (kg/m2)
 REAL, DIMENSION(KI)   :: ZLAKE_RAIN  ! Cumulated Rainfall rate           (kg/m2)
@@ -119,6 +121,7 @@ REAL, DIMENSION(KI)   :: ZSEA_PRES  ! Cumulated Surface pressure        (Pa.s)
 REAL, DIMENSION(KI)   :: ZSEAICE_HEAT ! Cumulated Sea-ice non solar net heat flux (J/m2)
 REAL, DIMENSION(KI)   :: ZSEAICE_SNET ! Cumulated Sea-ice solar net heat flux     (J/m2)
 REAL, DIMENSION(KI)   :: ZSEAICE_EVAP ! Cumulated Sea-ice sublimation             (kg/m2)
+REAL, DIMENSION(KI)   :: ZSEA_CO2     !
 !
 REAL, DIMENSION(KI)   :: ZWAVE_U10    ! 10m u-wind speed (m/s)
 REAL, DIMENSION(KI)   :: ZWAVE_V10    ! 10m v-wind speed (m/s)
@@ -154,7 +157,6 @@ IF(GSEND_LAND)THEN
   ZLAND_RUNOFF  (:) = XUNDEF
   ZLAND_DRAIN   (:) = XUNDEF
   ZLAND_CALVING (:) = XUNDEF
-  ZLAND_RECHARGE(:) = XUNDEF
 ENDIF
 !
 IF(GSEND_LAKE)THEN
@@ -180,6 +182,7 @@ IF(GSEND_SEA)THEN
   ZSEAICE_HEAT (:) = XUNDEF
   ZSEAICE_SNET (:) = XUNDEF
   ZSEAICE_EVAP (:) = XUNDEF
+  ZSEA_CO2 (:) = XUNDEF
 ENDIF
 !
 IF(GSEND_WAVE)THEN
@@ -197,9 +200,9 @@ IF(GSEND_LAND)THEN
 ! * Get river output fields
 !
   CALL GET_SFX_LAND(YSURF_CUR%IM%O, YSURF_CUR%IM%S, YSURF_CUR%U,   &
-                    LCPL_GW,LCPL_FLOOD,LCPL_CALVING,    &
+                    LCPL_GW,LCPL_FLOOD,LCPL_CALVING, LCPL_RIVCARB,    &
                     ZLAND_RUNOFF (:),ZLAND_DRAIN   (:), &
-                    ZLAND_CALVING(:),ZLAND_RECHARGE(:)   )
+                    ZLAND_CALVING(:),ZLAND_SRCFLOOD(:), ZLAND_DOCFLUX(:)   )
 !
 ENDIF
 !
@@ -218,11 +221,11 @@ IF(GSEND_SEA)THEN
 ! * Get sea output fields
 !
   CALL GET_SFX_SEA(YSURF_CUR%SM%S, YSURF_CUR%U, YSURF_CUR%WM%W,     &
-                    LCPL_SEAICE, LWATER,                            &
+                    LCPL_SEAICE, LWATER, LSEACARB,              &
                     ZSEA_FWSU   (:),ZSEA_FWSV   (:),ZSEA_HEAT   (:),&
                     ZSEA_SNET   (:),ZSEA_WIND   (:),ZSEA_FWSM   (:),&
                     ZSEA_EVAP   (:),ZSEA_RAIN   (:),ZSEA_SNOW   (:),&
-                    ZSEA_WATF   (:),ZSEA_PRES   (:),                &
+                    ZSEA_WATF   (:),ZSEA_PRES   (:),ZSEA_CO2    (:),&
                     ZSEAICE_HEAT(:),ZSEAICE_SNET(:),ZSEAICE_EVAP(:) )
 !
 ENDIF
@@ -243,7 +246,8 @@ ENDIF
 !               ----------------------------------
 !
 CALL SFX_OASIS_SEND(ILUOUT,KI,IDATE,GSEND_LAND,GSEND_LAKE,GSEND_SEA,GSEND_WAVE, &
-                    ZLAND_RUNOFF,ZLAND_DRAIN,ZLAND_CALVING,ZLAND_RECHARGE,      &
+                    ZLAND_RUNOFF,ZLAND_DRAIN,ZLAND_CALVING,                     &
+                    ZLAND_SRCFLOOD,ZLAND_DOCFLUX,                               &
                     ZLAKE_EVAP,ZLAKE_RAIN,ZLAKE_SNOW,ZLAKE_WATF,                &
                     ZSEA_FWSU,ZSEA_FWSV,ZSEA_HEAT,ZSEA_SNET,ZSEA_WIND,          &
                     ZSEA_FWSM,ZSEA_EVAP,ZSEA_RAIN,ZSEA_SNOW,                    &
diff --git a/src/SURFEX/modd_sfx_oasis.F90 b/src/SURFEX/modd_sfx_oasis.F90
index beb0ca9f1..11cca6afd 100644
--- a/src/SURFEX/modd_sfx_oasis.F90
+++ b/src/SURFEX/modd_sfx_oasis.F90
@@ -104,6 +104,7 @@ INTEGER             :: NLAKE_WATF_ID ! Freshwater id
 LOGICAL             :: LCPL_SEA     = .FALSE. ! Fields to/from surfex sea/water area
 LOGICAL             :: LCPL_SEAICE  = .FALSE. ! Fields to/from surfex sea-ice area (e.g. GELATO 3D, ...)
 LOGICAL             :: LCPL_SEACARB = .FALSE. ! Fields to/from surfex related to carbon cycle (e.g. PISCES 3D, ...)
+LOGICAL             :: LSEAICE_2FLX  = .FALSE. ! Fields to/from surfex sea-ice area
 !
 ! Sea Output variables
 !
diff --git a/src/SURFEX/modn_sfx_oasis.F90 b/src/SURFEX/modn_sfx_oasis.F90
index 22410116e..85f94d8dd 100644
--- a/src/SURFEX/modn_sfx_oasis.F90
+++ b/src/SURFEX/modn_sfx_oasis.F90
@@ -148,6 +148,11 @@ LOGICAL          :: LWATER = .FALSE.
 !
 LOGICAL          :: LSEAICE_2FLX = .FALSE.
 !
+!
+! Switch to activate sea carbon coupling
+!
+LOGICAL          :: LSEACARB = .FALSE.
+!
 !-------------------------------------------------------------------------------
 !
 !*       1.    NAMELISTS FOR LAND SURFACE FIELD
@@ -175,7 +180,7 @@ NAMELIST/NAM_SFX_SEA_CPL/XTSTEP_CPL_SEA, LWATER, LSEAICE_2FLX,                 &
                           CSEA_WATF,CSEA_PRES,CSEAICE_HEAT,CSEAICE_SNET,       &
                           CSEAICE_EVAP,CSEA_SST,CSEA_UCU,CSEA_VCU,             &
                           CSEAICE_SIT,CSEAICE_CVR,CSEAICE_ALB,                 &
-                          CSEA_CO2,CSEA_FCO2
+                          CSEA_CO2,CSEA_FCO2, LSEACARB !not sure about the name of this namelist
 !
 !*       4.    NAMELISTS FOR WAVE FIELD
 !              ---------------------------------------------------------------
-- 
GitLab