From c7d56fb3e119eba4bd7999c08fa05f706c560a66 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Mon, 14 Jun 2021 12:52:20 +0200
Subject: [PATCH] Quentin 14/06/2021: budget on TH for LOCEAN (short wave
 penetrating from atmosphere to the ocean)

---
 src/MNH/ini_budget.f90  |  8 +++++++-
 src/MNH/phys_paramn.f90 | 42 ++++++++++++++++++++---------------------
 2 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90
index e5ed01372..f5d18a90b 100644
--- a/src/MNH/ini_budget.f90
+++ b/src/MNH/ini_budget.f90
@@ -223,7 +223,7 @@ use modd_dim_n,         only: nimax_ll, njmax_ll, nkmax
 use modd_dragbldg_n,    only: ldragbldg
 use modd_dust,          only: ldust
 use modd_dyn,           only: lcorio, xseglen
-use modd_dyn_n,         only: xtstep
+use modd_dyn_n,         only: xtstep, LOCEAN
 use modd_elec_descr,    only: linductive, lrelax2fw_ion
 use modd_field,         only: TYPEREAL
 use modd_nsv,           only: csvnames,                                                                            &
@@ -250,6 +250,7 @@ use modd_param_lima,   only: laero_mass_lima => laero_mass, lacti_lima => lacti,
                              lrain_lima => lrain, lscav_lima => lscav, lsedc_lima => lsedc, lsedi_lima => lsedi,        &
                              lsnow_lima => lsnow, lwarm_lima => lwarm,                                                  &
                              nmod_ccn, nmod_ifn, nmod_imm
+use modd_ref,          only: LCOUPLES
 use modd_salt,         only: lsalt
 use modd_viscosity,    only: lvisc, lvisc_r, lvisc_sv, lvisc_th, lvisc_uvw
 
@@ -1063,6 +1064,11 @@ if ( lbu_rth ) then
   tzsource%lavailable = lvisc .and. lvisc_th
   call Budget_source_add( tbudgets(NBUDGET_TH), tzsource )
 
+  tzsource%cmnhname   = 'OCEAN'
+  tzsource%clongname  = 'radiative tendency due to SW penetrating ocean'
+  tzsource%lavailable = LOCEAN .AND. (.NOT. LCOUPLES)
+  call Budget_source_add( tbudgets(NBUDGET_TH), tzsource )
+
   tzsource%cmnhname   = 'ADV'
   tzsource%clongname  = 'total advection'
   tzsource%lavailable = .true.
diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90
index d99996d8b..cd03bfadb 100644
--- a/src/MNH/phys_paramn.f90
+++ b/src/MNH/phys_paramn.f90
@@ -820,14 +820,14 @@ END IF
 ! 
 IF (LOCEAN .AND. (.NOT.LCOUPLES)) THEN
 !
- ALLOCATE( ZIZOCE(IKU)); ZIZOCE(:)=0. 
- ALLOCATE( ZPROSOL1(IKU))
- ALLOCATE( ZPROSOL2(IKU))
- ALLOCATE(XSSUFL(IIU,IJU))
- ALLOCATE(XSSVFL(IIU,IJU))
- ALLOCATE(XSSTFL(IIU,IJU))
- ALLOCATE(XSSOLA(IIU,IJU))
-! Time interpolation
+  ALLOCATE( ZIZOCE(IKU)); ZIZOCE(:)=0. 
+  ALLOCATE( ZPROSOL1(IKU))
+  ALLOCATE( ZPROSOL2(IKU))
+  ALLOCATE(XSSUFL(IIU,IJU))
+  ALLOCATE(XSSVFL(IIU,IJU))
+  ALLOCATE(XSSTFL(IIU,IJU))
+  ALLOCATE(XSSOLA(IIU,IJU))
+  ! Time interpolation
   JSW     = INT(TDTCUR%xtime/REAL(NINFRT))
   ZSWA    = TDTCUR%xtime/REAL(NINFRT)-REAL(JSW)
   XSSTFL  = (XSSTFL_T(JSW+1)*(1.-ZSWA)+XSSTFL_T(JSW+2)*ZSWA) 
@@ -837,22 +837,22 @@ IF (LOCEAN .AND. (.NOT.LCOUPLES)) THEN
   ZIZOCE(IKU)   = XSSOLA_T(JSW+1)*(1.-ZSWA)+XSSOLA_T(JSW+2)*ZSWA
   ZPROSOL1(IKU) = XROC*ZIZOCE(IKU)
   ZPROSOL2(IKU) = (1.-XROC)*ZIZOCE(IKU)
- IF(NVERB >= 5 ) THEN   
-  WRITE(ILUOUT,*)'ZSWA JSW TDTCUR XTSTEP FT FU FV SolarR(IKU)', NINFRT, ZSWA,JSW,&
+  IF(NVERB >= 5 ) THEN   
+    WRITE(ILUOUT,*)'ZSWA JSW TDTCUR XTSTEP FT FU FV SolarR(IKU)', NINFRT, ZSWA,JSW,&
        TDTCUR%xtime, XTSTEP, XSSTFL(2,2), XSSUFL(2,2),XSSVFL(2,2),ZIZOCE(IKU)
- END IF
+  END IF
+  if ( lbudget_th ) call Budget_store_init( tbudgets(NBUDGET_TH), 'OCEAN', xrths(:, :, :) ) 
   DO JKM=IKU-1,2,-1
-   ZPROSOL1(JKM) = ZPROSOL1(JKM+1)* exp(-XDZZ(2,2,JKM)/XD1)
-   ZPROSOL2(JKM) = ZPROSOL2(JKM+1)* exp(-XDZZ(2,2,JKM)/XD2)
-   ZIZOCE(JKM)   = (ZPROSOL1(JKM+1)-ZPROSOL1(JKM) + ZPROSOL2(JKM+1)-ZPROSOL2(JKM))/XDZZ(2,2,JKM)
-! Adding to tep temp tendency, the solar radiation penetrating in ocean
-  if ( lbudget_th ) call Budget_store_init( tbudgets(NBUDGET_TH), 'OCE', xrths(:, :, :) )
-   XRTHS(:,:,JKM) = XRTHS(:,:,JKM) + XRHODJ(:,:,JKM)*ZIZOCE(JKM)
-  if ( lbudget_th ) call Budget_store_end ( tbudgets(NBUDGET_TH), 'OCE', xrths(:, :, :) )
+    ZPROSOL1(JKM) = ZPROSOL1(JKM+1)* exp(-XDZZ(2,2,JKM)/XD1)
+    ZPROSOL2(JKM) = ZPROSOL2(JKM+1)* exp(-XDZZ(2,2,JKM)/XD2)
+    ZIZOCE(JKM)   = (ZPROSOL1(JKM+1)-ZPROSOL1(JKM) + ZPROSOL2(JKM+1)-ZPROSOL2(JKM))/XDZZ(2,2,JKM)
+    ! Adding to temperature tendency, the solar radiation penetrating in ocean
+    XRTHS(:,:,JKM) = XRTHS(:,:,JKM) + XRHODJ(:,:,JKM)*ZIZOCE(JKM)
   END DO
- DEALLOCATE( ZIZOCE) 
- DEALLOCATE (ZPROSOL1)
- DEALLOCATE (ZPROSOL2)
+  if ( lbudget_th ) call Budget_store_end ( tbudgets(NBUDGET_TH), 'OCEAN', xrths(:, :, :) )
+  DEALLOCATE( ZIZOCE) 
+  DEALLOCATE (ZPROSOL1)
+  DEALLOCATE (ZPROSOL2)
 END IF
 !
 !
-- 
GitLab