Newer
Older
! ######################
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,&
PTSTEP, PSIGQSAT, &
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
! Condensation
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