/wrfv2_fire/phys/module_physics_addtendc.F
FORTRAN Legacy | 2022 lines | 1180 code | 394 blank | 448 comment | 100 complexity | 624d41128f439e094353cf29568747e3 MD5 | raw file
Possible License(s): AGPL-1.0
Large files files are truncated, but you can click here to view the full file
- !WRF:MODEL_LAYER: PHYSICS
- !
- ! note: this module really belongs in the dyn_em directory since it is
- ! specific only to the EM core. Leaving here for now, with an
- ! #if ( EM_CORE == 1 ) directive. JM 20031201
- !
- ! This MODULE holds the routines which are used to perform updates of the
- ! model C-grid tendencies with physics A-grid tendencies
- ! The module consolidates code that was (up to v1.2) duplicated in
- ! module_em and module_rk and in
- ! module_big_step_utilities.F and module_big_step_utilities_em.F
- ! This MODULE CONTAINS the following routines:
- ! update_phy_ten, phy_ra_ten, phy_bl_ten, phy_cu_ten, advance_ppt,
- ! add_a2a, add_a2c_u, and add_a2c_v
- MODULE module_physics_addtendc
- #if ( EM_CORE == 1 )
- USE module_state_description
- USE module_configure
- CONTAINS
- SUBROUTINE update_phy_ten(rph_tendf,rt_tendf,ru_tendf,rv_tendf,moist_tendf, &
- scalar_tendf,mu_tendf, &
- RTHRATEN,RTHBLTEN,RTHCUTEN,RTHSHTEN, &
- RUBLTEN,RUCUTEN,RUSHTEN, &
- RVBLTEN,RVCUTEN,RVSHTEN, &
- RQVBLTEN,RQCBLTEN,RQIBLTEN, &
- RQVCUTEN,RQCCUTEN,RQRCUTEN,RQICUTEN,RQSCUTEN, &
- RQVSHTEN,RQCSHTEN,RQRSHTEN,RQISHTEN,RQSSHTEN,RQGSHTEN,&
- RUNDGDTEN,RVNDGDTEN,RTHNDGDTEN,RPHNDGDTEN, &
- RQVNDGDTEN,RMUNDGDTEN, &
- rthfrten,rqvfrten, & !fire
- n_moist,n_scalar,config_flags,rk_step,adv_moist_cond, &
- ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- !-------------------------------------------------------------------
- IMPLICIT NONE
- !-------------------------------------------------------------------
- TYPE(grid_config_rec_type ) , INTENT(IN ) :: config_flags
- INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte, &
- n_moist,n_scalar,rk_step
- LOGICAL , INTENT(IN) :: adv_moist_cond
- REAL , DIMENSION(ims:ime , kms:kme, jms:jme),INTENT(INOUT) :: &
- ru_tendf, &
- rv_tendf, &
- rt_tendf, &
- rph_tendf
- REAL , DIMENSION(ims:ime , jms:jme),INTENT(INOUT) :: mu_tendf
- REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_moist), &
- INTENT(INOUT) :: moist_tendf
- REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_scalar), &
- INTENT(INOUT) :: scalar_tendf
- REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN ) :: &
- RTHRATEN, &
- RTHBLTEN, &
- RTHCUTEN, &
- RTHSHTEN, &
- RUBLTEN, &
- RUCUTEN, &
- RUSHTEN, &
- RVBLTEN, &
- RVCUTEN, &
- RVSHTEN, &
- RQVBLTEN, &
- RQCBLTEN, &
- RQIBLTEN, &
- RQVCUTEN, &
- RQCCUTEN, &
- RQRCUTEN, &
- RQICUTEN, &
- RQSCUTEN, &
- RQVSHTEN, &
- RQCSHTEN, &
- RQRSHTEN, &
- RQISHTEN, &
- RQSSHTEN, &
- RQGSHTEN, &
- RTHNDGDTEN, &
- RPHNDGDTEN, &
- RQVNDGDTEN, &
- RUNDGDTEN, &
- RVNDGDTEN
- REAL, DIMENSION(ims:ime, jms:jme), INTENT(IN ) :: RMUNDGDTEN
- REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN ) :: & ! fire
- rthfrten, &
- rqvfrten
- !------------------------------------------------------------------
- ! set up loop bounds for this grid's boundary conditions
- if (config_flags%ra_lw_physics .gt. 0 .or. &
- config_flags%ra_sw_physics .gt. 0) &
- CALL phy_ra_ten(config_flags,rt_tendf,RTHRATEN, &
- ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (config_flags%bl_pbl_physics .gt. 0) &
- CALL phy_bl_ten(config_flags,rk_step,n_moist,n_scalar, &
- rt_tendf,ru_tendf,rv_tendf,moist_tendf, &
- scalar_tendf,adv_moist_cond, &
- RTHBLTEN,RUBLTEN,RVBLTEN, &
- RQVBLTEN,RQCBLTEN,RQIBLTEN, &
- ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (config_flags%cu_physics .gt. 0) &
- CALL phy_cu_ten(config_flags,rk_step,n_moist,n_scalar, &
- rt_tendf,ru_tendf,rv_tendf, &
- RUCUTEN,RVCUTEN,RTHCUTEN, &
- RQVCUTEN,RQCCUTEN,RQRCUTEN, &
- RQICUTEN,RQSCUTEN,moist_tendf, &
- scalar_tendf,adv_moist_cond, &
- ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (config_flags%shcu_physics .gt. 0) &
- CALL phy_shcu_ten(config_flags,rk_step,n_moist, &
- rt_tendf,ru_tendf,rv_tendf, &
- RUSHTEN,RVSHTEN,RTHSHTEN, &
- RQVSHTEN,RQCSHTEN,RQRSHTEN, &
- RQISHTEN,RQSSHTEN,RQGSHTEN,moist_tendf, &
- ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (config_flags%grid_fdda .gt. 0) &
- CALL phy_fg_ten(config_flags,rk_step,n_moist, &
- rph_tendf,rt_tendf,ru_tendf,rv_tendf, &
- mu_tendf, moist_tendf, &
- RUNDGDTEN,RVNDGDTEN,RTHNDGDTEN, &
- RPHNDGDTEN,RQVNDGDTEN,RMUNDGDTEN, &
- ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (config_flags%ifire .gt. 0) & ! fire
- CALL phy_fr_ten(config_flags,rk_step,n_moist, &
- rt_tendf,ru_tendf,rv_tendf, &
- mu_tendf, moist_tendf, &
- rthfrten,rqvfrten, &
- ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- END SUBROUTINE update_phy_ten
- !=================================================================
- SUBROUTINE phy_ra_ten(config_flags,rt_tendf,RTHRATEN, &
- ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- !-----------------------------------------------------------------
- IMPLICIT NONE
- !-----------------------------------------------------------------
- TYPE(grid_config_rec_type ) , INTENT(IN ) :: config_flags
- INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte
- REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN ) :: &
- RTHRATEN
- REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT) :: &
- rt_tendf
- ! LOCAL VARS
- INTEGER :: i,j,k
- CALL add_a2a(rt_tendf,RTHRATEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- END SUBROUTINE phy_ra_ten
- !=================================================================
- SUBROUTINE phy_bl_ten(config_flags,rk_step,n_moist,n_scalar, &
- rt_tendf,ru_tendf,rv_tendf,moist_tendf, &
- scalar_tendf,adv_moist_cond, &
- RTHBLTEN,RUBLTEN,RVBLTEN, &
- RQVBLTEN,RQCBLTEN,RQIBLTEN, &
- ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- !-----------------------------------------------------------------
- IMPLICIT NONE
- !-----------------------------------------------------------------
- TYPE(grid_config_rec_type) , INTENT(IN ) :: config_flags
- INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte, &
- n_moist, n_scalar, rk_step
- LOGICAL , INTENT(IN) :: adv_moist_cond
- REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_moist), &
- INTENT(INOUT) :: moist_tendf
- REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_scalar), &
- INTENT(INOUT) :: scalar_tendf
- REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN ) :: &
- RTHBLTEN, &
- RUBLTEN, &
- RVBLTEN, &
- RQVBLTEN, &
- RQCBLTEN, &
- RQIBLTEN
- REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT):: &
- rt_tendf, &
- ru_tendf, &
- rv_tendf
- ! LOCAL VARS
- INTEGER :: i,j,k,IBGN,IEND,JBGN,JEND
- !-----------------------------------------------------------------
- SELECT CASE(config_flags%bl_pbl_physics)
- CASE (YSUSCHEME)
- CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QI .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- IF(.not. adv_moist_cond)THEN
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- ENDIF
- CASE (MRFSCHEME)
- CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QI .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- IF(.not. adv_moist_cond)THEN
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- ENDIF
- CASE (ACMPBLSCHEME)
- CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QI .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- IF(.not. adv_moist_cond)THEN
- if (P_QT .ge. PARAM_FIRST_SCALAR)THEN
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- ENDIF
-
- ENDIF
- CASE (MYJPBLSCHEME)
- CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- IF(.not. adv_moist_cond)THEN
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- ! if (P_QT .ge. PARAM_FIRST_SCALAR) &
- ! CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQSBLTEN, &
- ! config_flags, &
- ! ids,ide, jds, jde, kds, kde, &
- ! ims, ime, jms, jme, kms, kme, &
- ! its, ite, jts, jte, kts, kte )
- !
- ! if (P_QT .ge. PARAM_FIRST_SCALAR) &
- ! CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQRBLTEN, &
- ! config_flags, &
- ! ids,ide, jds, jde, kds, kde, &
- ! ims, ime, jms, jme, kms, kme, &
- ! its, ite, jts, jte, kts, kte )
- !
- ! if (P_QT .ge. PARAM_FIRST_SCALAR) &
- ! CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQGBLTEN, &
- ! config_flags, &
- ! ids,ide, jds, jde, kds, kde, &
- ! ims, ime, jms, jme, kms, kme, &
- ! its, ite, jts, jte, kts, kte )
-
- ELSE
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QI .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- ! if (P_QS .ge. PARAM_FIRST_SCALAR) &
- ! CALL add_a2a(moist_tendf(ims,kms,jms,P_QS),RQSBLTEN, &
- ! config_flags, &
- ! ids,ide, jds, jde, kds, kde, &
- ! ims, ime, jms, jme, kms, kme, &
- ! its, ite, jts, jte, kts, kte )
- !
- ! if (P_QR .ge. PARAM_FIRST_SCALAR) &
- ! CALL add_a2a(moist_tendf(ims,kms,jms,P_QR),RQRBLTEN, &
- ! config_flags, &
- ! ids,ide, jds, jde, kds, kde, &
- ! ims, ime, jms, jme, kms, kme, &
- ! its, ite, jts, jte, kts, kte )
- !
- ! if (P_QG .ge. PARAM_FIRST_SCALAR) &
- ! CALL add_a2a(moist_tendf(ims,kms,jms,P_QG),RQGBLTEN, &
- ! config_flags, &
- ! ids,ide, jds, jde, kds, kde, &
- ! ims, ime, jms, jme, kms, kme, &
- ! its, ite, jts, jte, kts, kte )
-
- ENDIF
- CASE (QNSEPBLSCHEME,QNSEPBL09SCHEME)
- CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- IF(.not. adv_moist_cond)THEN
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- ELSE
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- ENDIF
- CASE (GFSSCHEME)
-
- CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QI .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- IF(.not. adv_moist_cond)THEN
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- ENDIF
- CASE (MYNNPBLSCHEME2,MYNNPBLSCHEME3)
- CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- IF(.not. adv_moist_cond)THEN
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- ENDIF
- CASE (BOULACSCHEME)
- CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- IF(.not. adv_moist_cond)THEN
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- ELSE
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- ENDIF
- CASE (CAMUWPBLSCHEME)
- CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- IF(.not. adv_moist_cond)THEN
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- ELSE
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- ENDIF
- CASE (TEMFPBLSCHEME)
- CALL add_a2a(rt_tendf,RTHBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_u(ru_tendf,RUBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CALL add_a2c_v(rv_tendf,RVBLTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
-
- if (P_QI .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQIBLTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CASE DEFAULT
- print*,'phy_bl_ten: The pbl scheme does not exist'
- END SELECT
- END SUBROUTINE phy_bl_ten
- !=================================================================
- SUBROUTINE phy_cu_ten(config_flags,rk_step,n_moist,n_scalar, &
- rt_tendf,ru_tendf,rv_tendf, &
- RUCUTEN,RVCUTEN,RTHCUTEN, &
- RQVCUTEN,RQCCUTEN,RQRCUTEN, &
- RQICUTEN,RQSCUTEN,moist_tendf, &
- scalar_tendf,adv_moist_cond, &
- ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- !-----------------------------------------------------------------
- IMPLICIT NONE
- !-----------------------------------------------------------------
- TYPE(grid_config_rec_type ) , INTENT(IN ) :: config_flags
- INTEGER , INTENT(IN) :: ids, ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte, &
- n_moist, n_scalar, rk_step
- LOGICAL , INTENT(IN) :: adv_moist_cond
- REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_moist), &
- INTENT(INOUT) :: moist_tendf
- REAL , DIMENSION(ims:ime, kms:kme, jms:jme, n_scalar), &
- INTENT(INOUT) :: scalar_tendf
- REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(IN ) :: &
- RUCUTEN, &
- RVCUTEN, &
- RTHCUTEN, &
- RQVCUTEN, &
- RQCCUTEN, &
- RQRCUTEN, &
- RQICUTEN, &
- RQSCUTEN
- REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT) :: &
- rt_tendf, &
- ru_tendf, &
- rv_tendf
- ! LOCAL VARS
- INTEGER :: i,j,k
- SELECT CASE (config_flags%cu_physics)
- CASE (KFSCHEME)
- CALL add_a2a(rt_tendf,RTHCUTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QR .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QR),RQRCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QI .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QI),RQICUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QS .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QS),RQSCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- IF(.not. adv_moist_cond)THEN
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQCCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQRCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQICUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QT .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(scalar_tendf(ims,kms,jms,P_QT),RQSCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- ENDIF
- CASE (BMJSCHEME)
- CALL add_a2a(rt_tendf,RTHCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- CASE (KFETASCHEME)
- CALL add_a2a(rt_tendf,RTHCUTEN,config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QV .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QV),RQVCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- ims, ime, jms, jme, kms, kme, &
- its, ite, jts, jte, kts, kte )
- if (P_QC .ge. PARAM_FIRST_SCALAR) &
- CALL add_a2a(moist_tendf(ims,kms,jms,P_QC),RQCCUTEN, &
- config_flags, &
- ids,ide, jds, jde, kds, kde, &
- …
Large files files are truncated, but you can click here to view the full file