Skip to content
Snippets Groups Projects
modi_ice_adjust.F90 6.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • !     ######################
          MODULE MODI_ICE_ADJUST
    !     ######################
    !
    INTERFACE
    !
    
          SUBROUTINE ICE_ADJUST (D, CST, ICEP, NEB, BUCONF, KRR,                   &
                                 HFRAC_ICE, HCONDENS, HLAMBDA3,&
    
                                 HBUNAME, OSUBG_COND, OSIGMAS, OCND2, HSUBG_MF_PDF,&
    
                                 PRHODJ, PEXNREF, PRHODREF, PSIGS, LMFCONV, PMFCONV,&
    
                                 PEXN, PCF_MF, PRC_MF, PRI_MF,                     &
    
                                 PRV, PRC, PRVS, PRCS, PTH, PTHS, PSRCS, PCLDFR,   &
                                 PRR, PRI, PRIS, PRS, PRG, PRH,                    &
                                 POUT_RV, POUT_RC, POUT_RI, POUT_TH,               &
                                 PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF,           &
                                 TBUDGETS, KBUDGETS,                               &
                                 PICE_CLD_WGT)
    
    USE MODD_BUDGET,         ONLY: TBUDGETDATA, TBUDGETCONF_t
    USE MODD_CST,            ONLY: CST_t
    USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM_t
    USE MODD_NEB,            ONLY: NEB_t
    USE MODD_DIMPHYEX,       ONLY: DIMPHYEX_t
    
    !*       0.1   Declarations of dummy arguments :
    
    TYPE(DIMPHYEX_t),         INTENT(IN)    :: D
    TYPE(CST_t),              INTENT(IN)    :: CST
    TYPE(RAIN_ICE_PARAM_t),   INTENT(IN)    :: ICEP
    TYPE(NEB_t),              INTENT(IN)    :: NEB
    TYPE(TBUDGETCONF_t),      INTENT(IN)    :: BUCONF
    
    INTEGER,                  INTENT(IN)    :: KRR      ! Number of moist variables
    
    CHARACTER(LEN=1),         INTENT(IN)    :: HFRAC_ICE
    CHARACTER(LEN=80),        INTENT(IN)    :: HCONDENS
    CHARACTER(LEN=4),         INTENT(IN)    :: HLAMBDA3 ! formulation for lambda3 coeff
    CHARACTER(LEN=4),         INTENT(IN)    :: HBUNAME  ! Name of the budget
    LOGICAL,                  INTENT(IN)    :: OSUBG_COND ! Switch for Subgrid
    
    LOGICAL                                 :: OSIGMAS  ! Switch for Sigma_s:
    
                                                        ! use values computed in CONDENSATION
                                                        ! or that from turbulence scheme
    
    LOGICAL                                 :: OCND2    ! logical switch to sparate liquid
    
                                                        ! more rigid (DEFALT value : .FALSE.)
    CHARACTER(LEN=80),        INTENT(IN)    :: HSUBG_MF_PDF
    
    REAL,                     INTENT(IN)   :: PTSTEP    ! Double Time step
                                                        ! (single if cold start)
    
    REAL, DIMENSION(D%NIT,D%NJT),                INTENT(IN)    :: PSIGQSAT  ! coeff applied to qsat variance contribution
    
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    ::  PRHODJ  ! Dry density * Jacobian
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    ::  PEXNREF ! Reference Exner function
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    ::  PRHODREF
    
    REAL, DIMENSION(MERGE(D%NIT,0,OSUBG_COND),&
                    MERGE(D%NJT,0,OSUBG_COND),&
                    MERGE(D%NKT,0,OSUBG_COND)),           INTENT(IN)    ::  PSIGS   ! Sigma_s at time t
    LOGICAL,                                                       INTENT(IN)    ::  LMFCONV ! =SIZE(PMFCONV)!=0
    REAL, DIMENSION(MERGE(D%NIT,0,LMFCONV),&
                    MERGE(D%NJT,0,LMFCONV),&
                    MERGE(D%NKT,0,LMFCONV)),              INTENT(IN)   ::  PMFCONV ! convective mass flux
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    ::  PPABST  ! Absolute Pressure at t
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    ::  PZZ     ! height of model layer
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    ::  PEXN    ! Exner function
    
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    :: PCF_MF! Convective Mass Flux Cloud fraction
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    :: PRC_MF! Convective Mass Flux liquid mixing ratio
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    :: PRI_MF! Convective Mass Flux ice mixing ratio
    
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    ::  PRV     ! Water vapor m.r. to adjust
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    ::  PRC     ! Cloud water m.r. to adjust
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(INOUT) :: PRVS    ! Water vapor m.r. source
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(INOUT) :: PRCS    ! Cloud water m.r. source
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    :: PTH     ! Theta to adjust
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(INOUT) :: PTHS    ! Theta source
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT)   :: PSRCS   ! Second-order flux
                                                                                            ! s'rc'/2Sigma_s2 at time t+1
                                                                                            ! multiplied by Lambda_3
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT)   :: PCLDFR  ! Cloud fraction
    
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(INOUT)::  PRIS ! Cloud ice  m.r. at t+1
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)   ::  PRR  ! Rain water m.r. to adjust
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)   ::  PRI  ! Cloud ice  m.r. to adjust
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)   ::  PRS  ! Aggregate  m.r. to adjust
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)   ::  PRG  ! Graupel    m.r. to adjust
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), OPTIONAL, INTENT(IN)   ::  PRH  ! Hail       m.r. to adjust
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), OPTIONAL, INTENT(OUT)  ::  POUT_RV ! Adjusted value
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), OPTIONAL, INTENT(OUT)  ::  POUT_RC ! Adjusted value
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), OPTIONAL, INTENT(OUT)  ::  POUT_RI ! Adjusted value
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), OPTIONAL, INTENT(OUT)  ::  POUT_TH ! Adjusted value
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), OPTIONAL, INTENT(OUT)  ::  PHLC_HRC
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), OPTIONAL, INTENT(OUT)  ::  PHLC_HCF
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), OPTIONAL, INTENT(OUT)  ::  PHLI_HRI
    REAL, DIMENSION(D%NIT,D%NJT,D%NKT), OPTIONAL, INTENT(OUT)  ::  PHLI_HCF
    TYPE(TBUDGETDATA), DIMENSION(KBUDGETS),                        INTENT(INOUT) :: TBUDGETS
    INTEGER,                                                       INTENT(IN)    :: KBUDGETS
    REAL, DIMENSION(D%NIT,D%NJT),                OPTIONAL, INTENT(IN)   :: PICE_CLD_WGT
    
    
    !
    END SUBROUTINE ICE_ADJUST
    !
    END INTERFACE
    !
    END MODULE MODI_ICE_ADJUST