Skip to content
Snippets Groups Projects
mode_prandtl.F90 103 KiB
Newer Older
  • Learn to ignore specific revisions
  • !----------------------------------------------------------------------------
    
    FUNCTION D_M3_R2_W2R_O_DDRDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,OUSERV)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
      LOGICAL,                INTENT(IN) :: OUSERV
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: D_M3_R2_W2R_O_DDRDZ
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2R_O_DDRDZ',0,ZHOOK_HANDLE)
    
    D_M3_R2_W2R_O_DDRDZ = D_M3_TH2_W2TH_O_DDTDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,OUSERV)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2R_O_DDRDZ',1,ZHOOK_HANDLE)
    END FUNCTION D_M3_R2_W2R_O_DDRDZ
    !----------------------------------------------------------------------------
    
    FUNCTION M3_R2_WR2(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PSQRT_TKE
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: M3_R2_WR2
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WR2',0,ZHOOK_HANDLE)
    
    M3_R2_WR2 = M3_TH2_WTH2(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WR2',1,ZHOOK_HANDLE)
    END FUNCTION M3_R2_WR2
    !----------------------------------------------------------------------------
    
    FUNCTION D_M3_R2_WR2_O_DDRDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PSQRT_TKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PEMOIST
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: D_M3_R2_WR2_O_DDRDZ
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WR2_O_DDRDZ',0,ZHOOK_HANDLE)
    
    D_M3_R2_WR2_O_DDRDZ = D_M3_TH2_WTH2_O_DDTDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WR2_O_DDRDZ',1,ZHOOK_HANDLE)
    END FUNCTION D_M3_R2_WR2_O_DDRDZ
    !----------------------------------------------------------------------------
    
    FUNCTION M3_R2_W2TH(CSTURB,KKA,KKU,KKL,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PETHETA
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PDRDZ
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: M3_R2_W2TH
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2TH',0,ZHOOK_HANDLE)
    
    M3_R2_W2TH = M3_TH2_W2R(CSTURB,KKA,KKU,KKL,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2TH',1,ZHOOK_HANDLE)
    END FUNCTION M3_R2_W2TH
    !----------------------------------------------------------------------------
    
    FUNCTION D_M3_R2_W2TH_O_DDRDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PETHETA
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PDRDZ
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: D_M3_R2_W2TH_O_DDRDZ
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2TH_O_DDRDZ',0,ZHOOK_HANDLE)
    
    D_M3_R2_W2TH_O_DDRDZ = D_M3_TH2_W2R_O_DDTDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2TH_O_DDRDZ',1,ZHOOK_HANDLE)
    END FUNCTION D_M3_R2_W2TH_O_DDRDZ
    !----------------------------------------------------------------------------
    
    FUNCTION M3_R2_WTH2(CSTURB,KKA,KKU,KKL,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PSQRT_TKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PETHETA
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PDRDZ
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: M3_R2_WTH2
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTH2',0,ZHOOK_HANDLE)
    
    M3_R2_WTH2 = M3_TH2_WR2(CSTURB,KKA,KKU,KKL,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTH2',1,ZHOOK_HANDLE)
    END FUNCTION M3_R2_WTH2
    !----------------------------------------------------------------------------
    
    FUNCTION D_M3_R2_WTH2_O_DDRDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PSQRT_TKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PETHETA
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PDRDZ
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: D_M3_R2_WTH2_O_DDRDZ
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTH2_O_DDRDZ',0,ZHOOK_HANDLE)
    
    D_M3_R2_WTH2_O_DDRDZ = D_M3_TH2_WR2_O_DDTDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTH2_O_DDRDZ',1,ZHOOK_HANDLE)
    END FUNCTION D_M3_R2_WTH2_O_DDRDZ
    !----------------------------------------------------------------------------
    
    FUNCTION M3_R2_WTHR(CSTURB,KKA,KKU,KKL,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PSQRT_TKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PETHETA
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PDRDZ
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: M3_R2_WTHR
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTHR',0,ZHOOK_HANDLE)
    
    M3_R2_WTHR = M3_TH2_WTHR(CSTURB,KKA,KKU,KKL,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTHR',1,ZHOOK_HANDLE)
    END FUNCTION M3_R2_WTHR
    !----------------------------------------------------------------------------
    
    FUNCTION D_M3_R2_WTHR_O_DDRDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PSQRT_TKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PETHETA
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PDRDZ
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: D_M3_R2_WTHR_O_DDRDZ
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTHR_O_DDRDZ',0,ZHOOK_HANDLE)
    
    D_M3_R2_WTHR_O_DDRDZ = D_M3_TH2_WTHR_O_DDTDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTHR_O_DDRDZ',1,ZHOOK_HANDLE)
    END FUNCTION D_M3_R2_WTHR_O_DDRDZ
    !----------------------------------------------------------------------------
    
    FUNCTION D_M3_THR_WTHR_O_DDRDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PSQRT_TKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PEMOIST
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: D_M3_THR_WTHR_O_DDRDZ
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDRDZ',0,ZHOOK_HANDLE)
    
    D_M3_THR_WTHR_O_DDRDZ = D_M3_THR_WTHR_O_DDTDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDRDZ',1,ZHOOK_HANDLE)
    END FUNCTION D_M3_THR_WTHR_O_DDRDZ
    !----------------------------------------------------------------------------
    
    FUNCTION M3_THR_WR2(CSTURB,KKA,KKU,KKL,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PSQRT_TKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PEMOIST
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PDTDZ
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: M3_THR_WR2
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WR2',0,ZHOOK_HANDLE)
    
    M3_THR_WR2 = M3_THR_WTH2(CSTURB,KKA,KKU,KKL,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WR2',1,ZHOOK_HANDLE)
    END FUNCTION M3_THR_WR2
    !----------------------------------------------------------------------------
    
    FUNCTION D_M3_THR_WR2_O_DDRDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PSQRT_TKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PEMOIST
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PDTDZ
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: D_M3_THR_WR2_O_DDRDZ
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDRDZ',0,ZHOOK_HANDLE)
    
    D_M3_THR_WR2_O_DDRDZ = D_M3_THR_WTH2_O_DDTDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDRDZ',1,ZHOOK_HANDLE)
    END FUNCTION D_M3_THR_WR2_O_DDRDZ
    !----------------------------------------------------------------------------
    
    FUNCTION D_M3_THR_WR2_O_DDTDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PSQRT_TKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PEMOIST
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: D_M3_THR_WR2_O_DDTDZ
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDTDZ',0,ZHOOK_HANDLE)
    
    D_M3_THR_WR2_O_DDTDZ = D_M3_THR_WTH2_O_DDRDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDTDZ',1,ZHOOK_HANDLE)
    END FUNCTION D_M3_THR_WR2_O_DDTDZ
    !----------------------------------------------------------------------------
    
    FUNCTION M3_THR_W2R(CSTURB,KKA,KKU,KKL,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PDTDZ
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: M3_THR_W2R
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2R',0,ZHOOK_HANDLE)
    
    M3_THR_W2R = M3_THR_W2TH(CSTURB,KKA,KKU,KKL,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2R',1,ZHOOK_HANDLE)
    END FUNCTION M3_THR_W2R
    !----------------------------------------------------------------------------
    
    FUNCTION D_M3_THR_W2R_O_DDRDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDTDZ,PEMOIST)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PBLL_O_E
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PDTDZ
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PEMOIST
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: D_M3_THR_W2R_O_DDRDZ
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDRDZ',0,ZHOOK_HANDLE)
    
    D_M3_THR_W2R_O_DDRDZ = D_M3_THR_W2TH_O_DDTDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDTDZ,PEMOIST)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDRDZ',1,ZHOOK_HANDLE)
    END FUNCTION D_M3_THR_W2R_O_DDRDZ
    !----------------------------------------------------------------------------
    
    FUNCTION D_M3_THR_W2R_O_DDTDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE)
      TYPE(CSTURB_t),                  INTENT(IN)    :: CSTURB
    
      INTEGER,                INTENT(IN) :: KKA 
      INTEGER,                INTENT(IN) :: KKU  
      INTEGER,                INTENT(IN) :: KKL
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLM
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PLEPS
      REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
      REAL, DIMENSION(SIZE(PD,1),SIZE(PD,2),SIZE(PD,3)) :: D_M3_THR_W2R_O_DDTDZ
    !
    REAL(KIND=JPRB) :: ZHOOK_HANDLE
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDTDZ',0,ZHOOK_HANDLE)
    
    D_M3_THR_W2R_O_DDTDZ = D_M3_THR_W2TH_O_DDRDZ(CSTURB,KKA,KKU,KKL,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE)
    
    !
    IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDTDZ',1,ZHOOK_HANDLE)
    END FUNCTION D_M3_THR_W2R_O_DDTDZ
    !----------------------------------------------------------------------------
    !
    END MODULE MODE_PRANDTL