Skip to content
Snippets Groups Projects
Commit dc9a15e2 authored by RODIER Quentin's avatar RODIER Quentin
Browse files

Quentin 29/07/2022: Packing mode_turb_ver_thermo_flux + move OCEAN/OCOUPLES 3D...

Quentin 29/07/2022: Packing mode_turb_ver_thermo_flux + move OCEAN/OCOUPLES 3D variables use (XSSTFL) as intent(in),
TODO: LHRAD desactivate : to be transcripted for GPU use later (too much hor. gradient)
parent 78f29a20
No related branches found
No related tags found
No related merge requests found
......@@ -37,6 +37,7 @@ Merge pb:
- KFB ?
Pb identifiés à corriger plus tard:
- LHGRAD non porté sur GPU (mis en commentaire) : trop de gradient horizontaux à traiter et utilisation de XXHAT (domaine carré seulement). A traiter plus tard
- deposition devrait être déplacée dans ice4_tendencies
- avec les optimisations de Ryad, les tableaux 3D de precip passés à ice4_tendencies
lorsque HSUBG_RC_RR_ACCR=='PRFR' ne sont pas utilisables puisque les K1, K2 et K3
......
MODULE MODE_GRADIENT_W_PHY
IMPLICIT NONE
CONTAINS
SUBROUTINE GZ_W_M_PHY(D,PA,PDZZ,PGZ_W_M)
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
! #######################################################
!
!!**** *GZ_W_M* - Cartesian Gradient operator:
!! computes the gradient in the cartesian Z
!! direction for a variable placed at the
!! W point and the result is placed at
!! the mass point.
!! PURPOSE
!! -------
! The purpose of this function is to compute the discrete gradient
! along the Z cartesian direction for a field PA placed at the
! W point. The result is placed at the mass point.
!
!!** METHOD
!! ------
!! The Chain rule of differencing is applied to variables expressed
!! in the Gal-Chen & Somerville coordinates to obtain the gradient in
!! the cartesian system
!!
!! EXTERNAL
!! --------
!! MZF : Shuman functions (mean operators)
!! DZF : Shuman functions (finite difference operators)
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!! NONE
!!
!! REFERENCE
!! ---------
!! Book2 of documentation of Meso-NH (GRAD_CAR operators)
!! A Turbulence scheme for the Meso-NH model (Chapter 6)
!!
!! AUTHOR
!! ------
!! Joan Cuxart *INM and Meteo-France*
!!
!! MODIFICATIONS
!! -------------
!! Original 19/07/94
!-------------------------------------------------------------------------
!
!* 0. DECLARATIONS
!
!
USE SHUMAN_PHY, ONLY: MZF_PHY, DZF_PHY
USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t
!
IMPLICIT NONE
!
!
!* 0.1 declarations of arguments and result
!
TYPE(DIMPHYEX_t), INTENT(IN) :: D
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PA ! variable at the W point
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDZZ ! metric coefficient dzz
REAL, DIMENSION(D%NIT,D%NJT,D%NKT) , INTENT(OUT):: PGZ_W_M ! result mass point
!
REAL, DIMENSION(D%NIT,D%NJT,D%NKT) :: ZWORK1, ZWORK2
INTEGER :: IIB,IJB,IIE,IJE
INTEGER :: JI,JJ,JK
!
!
!* 0.2 declaration of local variables
!
! NONE
!
!----------------------------------------------------------------------------
!
!* 1. DEFINITION of GZ_W_M
! --------------------
!
REAL(KIND=JPRB) :: ZHOOK_HANDLE
IF (LHOOK) CALL DR_HOOK('GZ_W_M',0,ZHOOK_HANDLE)
IIE=D%NIEC
IIB=D%NIBC
IJE=D%NJEC
IJB=D%NJBC
CALL DZF_PHY(D,PA,ZWORK1)
CALL MZF_PHY(D,PDZZ,ZWORK2)
!$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT)
PGZ_W_M(IIB:IIE,IJB:IJE,1:D%NKT)= ZWORK1(IIB:IIE,IJB:IJE,1:D%NKT)/ZWORK2(IIB:IIE,IJB:IJE,1:D%NKT)
!$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:D%NKT)
!
!----------------------------------------------------------------------------
!
IF (LHOOK) CALL DR_HOOK('GZ_W_M',1,ZHOOK_HANDLE)
END SUBROUTINE GZ_W_M_PHY
!
END MODULE MODE_GRADIENT_W_PHY
......@@ -23,7 +23,8 @@ SUBROUTINE TURB_VER(D,CST,CSTURB,TURBN,KRR,KRRL,KRRI, &
PFWTH,PFWR,PFTH2,PFR2,PFTHR,PBL_DEPTH, &
PSBL_DEPTH,PLMO, &
PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS, &
PDP,PTP,PSIGS,PWTH,PWRC,PWSV )
PDP,PTP,PSIGS,PWTH,PWRC,PWSV, &
PSSTFL,PSSTFL_C,PSSRFL_C )
! ###############################################################
!
!
......@@ -351,7 +352,9 @@ REAL, DIMENSION(MERGE(D%NIT,0,OCOMPUTE_SRC),&
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PWTH ! heat flux
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PWRC ! cloud water flux
REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KSV),INTENT(OUT) :: PWSV ! scalar flux
!
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSTFL ! Time evol Flux of T at sea surface (LOCEAN)!
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSTFL_C ! O-A interface flux for theta(LOCEAN and LCOUPLES)
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSRFL_C ! O-A interface flux for vapor (LOCEAN and LCOUPLES)
!
!* 0.2 declaration of local variables
!
......@@ -524,7 +527,8 @@ ENDIF
ZEMOIST, ZREDTH1, ZREDR1, ZPHI3, ZPSI3, ZD, &
PFWTH,PFWR,PFTH2,PFR2,PFTHR, &
MFMOIST,PBL_DEPTH,ZWTHV, &
PRTHLS,PRRS,ZTHLP,ZRP,PTP,PWTH,PWRC )
PRTHLS,PRRS,ZTHLP,ZRP,PTP,PWTH,PWRC, &
PSSTFL, PSSTFL_C, PSSRFL_C )
!
CALL TURB_VER_THERMO_CORR(D,CST,CSTURB, &
KRR,KRRL,KRRI,KSV, &
......
This diff is collapsed.
......@@ -29,7 +29,7 @@ INTERFACE
& PEDR,PLEM,PRTKEMS,PTPMF, &
& PDRUS_TURB,PDRVS_TURB, &
& PDRTHLS_TURB,PDRRTS_TURB,PDRSVS_TURB,PTR,PDISS, &
& PCURRENT_TKE_DISS )
& PCURRENT_TKE_DISS, PSSTFL, PSSTFL_C, PSSRFL_C )
!
USE MODD_BUDGET, ONLY : TBUDGETDATA,TBUDGETCONF_t
USE MODD_IO, ONLY : TFILEDATA
......@@ -174,6 +174,9 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT), OPTIONAL :: PLEM ! Mixing len
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT), OPTIONAL :: PTR ! Transport prod. of TKE
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT), OPTIONAL :: PDISS ! Dissipation of TKE
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(INOUT), OPTIONAL :: PCURRENT_TKE_DISS ! if ODIAG_IN_RUN in mesonh
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSTFL ! Time evol Flux of T at sea surface (LOCEAN)
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSTFL_C ! O-A interface flux for theta(LOCEAN and LCOUPLES)
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSRFL_C ! O-A interface flux for vapor (LOCEAN and LCOUPLES)
!
!-------------------------------------------------------------------------------
!
......
......@@ -26,7 +26,7 @@
& PEDR,PLEM,PRTKEMS,PTPMF, &
& PDRUS_TURB,PDRVS_TURB, &
& PDRTHLS_TURB,PDRRTS_TURB,PDRSVS_TURB,PTR,PDISS, &
& PCURRENT_TKE_DISS )
& PCURRENT_TKE_DISS, PSSTFL, PSSTFL_C, PSSRFL_C )
! #################################################################
!
!
......@@ -423,6 +423,9 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT), OPTIONAL :: PLEM ! Mixing len
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT), OPTIONAL :: PTR ! Transport prod. of TKE
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT), OPTIONAL :: PDISS ! Dissipation of TKE
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(INOUT), OPTIONAL :: PCURRENT_TKE_DISS ! if ODIAG_IN_RUN in mesonh
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSTFL ! Time evol Flux of T at sea surface (LOCEAN)
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSTFL_C ! O-A interface flux for theta(LOCEAN and LCOUPLES)
REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN),OPTIONAL :: PSSRFL_C ! O-A interface flux for vapor (LOCEAN and LCOUPLES)
!
!
!-------------------------------------------------------------------------------
......@@ -972,7 +975,8 @@ CALL TURB_VER(D, CST,CSTURB,TURBN,KRR, KRRL, KRRI, &
ZFWTH,ZFWR,ZFTH2,ZFR2,ZFTHR,PBL_DEPTH, &
PSBL_DEPTH,ZLMO, &
PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS, &
PDP,PTP,PSIGS,PWTH,PWRC,PWSV )
PDP,PTP,PSIGS,PWTH,PWRC,PWSV, &
PSSTFL, PSSTFL_C, PSSRFL_C )
IF( BUCONF%LBUDGET_U ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_U), 'VTURB', PRUS(:, :, :) )
IF( BUCONF%LBUDGET_V ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_V), 'VTURB', PRVS(:, :, :) )
......
......@@ -1554,7 +1554,8 @@ END IF !END DEEP OCEAN CONV CASE
XRUS, XRVS, XRWS, XRTHS, XRRS, XRSVS, XRTKES, XSIGS, XWTHVMF, &
XTHW_FLUX, XRCW_FLUX, XSVW_FLUX,XDYP, XTHP, ZTDIFF, ZTDISS, &
TBUDGETS, KBUDGETS=SIZE(TBUDGETS),PLEM=XLEM,PRTKEMS=XRTKEMS, &
PTR=XTR, PDISS=XDISS, PCURRENT_TKE_DISS=XCURRENT_TKE_DISS )
PTR=XTR, PDISS=XDISS, PCURRENT_TKE_DISS=XCURRENT_TKE_DISS, &
PSSTFL=XSSTFL, PSSTFL_C=XSSTFL_C, PSSRFL_C=XSSRFL_C )
!
DEALLOCATE(ZTDIFF)
DEALLOCATE(ZTDISS)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment