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