From e82a55fb85ada50638ea976cc49e66e1cf83d57d Mon Sep 17 00:00:00 2001 From: William Putman Date: Tue, 14 Mar 2023 14:40:32 -0400 Subject: [PATCH 01/43] new BKG GWD tuning dependence on resolution and GF sigma function --- .../GEOSgwd_GridComp/GEOS_GwdGridComp.F90 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/GEOS_GwdGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/GEOS_GwdGridComp.F90 index 0f42a0c7b..afb7b2e82 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/GEOS_GwdGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/GEOS_GwdGridComp.F90 @@ -769,7 +769,7 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) character(len=2) :: dateline integer :: imsize,nn integer :: LM - real :: STRETCH_FACTOR + real :: sigma,STRETCH_FACTOR real, pointer, dimension(:) :: PREF @@ -841,6 +841,7 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) if(dateline.eq.'CF') imsize = imsize*4 call MAPL_GetResource(MAPL,STRETCH_FACTOR,'AGCM.STRETCH_FACTOR:', default=1.0, _RC) imsize = imsize*CEILING(STRETCH_FACTOR) + sigma = 1.0-0.9900*exp(-0.12500*4.e7*0.9/imsize/3000.) ! Modified from Arakawa 2011 sigma used in GF2020 ! Gravity wave drag ! ----------------- @@ -885,9 +886,9 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) ! ----------------- call MAPL_GetResource( MAPL, NCAR_TAU_TOP_ZERO, Label="NCAR_TAU_TOP_ZERO:", default=.true., _RC) call MAPL_GetResource( MAPL, NCAR_PRNDL, Label="NCAR_PRNDL:", default=0.50, _RC) - NCAR_QBO_HDEPTH_SCALING = min( imsize/2880.0 , 1.0 ) + NCAR_QBO_HDEPTH_SCALING = 1.0 - (1.0-0.125)*sigma call MAPL_GetResource( MAPL, NCAR_QBO_HDEPTH_SCALING, Label="NCAR_QBO_HDEPTH_SCALING:", default=NCAR_QBO_HDEPTH_SCALING, _RC) - NCAR_HR_CF = max( 10.0*720.0/imsize , 1.0 ) + NCAR_HR_CF = ceiling(50.0*sigma) call MAPL_GetResource( MAPL, NCAR_HR_CF, Label="NCAR_HR_CF:", default=NCAR_HR_CF, _RC) call gw_common_init( NCAR_TAU_TOP_ZERO , 1 , & From 5ad20d5656b3f813cf0ece5864bd79e5593d1686 Mon Sep 17 00:00:00 2001 From: William Putman Date: Tue, 14 Mar 2023 15:05:55 -0400 Subject: [PATCH 02/43] reverted many tunings for L137 to use JASON_TUNING in UW/TRB plus updated RHCRIT calcs for GFDL --- .../GEOS_GFDL_1M_InterfaceMod.F90 | 72 ++++++++----------- .../GEOS_UW_InterfaceMod.F90 | 16 +++-- .../GEOSmoist_GridComp/Process_Library.F90 | 7 +- .../GEOS_TurbulenceGridComp.F90 | 4 +- 4 files changed, 46 insertions(+), 53 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index 6460a591f..4643b171f 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -42,6 +42,7 @@ module GEOS_GFDL_1M_InterfaceMod character(len=ESMF_MAXSTR) :: COMP_NAME ! Local resource variables + real :: TURNRHCRIT real :: CCW_EVAP_EFF real :: CCI_EVAP_EFF integer :: PDFSHAPE @@ -213,12 +214,6 @@ subroutine GFDL_1M_Initialize (MAPL, RC) real, pointer, dimension(:,:,:) :: Q, QLLS, QLCN, QILS, QICN, QRAIN, QSNOW, QGRAUPEL - character(len=ESMF_MAXSTR) :: GRIDNAME - character(len=4) :: imchar - character(len=2) :: dateline - integer :: nn - real :: tmprhL, tmprhO - call MAPL_GetResource( MAPL, LHYDROSTATIC, Label="HYDROSTATIC:", default=.TRUE., RC=STATUS) VERIFY_(STATUS) call MAPL_GetResource( MAPL, LPHYS_HYDROSTATIC, Label="PHYS_HYDROSTATIC:", default=.TRUE., RC=STATUS) @@ -240,6 +235,7 @@ subroutine GFDL_1M_Initialize (MAPL, RC) call WRITE_PARALLEL ("INITIALIZED GFDL_1M microphysics in non-generic GC INIT") call MAPL_GetResource( MAPL, USE_BERGERON , 'USE_BERGERON:' , DEFAULT=.false., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource( MAPL, TURNRHCRIT , 'TURNRHCRIT:' , DEFAULT= 750.0 , RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, PDFSHAPE , 'PDFSHAPE:' , DEFAULT= 2 , RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, ANV_ICEFALL , 'ANV_ICEFALL:' , DEFAULT= 1.0 , RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, LS_ICEFALL , 'LS_ICEFALL:' , DEFAULT= 1.0 , RC=STATUS); VERIFY_(STATUS) @@ -250,11 +246,11 @@ subroutine GFDL_1M_Initialize (MAPL, RC) call MAPL_GetResource( MAPL, MIN_RL , 'MIN_RL:' , DEFAULT= 2.5e-6, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, MAX_RL , 'MAX_RL:' , DEFAULT=60.0e-6, RC=STATUS); VERIFY_(STATUS) - CCW_EVAP_EFF = 1.e-3 + CCW_EVAP_EFF = 4.e-3 if (do_evap) CCW_EVAP_EFF = 0.0 ! Evap done inside of GFDL call MAPL_GetResource( MAPL, CCW_EVAP_EFF, 'CCW_EVAP_EFF:', DEFAULT= CCW_EVAP_EFF, RC=STATUS); VERIFY_(STATUS) - CCI_EVAP_EFF = 1.e-3 + CCI_EVAP_EFF = 4.e-3 if (do_subl) CCI_EVAP_EFF = 0.0 ! Subl done inside of GFDL call MAPL_GetResource( MAPL, CCI_EVAP_EFF, 'CCI_EVAP_EFF:', DEFAULT= CCI_EVAP_EFF, RC=STATUS); VERIFY_(STATUS) @@ -290,7 +286,6 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, pointer, dimension(:,:,:) :: HL2, HL3, QT2, QT3, W2, W3, HLQT, WQT, WQL, WHL, EDMF_FRC real, pointer, dimension(:,:,:) :: WTHV2 real, pointer, dimension(:,:,:) :: OMEGA - real, pointer, dimension(:,:,:) :: UMST0, VMST0 ! Local real, allocatable, dimension(:,:,:) :: U0, V0 real, allocatable, dimension(:,:,:) :: PLEmb, ZLE0 @@ -301,7 +296,6 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) DQSDTmic, DQGDTmic, DQADTmic, & DUDTmic, DVDTmic, DTDTmic real, allocatable, dimension(:,:,:) :: TMP3D - real, allocatable, dimension(:,:) :: IKEX, IKEX2 real, allocatable, dimension(:,:) :: frland2D real, allocatable, dimension(:,:) :: TMP2D integer, allocatable, dimension(:,:) :: KLCL @@ -325,8 +319,8 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, pointer, dimension(:,: ) :: PTR2D ! Local variables - real :: ALPHAs, ALPHAu, facEIS - real :: turnalpha, ALPHA, RHCRIT + real :: turnrhcritS, turnrhcritU, facEIS + real :: turnrhcrit, minrhcrit, ALPHA, RHCRIT integer :: IM,JM,LM integer :: I, J, L @@ -424,8 +418,6 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) ALLOCATE ( DVDTmic(IM,JM,LM ) ) ALLOCATE ( DTDTmic(IM,JM,LM ) ) ! 2D Variables - ALLOCATE ( IKEX (IM,JM) ) - ALLOCATE ( IKEX2 (IM,JM) ) ALLOCATE ( frland2D (IM,JM) ) ALLOCATE ( KLCL (IM,JM) ) ALLOCATE ( TMP2D (IM,JM) ) @@ -540,13 +532,30 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) do J=1,JM do I=1,IM ! Send the condensates through the pdf after convection - ! based on Quass 2012 https://doi.org/10.1029/2012JD017495 - ALPHAs = dw_land - dw_land *exp(1.0-(PLEmb(i,j,LM)/PLEmb(i,j,l))**2) - ALPHAu = dw_ocean - dw_ocean*exp(1.0-(PLEmb(i,j,LM)/PLEmb(i,j,l))**6) - facEIS = MIN(1.0,EIS(I,J)/10.0)**2 - ALPHA = ALPHAu*(1.0-facEIS) + ALPHAs*facEIS - ! include area scaling and limit RHcrit to > 70% - ALPHA = min( 0.30, ALPHA*SQRT(SQRT(AREA(I,J)/1.e10)) ) + facEIS = MIN(1.0,EIS(I,J)/10.0)**2 + !! determine the stable/unstable turn pressures + !turnrhcritS = PLmb(I, J, NINT(KPBLSC(I,J)))-50. ! 50mb above KHSFC top + !turnrhcritU = MIN( TURNRHCRIT , TURNRHCRIT-(1020-PLEmb(i,j,LM)) ) + !turnrhcrit = turnrhcritU*(1.0-facEIS) + turnrhcritS*facEIS + turnrhcrit = PLmb(I, J, KLCL(I,J)) ! at the LCL + ! determine combined minrhcrit + minrhcrit = (1.0-dw_ocean)*(1.0-facEIS) + (1.0-dw_land)*facEIS + ! Use Slingo-Ritter (1985) formulation for critical relative humidity + RHCRIT = 1.0 + ! lower turn from maxrhcrit=1.0 + if (PLmb(i,j,l) .le. turnrhcrit) then + RHCRIT = minrhcrit + else + if (L.eq.LM) then + RHCRIT = 1.0 + else + RHCRIT = minrhcrit + (1.0-minrhcrit)/(19.) * & + ((atan( (2.*(PLmb(i,j,l)-turnrhcrit)/min(100., PLEmb(i,j,LM)-turnrhcrit)-1.) * & + tan(20.*MAPL_PI/21.-0.5*MAPL_PI) ) + 0.5*MAPL_PI) * 21./MAPL_PI - 1.) + endif + endif + ! include grid cell area scaling and limit RHcrit to > 70% + ALPHA = max(0.0,min(0.30, (1.0-RHCRIT)*SQRT(SQRT(AREA(I,J)/1.e10)))) ! fill RHCRIT export if (associated(RHCRIT3D)) RHCRIT3D(I,J,L) = 1.0-ALPHA ! Put condensates in touch with the PDF @@ -809,7 +818,6 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) call MAPL_GetPointer(EXPORT, PTR3D, 'DQRL', RC=STATUS); VERIFY_(STATUS) if(associated(PTR3D)) PTR3D = DQRDT_macro + DQRDT_micro -#ifdef KEDISS_MICRO ! dissipative heating tendency from KE across the macro/micro physics call MAPL_GetPointer(EXPORT, PTR3D, 'DTDTFRIC', RC=STATUS); VERIFY_(STATUS) if(associated(PTR3D)) then @@ -817,26 +825,6 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) DUDT_macro+DUDT_micro,& DVDT_macro+DVDT_micro,PTR3D) endif -#else - ! Cumulus Friction - call MAPL_GetPointer(EXPORT, UMST0, 'UMST0', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, VMST0, 'VMST0', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) - IKEX = SUM( (0.5/DT_MOIST)*((V**2+U**2) - (VMST0**2+UMST0**2))*MASS , 3 ) - IKEX2 = MAX( SUM( 1.E-04 * MASS , 3 ) , 1.0e-6 ) ! floor at 1e-6 W m-2 - !scaled 3D kinetic energy dissipation - call MAPL_GetPointer(EXPORT, PTR3D, 'KEDISS', RC=STATUS); VERIFY_(STATUS) - if (associated(PTR3D)) then - do L=1,LM - PTR3D(:,:,L) = (IKEX/IKEX2) * 1.E-04 - enddo - end if - call MAPL_GetPointer(EXPORT, PTR3D, 'DTDTFRIC', RC=STATUS); VERIFY_(STATUS) - if(associated(PTR3D)) then - do L=1,LM - PTR3D(:,:,L) = -(1./MAPL_CP)*(IKEX/IKEX2) * 1.E-04 * (PLE(:,:,L)-PLE(:,:,L-1)) - end do - end if -#endif ! Compute DBZ radar reflectivity call MAPL_GetPointer(EXPORT, PTR3D, 'DBZ' , RC=STATUS); VERIFY_(STATUS) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 index 19e8bd4a4..e791d7010 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 @@ -19,7 +19,7 @@ module GEOS_UW_InterfaceMod integer USE_TRACER_TRANSP_UW ! transport tracers in UW real :: SCLM_SHALLOW - logical :: JASON_UW + logical :: JASON_UW, JASON_TUNING private @@ -67,23 +67,29 @@ subroutine UW_Initialize (MAPL, RC) call MAPL_GetResource(MAPL, USE_TRACER_TRANSP_UW, 'USE_TRACER_TRANSP_UW:',default= 1 , RC=STATUS) ; VERIFY_(STATUS) if (LM==72) then call MAPL_GetResource(MAPL, JASON_UW, 'JASON_UW:' ,default= .TRUE. , RC=STATUS) ; VERIFY_(STATUS) + call MAPL_GetResource(MAPL, JASON_TUNING, 'JASON_TUNING:' ,default= .TRUE. , RC=STATUS) ; VERIFY_(STATUS) else call MAPL_GetResource(MAPL, JASON_UW, 'JASON_UW:' ,default= .FALSE., RC=STATUS) ; VERIFY_(STATUS) + call MAPL_GetResource(MAPL, JASON_TUNING, 'JASON_TUNING:' ,default= .TRUE. , RC=STATUS) ; VERIFY_(STATUS) endif if (JASON_UW) then call MAPL_GetResource(MAPL, SHLWPARAMS%WINDSRCAVG, 'WINDSRCAVG:' ,DEFAULT=0, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%MIXSCALE, 'MIXSCALE:' ,DEFAULT=0.0, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%CRIQC, 'CRIQC:' ,DEFAULT=1.0e-3, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%THLSRC_FAC, 'THLSRC_FAC:' ,DEFAULT= 0.0, RC=STATUS) ; VERIFY_(STATUS) - call MAPL_GetResource(MAPL, SHLWPARAMS%FRC_RASN, 'FRC_RASN:' ,DEFAULT= 0.0, RC=STATUS) ; VERIFY_(STATUS) - call MAPL_GetResource(MAPL, SHLWPARAMS%RKM, 'RKM:' ,DEFAULT= 12.0, RC=STATUS) ; VERIFY_(STATUS) - call MAPL_GetResource(MAPL, SHLWPARAMS%RPEN, 'RPEN:' ,DEFAULT= 3.0, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SCLM_SHALLOW, 'SCLM_SHALLOW:' ,DEFAULT= 1.0, RC=STATUS) ; VERIFY_(STATUS) else call MAPL_GetResource(MAPL, SHLWPARAMS%WINDSRCAVG, 'WINDSRCAVG:' ,DEFAULT=1, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%MIXSCALE, 'MIXSCALE:' ,DEFAULT=3000.0, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%CRIQC, 'CRIQC:' ,DEFAULT=0.9e-3, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%THLSRC_FAC, 'THLSRC_FAC:' ,DEFAULT= 2.0, RC=STATUS) ; VERIFY_(STATUS) + endif + if (JASON_TUNING) then + call MAPL_GetResource(MAPL, SHLWPARAMS%FRC_RASN, 'FRC_RASN:' ,DEFAULT= 0.0, RC=STATUS) ; VERIFY_(STATUS) + call MAPL_GetResource(MAPL, SHLWPARAMS%RKM, 'RKM:' ,DEFAULT= 12.0, RC=STATUS) ; VERIFY_(STATUS) + call MAPL_GetResource(MAPL, SHLWPARAMS%RPEN, 'RPEN:' ,DEFAULT= 3.0, RC=STATUS) ; VERIFY_(STATUS) + call MAPL_GetResource(MAPL, SCLM_SHALLOW, 'SCLM_SHALLOW:' ,DEFAULT= 1.0, RC=STATUS) ; VERIFY_(STATUS) + else call MAPL_GetResource(MAPL, SHLWPARAMS%FRC_RASN, 'FRC_RASN:' ,DEFAULT= 0.0, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%RKM, 'RKM:' ,DEFAULT= 8.0, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%RPEN, 'RPEN:' ,DEFAULT= 3.0, RC=STATUS) ; VERIFY_(STATUS) @@ -319,7 +325,7 @@ subroutine UW_Run (GC, IMPORT, EXPORT, CLOCK, RC) MFD_SC = 0.0 end where ! Tiedtke-style cloud fraction !! - if (JASON_UW) then + if (JASON_TUNING) then DQADT_SC= MFD_SC*SCLM_SHALLOW/MASS else DQADT_SC= DCM_SC*SCLM_SHALLOW/MASS diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index c24e7dc20..e7c25cad7 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -32,8 +32,8 @@ module GEOSmoist_Process_Library module procedure ICE_FRACTION_SC end interface ICE_FRACTION ! In anvil/convective clouds - real, parameter :: aT_ICE_ALL = 252.16 - real, parameter :: aT_ICE_MAX = 268.16 + real, parameter :: aT_ICE_ALL = 245.16 + real, parameter :: aT_ICE_MAX = 261.16 real, parameter :: aICEFRPWR = 2.0 ! Over snow/ice SRF_TYPE = 2 real, parameter :: iT_ICE_ALL = 236.16 @@ -52,6 +52,7 @@ module GEOSmoist_Process_Library real, parameter :: EPSILON = MAPL_H2OMW/MAPL_AIRMW real, parameter :: K_COND = 2.4e-2 ! J m**-1 s**-1 K**-1 real, parameter :: DIFFU = 2.2e-5 ! m**2 s**-1 + real, parameter :: taufrz = 450.0 ! LDRADIUS4 ! Liquid based on DOI 10.1088/1748-9326/3/4/045021 real, parameter :: RHO_W = 1000.0 ! Density of liquid water in kg/m^3 @@ -2026,12 +2027,10 @@ subroutine MELTFRZ_SC( DT, CNVFRC, SRFTYPE, TE, QL, QI ) real, intent(in ) :: DT, CNVFRC, SRFTYPE real, intent(inout) :: TE,QL,QI real :: fQi,dQil - real :: taufrz integer :: K ! freeze liquid first if ( TE <= MAPL_TICE ) then fQi = ice_fraction( TE, CNVFRC, SRFTYPE ) - taufrz = 450. dQil = Ql *(1.0 - EXP( -Dt * fQi / taufrz ) ) dQil = max( 0., dQil ) Qi = Qi + dQil diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/GEOS_TurbulenceGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/GEOS_TurbulenceGridComp.F90 index e3563a061..6f47f8bb8 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/GEOS_TurbulenceGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/GEOS_TurbulenceGridComp.F90 @@ -3109,13 +3109,13 @@ subroutine REFRESH(IM,JM,LM,RC) call MAPL_GetPointer(IMPORT,FRLAND, 'FRLAND', RC=STATUS); VERIFY_(STATUS) if (LM .eq. 72) then - call MAPL_GetResource (MAPL, JASON_TUNING, trim(COMP_NAME)//"_JASON_TUNING:", default=.TRUE. , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, JASON_TUNING, "JASON_TUNING:", default=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, HGT_SURFACE, Label="HGT_SURFACE:", DEFAULT= 0.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, PBLHT_OPTION, trim(COMP_NAME)//"_PBLHT_OPTION:", default=4, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, SMTH_HGT, trim(COMP_NAME)//"_SMTH_HGT:", default=0.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, C_B, trim(COMP_NAME)//"_C_B:", default=6.0, RC=STATUS); VERIFY_(STATUS) else - call MAPL_GetResource (MAPL, JASON_TUNING, trim(COMP_NAME)//"_JASON_TUNING:", default=.FALSE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, JASON_TUNING, "JASON_TUNING:", default=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, HGT_SURFACE, Label="HGT_SURFACE:", DEFAULT= 50.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, PBLHT_OPTION, trim(COMP_NAME)//"_PBLHT_OPTION:", default=3, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, SMTH_HGT, trim(COMP_NAME)//"_SMTH_HGT:", default=5000.0, RC=STATUS); VERIFY_(STATUS) From bf5b0af2424e976050d679c4bdf69a29c10dfaf8 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Wed, 15 Mar 2023 12:45:37 -0400 Subject: [PATCH 03/43] Update CI BCs version --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5c3bbd8a7..ae223fe65 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2.1 # Anchors to prevent forgetting to update a version baselibs_version: &baselibs_version v7.7.0 -bcs_version: &bcs_version v10.25.0 +bcs_version: &bcs_version v11.00.0 orbs: ci: geos-esm/circleci-tools@1 From 866c88a9a17a3a9f3c215f8ac89ab3e2f70098be Mon Sep 17 00:00:00 2001 From: William Putman Date: Wed, 15 Mar 2023 23:20:07 -0400 Subject: [PATCH 04/43] anvil liq/ice ratios back to 0-diff BACM and moved some GFDL defaults into code --- .../GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 | 2 +- .../GEOSmoist_GridComp/Process_Library.F90 | 4 ++-- .../GEOSmoist_GridComp/gfdl_cloud_microphys.F90 | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index 4643b171f..626e540f6 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -830,7 +830,7 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) call MAPL_GetPointer(EXPORT, PTR3D, 'DBZ' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, PTR2D, 'DBZ_MAX', RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D) .OR. associated(PTR2D)) then - call CALCDBZ(TMP3D,100*PLmb,T,Q,QRAIN,QSNOW,QGRAUPEL,IM,JM,LM,1,0,0) + call CALCDBZ(TMP3D,100*PLmb,T,Q,QRAIN,QSNOW,QGRAUPEL,IM,JM,LM,1,0,1) if (associated(PTR3D)) PTR3D = TMP3D if (associated(PTR2D)) then PTR2D=-9999.0 diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index e7c25cad7..b75b890f4 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -32,8 +32,8 @@ module GEOSmoist_Process_Library module procedure ICE_FRACTION_SC end interface ICE_FRACTION ! In anvil/convective clouds - real, parameter :: aT_ICE_ALL = 245.16 - real, parameter :: aT_ICE_MAX = 261.16 + real, parameter :: aT_ICE_ALL = 252.16 + real, parameter :: aT_ICE_MAX = 268.16 real, parameter :: aICEFRPWR = 2.0 ! Over snow/ice SRF_TYPE = 2 real, parameter :: iT_ICE_ALL = 236.16 diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index 0e024c94c..60cbdc5a9 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -297,11 +297,11 @@ module gfdl2_cloud_microphys_mod ! upper bounds of fall speed (with variable speed option) - real :: vi_max = 0.5 !< max fall speed for ice - real :: vs_max = 5.0 !< max fall speed for snow - real :: vg_max = 8.0 !< max fall speed for graupel + real :: vi_max = 1.0 !< max fall speed for ice + real :: vs_max = 2.0 !< max fall speed for snow + real :: vg_max = 12. !< max fall speed for graupel real :: vr_max = 12. !< max fall speed for rain - + ! cloud microphysics switchers logical :: fast_sat_adj = .false. !< has fast saturation adjustments From 9c5b6293332682ad91f03af9eabb7166c3c16be4 Mon Sep 17 00:00:00 2001 From: William Putman Date: Fri, 17 Mar 2023 11:56:06 -0400 Subject: [PATCH 05/43] cleaned up JASON tuning flags --- .../GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 index e791d7010..0a4ecd27e 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 @@ -19,7 +19,7 @@ module GEOS_UW_InterfaceMod integer USE_TRACER_TRANSP_UW ! transport tracers in UW real :: SCLM_SHALLOW - logical :: JASON_UW, JASON_TUNING + logical :: JASON_UW private @@ -67,10 +67,8 @@ subroutine UW_Initialize (MAPL, RC) call MAPL_GetResource(MAPL, USE_TRACER_TRANSP_UW, 'USE_TRACER_TRANSP_UW:',default= 1 , RC=STATUS) ; VERIFY_(STATUS) if (LM==72) then call MAPL_GetResource(MAPL, JASON_UW, 'JASON_UW:' ,default= .TRUE. , RC=STATUS) ; VERIFY_(STATUS) - call MAPL_GetResource(MAPL, JASON_TUNING, 'JASON_TUNING:' ,default= .TRUE. , RC=STATUS) ; VERIFY_(STATUS) else call MAPL_GetResource(MAPL, JASON_UW, 'JASON_UW:' ,default= .FALSE., RC=STATUS) ; VERIFY_(STATUS) - call MAPL_GetResource(MAPL, JASON_TUNING, 'JASON_TUNING:' ,default= .TRUE. , RC=STATUS) ; VERIFY_(STATUS) endif if (JASON_UW) then call MAPL_GetResource(MAPL, SHLWPARAMS%WINDSRCAVG, 'WINDSRCAVG:' ,DEFAULT=0, RC=STATUS) ; VERIFY_(STATUS) @@ -84,7 +82,7 @@ subroutine UW_Initialize (MAPL, RC) call MAPL_GetResource(MAPL, SHLWPARAMS%CRIQC, 'CRIQC:' ,DEFAULT=0.9e-3, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%THLSRC_FAC, 'THLSRC_FAC:' ,DEFAULT= 2.0, RC=STATUS) ; VERIFY_(STATUS) endif - if (JASON_TUNING) then + if (JASON_UW) then call MAPL_GetResource(MAPL, SHLWPARAMS%FRC_RASN, 'FRC_RASN:' ,DEFAULT= 0.0, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%RKM, 'RKM:' ,DEFAULT= 12.0, RC=STATUS) ; VERIFY_(STATUS) call MAPL_GetResource(MAPL, SHLWPARAMS%RPEN, 'RPEN:' ,DEFAULT= 3.0, RC=STATUS) ; VERIFY_(STATUS) @@ -325,11 +323,8 @@ subroutine UW_Run (GC, IMPORT, EXPORT, CLOCK, RC) MFD_SC = 0.0 end where ! Tiedtke-style cloud fraction !! - if (JASON_TUNING) then - DQADT_SC= MFD_SC*SCLM_SHALLOW/MASS - else - DQADT_SC= DCM_SC*SCLM_SHALLOW/MASS - endif + DQADT_SC= MFD_SC*SCLM_SHALLOW/MASS + !DQADT_SC= DCM_SC*SCLM_SHALLOW/MASS ! Generally reduces low cloud QA CLCN = CLCN + DQADT_SC*DT_MOIST CLCN = MIN( CLCN , 1.0 ) ! Convert detrained water units before passing to cloud From a8113cbf887a8331b24c70edd47a74e88ab3bcba Mon Sep 17 00:00:00 2001 From: William Putman Date: Fri, 17 Mar 2023 11:56:30 -0400 Subject: [PATCH 06/43] cleaned up JASON tuning flags --- .../GEOS_TurbulenceGridComp.F90 | 53 +++++++------------ 1 file changed, 18 insertions(+), 35 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/GEOS_TurbulenceGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/GEOS_TurbulenceGridComp.F90 index 6f47f8bb8..e7a346ffe 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/GEOS_TurbulenceGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSturbulence_GridComp/GEOS_TurbulenceGridComp.F90 @@ -3067,7 +3067,7 @@ subroutine REFRESH(IM,JM,LM,RC) type (SHOCPARAMS_TYPE) :: SHOCPARAMS type (EDMFPARAMS_TYPE) :: EDMFPARAMS - logical :: JASON_TUNING + logical :: JASON_TRB real(kind=MAPL_R8), dimension(IM,JM,LM) :: AERTOT real, dimension(:,:,:), pointer :: S integer :: NTR, K, LTOP, LMAX @@ -3109,17 +3109,17 @@ subroutine REFRESH(IM,JM,LM,RC) call MAPL_GetPointer(IMPORT,FRLAND, 'FRLAND', RC=STATUS); VERIFY_(STATUS) if (LM .eq. 72) then - call MAPL_GetResource (MAPL, JASON_TUNING, "JASON_TUNING:", default=.TRUE., RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource( MAPL, HGT_SURFACE, Label="HGT_SURFACE:", DEFAULT= 0.0, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, JASON_TRB, "JASON_TRB:", default=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, HGT_SURFACE, "HGT_SURFACE:", default=0.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, PBLHT_OPTION, trim(COMP_NAME)//"_PBLHT_OPTION:", default=4, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, SMTH_HGT, trim(COMP_NAME)//"_SMTH_HGT:", default=0.0, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, C_B, trim(COMP_NAME)//"_C_B:", default=6.0, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, C_B, trim(COMP_NAME)//"_C_B:", default=6.0, RC=STATUS); VERIFY_(STATUS) else - call MAPL_GetResource (MAPL, JASON_TUNING, "JASON_TUNING:", default=.TRUE., RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource( MAPL, HGT_SURFACE, Label="HGT_SURFACE:", DEFAULT= 50.0, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, JASON_TRB, "JASON_TRB:", default=.FALSE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, HGT_SURFACE, "HGT_SURFACE:", default=50.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, PBLHT_OPTION, trim(COMP_NAME)//"_PBLHT_OPTION:", default=3, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, SMTH_HGT, trim(COMP_NAME)//"_SMTH_HGT:", default=5000.0, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, C_B, trim(COMP_NAME)//"_C_B:", default=-1.0, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, C_B, trim(COMP_NAME)//"_C_B:", default=-1.0, RC=STATUS); VERIFY_(STATUS) endif ! Imports for CLASP heterogeneity coupling in EDMF @@ -3133,11 +3133,7 @@ subroutine REFRESH(IM,JM,LM,RC) call MAPL_GetResource (MAPL, LOUIS, trim(COMP_NAME)//"_LOUIS:", default=5.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, ALHFAC, trim(COMP_NAME)//"_ALHFAC:", default=1.2, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, ALMFAC, trim(COMP_NAME)//"_ALMFAC:", default=1.2, RC=STATUS); VERIFY_(STATUS) - if (JASON_TUNING) then - call MAPL_GetResource (MAPL, LAMBDADISS, trim(COMP_NAME)//"_LAMBDADISS:", default=50.0, RC=STATUS); VERIFY_(STATUS) - else - call MAPL_GetResource (MAPL, LAMBDADISS, trim(COMP_NAME)//"_LAMBDADISS:", default=25.0, RC=STATUS); VERIFY_(STATUS) - endif + call MAPL_GetResource (MAPL, LAMBDADISS, trim(COMP_NAME)//"_LAMBDADISS:", default=50.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, LAMBDAM, trim(COMP_NAME)//"_LAMBDAM:", default=160.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, LAMBDAM2, trim(COMP_NAME)//"_LAMBDAM2:", default=1.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, LAMBDAH, trim(COMP_NAME)//"_LAMBDAH:", default=160.0, RC=STATUS); VERIFY_(STATUS) @@ -3151,29 +3147,16 @@ subroutine REFRESH(IM,JM,LM,RC) call MAPL_GetResource (MAPL, LOCK_ON, trim(COMP_NAME)//"_LOCK_ON:", default=1, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, PRANDTLSFC, trim(COMP_NAME)//"_PRANDTLSFC:", default=1.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, PRANDTLRAD, trim(COMP_NAME)//"_PRANDTLRAD:", default=0.75, RC=STATUS); VERIFY_(STATUS) - if (JASON_TUNING) then - call MAPL_GetResource (MAPL, BETA_SURF, trim(COMP_NAME)//"_BETA_SURF:", default=0.25, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, BETA_RAD, trim(COMP_NAME)//"_BETA_RAD:", default=0.20, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, KHRADFAC, trim(COMP_NAME)//"_KHRADFAC:", default=0.85, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, KHSFCFAC_LND, trim(COMP_NAME)//"_KHSFCFAC_LND:", default=0.60, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, KHSFCFAC_OCN, trim(COMP_NAME)//"_KHSFCFAC_OCN:", default=0.30, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, TPFAC_SURF, trim(COMP_NAME)//"_TPFAC_SURF:", default=20.0, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, ENTRATE_SURF, trim(COMP_NAME)//"_ENTRATE_SURF:", default=1.5e-3, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, PCEFF_SURF, trim(COMP_NAME)//"_PCEFF_SURF:", default=0.5, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, VSCALE_SURF, trim(COMP_NAME)//"_VSCALE_SURF:", default=2.5e-3, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, PERTOPT_SURF, trim(COMP_NAME)//"_PERTOPT_SURF:", default=0., RC=STATUS); VERIFY_(STATUS) - else - call MAPL_GetResource (MAPL, BETA_SURF, trim(COMP_NAME)//"_BETA_SURF:", default=0.25, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, BETA_RAD, trim(COMP_NAME)//"_BETA_RAD:", default=0.20, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, KHRADFAC, trim(COMP_NAME)//"_KHRADFAC:", default=0.85, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, KHSFCFAC_LND, trim(COMP_NAME)//"_KHSFCFAC_LND:", default=0.85, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, KHSFCFAC_OCN, trim(COMP_NAME)//"_KHSFCFAC_OCN:", default=0.85, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, TPFAC_SURF, trim(COMP_NAME)//"_TPFAC_SURF:", default=20.0, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, ENTRATE_SURF, trim(COMP_NAME)//"_ENTRATE_SURF:", default=2.0e-3, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, PCEFF_SURF, trim(COMP_NAME)//"_PCEFF_SURF:", default=0.5, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, VSCALE_SURF, trim(COMP_NAME)//"_VSCALE_SURF:", default=2.5e-3, RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource (MAPL, PERTOPT_SURF, trim(COMP_NAME)//"_PERTOPT_SURF:", default=0., RC=STATUS); VERIFY_(STATUS) - endif + call MAPL_GetResource (MAPL, BETA_SURF, trim(COMP_NAME)//"_BETA_SURF:", default=0.25, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, BETA_RAD, trim(COMP_NAME)//"_BETA_RAD:", default=0.20, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, KHRADFAC, trim(COMP_NAME)//"_KHRADFAC:", default=0.85, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, KHSFCFAC_LND, trim(COMP_NAME)//"_KHSFCFAC_LND:", default=0.60, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, KHSFCFAC_OCN, trim(COMP_NAME)//"_KHSFCFAC_OCN:", default=0.30, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, TPFAC_SURF, trim(COMP_NAME)//"_TPFAC_SURF:", default=20.0, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, ENTRATE_SURF, trim(COMP_NAME)//"_ENTRATE_SURF:", default=1.5e-3, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, PCEFF_SURF, trim(COMP_NAME)//"_PCEFF_SURF:", default=0.5, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, VSCALE_SURF, trim(COMP_NAME)//"_VSCALE_SURF:", default=2.5e-3, RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource (MAPL, PERTOPT_SURF, trim(COMP_NAME)//"_PERTOPT_SURF:", default=0., RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, LOUIS_MEMORY, trim(COMP_NAME)//"_LOUIS_MEMORY:", default=-999., RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource (MAPL, DO_SHOC, trim(COMP_NAME)//"_DO_SHOC:", default=0, RC=STATUS); VERIFY_(STATUS) From 5e0f9ebe2e3ce435922f6a870e070414bc2b15a7 Mon Sep 17 00:00:00 2001 From: Nathan Arnold Date: Wed, 22 Mar 2023 14:32:32 -0400 Subject: [PATCH 07/43] First pass at updated CAPE and CIN --- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 53 ++++++- .../GEOSmoist_GridComp/Process_Library.F90 | 143 +++++++++++++++++- 2 files changed, 192 insertions(+), 4 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index 79d937a2d..a67ec9694 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -2282,6 +2282,39 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME='MLCAPE', & + LONG_NAME ='cape_for_mixed_layer_parcel', & + UNITS ='J kg-1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS ) + VERIFY_(STATUS) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME='MLCIN', & + LONG_NAME ='inhibition_for_mixed_layer_parcel', & + UNITS ='J kg-1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS ) + VERIFY_(STATUS) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME='MUCAPE', & + LONG_NAME ='cape_for_most_unstable_parcel', & + UNITS ='J kg-1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS ) + VERIFY_(STATUS) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME='MUCIN', & + LONG_NAME ='inhibition_for_most_unstable_parcel', & + UNITS ='J kg-1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS ) + VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & SHORT_NAME='TVQ0', & LONG_NAME ='Total_Water_Substance_Before', & @@ -2354,6 +2387,14 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & + SHORT_NAME='ZLNB', & + LONG_NAME ='level_of_neutral_buoyancy', & + UNITS ='m' , & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS ) + VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & SHORT_NAME='ZCBL', & LONG_NAME ='height_of_cloud_base_layer', & @@ -5094,7 +5135,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,: ) :: PTYPE, TPREC, CN_PRCP, LS_PRCP, AN_PRCP, SC_PRCP, PLS, PCU real, pointer, dimension(:,: ) :: RAIN, SNOW, ICE, FRZR, PREC_STRAT, PREC_CONV real, pointer, dimension(:,:,:) :: BYNCY - real, pointer, dimension(:,: ) :: CAPE, INHB + real, pointer, dimension(:,: ) :: CAPE, INHB, MLCAPE, MLCIN, MUCAPE, MUCIN, LFC, LNB real, pointer, dimension(:,: ) :: CNV_FRC, SRF_TYPE real, pointer, dimension(:,:,:) :: CFICE, CFLIQ real, pointer, dimension(:,:,: ) :: NWFA @@ -5226,8 +5267,14 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(EXPORT, BYNCY, 'BYNCY' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, CAPE, 'CAPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, INHB, 'INHB' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) - call BUOYANCY( T, Q, QST3, DQST3, DZET, ZL0, BYNCY, CAPE, INHB) - + call MAPL_GetPointer(EXPORT, MLCAPE, 'MLCAPE' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, MLCIN, 'MLCIN' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, MUCAPE, 'MUCAPE' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, MUCIN, 'MUCIN' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, LFC, 'ZLFC' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, LNB, 'ZLNB' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) +! call BUOYANCY( T, Q, QST3, DQST3, DZET, ZL0, BYNCY, CAPE, INHB) + call BUOYANCY2( IM, JM, LM, T, Q, QST3, DQST3, DZET, ZL0, PLmb, PLEmb(:,:,LM), CAPE, MLCAPE, MUCAPE, INHB, MLCIN, MUCIN, BYNCY, LFC, LNB ) CNV_FRC = 0.0 if( CNV_FRACTION_MAX > CNV_FRACTION_MIN ) then WHERE (CAPE .ne. MAPL_UNDEF) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index b75b890f4..760166226 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -91,7 +91,7 @@ module GEOSmoist_Process_Library public :: AeroProps public :: CNV_Tracer_Type, CNV_Tracers, CNV_Tracers_Init - public :: ICE_FRACTION, EVAP3, SUBL3, LDRADIUS4, BUOYANCY, RADCOUPLE, FIX_UP_CLOUDS + public :: ICE_FRACTION, EVAP3, SUBL3, LDRADIUS4, BUOYANCY, BUOYANCY2, RADCOUPLE, FIX_UP_CLOUDS public :: hystpdf, fix_up_clouds_2M public :: FILLQ2ZERO, FILLQ2ZERO1 public :: MELTFRZ @@ -504,6 +504,147 @@ function LDRADIUS4(PL,TE,QC,NNL,NNI,ITYPE) RESULT(RADIUS) end function LDRADIUS4 + + subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAPE, MUCAPE, SBCIN, MLCIN, MUCIN, BYNCY, LFC, LNB ) + + ! Computes surface-based (SB), mixed-layer (ML) and most unstable (MU) versions + ! of CAPE and CIN. + + integer, intent(in) :: IM, JM, LM + real, dimension(:,:,:), intent(in) :: T, Q, QS, DQS, DZ, ZLO, PLO + real, dimension(:,:,:), intent(out) :: BYNCY +! real, dimension(:,:), intent(out) :: SBCAPE, MLCAPE, MUCAPE, SBCIN, MLCIN, MUCIN + real, pointer, dimension(:,:) :: MLCAPE, MUCAPE, MLCIN, MUCIN + real, dimension(:,:) :: SBCAPE, SBCIN, LFC, LNB + real, dimension(:,:), intent(in) :: PS + + real, dimension(IM,JM,LM) :: Tve + real, dimension(IM,JM) :: MSEp, Qp, tmp1, tmp2 + + integer :: I, J, L + + Tve = T*(1.+MAPL_VIREPS*Q) + + ! Mixed-layer calculation. Parcel properties averaged over lowest 100 hPa + if ( associated(MLCAPE) .and. associated(MLCIN) ) then + tmp1 = 0 + MSEp = 0. + do L = LM,1,-1 + where (PS-PLO(:,:,L).lt.100.) + MSEp = MSEp + T(:,:,L) + gravbcp*ZLO(:,:,L) + alhlbcp*Q(:,:,L) + Qp = Qp + Q(:,:,L) + tmp1 = tmp1 + 1 + end where + if (all(PS-PLO(:,:,L).gt.100.)) exit + end do + where (tmp1.gt.0.) + MSEp = MSEp / tmp1 + Qp = Qp / tmp1 + end where + call RETURN_CAPE_CIN( IM, JM, LM, ZLO, DZ, MSEp, Qp, Tve, QS, MLCAPE, MLCIN, BYNCY, LFC, LNB ) + where (MLCAPE.le.0.) + MLCAPE = MAPL_UNDEF + MLCIN = MAPL_UNDEF + end where + + end if + + ! Most unstable calculation. Repeat calculation over lowest 300 hPa + if ( associated(MUCAPE) .and. associated(MUCIN) ) then + MUCAPE = 0. + MUCIN = 0. + BYNCY = MAPL_UNDEF + do L = LM,1,-1 + MSEp = T(:,:,L) + gravbcp*ZLO(:,:,L) + alhlbcp*Q(:,:,L) + Qp = Q(:,:,L) + call RETURN_CAPE_CIN( IM, JM, LM, ZLO(:,:,1:L), DZ(:,:,1:L), MSEp, Qp, Tve(:,:,1:L), QS(:,:,1:L), tmp1, tmp2, BYNCY(:,:,1:L), LFC, LNB ) + where (tmp1 .gt. MUCAPE .and. PS-PLO(:,:,L).lt.300.) + MUCAPE = tmp1 + MUCIN = tmp2 + end where + + if (all(PS-PLO(:,:,L).gt.300.)) exit + end do + where (MUCAPE.le.0.) + MUCAPE = MAPL_UNDEF + MUCIN = MAPL_UNDEF + end where + + end if + + ! Surface-based calculation + MSEp = T(:,:,LM) + gravbcp*ZLO(:,:,LM) + alhlbcp*Q(:,:,LM) ! parcel moist static energy + Qp = Q(:,:,LM) ! parcel specific humidity + call RETURN_CAPE_CIN( IM, JM, LM, ZLO, DZ, MSEp, Qp, Tve, QS, SBCAPE, SBCIN, BYNCY, LFC, LNB ) + where (SBCAPE.le.0.) + SBCAPE = MAPL_UNDEF + SBCIN = MAPL_UNDEF + end where + + end subroutine BUOYANCY2 + + + subroutine RETURN_CAPE_CIN( IM, JM, LM, ZLO, DZ, MSEp, Qp, Tve, Qsate, CAPE, CIN, BYNCY, LFC, LNB ) + + integer, intent(in) :: IM, JM, LM + real, dimension(IM,JM), intent(in) :: MSEp, Qp + real, dimension(IM,JM,LM), intent(in) :: ZLO, DZ, Tve, Qsate + real, dimension(IM,JM), intent(out) :: CAPE, CIN, LFC, LNB + real, dimension(IM,JM,LM), intent(out) :: BYNCY + + integer :: L + real, dimension(IM,JM) :: Qpnew, Tp, Tvp, Buoy + logical, dimension(IM,JM) :: aboveLNB, aboveLFC + + aboveLNB = .false. + aboveLFC = .false. + + Qpnew = Qp + + CAPE = 0. + CIN = 0. + BYNCY = 0. + LFC = MAPL_UNDEF + LNB = MAPL_UNDEF + + do L = LM-1,1,-1 + + Qpnew = MIN( Qpnew, Qsate(:,:,L) ) ! condensation + ! Qc = qp - qpnew. ! not used for pseudoadiabatic ascent + + Tp = MSEp - gravbcp*ZLO(:,:,L) - alhlbcp*Qpnew + + Tvp = Tp*(1.+MAPL_VIREPS*Qpnew) + ! Tvp = Tp*(1.+0.61*Qpnew - Qc) ! condensate loading + + Buoy = MAPL_GRAV*(Tvp-Tve(:,:,L))/Tve(:,:,L) + BYNCY(:,:,L) = Buoy + + where (Buoy.gt.0. .and. .not.aboveLFC) + aboveLFC = .true. + LFC = ZLO(:,:,L) + end where + where (Buoy.lt.0 .and. aboveLFC .and. .not.aboveLNB) + aboveLNB = .true. + LNB = ZLO(:,:,L) + end where + + if ( all(aboveLNB) ) then + exit + end if + + where (.not. aboveLFC .and. Buoy.lt.0.) + CIN = CIN+Buoy*DZ(:,:,L) + end where + + where (aboveLFC .and. .not. aboveLNB .and. Buoy.gt.0.) + CAPE = CAPE + Buoy*DZ(:,:,L) + end where + end do + + end subroutine RETURN_CAPE_CIN + + subroutine BUOYANCY( T, Q, QS, DQS, DZ, ZLO, BUOY, CAPE, INHB) From 8fafc852361dc76472259e3086a2f66ce0b0fef0 Mon Sep 17 00:00:00 2001 From: Nathan Arnold Date: Thu, 23 Mar 2023 09:25:01 -0400 Subject: [PATCH 08/43] Rewrote CAPE/CIN subroutine in column form --- .../GEOSmoist_GridComp/Process_Library.F90 | 115 +++++++++++------- 1 file changed, 73 insertions(+), 42 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index 760166226..a0df1a2f9 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -520,6 +520,7 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP real, dimension(IM,JM,LM) :: Tve real, dimension(IM,JM) :: MSEp, Qp, tmp1, tmp2 + integer, dimension(IM,JM) :: Lev0 integer :: I, J, L @@ -529,6 +530,7 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP if ( associated(MLCAPE) .and. associated(MLCIN) ) then tmp1 = 0 MSEp = 0. + Lev0 = LM do L = LM,1,-1 where (PS-PLO(:,:,L).lt.100.) MSEp = MSEp + T(:,:,L) + gravbcp*ZLO(:,:,L) + alhlbcp*Q(:,:,L) @@ -541,7 +543,13 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP MSEp = MSEp / tmp1 Qp = Qp / tmp1 end where - call RETURN_CAPE_CIN( IM, JM, LM, ZLO, DZ, MSEp, Qp, Tve, QS, MLCAPE, MLCIN, BYNCY, LFC, LNB ) + do I = 1,IM + do J = 1,JM + call RETURN_CAPE_CIN( LM, Lev0(I,J), ZLO(I,J,:), PLO(I,J,:), DZ(I,J,:), MSEp(I,J), & + Qp(I,J), Tve(I,J,:), QS(I,J,:), MLCAPE(I,J), MLCIN(I,J), & + BYNCY(I,J,:), LFC(I,J), LNB(I,J) ) + end do + end do where (MLCAPE.le.0.) MLCAPE = MAPL_UNDEF MLCIN = MAPL_UNDEF @@ -549,22 +557,32 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP end if - ! Most unstable calculation. Repeat calculation over lowest 300 hPa + ! Most unstable calculation. Parcel with maximum MSE in lowest 300 hPa if ( associated(MUCAPE) .and. associated(MUCIN) ) then MUCAPE = 0. MUCIN = 0. BYNCY = MAPL_UNDEF - do L = LM,1,-1 - MSEp = T(:,:,L) + gravbcp*ZLO(:,:,L) + alhlbcp*Q(:,:,L) - Qp = Q(:,:,L) - call RETURN_CAPE_CIN( IM, JM, LM, ZLO(:,:,1:L), DZ(:,:,1:L), MSEp, Qp, Tve(:,:,1:L), QS(:,:,1:L), tmp1, tmp2, BYNCY(:,:,1:L), LFC, LNB ) - where (tmp1 .gt. MUCAPE .and. PS-PLO(:,:,L).lt.300.) - MUCAPE = tmp1 - MUCIN = tmp2 + MSEp = 0. + Qp = 0. + + do L = LM,1,-1 ! Identify largest MSE within 300 hPa of surface + tmp1 = T(:,:,L) + gravbcp*ZLO(:,:,L) + alhlbcp*Q(:,:,L) + where ( tmp1 .ge. MSEp .and. PS-PLO(:,:,L).le.300. ) + MSEp = tmp1 + Qp = Q(:,:,L) + Lev0 = L end where - if (all(PS-PLO(:,:,L).gt.300.)) exit end do + + do I = 1,IM + do J = 1,JM + call RETURN_CAPE_CIN( LM, Lev0(I,J), ZLO(I,J,:), PLO(I,J,:), DZ(I,J,:), MSEp(I,J), & + Qp(I,J), Tve(I,J,:), QS(I,J,:), MUCAPE(I,J), MUCIN(I,J), & + BYNCY(I,J,:), LFC(I,J), LNB(I,J) ) + end do + end do + where (MUCAPE.le.0.) MUCAPE = MAPL_UNDEF MUCIN = MAPL_UNDEF @@ -575,7 +593,14 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP ! Surface-based calculation MSEp = T(:,:,LM) + gravbcp*ZLO(:,:,LM) + alhlbcp*Q(:,:,LM) ! parcel moist static energy Qp = Q(:,:,LM) ! parcel specific humidity - call RETURN_CAPE_CIN( IM, JM, LM, ZLO, DZ, MSEp, Qp, Tve, QS, SBCAPE, SBCIN, BYNCY, LFC, LNB ) + Lev0 = LM + do I = 1,IM + do J = 1,JM + call RETURN_CAPE_CIN( LM, Lev0(I,J), ZLO(I,J,:), PLO(I,J,:), DZ(I,J,:), MSEp(I,J), & + Qp(I,J), Tve(I,J,:), QS(I,J,:), SBCAPE(I,J), SBCIN(I,J), & + BYNCY(I,J,:), LFC(I,J), LNB(I,J) ) + end do + end do where (SBCAPE.le.0.) SBCAPE = MAPL_UNDEF SBCIN = MAPL_UNDEF @@ -584,17 +609,17 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP end subroutine BUOYANCY2 - subroutine RETURN_CAPE_CIN( IM, JM, LM, ZLO, DZ, MSEp, Qp, Tve, Qsate, CAPE, CIN, BYNCY, LFC, LNB ) + subroutine RETURN_CAPE_CIN( LM, OrigLev, ZLO, PLO, DZ, MSEp, Qp, Tve, Qsate, CAPE, CIN, BYNCY, LFC, LNB ) - integer, intent(in) :: IM, JM, LM - real, dimension(IM,JM), intent(in) :: MSEp, Qp - real, dimension(IM,JM,LM), intent(in) :: ZLO, DZ, Tve, Qsate - real, dimension(IM,JM), intent(out) :: CAPE, CIN, LFC, LNB - real, dimension(IM,JM,LM), intent(out) :: BYNCY + integer, intent(in) :: LM, OrigLev + real, intent(in) :: MSEp, Qp + real, dimension(LM), intent(in) :: ZLO, PLO, DZ, Tve, Qsate + real, intent(out) :: CAPE, CIN, LFC, LNB + real, dimension(LM), intent(out) :: BYNCY - integer :: L - real, dimension(IM,JM) :: Qpnew, Tp, Tvp, Buoy - logical, dimension(IM,JM) :: aboveLNB, aboveLFC + integer :: L + real :: Qpnew, Tp, Tvp, Buoy + logical :: aboveLNB, aboveLFC aboveLNB = .false. aboveLFC = .false. @@ -609,37 +634,43 @@ subroutine RETURN_CAPE_CIN( IM, JM, LM, ZLO, DZ, MSEp, Qp, Tve, Qsate, CAPE, CIN do L = LM-1,1,-1 - Qpnew = MIN( Qpnew, Qsate(:,:,L) ) ! condensation - ! Qc = qp - qpnew. ! not used for pseudoadiabatic ascent + Qpnew = MIN( Qpnew, Qsate(L) ) ! use QSATE +! Qpnew = MIN( Qpnew, GEOS_QSAT( Tp, PLO(:,:,L) ) ! calc parcel QSAT + ! Qc = qp - qpnew. ! condensate (not used for pseudoadiabatic ascent) - Tp = MSEp - gravbcp*ZLO(:,:,L) - alhlbcp*Qpnew + Tp = MSEp - gravbcp*ZLO(L) - alhlbcp*Qpnew ! parcel temperature - Tvp = Tp*(1.+MAPL_VIREPS*Qpnew) + Tvp = Tp*(1.+MAPL_VIREPS*Qpnew) ! parcel virtual temp ! Tvp = Tp*(1.+0.61*Qpnew - Qc) ! condensate loading - Buoy = MAPL_GRAV*(Tvp-Tve(:,:,L))/Tve(:,:,L) - BYNCY(:,:,L) = Buoy + Buoy = MAPL_GRAV*(Tvp-Tve(L))/Tve(L) ! parcel buoyancy + BYNCY(L) = Buoy - where (Buoy.gt.0. .and. .not.aboveLFC) - aboveLFC = .true. - LFC = ZLO(:,:,L) - end where - where (Buoy.lt.0 .and. aboveLFC .and. .not.aboveLNB) - aboveLNB = .true. - LNB = ZLO(:,:,L) - end where + if ( Buoy.gt.0. & ! identify when above LFC + .and. .not. aboveLFC ) then + aboveLFC = .true. + LFC = ZLO(L) + end if - if ( all(aboveLNB) ) then - exit + if ( Buoy.lt.0 & ! identify when above LNB + .and. aboveLFC & + .and. .not. aboveLNB) then + aboveLNB = .true. + LNB = ZLO(L) + exit end if - where (.not. aboveLFC .and. Buoy.lt.0.) - CIN = CIN+Buoy*DZ(:,:,L) - end where + if (.not. aboveLFC & ! sum negative Buoy below LFC + .and. Buoy.lt.0. & + .and. L.ge.OrigLev ) then + CIN = CIN + Buoy*DZ(L) + end if - where (aboveLFC .and. .not. aboveLNB .and. Buoy.gt.0.) - CAPE = CAPE + Buoy*DZ(:,:,L) - end where + if ( aboveLFC & ! sum positive Buoy between LFC and LNB + .and. Buoy.gt.0. & + .and. L.ge.OrigLev ) then + CAPE = CAPE + Buoy*DZ(L) + end if end do end subroutine RETURN_CAPE_CIN From 490761e0c8588a36466e5f8e5c155a7e5d69bdbb Mon Sep 17 00:00:00 2001 From: William Putman Date: Sat, 25 Mar 2023 22:22:07 -0400 Subject: [PATCH 09/43] multiple updates for GFDL tunings --- .../GEOSmoist_GridComp/ConvPar_GF2020.F90 | 8 +- .../GEOS_GFDL_1M_InterfaceMod.F90 | 103 +++++++---- .../GEOS_GF_InterfaceMod.F90 | 93 +++++++--- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 84 ++++++--- .../GEOSmoist_GridComp/Process_Library.F90 | 141 ++++++++++++++- .../aer_actv_single_moment.F90 | 14 +- .../gfdl_cloud_microphys.F90 | 168 +++++++++--------- 7 files changed, 417 insertions(+), 194 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 index 170c5713a..d3624ea55 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 @@ -548,8 +548,8 @@ SUBROUTINE GF2020_INTERFACE( mxp,myp,mzp,LONS,LATS,DT_MOIST DO k=1,mzp gsf_t (k,i,j) = 0. gsf_q (k,i,j) = 0. - sgsf_t (k,i,j) = DTDT_BL(i,j,flip(k)) + RADSW(i,j,flip(k)) + RADLW(i,j,flip(k)) - sgsf_q (k,i,j) = DQDT_BL(i,j,flip(k)) + sgsf_t (k,i,j) = 0. !DTDT_BL(i,j,flip(k)) + RADSW(i,j,flip(k)) + RADLW(i,j,flip(k)) + sgsf_q (k,i,j) = 0. !DQDT_BL(i,j,flip(k)) advf_t (k,i,j) = 0. ENDDO ENDDO @@ -9230,8 +9230,8 @@ SUBROUTINE cup_output_ens_3d(name,xff_shal,xff_mid,xf_ens,ierr,dellat,dellaq,del outtem (i,k) = tend2d(k,1) outq (i,k) = tend2d(k,2) outqc (i,k) = tend2d(k,3) - outu (i,k) = tend2d(k,4) - outv (i,k) = tend2d(k,5) + outu (i,k) = tend2d(k,4) + outv (i,k) = tend2d(k,5) ENDDO cycle diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index 626e540f6..cd2d6c343 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -234,11 +234,10 @@ subroutine GFDL_1M_Initialize (MAPL, RC) call gfdl_cloud_microphys_init() call WRITE_PARALLEL ("INITIALIZED GFDL_1M microphysics in non-generic GC INIT") - call MAPL_GetResource( MAPL, USE_BERGERON , 'USE_BERGERON:' , DEFAULT=.false., RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, TURNRHCRIT , 'TURNRHCRIT:' , DEFAULT= 750.0 , RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, PDFSHAPE , 'PDFSHAPE:' , DEFAULT= 2 , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource( MAPL, ANV_ICEFALL , 'ANV_ICEFALL:' , DEFAULT= 1.0 , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource( MAPL, LS_ICEFALL , 'LS_ICEFALL:' , DEFAULT= 1.0 , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource( MAPL, ANV_ICEFALL , 'ANV_ICEFALL:' , DEFAULT= 0.8 , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource( MAPL, LS_ICEFALL , 'LS_ICEFALL:' , DEFAULT= 0.8 , RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, FAC_RI , 'FAC_RI:' , DEFAULT= 1.0 , RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, MIN_RI , 'MIN_RI:' , DEFAULT= 5.e-6, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, MAX_RI , 'MAX_RI:' , DEFAULT=140.e-6, RC=STATUS); VERIFY_(STATUS) @@ -315,6 +314,7 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, pointer, dimension(:,:,:) :: PDF_A, PDFITERS real, pointer, dimension(:,:,:) :: RHCRIT3D real, pointer, dimension(:,:) :: EIS, LTS + real, pointer, dimension(:,:) :: DBZ_MAX, DBZ_1KM, DBZ_TOP, DBZ_M10C real, pointer, dimension(:,:,:) :: PTR3D real, pointer, dimension(:,: ) :: PTR2D @@ -531,16 +531,13 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) do L=1,LM do J=1,JM do I=1,IM - ! Send the condensates through the pdf after convection + ! Send the condensates through the pdf after convection facEIS = MIN(1.0,EIS(I,J)/10.0)**2 - !! determine the stable/unstable turn pressures - !turnrhcritS = PLmb(I, J, NINT(KPBLSC(I,J)))-50. ! 50mb above KHSFC top - !turnrhcritU = MIN( TURNRHCRIT , TURNRHCRIT-(1020-PLEmb(i,j,LM)) ) - !turnrhcrit = turnrhcritU*(1.0-facEIS) + turnrhcritS*facEIS - turnrhcrit = PLmb(I, J, KLCL(I,J)) ! at the LCL - ! determine combined minrhcrit + ! determine the turn pressure using the LCL + turnrhcrit = PLmb(I, J, KLCL(I,J)) - 50.0 ! 50mb above the LCL + ! determine combined minrhcrit in stable/unstable regimes minrhcrit = (1.0-dw_ocean)*(1.0-facEIS) + (1.0-dw_land)*facEIS - ! Use Slingo-Ritter (1985) formulation for critical relative humidity + ! Use Slingo-Ritter (1985) formulation for critical relative humidity RHCRIT = 1.0 ! lower turn from maxrhcrit=1.0 if (PLmb(i,j,l) .le. turnrhcrit) then @@ -557,9 +554,9 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) ! include grid cell area scaling and limit RHcrit to > 70% ALPHA = max(0.0,min(0.30, (1.0-RHCRIT)*SQRT(SQRT(AREA(I,J)/1.e10)))) ! fill RHCRIT export - if (associated(RHCRIT3D)) RHCRIT3D(I,J,L) = 1.0-ALPHA - ! Put condensates in touch with the PDF - if (.not. do_qa) then ! if not doing cloud pdf inside of GFDL-MP + if (associated(RHCRIT3D)) RHCRIT3D(I,J,L) = 1.0-ALPHA + ! Put condensates in touch with the PDF + if (.not. do_qa) then ! if not doing cloud pdf inside of GFDL-MP call hystpdf( & DT_MOIST , & ALPHA , & @@ -595,9 +592,9 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) .false. , & USE_BERGERON) RHX(I,J,L) = Q(I,J,L)/GEOS_QSAT( T(I,J,L), PLmb(I,J,L) ) - endif - ! evaporation for CN - if (CCW_EVAP_EFF > 0.0) then ! else evap done inside GFDL + endif + ! evaporation for CN + if (CCW_EVAP_EFF > 0.0) then ! else evap done inside GFDL RHCRIT = 1.0 EVAPC(I,J,L) = Q(I,J,L) call EVAP3 ( & @@ -614,10 +611,10 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) NACTI(I,J,L) , & QST3(I,J,L) ) EVAPC(I,J,L) = ( Q(I,J,L) - EVAPC(I,J,L) ) / DT_MOIST - endif - ! sublimation for CN - if (CCI_EVAP_EFF > 0.0) then ! else subl done inside GFDL - RHCRIT = 1.0 + endif + ! sublimation for CN + if (CCI_EVAP_EFF > 0.0) then ! else subl done inside GFDL + RHCRIT = 1.0 - ALPHA SUBLC(I,J,L) = Q(I,J,L) call SUBL3 ( & DT_MOIST , & @@ -633,9 +630,7 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) NACTI(I,J,L) , & QST3(I,J,L) ) SUBLC(I,J,L) = ( Q(I,J,L) - SUBLC(I,J,L) ) / DT_MOIST - endif - ! cleanup clouds - call FIX_UP_CLOUDS( Q(I,J,L), T(I,J,L), QLLS(I,J,L), QILS(I,J,L), CLLS(I,J,L), QLCN(I,J,L), QICN(I,J,L), CLCN(I,J,L) ) + endif end do ! IM loop end do ! JM loop end do ! LM loop @@ -827,17 +822,55 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) endif ! Compute DBZ radar reflectivity - call MAPL_GetPointer(EXPORT, PTR3D, 'DBZ' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, PTR2D, 'DBZ_MAX', RC=STATUS); VERIFY_(STATUS) - if (associated(PTR3D) .OR. associated(PTR2D)) then - call CALCDBZ(TMP3D,100*PLmb,T,Q,QRAIN,QSNOW,QGRAUPEL,IM,JM,LM,1,0,1) - if (associated(PTR3D)) PTR3D = TMP3D - if (associated(PTR2D)) then - PTR2D=-9999.0 - DO L=1,LM ; DO J=1,JM ; DO I=1,IM - PTR2D(I,J) = MAX(PTR2D(I,J),TMP3D(I,J,L)) - END DO ; END DO ; END DO - endif + call MAPL_GetPointer(EXPORT, PTR3D , 'DBZ' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, DBZ_MAX , 'DBZ_MAX' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, DBZ_1KM , 'DBZ_1KM' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, DBZ_TOP , 'DBZ_TOP' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, DBZ_M10C, 'DBZ_M10C', RC=STATUS); VERIFY_(STATUS) + + if (associated(PTR3D) .OR. & + associated(DBZ_MAX) .OR. associated(DBZ_1KM) .OR. associated(DBZ_TOP) .OR. associated(DBZ_M10C)) then + + call CALCDBZ(TMP3D,100*PLmb,T,Q,QRAIN,QSNOW,QGRAUPEL,IM,JM,LM,1,0,1) + if (associated(PTR3D)) PTR3D = TMP3D + + if (associated(DBZ_MAX)) then + DBZ_MAX=-9999.0 + DO L=1,LM ; DO J=1,JM ; DO I=1,IM + DBZ_MAX(I,J) = MAX(DBZ_MAX(I,J),TMP3D(I,J,L)) + END DO ; END DO ; END DO + endif + + if (associated(DBZ_1KM)) then + call cs_interpolator(1, IM, 1, JM, LM, TMP3D, 1000., ZLE0, DBZ_1KM, -20.) + endif + + if (associated(DBZ_TOP)) then + DBZ_TOP=MAPL_UNDEF + DO J=1,JM ; DO I=1,IM + DO L=LM,1,-1 + if (ZLE0(i,j,l) >= 25000.) continue + if (TMP3D(i,j,l) >= 18.5 ) then + DBZ_TOP(I,J) = ZLE0(I,J,L) + exit + endif + END DO + END DO ; END DO + endif + + if (associated(DBZ_M10C)) then + DBZ_M10C=MAPL_UNDEF + DO J=1,JM ; DO I=1,IM + DO L=LM,1,-1 + if (ZLE0(i,j,l) >= 25000.) continue + if (T(i,j,l) <= MAPL_TICE-10.0) then + DBZ_M10C(I,J) = TMP3D(I,J,L) + exit + endif + END DO + END DO ; END DO + endif + endif call MAPL_TimerOff(MAPL,"--GFDL_1M",RC=STATUS) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 index a4690bec4..5aec90e9b 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 @@ -76,12 +76,42 @@ subroutine GF_Setup (GC, CF, RC) end subroutine GF_Setup -subroutine GF_Initialize (MAPL, RC) +subroutine GF_Initialize (MAPL, CLOCK, RC) type (MAPL_MetaComp), intent(inout) :: MAPL + type (ESMF_Clock), intent(inout) :: CLOCK ! The clock integer, optional :: RC ! return code integer :: LM + type (ESMF_Alarm ) :: ALARM + type (ESMF_TimeInterval) :: TINT + real(ESMF_KIND_R8) :: DT_R8 + real :: MOIST_DT + real :: GF_DT + + type(ESMF_Calendar) :: calendar + type(ESMF_Time) :: currentTime + type(ESMF_Alarm) :: GF_RunAlarm + type(ESMF_Time) :: ringTime + type(ESMF_TimeInterval) :: ringInterval + integer :: year, month, day, hh, mm, ss + + call MAPL_Get(MAPL, RUNALARM=ALARM, LM=LM, RC=STATUS );VERIFY_(STATUS) + call ESMF_AlarmGet(ALARM, RingInterval=TINT, RC=STATUS); VERIFY_(STATUS) + call ESMF_TimeIntervalGet(TINT, S_R8=DT_R8,RC=STATUS); VERIFY_(STATUS) + MOIST_DT = DT_R8 + call MAPL_GetResource(MAPL, GF_DT, 'GF_DT:', default=MOIST_DT, RC=STATUS); VERIFY_(STATUS) + + call ESMF_ClockGet(CLOCK, calendar=calendar, currTime=currentTime, RC=STATUS); VERIFY_(STATUS) + call ESMF_TimeGet(currentTime, YY=year, MM=month, DD=day, H=hh, M=mm, S=ss, RC=STATUS); VERIFY_(STATUS) + call ESMF_TimeSet(ringTime, YY=year, MM=month, DD=day, H=0, M=0, S=0, RC=STATUS); VERIFY_(STATUS) + call ESMF_TimeIntervalSet(ringInterval, S=nint(GF_DT), calendar=calendar, RC=STATUS); VERIFY_(STATUS) + + GF_RunAlarm = ESMF_AlarmCreate(Clock = CLOCK, & + Name = 'GF_RunAlarm',& + RingInterval = ringInterval, & + RingTime = currentTime, & + Enabled = .true. , & + Sticky = .false. , RC=STATUS); VERIFY_(STATUS) - call MAPL_Get( MAPL, LM=LM, RC=STATUS );VERIFY_(STATUS) if (LM .eq. 72) then call MAPL_GetResource(MAPL, USE_GF2020 , 'USE_GF2020:' ,default= 0, RC=STATUS );VERIFY_(STATUS) else @@ -217,7 +247,7 @@ subroutine GF_Initialize (MAPL, RC) call MAPL_GetResource(MAPL, SCLM_DEEP ,'SCLM_DEEP:' ,default= 1.0 , RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource(MAPL, FIX_CNV_CLOUD ,'FIX_CNV_CLOUD:' ,default= .FALSE., RC=STATUS); VERIFY_(STATUS) ENDIF - + end subroutine GF_Initialize @@ -233,10 +263,11 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) type (MAPL_MetaComp), pointer :: MAPL type (ESMF_Config ) :: CF type (ESMF_State ) :: INTERNAL - type (ESMF_Alarm ) :: ALARM type (ESMF_TimeInterval) :: TINT real(ESMF_KIND_R8) :: DT_R8 - real :: DT_MOIST + real :: GF_DT + type(ESMF_Alarm) :: alarm + logical :: alarm_is_ringing ! Local variables integer :: I, J, L @@ -292,14 +323,23 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, pointer, dimension(:,:,:) :: PTR3D real, pointer, dimension(:,: ) :: PTR2D - call ESMF_GridCompGet( GC, CONFIG=CF, RC=STATUS ) - VERIFY_(STATUS) + call ESMF_ClockGetAlarm(clock, 'GF_RunAlarm', alarm, RC=STATUS); VERIFY_(STATUS) + alarm_is_ringing = ESMF_AlarmIsRinging(alarm, RC=STATUS); VERIFY_(STATUS) + + if (alarm_is_ringing) then + +!!! call WRITE_PARALLEL('GF is Running') + call ESMF_AlarmRingerOff(alarm, RC=STATUS); VERIFY_(STATUS) + call ESMF_AlarmGet(alarm, RingInterval=TINT, RC=STATUS); VERIFY_(STATUS) + call ESMF_TimeIntervalGet(TINT, S_R8=DT_R8,RC=STATUS); VERIFY_(STATUS) + GF_DT = DT_R8 + + call ESMF_GridCompGet( GC, CONFIG=CF, RC=STATUS ); VERIFY_(STATUS) ! Get my internal MAPL_Generic state !----------------------------------- - call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS) - VERIFY_(STATUS) + call MAPL_GetObjectFromGC ( GC, MAPL, RC=STATUS); VERIFY_(STATUS) call MAPL_TimerOn (MAPL,"--GF") @@ -307,7 +347,6 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) !----------------------------------- call MAPL_Get( MAPL, IM=IM, JM=JM, LM=LM, & - RUNALARM = ALARM, & CF = CF, & LONS = LONS, & LATS = LATS, & @@ -315,10 +354,6 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) RC=STATUS ) VERIFY_(STATUS) - call ESMF_AlarmGet(ALARM, RingInterval=TINT, RC=STATUS); VERIFY_(STATUS) - call ESMF_TimeIntervalGet(TINT, S_R8=DT_R8,RC=STATUS); VERIFY_(STATUS) - DT_MOIST = DT_R8 - ! Internals call MAPL_GetPointer(INTERNAL, Q, 'Q' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(INTERNAL, QLLS, 'QLLS' , RC=STATUS); VERIFY_(STATUS) @@ -478,7 +513,7 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) IF (USE_GF2020==1) THEN !- call GF2020 interface routine ! PLE and PL are passed in Pq - call GF2020_Interface( IM,JM,LM,LONS,LATS,DT_MOIST & + call GF2020_Interface( IM,JM,LM,LONS,LATS,GF_DT & ,PLE, PL, ZLE0, ZL0, PK, MASS, OMEGA, KH & ,T, TH, Q, U, V, QLCN, QICN, QLLS, QILS, CNPCPRATE & ,CNV_MF0, CNV_PRC3, CNV_MFD, CNV_DQCDT, ENTLAM & @@ -500,7 +535,7 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) ELSE !- call GF/GEOS5 interface routine ! PLE and PL are passed in Pq - call GF_GEOS5_Interface( IM,JM,LM,LONS,LATS,DT_MOIST & + call GF_GEOS5_Interface( IM,JM,LM,LONS,LATS,GF_DT & ,PLE, PL, ZLE0, ZL0, PK, MASS, OMEGA & ,T, TH, Q, U, V, QLCN, QICN, QLLS, QILS, CNPCPRATE & ,CNV_MF0, CNV_PRC3, CNV_MFD, CNV_DQCDT,ENTLAM & @@ -520,10 +555,10 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) ENDIF ! add tendencies to the moist import state - U = U + DUDT_DC*DT_MOIST - V = V + DVDT_DC*DT_MOIST - Q = Q + DQVDT_DC*DT_MOIST - T = T + DTDT_DC*DT_MOIST + U = U + DUDT_DC*GF_DT + V = V + DVDT_DC*GF_DT + Q = Q + DQVDT_DC*GF_DT + T = T + DTDT_DC*GF_DT TH = T/PK ! update DeepCu QL/QI/CF tendencies fQi = ice_fraction( T, CNV_FRC, SRF_TYPE ) @@ -541,9 +576,9 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) PFL_CN (:,:,L) = PRFIL(:,:,L)*(1.0-fQi(:,:,L)) enddo ! add QI/QL/CL tendencies - QLCN = QLCN + DQLDT_DC*DT_MOIST - QICN = QICN + DQIDT_DC*DT_MOIST - CLCN = MAX(MIN(CLCN + DQADT_DC*DT_MOIST, 1.0), 0.0) + QLCN = QLCN + DQLDT_DC*GF_DT + QICN = QICN + DQIDT_DC*GF_DT + CLCN = MAX(MIN(CLCN + DQADT_DC*GF_DT, 1.0), 0.0) ! Export call MAPL_GetPointer(EXPORT, PTR3D, 'CNV_FICE', RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = fQi @@ -562,12 +597,12 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) ! If still cant make suitable env RH then destroy anvil WHERE ( CLCN < 0.0 ) CLCN = 0. - DQLDT_DC = DQLDT_DC - (QLCN )/DT_MOIST - DQIDT_DC = DQIDT_DC - ( QICN)/DT_MOIST - DQVDT_DC = DQVDT_DC + (QLCN + QICN)/DT_MOIST + DQLDT_DC = DQLDT_DC - (QLCN )/GF_DT + DQIDT_DC = DQIDT_DC - ( QICN)/GF_DT + DQVDT_DC = DQVDT_DC + (QLCN + QICN)/GF_DT Q = Q + (QLCN + QICN) TMP3D = (MAPL_ALHL*QLCN + MAPL_ALHS*QICN)/MAPL_CP - DTDT_DC = DTDT_DC - TMP3D/DT_MOIST + DTDT_DC = DTDT_DC - TMP3D/GF_DT T = T - TMP3D TH = T/PK QLCN = 0. @@ -576,10 +611,12 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) endif call MAPL_GetPointer(EXPORT, PTR3D, 'DQRC', RC=STATUS); VERIFY_(STATUS) - if(associated(PTR3D)) PTR3D = CNV_PRC3 / DT_MOIST + if(associated(PTR3D)) PTR3D = CNV_PRC3 / GF_DT call MAPL_TimerOff (MAPL,"--GF") + endif + end subroutine GF_Run end module GEOS_GF_InterfaceMod diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index 79d937a2d..4dc173969 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -1881,7 +1881,31 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DBZ_MAX', & - LONG_NAME = 'Maximum_simulated_radar_reflectivity', & + LONG_NAME = 'Maximum_composite_radar_reflectivity', & + UNITS = 'dBZ', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS ) + VERIFY_(STATUS) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'DBZ_1KM', & + LONG_NAME = 'Base_1KM_AGL_radar_reflectivity', & + UNITS = 'dBZ', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS ) + VERIFY_(STATUS) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'DBZ_TOP', & + LONG_NAME = 'Echo_top_radar_reflectivity', & + UNITS = 'm', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS ) + VERIFY_(STATUS) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'DBZ_M10C', & + LONG_NAME = 'Minus_10C_radar_reflectivity', & UNITS = 'dBZ', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) @@ -5013,12 +5037,12 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetResource( MAPL, CCN_LND, 'NCCN_LND:', DEFAULT= 300., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 endif - if (adjustl(CONVPAR_OPTION)=="RAS" ) call RAS_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) - if (adjustl(CONVPAR_OPTION)=="GF" ) call GF_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) - if (adjustl(SHALLOW_OPTION)=="UW" ) call UW_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) - if (adjustl(CLDMICR_OPTION)=="BACM_1M") call BACM_1M_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) - if (adjustl(CLDMICR_OPTION)=="GFDL_1M") call GFDL_1M_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) - if (adjustl(CLDMICR_OPTION)=="MGB2_2M") call MGB2_2M_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) + if (adjustl(CONVPAR_OPTION)=="RAS" ) call RAS_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) + if (adjustl(CONVPAR_OPTION)=="GF" ) call GF_Initialize(MAPL, CLOCK, RC=STATUS) ; VERIFY_(STATUS) + if (adjustl(SHALLOW_OPTION)=="UW" ) call UW_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) + if (adjustl(CLDMICR_OPTION)=="BACM_1M") call BACM_1M_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) + if (adjustl(CLDMICR_OPTION)=="GFDL_1M") call GFDL_1M_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) + if (adjustl(CLDMICR_OPTION)=="MGB2_2M") call MGB2_2M_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) ! All done !--------- @@ -5256,7 +5280,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Pressures in Pa call Aer_Activation(IM,JM,LM, Q, T, PLmb*100.0, PLE, ZL0, ZLE0, QLCN, QICN, QLLS, QILS, & SH, EVAP, KPBL, TKE, TMP3D, FRLAND, USE_AERO_BUFFER, & - AeroProps, AERO, NACTL, NACTI, NWFA) + AeroProps, AERO, NACTL, NACTI, NWFA, CCN_LND*1.e6, CCN_OCN*1.e6) else do L=1,LM NACTL(:,:,L) = (CCN_LND*FRLAND + CCN_OCN*(1.0-FRLAND))*1.e6 ! #/m^3 @@ -5297,13 +5321,27 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) END WHERE CFLIQ=MAX(MIN(CFLIQ, 1.0), 0.0) endif + ! Rain-out and Relative Humidity where RH > 110% call MAPL_GetPointer(EXPORT, DTDT_ER, 'DTDT_ER', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, DQVDT_ER, 'DQVDT_ER', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) DTDT_ER = T DQVDT_ER = Q + ! some diagnostics to export - QST3=GEOS_QsatICE (T, PLmb*100.0) + if (.FALSE.) then + QST3 = GEOS_QsatICE (T, PLmb*100.0, DQ=DQST3) + else + DQST3 = GEOS_DQSAT (T, PLmb, QSAT=QST3) ! this qsat function expects hPa... + end if + call MAPL_GetPointer(EXPORT, PTR3D, 'RHICE', RC=STATUS); VERIFY_(STATUS) + if (associated(PTR3D)) then + PTR3D = Q/QST3 + where (T>MAPL_TICE) + PTR3D=0.0 + end where + endif + call MAPL_GetPointer(EXPORT, PTR3D, 'SAT_RAT', RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) then where (CFICE .lt. 0.99 .and. QST3 .gt. 1.0e-20) @@ -5313,36 +5351,30 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) PTR3D = 1.0 end where endif - call MAPL_GetPointer(EXPORT, PTR3D, 'RHICE', RC=STATUS); VERIFY_(STATUS) - if (associated(PTR3D)) then - PTR3D = Q/QST3 - where (T>MAPL_TICE) - PTR3D=0.0 - end where - endif - !if (adjustl(CLDMICR_OPTION)=="MGB2_2M") then - if (.FALSE.) then - QST3 = GEOS_QsatLQU (T, PLmb*100.0, DQ=DQST3) !clean up only with respect to liquid water - call MAPL_GetPointer(EXPORT, PTR3D, 'RHLIQ', RC=STATUS); VERIFY_(STATUS) - else - DQST3 = GEOS_DQSAT (T, PLmb, QSAT=QST3) ! this qsat function expects hPa... - end if - + if (.FALSE.) then + QST3 = GEOS_QsatLQU (T, PLmb*100.0, DQ=DQST3) !clean up only with respect to liquid water + else + DQST3 = GEOS_DQSAT (T, PLmb, QSAT=QST3) ! this qsat function expects hPa... + end if + call MAPL_GetPointer(EXPORT, PTR3D, 'RHLIQ', RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = Q/QST3 + + ! rainout excesive RH + call MAPL_GetPointer(EXPORT, LS_PRCP, 'LS_PRCP' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, PTR2D, 'ER_PRCP' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) where ( Q > 1.1*QST3 ) TMP3D = (Q - 1.1*QST3)/( 1.0 + 1.1*DQST3*MAPL_ALHL/MAPL_CP ) elsewhere TMP3D = 0.0 endwhere - call MAPL_GetPointer(EXPORT, LS_PRCP, 'LS_PRCP' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, PTR2D, 'ER_PRCP' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) PTR2D = SUM(TMP3D*MASS,3)/DT_MOIST LS_PRCP = LS_PRCP + PTR2D Q = Q - TMP3D T = T + (MAPL_ALHL/MAPL_CP)*TMP3D DTDT_ER = (T - DTDT_ER)/DT_MOIST DQVDT_ER = (Q - DQVDT_ER)/DT_MOIST + ! cleanup any negative QV/QC/CF call FILLQ2ZERO(Q, MASS, TMP2D) call MAPL_GetPointer(EXPORT, PTR2D, 'FILLNQV', RC=STATUS); VERIFY_(STATUS) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index b75b890f4..55ee1032d 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -53,7 +53,8 @@ module GEOSmoist_Process_Library real, parameter :: K_COND = 2.4e-2 ! J m**-1 s**-1 K**-1 real, parameter :: DIFFU = 2.2e-5 ! m**2 s**-1 real, parameter :: taufrz = 450.0 - ! LDRADIUS4 + real, parameter :: dQCmax = 1.e-4 + ! LDRADIUS4 ! Liquid based on DOI 10.1088/1748-9326/3/4/045021 real, parameter :: RHO_W = 1000.0 ! Density of liquid water in kg/m^3 real, parameter :: Ldiss = 0.07 ! tunable dispersion effect @@ -96,7 +97,7 @@ module GEOSmoist_Process_Library public :: FILLQ2ZERO, FILLQ2ZERO1 public :: MELTFRZ public :: DIAGNOSE_PRECIP_TYPE - public :: VertInterp + public :: VertInterp, cs_interpolator public :: find_l, FIND_EIS, FIND_KLCL public :: find_cldtop, find_cldbase, gw_prof public :: make_IceNumber, make_DropletNumber @@ -1794,11 +1795,11 @@ subroutine hystpdf( & alhxbcp = (1.0-fQi)*alhlbcp + fQi*alhsbcp if(PDFSHAPE.eq.1) then - QCn = QCp + ( QCn - QCp ) / ( 1. - (CFn * (ALPHA-1.) - (QCn/QSn))*DQS*alhxbcp) + QCn = QCp + (QCn-QCp)/(1.-(CFn*(ALPHA-1.)-(QCn/QSn))*DQS*alhxbcp) elseif(PDFSHAPE.eq.2 .or. PDFSHAPE.eq.5) then ! This next line needs correcting - need proper d(del qc)/dT derivative for triangular - ! for now, just use relaxation of 1/2. - QCn = QCp + 0.5 * ( QCn - QCp ) + ! for now, just use relaxation of 1/2 of top-hat. + QCn = QCp + 0.5*(QCn-QCp)/(1.-(CFn*(ALPHA-1.)-(QCn/QSn))*DQS*alhxbcp) endif if ( CLCN > 0. ) then @@ -2983,5 +2984,135 @@ subroutine FIX_NEGATIVE_PRECIP(QRAIN, QSNOW, QGRAUPEL) end subroutine FIX_NEGATIVE_PRECIP + subroutine cs_interpolator(is, ie, js, je, km, qin, zout, wz, qout, qmin) + integer, intent(in):: is, ie, js, je, km + real, intent(in):: zout, qmin + real, intent(in):: qin(is:ie,js:je,km) + real, intent(in):: wz(is:ie,js:je,km+1) + real, intent(out):: qout(is:ie,js:je) +! local: + real:: qe(is:ie,km+1) + real, dimension(is:ie,km):: q2, dz + real:: s0, a6 + integer:: i,j,k + +!$OMP parallel do default(none) shared(qmin,is,ie,js,je,km,zout,qin,qout,wz) & +!$OMP private(s0,a6,q2,dz,qe) + do j=js,je + + do i=is,ie + do k=1,km + dz(i,k) = wz(i,j,k) - wz(i,j,k+1) + q2(i,k) = qin(i,j,k) + enddo + enddo + + call cs_prof(q2, dz, qe, km, is, ie, 1) + + do i=is,ie + if( zout >= wz(i,j,1) ) then +! Higher than the top: + qout(i,j) = qe(i,1) + elseif ( zout <= wz(i,j,km+1) ) then + qout(i,j) = qe(i,km+1) + else + do k=1,km + if ( zout<=wz(i,j,k) .and. zout >= wz(i,j,k+1) ) then +! PPM distribution: f(s) = AL + s*[(AR-AL) + A6*(1-s)] ( 0 <= s <= 1 ) + a6 = 3.*(2.*q2(i,k) - (qe(i,k)+qe(i,k+1))) + s0 = (wz(i,j,k)-zout) / dz(i,k) + qout(i,j) = qe(i,k) + s0*(qe(i,k+1)-qe(i,k)+a6*(1.-s0)) + go to 500 + endif + enddo + endif +500 qout(i,j) = max(qmin, qout(i,j)) + enddo + enddo + +! Send_data here + + end subroutine cs_interpolator + + subroutine cs_prof(q2, delp, q, km, i1, i2, iv) +! Latest: Dec 2015 S.-J. Lin, NOAA/GFDL + integer, intent(in):: i1, i2, km + integer, intent(in):: iv + real, intent(in) :: q2(i1:i2,km) + real, intent(in) :: delp(i1:i2,km) ! layer pressure thickness + real, intent(out):: q(i1:i2,km+1) +!----------------------------------------------------------------------- + real gam(i1:i2,km) + real d4(i1:i2) + real bet, a_bot, grat + integer i, k + + do i=i1,i2 + grat = delp(i,2) / delp(i,1) ! grid ratio + bet = grat*(grat+0.5) + q(i,1) = ( (grat+grat)*(grat+1.)*q2(i,1) + q2(i,2) ) / bet + gam(i,1) = ( 1. + grat*(grat+1.5) ) / bet + enddo + + do k=2,km + do i=i1,i2 + d4(i) = delp(i,k-1) / delp(i,k) + bet = 2. + d4(i) + d4(i) - gam(i,k-1) + q(i,k) = ( 3.*(q2(i,k-1)+d4(i)*q2(i,k)) - q(i,k-1) )/bet + gam(i,k) = d4(i) / bet + enddo + enddo + + do i=i1,i2 + a_bot = 1. + d4(i)*(d4(i)+1.5) + q(i,km+1) = (2.*d4(i)*(d4(i)+1.)*q2(i,km)+q2(i,km-1)-a_bot*q(i,km)) & + / ( d4(i)*(d4(i)+0.5) - a_bot*gam(i,km) ) + enddo + + do k=km,1,-1 + do i=i1,i2 + q(i,k) = q(i,k) - gam(i,k)*q(i,k+1) + enddo + enddo + +! Apply *large-scale* constraints + do i=i1,i2 + q(i,2) = min( q(i,2), max(q2(i,1), q2(i,2)) ) + q(i,2) = max( q(i,2), min(q2(i,1), q2(i,2)) ) + enddo + + do k=2,km + do i=i1,i2 + gam(i,k) = q2(i,k) - q2(i,k-1) + enddo + enddo + +! Interior: + do k=3,km-1 + do i=i1,i2 + if ( gam(i,k-1)*gam(i,k+1)>0. ) then +! Apply large-scale constraint to ALL fields if not local max/min + q(i,k) = min( q(i,k), max(q2(i,k-1),q2(i,k)) ) + q(i,k) = max( q(i,k), min(q2(i,k-1),q2(i,k)) ) + else + if ( gam(i,k-1) > 0. ) then +! There exists a local max + q(i,k) = max(q(i,k), min(q2(i,k-1),q2(i,k))) + else +! There exists a local min + q(i,k) = min(q(i,k), max(q2(i,k-1),q2(i,k))) + if ( iv==0 ) q(i,k) = max(0., q(i,k)) + endif + endif + enddo + enddo + +! Bottom: + do i=i1,i2 + q(i,km) = min( q(i,km), max(q2(i,km-1), q2(i,km)) ) + q(i,km) = max( q(i,km), min(q2(i,km-1), q2(i,km)) ) + enddo + + end subroutine cs_prof end module GEOSmoist_Process_Library diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/aer_actv_single_moment.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/aer_actv_single_moment.F90 index 3880a924b..2fbe3b778 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/aer_actv_single_moment.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/aer_actv_single_moment.F90 @@ -27,9 +27,7 @@ MODULE Aer_Actv_Single_Moment real(AER_PR), parameter :: deltai = 2.809e+3 real(AER_PR), parameter :: densic = 917.0 !Ice crystal density in kgm-3 - real, parameter :: NN_LAND = 150.0e6 - real, parameter :: NN_OCEAN = 30.0e6 - real, parameter :: NN_MIN = 30.0e6 + real, parameter :: NN_MIN = 100.0e6 real, parameter :: NN_MAX = 1000.0e6 LOGICAL :: USE_BERGERON, USE_AEROSOL_NN @@ -40,7 +38,7 @@ MODULE Aer_Actv_Single_Moment SUBROUTINE Aer_Activation(IM,JM,LM, q, t, plo, ple, zlo, zle, qlcn, qicn, qlls, qils, & sh, evap, kpbl, tke, vvel, FRLAND, USE_AERO_BUFFER, & - AeroProps, aero_aci, NACTL, NACTI, NWFA) + AeroProps, aero_aci, NACTL, NACTI, NWFA, NN_LAND, NN_OCEAN) IMPLICIT NONE integer, intent(in)::IM,JM,LM TYPE(AerProps), dimension (IM,JM,LM),intent(inout) :: AeroProps @@ -50,7 +48,8 @@ SUBROUTINE Aer_Activation(IM,JM,LM, q, t, plo, ple, zlo, zle, qlcn, qicn, qlls, real, dimension (IM,JM,LM) ,intent(in ) :: q,t,tke,vvel,zlo, qlcn, qicn, qlls, qils real, dimension (IM,JM,0:LM),intent(in ) :: zle real, dimension (IM,JM) ,intent(in ) :: FRLAND - real, dimension (IM,JM) ,intent(in ) :: sh, evap, kpbl + real, dimension (IM,JM) ,intent(in ) :: sh, evap, kpbl + real ,intent(in ) :: NN_LAND, NN_OCEAN logical ,intent(in ) :: USE_AERO_BUFFER @@ -244,10 +243,9 @@ SUBROUTINE Aer_Activation(IM,JM,LM, q, t, plo, ple, zlo, zle, qlcn, qicn, qlls, air_den = press*28.8e-3/8.31/tk ! kg/m3 ENDDO;ENDDO - NACTL = NN_MIN - NACTI = NN_MIN - DO k=LM,1,-1 + NACTL(:,:,k) = NN_LAND*FRLAND + NN_OCEAN*(1.0-FRLAND) + NACTI(:,:,k) = NN_LAND*FRLAND + NN_OCEAN*(1.0-FRLAND) DO j=1,JM DO i=1,IM diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index 60cbdc5a9..a5df1f406 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -149,11 +149,11 @@ module gfdl2_cloud_microphys_mod integer :: irain_f = 0 !< cloud water to rain auto conversion scheme logical :: de_ice = .false. !< to prevent excessive build - up of cloud ice from external sources - logical :: sedi_transport = .true. !< transport of momentum in sedimentation + logical :: sedi_transport = .false. !< transport of momentum in sedimentation logical :: do_sedi_w = .false. !< transport of vertical motion in sedimentation - logical :: do_sedi_heat = .true. !< transport of heat in sedimentation + logical :: do_sedi_heat = .false. !< transport of heat in sedimentation logical :: prog_ccn = .false. !< do prognostic ccn (yi ming's method) - logical :: do_bigg = .true. !< do bigg mechanism freezing of supercooled liquid on aerosol nuclei + logical :: do_bigg = .false. !< do bigg mechanism freezing of supercooled liquid on aerosol nuclei logical :: do_evap = .false. !< do evaporation logical :: do_subl = .false. !< do sublimation logical :: do_qa = .false. !< do inline cloud fraction (WMP: in FV3 dynamics) @@ -690,7 +690,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & real :: cpaut, rh_adj, rh_rain real :: r1, s1, i1, g1, rdt, ccn0 - real :: dt_rain, dts + real :: dt5, dts real :: s_leng, t_land, t_ocean, h_var real :: cvm, tmp, omq real :: dqi, qio, qin @@ -698,7 +698,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & integer :: i, k, n dts = dt_in / real (ntimes) - dt_rain = dts * 0.5 + dt5 = dts * 0.5 rdt = 1. / dt_in ! ----------------------------------------------------------------------- @@ -881,7 +881,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & ! time - split warm rain processes: 1st pass ! ----------------------------------------------------------------------- - call warm_rain (dt_rain, ktop, kbot, dp1, dz1, tz, qvz, qlz, qrz, qiz, qsz, & + call warm_rain (dt5, ktop, kbot, dp1, dz1, tz, qvz, qlz, qrz, qiz, qsz, & qgz, qaz, qlcnz, qicnz, clcnz, eis(i), den, denfac, ccn, c_praut, vtrz, & r1, evap1, m1_rain, w1, h_var1d) @@ -920,7 +920,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & ! time - split warm rain processes: 2nd pass ! ----------------------------------------------------------------------- - call warm_rain (dt_rain, ktop, kbot, dp1, dz1, tz, qvz, qlz, qrz, qiz, qsz, & + call warm_rain (dt5, ktop, kbot, dp1, dz1, tz, qvz, qlz, qrz, qiz, qsz, & qgz, qaz, qlcnz, qicnz, clcnz, eis(i), den, denfac, ccn, c_praut, vtrz, & r1, evap1, m1_rain, w1, h_var1d) @@ -1200,7 +1200,7 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & if (use_ppm) then zt (ktop) = ze (ktop) do k = ktop + 1, kbot - zt (k) = ze (k) - dt5 * (vtr (k - 1) + vtr (k)) + zt (k) = ze (k) - dt * (vtr (k - 1) + vtr (k))/2.0 enddo zt (kbot + 1) = zs - dt * vtr (kbot) @@ -1541,16 +1541,13 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & real :: pracs, psacw, pgacw, psacr, pgacr, pgaci, praci, psaci real :: pgmlt, psmlt, pgfr, pgaut, psaut, pgsub real :: tc, tsq, dqs0, qden, qim, qsm - real :: dt5, factor, sink, qi_crt + real :: factor, sink, qi_crt real :: tmp, qsw, qsi, dqsdt, dq real :: dtmp, qc, q_plus, q_minus integer :: k, it - dt5 = 0.5 * dts - rdts = 1. / dts - ! ----------------------------------------------------------------------- ! define conversion scalar / factor @@ -1559,8 +1556,8 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & fac_i2s = 1. - exp (- dts / tau_i2s) fac_g2v = 1. - exp (- dts / tau_g2v) - fac_imlt = 1. - exp (- dt5 / tau_imlt) - fac_frz = 1. - exp (- dt5 / tau_frz) + fac_imlt = 1. - exp (- dts / tau_imlt) + fac_frz = 1. - exp (- dts / tau_frz) ! ----------------------------------------------------------------------- ! define heat capacity and latend heat coefficient @@ -1813,7 +1810,9 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & ! threshold from wsm6 scheme, hong et al 2004, eq (13) : qi0_crt ~0.8e-4 ! ----------------------------------------------------------------------- - qim = qi0_crt / den (k) +!!!!!!!! qim = qi0_crt / den (k) +! GEOS ! WMP impose CALIPSO ice polynomial from 0 C to -40 C on qi0_crt + qim = ice_fraction(tz,cnv_fraction,srf_type) * qi0_crt / den (k) ! ----------------------------------------------------------------------- ! assuming linear subgrid vertical distribution of cloud ice @@ -2060,31 +2059,24 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & real :: rh, rqi, tin, qsw, qsi, qpz, qstar real :: dqsdt, dwsdt, dq, dq0, factor, tmp, oldqa real :: dqh, q_plus, q_minus, dt_evap - real :: evap, sink, tc, pisub, q_adj, dtmp + real :: evap, subl, sink, tc, pisub, q_adj, dtmp real :: pssub, pgsub, tsq, qden, fac_g2v, fac_v2g, fac_s2v, fac_v2s real :: ifrac, newqi, fac_frz real :: rh_adj, rh_rain - real :: dt5 integer :: k - dt5 = 0.5 * dts - ! ----------------------------------------------------------------------- ! define conversion scalar / factor ! ----------------------------------------------------------------------- - fac_v2l = 1. - exp (- dt5 / tau_v2l) - fac_l2v = 1. - exp (- dt5 / tau_l2v) - - fac_i2v = 1. - exp (- dt5 / tau_i2v) - + fac_v2l = 1. - exp (- dts / tau_v2l) + fac_l2v = 1. - exp (- dts / tau_l2v) + fac_i2v = 1. - exp (- dts / tau_i2v) fac_s2v = 1. - exp (- dts / tau_s2v) fac_v2s = 1. - exp (- dts / tau_v2s) - fac_g2v = 1. - exp (- dts / tau_g2v) fac_v2g = 1. - exp (- dts / tau_v2g) - fac_frz = 1. - exp (- dts / tau_frz) ! ----------------------------------------------------------------------- @@ -2137,27 +2129,35 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & icpk (k) = lhi (k) / cvm (k) tcpk (k) = lcpk (k) + icpk (k) tcp3 (k) = lcpk (k) + icpk (k) * min (1., dim (tice, tz (k)) / (tice - t_wfr)) - + ! ----------------------------------------------------------------------- - ! cloud water < -- > vapor adjustment: LS evaporation + ! instant evaporation / sublimation of all clouds if rh < rh_adj -- > cloud free ! ----------------------------------------------------------------------- qpz = qv (k) + ql (k) + qi (k) tin = tz (k) - (lhl (k) * (ql (k) + qi (k)) + lhi (k) * qi (k)) / (c_air + & - qpz * c_vap + qr (k) * c_liq + (qs (k) + qg (k)) * c_ice) - rh = qpz / iqs1 (tin, den (k)) - if ( (tin > t_sub + 6.) .and. (rh < rh_adj) ) then - ! instant evap of all liquid - evap = ql(k) + qpz * c_vap + qr (k) * c_liq + (qs (k) + qg (k)) * c_ice) + if (tin > t_sub + 6.) then + rh = qpz / iqs1 (tin, den (k)) + if (rh < rh_adj) then ! qpz / rh_adj < qs + tz (k) = tin + qv (k) = qpz + ql (k) = 0. + qi (k) = 0. + qa (k) = 0. + cycle ! cloud free + endif + endif + + ! ----------------------------------------------------------------------- + ! cloud water < -- > vapor adjustment: LS evaporation + ! ----------------------------------------------------------------------- + qsw = wqs2 (tz (k), den (k), dwsdt) + dq0 = qsw - qv (k) + if (dq0 > qvmin) then + factor = min (1., fac_l2v * (10. * dq0 / qsw)) + evap = min ( ql(k), factor*ql(k)/(1. + tcp3 (k) * dwsdt)) else - ! partial evap of liquid - qsw = wqs2 (tz (k), den (k), dwsdt) - dq0 = qsw - qv (k) - if (dq0 > qvmin) then - factor = min (1., fac_l2v * (10. * dq0 / qsw)) - evap = min ( ql(k), factor*ql(k)/(1. + tcp3 (k) * dwsdt)) - else - evap = 0.0 - endif + evap = 0.0 endif if (.not. do_evap) evap = min(evap,max(0.0,ql(k)-qlcn(k))) ! restrict evap to just LS QL ! new total condensate / old condensate @@ -2228,40 +2228,29 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & ! ----------------------------------------------------------------------- if (tz (k) < tice) then - ! instant subl of all ice - qpz = qv (k) + ql (k) + qi (k) - tin = tz (k) - (lhl (k) * (ql (k) + qi (k)) + lhi (k) * qi (k)) / (c_air + & - qpz * c_vap + qr (k) * c_liq + (qs (k) + qg (k)) * c_ice) - rh = qpz / iqs1 (tin, den (k)) - if ( (tin > t_sub + 6.) .and. (rh < rh_adj) ) then - ! instant subl of all ice - sink = -1.0 * qi(k) - if (.not. do_subl) sink = max(sink,min(0.0,-1.0*(qi(k)-qicn(k)))) ! restrict subl to just LS QI + ! partial subl of LS ice + qsi = iqs2 (tz (k), den (k), dqsdt) + dq = fac_i2v * (qv (k) - qsi) + sink = min(qi(k), dq / (1. + tcpk (k) * dqsdt)) + if (qi (k) > qcmin) then + ! eq 9, hong et al. 2004, mwr + ! for a and b, see dudhia 1989: page 3103 eq (b7) and (b8) + pidep = dts * dq * 349138.78 * exp (0.875 * log (qi (k) * den (k))) & + / (qsi * den (k) * lat2 / (0.0243 * rvgas * tz (k) ** 2) + 4.42478e4) else - ! partial subl of LS ice - qsi = iqs2 (tz (k), den (k), dqsdt) - dq = fac_i2v * (qv (k) - qsi) - sink = min(qi(k), dq / (1. + tcpk (k) * dqsdt)) - if (qi (k) > qcmin) then - ! eq 9, hong et al. 2004, mwr - ! for a and b, see dudhia 1989: page 3103 eq (b7) and (b8) - pidep = dt5 * dq * 349138.78 * exp (0.875 * log (qi (k) * den (k))) & - / (qsi * den (k) * lat2 / (0.0243 * rvgas * tz (k) ** 2) + 4.42478e4) - else - pidep = 0. - endif - if (dq > 0.) then ! vapor - > ice - tmp = tice - tz (k) - ! 20160912: the following should produce more ice at higher altitude - ! qi_crt = 4.92e-11 * exp (1.33 * log (1.e3 * exp (0.1 * tmp))) / den (k) - ifrac = ice_fraction(tz(k),cnv_fraction,srf_type) - qi_crt = qi_gen * min (qi_lim, ifrac) / den (k) - sink = min (sink, max (qi_crt - qi (k), pidep), tmp / tcpk (k)) - else ! ice -- > vapor - pidep = pidep * min (1., dim (tz (k), t_sub) * 0.2) - sink = max (pidep, sink, - qi (k) ) - if (.not. do_subl) sink = max(sink,min(0.0,-1.0*(qi(k)-qicn(k)))) ! restrict subl to just LS QI - endif + pidep = 0. + endif + if (dq > 0.) then ! vapor - > ice + tmp = tice - tz (k) + ! 20160912: the following should produce more ice at higher altitude + ! qi_crt = 4.92e-11 * exp (1.33 * log (1.e3 * exp (0.1 * tmp))) / den (k) + ifrac = ice_fraction(tz(k),cnv_fraction,srf_type) + qi_crt = qi_gen * min (qi_lim, ifrac) / den (k) + sink = min (sink, max (qi_crt - qi (k), pidep), tmp / tcpk (k)) + else ! ice -- > vapor + pidep = pidep * min (1., dim (tz (k), t_sub) * 0.2) + sink = max (pidep, sink, - qi (k) ) + if (.not. do_subl) sink = max(sink,min(0.0,-1.0*(qi(k)-qicn(k)))) ! restrict subl to just LS QI endif ! new total condensate / old condensate qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)+sink,0.0 ) / & @@ -2422,8 +2411,12 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & ! mixed phase: qsi = iqs1 (tin, den (k)) qsw = wqs1 (tin, den (k)) -! GEOS ! WMP impose CALIPSO ice polynomial from 0 C to -40 C - rqi = ice_fraction(tin,cnv_fraction,srf_type) + if (q_cond (k) > 3.e-6) then + rqi = q_sol (k) / q_cond (k) + else + ! WMP impose CALIPSO ice polynomial from 0 C to -40 C + rqi = ice_fraction(tin,cnv_fraction,srf_type) + endif qstar = rqi * qsi + (1. - rqi) * qsw endif @@ -2439,20 +2432,20 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & if (icloud_f == 3) then ! triangular if(q_plus.le.qstar) then - qa (k) = qcmin ! little/no cloud cover + ! little/no cloud cover elseif ( (qpz.le.qstar).and.(qstar.lt.q_plus) ) then ! partial cloud cover - qa (k) = max(qcmin, min(1., (q_plus-qstar)*(q_plus-qstar) / ( (q_plus-q_minus)*(q_plus-qpz) ))) + qa (k) = max(qcmin, min(1., qa (k) + (q_plus-qstar)*(q_plus-qstar) / ( (q_plus-q_minus)*(q_plus-qpz) ))) elseif ( (q_minus.le.qstar).and.(qstar.lt.qpz) ) then ! partial cloud cover - qa (k) = max(qcmin, min(1., 1. - ( (qstar-q_minus)*(qstar-q_minus) / ( (q_plus-q_minus)*(qpz-q_minus) )))) + qa (k) = max(qcmin, min(1., qa (k) + 1. - ( (qstar-q_minus)*(qstar-q_minus) / ( (q_plus-q_minus)*(qpz-q_minus) )))) elseif ( qstar.le.q_minus ) then qa (k) = 1.0 ! air fully saturated; 100 % cloud cover endif else ! top-hat if(q_plus.le.qstar) then - qa (k) = qcmin ! little/no cloud cover + ! little/no cloud cover elseif (qstar < q_plus .and. q_cond (k) > qc_crt) then - qa (k) = max(qcmin, min(1., (q_plus - qstar) / (dq + dq) )) ! partial cloud cover + qa (k) = max(qcmin, min(1., qa (k) + (q_plus - qstar) / (dq + dq) )) ! partial cloud cover elseif (qstar .le. q_minus) then qa (k) = 1.0 ! air fully saturated; 100 % cloud cover endif @@ -2578,7 +2571,7 @@ subroutine terminal_fall (dtm, ktop, kbot, tz, qv, ql, qr, qg, qs, qi, dz, dp, & real, dimension (ktop:kbot + 1) :: ze, zt - real :: qsat, dqsdt, dt5, evap, dtime + real :: qsat, dqsdt, evap, dtime real :: factor, frac real :: tmp, precip, tc, sink @@ -2592,8 +2585,7 @@ subroutine terminal_fall (dtm, ktop, kbot, tz, qv, ql, qr, qg, qs, qi, dz, dp, & logical :: no_fall - dt5 = 0.5 * dtm - fac_imlt = 1. - exp (- dt5 / tau_imlt) + fac_imlt = 1. - exp (- dtm / tau_imlt) ! ----------------------------------------------------------------------- ! define heat capacity and latend heat coefficient @@ -2679,7 +2671,7 @@ subroutine terminal_fall (dtm, ktop, kbot, tz, qv, ql, qr, qg, qs, qi, dz, dp, & else do k = ktop + 1, kbot - zt (k) = ze (k) - dt5 * (vti (k - 1) + vti (k)) + zt (k) = ze (k) - dtm * (vti (k - 1) + vti (k))/2.0 enddo zt (kbot + 1) = zs - dtm * vti (kbot) @@ -2741,7 +2733,7 @@ subroutine terminal_fall (dtm, ktop, kbot, tz, qv, ql, qr, qg, qs, qi, dz, dp, & else do k = ktop + 1, kbot - zt (k) = ze (k) - dt5 * (vts (k - 1) + vts (k)) + zt (k) = ze (k) - dtm * (vts (k - 1) + vts (k))/2.0 enddo zt (kbot + 1) = zs - dtm * vts (kbot) @@ -2810,7 +2802,7 @@ subroutine terminal_fall (dtm, ktop, kbot, tz, qv, ql, qr, qg, qs, qi, dz, dp, & else do k = ktop + 1, kbot - zt (k) = ze (k) - dt5 * (vtg (k - 1) + vtg (k)) + zt (k) = ze (k) - dtm * (vtg (k - 1) + vtg (k))/2.0 enddo zt (kbot + 1) = zs - dtm * vtg (kbot) From b79654c4c8152521c1e211d72c3435ca0b3365c9 Mon Sep 17 00:00:00 2001 From: William Putman Date: Mon, 27 Mar 2023 07:57:42 -0400 Subject: [PATCH 10/43] added meltfrz to cldmacro --- .../GEOS_GFDL_1M_InterfaceMod.F90 | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index cd2d6c343..0b5421417 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -631,6 +631,19 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) QST3(I,J,L) ) SUBLC(I,J,L) = ( Q(I,J,L) - SUBLC(I,J,L) ) / DT_MOIST endif + ! meltfrz new condensates + call MELTFRZ ( DT_MOIST , & + CNV_FRC(I,J) , & + SRF_TYPE(I,J), & + T(I,J,L) , & + QLCN(I,J,L) , & + QICN(I,J,L) ) + call MELTFRZ ( DT_MOIST , & + CNV_FRC(I,J) , & + SRF_TYPE(I,J), & + T(I,J,L) , & + QLLS(I,J,L) , & + QILS(I,J,L) ) end do ! IM loop end do ! JM loop end do ! LM loop From fe76a9f4cd8be6ebfa126b4a6c5e8e539415cd59 Mon Sep 17 00:00:00 2001 From: William Putman Date: Mon, 27 Mar 2023 07:59:31 -0400 Subject: [PATCH 11/43] make warm_rain a single phase process --- .../gfdl_cloud_microphys.F90 | 197 ++---------------- 1 file changed, 17 insertions(+), 180 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index a5df1f406..d5f3bec76 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -75,9 +75,6 @@ module gfdl2_cloud_microphys_mod real, parameter :: hlv = 2.5e6 !< gfs: latent heat of evaporation real, parameter :: hlf = 3.3358e5 !< gfs: latent heat of fusion real, parameter :: pi = 3.1415926535897931 !< gfs: ratio of circle circumference to diameter - - ! real, parameter :: rdgas = 287.04 ! gfdl: gas constant for dry air - ! real, parameter :: cp_air = rdgas * 7. / 2. ! 1004.675, heat capacity of dry air at constant pressure real, parameter :: cp_vap = 4.0 * rvgas !< 1846.0, heat capacity of water vapore at constnat pressure ! real, parameter :: cv_air = 717.56 ! satoh value @@ -160,7 +157,6 @@ module gfdl2_cloud_microphys_mod logical :: preciprad = .true. !< consider precipitates in cloud fraciton calculation logical :: fix_negative = .false. !< fix negative water species logical :: do_setup = .true. !< setup constants and parameters - logical :: p_nonhydro = .false. !< perform hydrosatic adjustment on air density real, allocatable :: table (:), table2 (:), table3 (:), tablew (:) real, allocatable :: des (:), des2 (:), des3 (:), desw (:) @@ -237,14 +233,6 @@ module gfdl2_cloud_microphys_mod real :: rthreshu = 7.0e-6 !< critical cloud drop radius (micro m) real :: rthreshs = 13.0e-6 !< critical cloud drop radius (micro m) - ! ----------------------------------------------------------------------- - ! wrf / wsm6 scheme: qi_gen = 4.92e-11 * (1.e3 * exp (0.1 * tmp)) ** 1.33 - ! optimized: qi_gen = 4.92e-11 * exp (1.33 * log (1.e3 * exp (0.1 * tmp))) - ! qi_gen ~ 4.808e-7 at 0 c; 1.818e-6 at - 10 c, 9.82679e-5 at - 40c - ! the following value is constructed such that qc_crt = 0 at zero c and @ - 10c matches - ! wrf / wsm6 ice initiation scheme; qi_crt = qi_gen * min (qi_lim, 0.1 * tmp) / den - ! ----------------------------------------------------------------------- - real :: sat_adj0 = 0.90 !< adjustment factor (0: no, 1: full) during fast_sat_adj real :: qc_crt = 5.0e-8 !< mini condensate mixing ratio to allow partial cloudiness @@ -255,7 +243,6 @@ module gfdl2_cloud_microphys_mod real :: qs_mlt = 1.0e-6 !< max cloud water due to snow melt real :: ql_gen = 1.0e-3 !< max cloud water generation -!!! real :: qi_gen = 1.82e-6 !< max cloud ice generation during remapping step real :: qi_gen = 9.82679e-5 !< max cloud ice generation at -40 C ! cloud condensate upper bounds: "safety valves" for ql & qi @@ -428,11 +415,9 @@ subroutine gfdl_cloud_microphys_driver (qv, ql, qr, qi, qs, qg, qa, qn, & if (phys_hydrostatic .or. hydrostatic) then c_air = cp_air c_vap = cp_vap - p_nonhydro = .false. else c_air = cv_air c_vap = cv_vap - p_nonhydro = .true. endif d0_vap = c_vap - c_liq lv00 = hlv0 - d0_vap * t_ice @@ -690,7 +675,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & real :: cpaut, rh_adj, rh_rain real :: r1, s1, i1, g1, rdt, ccn0 - real :: dt5, dts + real :: dts real :: s_leng, t_land, t_ocean, h_var real :: cvm, tmp, omq real :: dqi, qio, qin @@ -698,7 +683,6 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & integer :: i, k, n dts = dt_in / real (ntimes) - dt5 = dts * 0.5 rdt = 1. / dt_in ! ----------------------------------------------------------------------- @@ -707,29 +691,6 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & do i = is, ie -#ifdef DE_ICE - ! ----------------------------------------------------------------------- - ! this is to prevent excessive build - up of cloud ice from external sources - ! ----------------------------------------------------------------------- - if (de_ice) then - do k = ktop, kbot - qiz (k) = qi (i, j, k) - qsz (k) = qs (i, j, k) - qio = qiz (k) - dt_in * qi_dt (i, j, k) ! original qi before phys - qin = max (qio, qi0_max) ! adjusted value - if (qiz (k) > qin) then - qsz (k) = qsz (k) + qiz (k) - qin - qiz (k) = qin - dqi = (qin - qio) * rdt ! modified qi tendency - qs_dt (i, j, k) = qs_dt (i, j, k) + qi_dt (i, j, k) - dqi - qi_dt (i, j, k) = dqi - qi (i, j, k) = qiz (k) - qs (i, j, k) = qsz (k) - endif - enddo - endif -#endif - do k = ktop, kbot t0 (k) = pt (i, j, k) @@ -860,37 +821,13 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & do n = 1, ntimes ! ----------------------------------------------------------------------- - ! define air density based on hydrostatical property + ! dry air density ! ----------------------------------------------------------------------- - if (p_nonhydro) then - do k = ktop, kbot - dz1 (k) = dz0 (k) - den (k) = den0 (k) ! dry air density remains the same - denfac (k) = sqrt (sfcrho / den (k)) - enddo - else - do k = ktop, kbot - dz1 (k) = dz0 (k) * tz (k) / t0 (k) ! hydrostatic balance - den (k) = den0 (k) * dz0 (k) / dz1 (k) - denfac (k) = sqrt (sfcrho / den (k)) - enddo - endif - - ! ----------------------------------------------------------------------- - ! time - split warm rain processes: 1st pass - ! ----------------------------------------------------------------------- - - call warm_rain (dt5, ktop, kbot, dp1, dz1, tz, qvz, qlz, qrz, qiz, qsz, & - qgz, qaz, qlcnz, qicnz, clcnz, eis(i), den, denfac, ccn, c_praut, vtrz, & - r1, evap1, m1_rain, w1, h_var1d) - - rain (i) = rain (i) + r1 - do k = ktop, kbot - revap (i,j,k) = revap (i,j,k) + evap1(k) - m2_rain (i, j, k) = m2_rain (i, j, k) + m1_rain (k) - m1 (k) = m1 (k) + m1_rain (k) + dz1 (k) = dz0 (k) + den (k) = den0 (k) ! dry air density remains the same + denfac (k) = sqrt ( den(kbot) / den (k)) enddo ! ----------------------------------------------------------------------- @@ -917,10 +854,10 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & qsz, qgz, c_ice) ! ----------------------------------------------------------------------- - ! time - split warm rain processes: 2nd pass + ! warm rain processes ! ----------------------------------------------------------------------- - call warm_rain (dt5, ktop, kbot, dp1, dz1, tz, qvz, qlz, qrz, qiz, qsz, & + call warm_rain (dts, ktop, kbot, dp1, dz1, tz, qvz, qlz, qrz, qiz, qsz, & qgz, qaz, qlcnz, qicnz, clcnz, eis(i), den, denfac, ccn, c_praut, vtrz, & r1, evap1, m1_rain, w1, h_var1d) @@ -1428,7 +1365,6 @@ subroutine revap_racc (ktop, kbot, dt, tz, qv, ql, qr, qi, qs, qg, qa, revap, de ! accretion: pracc ! ----------------------------------------------------------------------- - ! if (qr (k) > qpmin .and. ql (k) > qcmin .and. qsat < q_plus) then if (qr (k) > qpmin .and. ql (k) > qcmin .and. qsat < q_minus) then sink = dt * denfac (k) * cracw * exp (0.95 * log (qr (k) * den (k))) sink = sink / (1. + sink) * ql (k) @@ -1608,11 +1544,8 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & ! this is the 1st occurance of liquid water freezing in the split mp process ! ----------------------------------------------------------------------- - dtmp = tice - tzk (k) - newqi = new_ice_condensate(tzk (k), qlk (k), qik (k), cnv_fraction, srf_type) - sink = max(0.0,min (newqi, fac_frz * dtmp / icpk (k))) - ifrac = ice_fraction(tzk(k),cnv_fraction,srf_type) - qi_crt = qi_gen * min (qi_lim, ifrac) / den (k) + sink = fac_frz * new_ice_condensate(tzk (k), qlk (k), qik (k), cnv_fraction, srf_type) + qi_crt = qi0_crt / den (k) tmp = min (sink, dim (qi_crt, qik (k))) ! new total condensate / old condensate @@ -1802,7 +1735,7 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & endif ! ----------------------------------------------------------------------- - ! pasut: autoconversion: cloud ice -- > snow + ! psaut: autoconversion: cloud ice -- > snow ! ----------------------------------------------------------------------- ! ----------------------------------------------------------------------- @@ -1837,10 +1770,7 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & else psaut = 0. endif - ! ----------------------------------------------------------------------- - ! sink is no greater than 75% qi - ! ----------------------------------------------------------------------- - sink = min (0.75 * qi, psaci + psaut) + sink = min (qi, psaci + psaut) ! new total condensate / old condensate qak(k) = max(0.0,min(1.,qak(k) * max(qi+ql-sink+tmp,0.0 ) / & @@ -2230,7 +2160,7 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & if (tz (k) < tice) then ! partial subl of LS ice qsi = iqs2 (tz (k), den (k), dqsdt) - dq = fac_i2v * (qv (k) - qsi) + dq = (qv (k) - qsi) sink = min(qi(k), dq / (1. + tcpk (k) * dqsdt)) if (qi (k) > qcmin) then ! eq 9, hong et al. 2004, mwr @@ -2242,16 +2172,16 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & endif if (dq > 0.) then ! vapor - > ice tmp = tice - tz (k) - ! 20160912: the following should produce more ice at higher altitude - ! qi_crt = 4.92e-11 * exp (1.33 * log (1.e3 * exp (0.1 * tmp))) / den (k) ifrac = ice_fraction(tz(k),cnv_fraction,srf_type) - qi_crt = qi_gen * min (qi_lim, ifrac) / den (k) + qi_crt = 4.92e-11 * exp (1.33 * log (1.e3 * exp (0.1 * tmp))) + qi_crt = max (qi_crt, 1.82e-6) * min (qi_lim, ifrac) / den (k) sink = min (sink, max (qi_crt - qi (k), pidep), tmp / tcpk (k)) else ! ice -- > vapor pidep = pidep * min (1., dim (tz (k), t_sub) * 0.2) sink = max (pidep, sink, - qi (k) ) if (.not. do_subl) sink = max(sink,min(0.0,-1.0*(qi(k)-qicn(k)))) ! restrict subl to just LS QI endif + ! new total condensate / old condensate qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)+sink,0.0 ) / & max(qi(k)+ql(k) ,qcmin) ) ) @@ -2456,99 +2386,6 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & end subroutine subgrid_z_proc -! ======================================================================= -!> rain evaporation -! ======================================================================= - -subroutine revap_rac1 (hydrostatic, is, ie, dt, tz, qv, ql, qr, qi, qs, qg, den, hvar) - - implicit none - - logical, intent (in) :: hydrostatic - - integer, intent (in) :: is, ie - - real, intent (in) :: dt ! time step (s) - - real, intent (in), dimension (is:ie) :: den, hvar, qi, qs, qg - - real, intent (inout), dimension (is:ie) :: tz, qv, qr, ql - - real, dimension (is:ie) :: lcp2, denfac, q_liq, q_sol, cvm, lhl - - real :: dqv, qsat, dqsdt, evap, qden, q_plus, q_minus, sink - real :: tin, t2, qpz, dq, dqh - - integer :: i - - ! ----------------------------------------------------------------------- - ! define latend heat coefficient - ! ----------------------------------------------------------------------- - - do i = is, ie - lhl (i) = lv00 + d0_vap * tz (i) - q_liq (i) = ql (i) + qr (i) - q_sol (i) = qi (i) + qs (i) + qg (i) - cvm (i) = c_air + qv (i) * c_vap + q_liq (i) * c_liq + q_sol (i) * c_ice - lcp2 (i) = lhl (i) / cvm (i) - ! denfac (i) = sqrt (sfcrho / den (i)) - enddo - - do i = is, ie - if (qr (i) > qpmin .and. tz (i) > t_wfr) then - qpz = qv (i) + ql (i) - tin = tz (i) - lcp2 (i) * ql (i) ! presence of clouds suppresses the rain evap - qsat = wqs2 (tin, den (i), dqsdt) - dqh = max (ql (i), hvar (i) * max (qpz, qcmin)) - dqv = qsat - qv (i) - q_minus = qpz - dqh - q_plus = qpz + dqh - - ! ----------------------------------------------------------------------- - ! qsat must be > q_minus to activate evaporation - ! qsat must be < q_plus to activate accretion - ! ----------------------------------------------------------------------- - - ! ----------------------------------------------------------------------- - ! rain evaporation - ! ----------------------------------------------------------------------- - - if (dqv > qvmin .and. qsat > q_minus) then - if (qsat > q_plus) then - dq = qsat - qpz - else - ! q_minus < qsat < q_plus - ! dq == dqh if qsat == q_minus - dq = 0.25 * (q_minus - qsat) ** 2 / dqh - endif - qden = qr (i) * den (i) - t2 = tin * tin - evap = crevp (1) * t2 * dq * (crevp (2) * sqrt (qden) + crevp (3) * exp (0.725 * log (qden))) & - / (crevp (4) * t2 + crevp (5) * qsat * den (i)) - evap = min (qr (i), dt * evap, dqv / (1. + lcp2 (i) * dqsdt)) - qr (i) = qr (i) - evap - qv (i) = qv (i) + evap - q_liq (i) = q_liq (i) - evap - cvm (i) = c_air + qv (i) * c_vap + q_liq (i) * c_liq + q_sol (i) * c_ice - tz (i) = tz (i) - evap * lhl (i) / cvm (i) - endif - - ! ----------------------------------------------------------------------- - ! accretion: pracc - ! ----------------------------------------------------------------------- - - if (qr (i) > qpmin .and. ql (i) > qcmin .and. qsat < q_plus) then - denfac (i) = sqrt (sfcrho / den (i)) - sink = dt * denfac (i) * cracw * exp (0.95 * log (qr (i) * den (i))) - sink = sink / (1. + sink) * ql (i) - ql (i) = ql (i) - sink - qr (i) = qr (i) + sink - endif - endif - enddo - -end subroutine revap_rac1 - ! ======================================================================= !>@brief The subroutine 'terminal_fall' computes terminal fall speed. !>@details It considers cloud ice, snow, and graupel's melting during fall. @@ -4871,7 +4708,7 @@ real function new_ice_condensate(tk, qlk, qik, cnv_fraction, srf_type) ifrac = ice_fraction(tk,cnv_fraction, srf_type) if (qlk > qcmin) then - new_ice_condensate = max(0.0,ifrac*(qlk+qik) - qik) + new_ice_condensate = max(0.0,min(ifrac*(qlk+qik) - qik, qlk)) else new_ice_condensate = 0.0 endif @@ -4885,7 +4722,7 @@ real function new_liq_condensate(tk, qlk, qik, cnv_fraction, srf_type) lfrac = 1.0 - ice_fraction(tk,cnv_fraction, srf_type) if (qik > qcmin) then - new_liq_condensate = max(0.0,lfrac*(qlk+qik) - qlk) + new_liq_condensate = max(0.0,min(lfrac*(qlk+qik) - qlk, qik)) else new_liq_condensate = 0.0 endif From f34f4eea73ad34c478c63ac9e7191f5d03febc6a Mon Sep 17 00:00:00 2001 From: William Putman Date: Mon, 27 Mar 2023 09:17:10 -0400 Subject: [PATCH 12/43] let GFDL-MP use GEOS CCN always --- .../gfdl_cloud_microphys.F90 | 34 ++++--------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index d5f3bec76..17565c69d 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -790,19 +790,11 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & c_praut (k) = cpaut * (ccn (k) * rhor) ** (- 1. / 3.) enddo else - if (use_ccn) then - ccn0 = qn (i, j, kbot) ! ccn_surface - else - ccn0 = (ccn_l * land (i) + ccn_o * (1. - land (i))) * 1.e6 - endif - ! ----------------------------------------------------------------------- - ! ccn is formulted as ccn = ccn_surface * (den / den_surface) - ! ----------------------------------------------------------------------- - ccn0 = ccn0 * rdgas * tz (kbot) / p1 (kbot) - tmp = cpaut * (ccn0 * rhor) ** (- 1. / 3.) do k = ktop, kbot - c_praut (k) = tmp - ccn (k) = ccn0 + ! qn has units # / m^3 + ccn (k) = qn (i, j, k) +!!! use GEOS ccn: ccn (k) = (ccn_l * land (i) + ccn_o * (1. - land (i))) * 1.e6 + c_praut (k) = cpaut * (ccn (k) * rhor) ** (- 1. / 3.) enddo endif @@ -1200,14 +1192,7 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & do k = ktop, kbot qc0 = fac_rc * ccn (k) if (tz (k) > t_wfr) then - if (prog_ccn) then - qc = qc0 / den (k) - else - ! ----------------------------------------------------------------------- - ! ccn is formulted as ccn = ccn_surface * (den / den_surface) - ! ----------------------------------------------------------------------- - qc = qc0 - endif + qc = qc0 / den (k) dq = ql (k) - qc if (dq > 0.) then sink = min (dq, dt * c_praut (k) * den (k) * exp (so3 * log (ql (k)))) @@ -1234,14 +1219,7 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & ! -------------------------------------------------------------------- ! as in klein's gfdl am2 stratiform scheme (with subgrid variations) ! -------------------------------------------------------------------- - if (prog_ccn) then - qc = qc0 / den (k) - else - ! -------------------------------------------------------------------- - ! ccn is formulted as ccn = ccn_surface * (den / den_surface) - ! -------------------------------------------------------------------- - qc = qc0 - endif + qc = qc0 / den (k) dq = 0.5 * (ql (k) + dl (k) - qc) ! -------------------------------------------------------------------- ! dq = dl if qc == q_minus = ql - dl From 456378278e823981c5e42d14b411a31da9fd5e02 Mon Sep 17 00:00:00 2001 From: Nathan Arnold Date: Mon, 27 Mar 2023 09:45:02 -0400 Subject: [PATCH 13/43] Update adiabat to use parcel qsat --- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 24 +++- .../GEOSmoist_GridComp/Process_Library.F90 | 123 +++++++++++------- 2 files changed, 94 insertions(+), 53 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index a67ec9694..8aceaa466 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -2307,6 +2307,14 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & + SHORT_NAME='SBCAPE', & + LONG_NAME ='cape_for_surface_parcel', & + UNITS ='J kg-1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS ) + VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & SHORT_NAME='MUCIN', & LONG_NAME ='inhibition_for_most_unstable_parcel', & @@ -2315,6 +2323,14 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & + SHORT_NAME='SBCIN', & + LONG_NAME ='inhibition_for_surface_parcel', & + UNITS ='J kg-1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, RC=STATUS ) + VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & SHORT_NAME='TVQ0', & LONG_NAME ='Total_Water_Substance_Before', & @@ -5135,7 +5151,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,: ) :: PTYPE, TPREC, CN_PRCP, LS_PRCP, AN_PRCP, SC_PRCP, PLS, PCU real, pointer, dimension(:,: ) :: RAIN, SNOW, ICE, FRZR, PREC_STRAT, PREC_CONV real, pointer, dimension(:,:,:) :: BYNCY - real, pointer, dimension(:,: ) :: CAPE, INHB, MLCAPE, MLCIN, MUCAPE, MUCIN, LFC, LNB + real, pointer, dimension(:,: ) :: CAPE, INHB, MLCAPE, SBCAPE, MLCIN, MUCAPE, MUCIN, SBCIN, LFC, LNB real, pointer, dimension(:,: ) :: CNV_FRC, SRF_TYPE real, pointer, dimension(:,:,:) :: CFICE, CFLIQ real, pointer, dimension(:,:,: ) :: NWFA @@ -5267,14 +5283,16 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(EXPORT, BYNCY, 'BYNCY' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, CAPE, 'CAPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, INHB, 'INHB' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, SBCAPE, 'SBCAPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, SBCIN, 'SBCIN' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, MLCAPE, 'MLCAPE' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, MLCIN, 'MLCIN' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, MUCAPE, 'MUCAPE' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, MUCIN, 'MUCIN' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, LFC, 'ZLFC' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, LNB, 'ZLNB' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) -! call BUOYANCY( T, Q, QST3, DQST3, DZET, ZL0, BYNCY, CAPE, INHB) - call BUOYANCY2( IM, JM, LM, T, Q, QST3, DQST3, DZET, ZL0, PLmb, PLEmb(:,:,LM), CAPE, MLCAPE, MUCAPE, INHB, MLCIN, MUCIN, BYNCY, LFC, LNB ) + call BUOYANCY( T, Q, QST3, DQST3, DZET, ZL0, BYNCY, CAPE, INHB) + call BUOYANCY2( IM, JM, LM, T, Q, QST3, DQST3, DZET, ZL0, PLmb, PLEmb(:,:,LM), SBCAPE, MLCAPE, MUCAPE, SBCIN, MLCIN, MUCIN, BYNCY, LFC, LNB ) CNV_FRC = 0.0 if( CNV_FRACTION_MAX > CNV_FRACTION_MIN ) then WHERE (CAPE .ne. MAPL_UNDEF) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index a0df1a2f9..b5592b4fc 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -505,7 +505,8 @@ function LDRADIUS4(PL,TE,QC,NNL,NNI,ITYPE) RESULT(RADIUS) end function LDRADIUS4 - subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAPE, MUCAPE, SBCIN, MLCIN, MUCIN, BYNCY, LFC, LNB ) + subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAPE, MUCAPE, & + SBCIN, MLCIN, MUCIN, BYNCY, LFC, LNB ) ! Computes surface-based (SB), mixed-layer (ML) and most unstable (MU) versions ! of CAPE and CIN. @@ -513,31 +514,33 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP integer, intent(in) :: IM, JM, LM real, dimension(:,:,:), intent(in) :: T, Q, QS, DQS, DZ, ZLO, PLO real, dimension(:,:,:), intent(out) :: BYNCY -! real, dimension(:,:), intent(out) :: SBCAPE, MLCAPE, MUCAPE, SBCIN, MLCIN, MUCIN real, pointer, dimension(:,:) :: MLCAPE, MUCAPE, MLCIN, MUCIN real, dimension(:,:) :: SBCAPE, SBCIN, LFC, LNB real, dimension(:,:), intent(in) :: PS - real, dimension(IM,JM,LM) :: Tve - real, dimension(IM,JM) :: MSEp, Qp, tmp1, tmp2 + real, dimension(IM,JM,LM) :: Tve + real, dimension(IM,JM) :: MSEp, Qp, tmp1, tmp2 integer, dimension(IM,JM) :: Lev0 integer :: I, J, L - Tve = T*(1.+MAPL_VIREPS*Q) + Tve = T*(1.+MAPL_VIREPS*Q) + BYNCY = MAPL_UNDEF + MSEp = 0. + Qp = 0. - ! Mixed-layer calculation. Parcel properties averaged over lowest 100 hPa + ! Mixed-layer calculation. Parcel properties averaged over lowest 50 hPa if ( associated(MLCAPE) .and. associated(MLCIN) ) then - tmp1 = 0 - MSEp = 0. + tmp1 = 0. Lev0 = LM do L = LM,1,-1 - where (PS-PLO(:,:,L).lt.100.) - MSEp = MSEp + T(:,:,L) + gravbcp*ZLO(:,:,L) + alhlbcp*Q(:,:,L) - Qp = Qp + Q(:,:,L) - tmp1 = tmp1 + 1 + where (PS-PLO(:,:,L).lt.50.) + MSEp = MSEp + (T(:,:,L) + gravbcp*ZLO(:,:,L) + alhlbcp*Q(:,:,L))*DZ(:,:,L) + Qp = Qp + Q(:,:,L)*DZ(:,:,L) + tmp1 = tmp1 + DZ(:,:,L) + Lev0 = L end where - if (all(PS-PLO(:,:,L).gt.100.)) exit + if (all(PS-PLO(:,:,L).gt.50.)) exit end do where (tmp1.gt.0.) MSEp = MSEp / tmp1 @@ -545,9 +548,9 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP end where do I = 1,IM do J = 1,JM - call RETURN_CAPE_CIN( LM, Lev0(I,J), ZLO(I,J,:), PLO(I,J,:), DZ(I,J,:), MSEp(I,J), & - Qp(I,J), Tve(I,J,:), QS(I,J,:), MLCAPE(I,J), MLCIN(I,J), & - BYNCY(I,J,:), LFC(I,J), LNB(I,J) ) + call RETURN_CAPE_CIN( ZLO(I,J,1:Lev0(I,J)), PLO(I,J,1:Lev0(I,J)), DZ(I,J,1:Lev0(I,J)), & + MSEp(I,J), Qp(I,J), Tve(I,J,1:Lev0(I,J)), QS(I,J,1:Lev0(I,J)), DQS(I,J,1:Lev0(I,J)), & + MLCAPE(I,J), MLCIN(I,J), BYNCY(I,J,1:Lev0(I,J)), LFC(I,J), LNB(I,J) ) end do end do where (MLCAPE.le.0.) @@ -561,9 +564,6 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP if ( associated(MUCAPE) .and. associated(MUCIN) ) then MUCAPE = 0. MUCIN = 0. - BYNCY = MAPL_UNDEF - MSEp = 0. - Qp = 0. do L = LM,1,-1 ! Identify largest MSE within 300 hPa of surface tmp1 = T(:,:,L) + gravbcp*ZLO(:,:,L) + alhlbcp*Q(:,:,L) @@ -577,9 +577,9 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP do I = 1,IM do J = 1,JM - call RETURN_CAPE_CIN( LM, Lev0(I,J), ZLO(I,J,:), PLO(I,J,:), DZ(I,J,:), MSEp(I,J), & - Qp(I,J), Tve(I,J,:), QS(I,J,:), MUCAPE(I,J), MUCIN(I,J), & - BYNCY(I,J,:), LFC(I,J), LNB(I,J) ) + call RETURN_CAPE_CIN( ZLO(I,J,1:Lev0(I,J)), PLO(I,J,1:Lev0(I,J)), DZ(I,J,1:Lev0(I,J)), & + MSEp(I,J), Qp(I,J), Tve(I,J,1:Lev0(I,J)), QS(I,J,1:Lev0(I,J)), DQS(I,J,1:Lev0(I,J)), & + MUCAPE(I,J), MUCIN(I,J), BYNCY(I,J,1:Lev0(I,J)), LFC(I,J), LNB(I,J) ) end do end do @@ -596,9 +596,9 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP Lev0 = LM do I = 1,IM do J = 1,JM - call RETURN_CAPE_CIN( LM, Lev0(I,J), ZLO(I,J,:), PLO(I,J,:), DZ(I,J,:), MSEp(I,J), & - Qp(I,J), Tve(I,J,:), QS(I,J,:), SBCAPE(I,J), SBCIN(I,J), & - BYNCY(I,J,:), LFC(I,J), LNB(I,J) ) + call RETURN_CAPE_CIN( ZLO(I,J,1:Lev0(I,J)), PLO(I,J,1:Lev0(I,J)), DZ(I,J,1:Lev0(I,J)), & + MSEp(I,J), Qp(I,J), Tve(I,J,1:Lev0(I,J)), QS(I,J,1:Lev0(I,J)), DQS(I,J,1:Lev0(I,J)), & + SBCAPE(I,J), SBCIN(I,J), BYNCY(I,J,1:Lev0(I,J)), LFC(I,J), LNB(I,J) ) end do end do where (SBCAPE.le.0.) @@ -609,18 +609,20 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP end subroutine BUOYANCY2 - subroutine RETURN_CAPE_CIN( LM, OrigLev, ZLO, PLO, DZ, MSEp, Qp, Tve, Qsate, CAPE, CIN, BYNCY, LFC, LNB ) + subroutine RETURN_CAPE_CIN( ZLO, PLO, DZ, MSEp, Qp, Tve, Qsate, DQS, CAPE, CIN, BYNCY, LFC, LNB ) - integer, intent(in) :: LM, OrigLev - real, intent(in) :: MSEp, Qp - real, dimension(LM), intent(in) :: ZLO, PLO, DZ, Tve, Qsate - real, intent(out) :: CAPE, CIN, LFC, LNB - real, dimension(LM), intent(out) :: BYNCY + real, intent(in) :: MSEp, Qp + real, dimension(:), intent(in) :: ZLO, PLO, DZ, Tve, Qsate, DQS + real, intent(out) :: CAPE, CIN, LFC, LNB + real, dimension(:), intent(out) :: BYNCY - integer :: L - real :: Qpnew, Tp, Tvp, Buoy - logical :: aboveLNB, aboveLFC + integer :: I, L, LM + real :: Qpnew, Tp, Tvp, Tlcl, Buoy, dq + logical :: aboveLNB, aboveLFC, aboveLCL + LM = size(ZLO,1) + +! aboveLCL = .false. aboveLNB = .false. aboveLFC = .false. @@ -632,27 +634,47 @@ subroutine RETURN_CAPE_CIN( LM, OrigLev, ZLO, PLO, DZ, MSEp, Qp, Tve, Qsate, CAP LFC = MAPL_UNDEF LNB = MAPL_UNDEF - do L = LM-1,1,-1 - - Qpnew = MIN( Qpnew, Qsate(L) ) ! use QSATE -! Qpnew = MIN( Qpnew, GEOS_QSAT( Tp, PLO(:,:,L) ) ! calc parcel QSAT + Tp = MSEp - gravbcp*ZLO(LM) - alhlbcp*Qp ! initial parcel temp at source level LM + Tlcl = find_tlcl( Tp, 100.*Qp/QSATE(LM) ) + aboveLCL = (Tp.lt.Tlcl) + + do L = LM-1,1,-1 ! start at level above source air + + ! determine parcel Qp, Tp + if ( .not. aboveLCL ) then + Tp = Tp - gravbcp*(ZLO(L)-ZLO(L+1)) ! new parcel temperature w/o condensation + if (Tp.lt.Tlcl) then + Tp = Tp + gravbcp*(ZLO(L)-ZLO(L+1)) ! if cross LCL, revert Tp and go to aboveLCL below + aboveLCL = .true. + end if + end if + if ( aboveLCL .and. Qpnew*alhlbcp.gt.0.01 ) then + Tp = Tp - gravbcp*( ZLO(L)-ZLO(L+1) ) / ( 1.+alhlbcp*DQS(L) ) ! initial guess including condensation + DO I = 1,10 ! iterate until Qp=qsat(Tp) + dq = Qpnew - GEOS_QSAT( Tp, PLO(L) ) + if (abs(dq*alhlbcp)<0.01) then + exit + end if + Tp = Tp + dq*alhlbcp/(1.+alhlbcp*DQS(L)) + Qpnew = Qpnew - dq/(1.+alhlbcp*DQS(L)) + END DO + end if + Tp = MSEp - gravbcp*ZLO(L) - alhlbcp*Qpnew ! Qc = qp - qpnew. ! condensate (not used for pseudoadiabatic ascent) - Tp = MSEp - gravbcp*ZLO(L) - alhlbcp*Qpnew ! parcel temperature - - Tvp = Tp*(1.+MAPL_VIREPS*Qpnew) ! parcel virtual temp + Tvp = Tp*(1.+MAPL_VIREPS*Qpnew) ! parcel virtual temp ! Tvp = Tp*(1.+0.61*Qpnew - Qc) ! condensate loading - Buoy = MAPL_GRAV*(Tvp-Tve(L))/Tve(L) ! parcel buoyancy + Buoy = MAPL_GRAV*(Tvp-Tve(L))/Tve(L) ! parcel buoyancy BYNCY(L) = Buoy - if ( Buoy.gt.0. & ! identify when above LFC + if ( Buoy.gt.0. & ! identify when above LFC .and. .not. aboveLFC ) then aboveLFC = .true. LFC = ZLO(L) end if - if ( Buoy.lt.0 & ! identify when above LNB + if ( Buoy.lt.0 & ! identify when above LNB .and. aboveLFC & .and. .not. aboveLNB) then aboveLNB = .true. @@ -660,19 +682,20 @@ subroutine RETURN_CAPE_CIN( LM, OrigLev, ZLO, PLO, DZ, MSEp, Qp, Tve, Qsate, CAP exit end if - if (.not. aboveLFC & ! sum negative Buoy below LFC - .and. Buoy.lt.0. & - .and. L.ge.OrigLev ) then + if (.not. aboveLFC & ! sum negative Buoy below LFC + .and. Buoy.lt.0. ) then CIN = CIN + Buoy*DZ(L) end if - if ( aboveLFC & ! sum positive Buoy between LFC and LNB - .and. Buoy.gt.0. & - .and. L.ge.OrigLev ) then + if ( aboveLFC & ! sum positive Buoy between LFC and LNB + .and. Buoy.gt.0. ) then CAPE = CAPE + Buoy*DZ(L) end if end do +! CIN = SUM( min(0.,BYNCY(KLFC:)*DZ(KLFC:)) ) +! CAPE = SUM( max(0.,BYNCY(KLNB:KLFC)*DZ(KLNB:KLFC)) ) + end subroutine RETURN_CAPE_CIN From 4d14fcab1b74bdd679fe8c1d51d8048b9c45e033 Mon Sep 17 00:00:00 2001 From: William Putman Date: Mon, 27 Mar 2023 23:24:02 -0400 Subject: [PATCH 14/43] hydrostatic density option --- .../gfdl_cloud_microphys.F90 | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index 17565c69d..302f0e25f 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -471,7 +471,7 @@ subroutine gfdl_cloud_microphys_driver (qv, ql, qr, qi, qs, qg, qa, qn, & ! ----------------------------------------------------------------------- do j = js, je - call mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, qg,& + call mpdrv (phys_hydrostatic, hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, qg,& qa, qn, qicn, qlcn, clcn, dz, is, ie, js, je, ks, ke, ktop, kbot, j, dt_in, ntimes, & rain (:, j), snow (:, j), graupel (:, j), ice (:, j), m2_rain, & m2_sol, cond (:, j), area (:, j), & @@ -622,7 +622,7 @@ end subroutine gfdl_cloud_microphys_driver !>@param 5) qs: snow (kg / kg) !>@param 6) qg: graupel (kg / kg) ! ----------------------------------------------------------------------- -subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & +subroutine mpdrv (phys_hydrostatic, hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & qg, qa, qn, qicn, qlcn, clcn, dz, is, ie, js, je, ks, ke, ktop, kbot, j, dt_in, ntimes, & rain, snow, graupel, ice, m2_rain, m2_sol, cond, area1, land, & cnv_fraction, srf_type, eis, rhcrit, anv_icefall, lsc_icefall, revap, isubl, & @@ -631,7 +631,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & implicit none - logical, intent (in) :: hydrostatic + logical, intent (in) :: phys_hydrostatic, hydrostatic integer, intent (in) :: j, is, ie, js, je, ks, ke integer, intent (in) :: ntimes, ktop, kbot @@ -815,13 +815,20 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & ! ----------------------------------------------------------------------- ! dry air density ! ----------------------------------------------------------------------- - - do k = ktop, kbot - dz1 (k) = dz0 (k) - den (k) = den0 (k) ! dry air density remains the same - denfac (k) = sqrt ( den(kbot) / den (k)) - enddo - + if (phys_hydrostatic .or. hydrostatic) then + do k = ktop, kbot + dz1 (k) = dz0 (k) * tz (k) / t0 (k) ! hydrostatic balance + den (k) = den0 (k) * dz0 (k) / dz1 (k) + denfac (k) = sqrt (sfcrho / den (k)) + enddo + else + do k = ktop, kbot + dz1 (k) = dz0 (k) + den (k) = den0 (k) ! dry air density remains the same + denfac (k) = sqrt ( den(kbot) / den (k)) + enddo + endif + ! ----------------------------------------------------------------------- ! sedimentation of cloud ice, snow, and graupel ! ----------------------------------------------------------------------- From cb80dc29c9ea4d4c6b11b53ca33398d3ee166354 Mon Sep 17 00:00:00 2001 From: Nathan Arnold Date: Tue, 28 Mar 2023 13:14:20 -0400 Subject: [PATCH 15/43] Validated SB, ML, and MU CAPE/CIN --- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 2 +- .../GEOSmoist_GridComp/Process_Library.F90 | 107 +++++++++--------- 2 files changed, 57 insertions(+), 52 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index 8aceaa466..3763c1388 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -5291,8 +5291,8 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(EXPORT, MUCIN, 'MUCIN' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, LFC, 'ZLFC' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, LNB, 'ZLNB' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) - call BUOYANCY( T, Q, QST3, DQST3, DZET, ZL0, BYNCY, CAPE, INHB) call BUOYANCY2( IM, JM, LM, T, Q, QST3, DQST3, DZET, ZL0, PLmb, PLEmb(:,:,LM), SBCAPE, MLCAPE, MUCAPE, SBCIN, MLCIN, MUCIN, BYNCY, LFC, LNB ) + call BUOYANCY( T, Q, QST3, DQST3, DZET, ZL0, BYNCY, CAPE, INHB) CNV_FRC = 0.0 if( CNV_FRACTION_MAX > CNV_FRACTION_MIN ) then WHERE (CAPE .ne. MAPL_UNDEF) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index b5592b4fc..be7db6368 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -531,6 +531,7 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP ! Mixed-layer calculation. Parcel properties averaged over lowest 50 hPa if ( associated(MLCAPE) .and. associated(MLCIN) ) then + BYNCY = MAPL_UNDEF tmp1 = 0. Lev0 = LM do L = LM,1,-1 @@ -542,7 +543,7 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP end where if (all(PS-PLO(:,:,L).gt.50.)) exit end do - where (tmp1.gt.0.) + where (tmp1.gt.0.) ! average MSEp = MSEp / tmp1 Qp = Qp / tmp1 end where @@ -557,29 +558,29 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP MLCAPE = MAPL_UNDEF MLCIN = MAPL_UNDEF end where - end if - ! Most unstable calculation. Parcel with maximum MSE in lowest 300 hPa + ! Most unstable calculation. Parcel in lowest 300 hPa with largest CAPE if ( associated(MUCAPE) .and. associated(MUCIN) ) then MUCAPE = 0. MUCIN = 0. - - do L = LM,1,-1 ! Identify largest MSE within 300 hPa of surface - tmp1 = T(:,:,L) + gravbcp*ZLO(:,:,L) + alhlbcp*Q(:,:,L) - where ( tmp1 .ge. MSEp .and. PS-PLO(:,:,L).le.300. ) - MSEp = tmp1 - Qp = Q(:,:,L) - Lev0 = L - end where - if (all(PS-PLO(:,:,L).gt.300.)) exit - end do - + BYNCY = MAPL_UNDEF + LFC = MAPL_UNDEF + LNB = MAPL_UNDEF do I = 1,IM do J = 1,JM - call RETURN_CAPE_CIN( ZLO(I,J,1:Lev0(I,J)), PLO(I,J,1:Lev0(I,J)), DZ(I,J,1:Lev0(I,J)), & - MSEp(I,J), Qp(I,J), Tve(I,J,1:Lev0(I,J)), QS(I,J,1:Lev0(I,J)), DQS(I,J,1:Lev0(I,J)), & - MUCAPE(I,J), MUCIN(I,J), BYNCY(I,J,1:Lev0(I,J)), LFC(I,J), LNB(I,J) ) + do L = LM,1,-1 + if (PS(I,J)-PLO(I,J,L).gt.300.) exit + MSEp(I,J) = T(I,J,L) + gravbcp*ZLO(I,J,L) + alhlbcp*Q(I,J,L) + Qp(I,J) = Q(I,J,L) + call RETURN_CAPE_CIN( ZLO(I,J,1:L), PLO(I,J,1:L), DZ(I,J,1:L), & + MSEp(I,J), Qp(I,J), Tve(I,J,1:L), QS(I,J,1:L), DQS(I,J,1:L), & + tmp1(I,J), tmp2(I,J), BYNCY(I,J,1:L), LFC(I,J), LNB(I,J) ) + if (tmp1(I,J) .gt. MUCAPE(I,J)) then + MUCAPE(I,J) = tmp1(I,J) + MUCIN(I,J) = tmp2(I,J) + end if + end do end do end do @@ -587,18 +588,16 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP MUCAPE = MAPL_UNDEF MUCIN = MAPL_UNDEF end where - end if ! Surface-based calculation MSEp = T(:,:,LM) + gravbcp*ZLO(:,:,LM) + alhlbcp*Q(:,:,LM) ! parcel moist static energy Qp = Q(:,:,LM) ! parcel specific humidity - Lev0 = LM do I = 1,IM do J = 1,JM - call RETURN_CAPE_CIN( ZLO(I,J,1:Lev0(I,J)), PLO(I,J,1:Lev0(I,J)), DZ(I,J,1:Lev0(I,J)), & - MSEp(I,J), Qp(I,J), Tve(I,J,1:Lev0(I,J)), QS(I,J,1:Lev0(I,J)), DQS(I,J,1:Lev0(I,J)), & - SBCAPE(I,J), SBCIN(I,J), BYNCY(I,J,1:Lev0(I,J)), LFC(I,J), LNB(I,J) ) + call RETURN_CAPE_CIN( ZLO(I,J,:), PLO(I,J,:), DZ(I,J,:), & + MSEp(I,J), Qp(I,J), Tve(I,J,:), QS(I,J,:), DQS(I,J,:), & + SBCAPE(I,J), SBCIN(I,J), BYNCY(I,J,:), LFC(I,J), LNB(I,J) ) end do end do where (SBCAPE.le.0.) @@ -616,13 +615,12 @@ subroutine RETURN_CAPE_CIN( ZLO, PLO, DZ, MSEp, Qp, Tve, Qsate, DQS, CAPE, CIN, real, intent(out) :: CAPE, CIN, LFC, LNB real, dimension(:), intent(out) :: BYNCY - integer :: I, L, LM + integer :: I, L, LM, KLNB, KLFC real :: Qpnew, Tp, Tvp, Tlcl, Buoy, dq logical :: aboveLNB, aboveLFC, aboveLCL LM = size(ZLO,1) -! aboveLCL = .false. aboveLNB = .false. aboveLFC = .false. @@ -665,36 +663,43 @@ subroutine RETURN_CAPE_CIN( ZLO, PLO, DZ, MSEp, Qp, Tve, Qsate, DQS, CAPE, CIN, Tvp = Tp*(1.+MAPL_VIREPS*Qpnew) ! parcel virtual temp ! Tvp = Tp*(1.+0.61*Qpnew - Qc) ! condensate loading - Buoy = MAPL_GRAV*(Tvp-Tve(L))/Tve(L) ! parcel buoyancy - BYNCY(L) = Buoy - - if ( Buoy.gt.0. & ! identify when above LFC - .and. .not. aboveLFC ) then - aboveLFC = .true. - LFC = ZLO(L) - end if - - if ( Buoy.lt.0 & ! identify when above LNB - .and. aboveLFC & - .and. .not. aboveLNB) then - aboveLNB = .true. - LNB = ZLO(L) - exit - end if + BYNCY(L) = MAPL_GRAV*(Tvp-Tve(L))/Tve(L) ! parcel buoyancy - if (.not. aboveLFC & ! sum negative Buoy below LFC - .and. Buoy.lt.0. ) then - CIN = CIN + Buoy*DZ(L) - end if - - if ( aboveLFC & ! sum positive Buoy between LFC and LNB - .and. Buoy.gt.0. ) then - CAPE = CAPE + Buoy*DZ(L) - end if end do -! CIN = SUM( min(0.,BYNCY(KLFC:)*DZ(KLFC:)) ) -! CAPE = SUM( max(0.,BYNCY(KLNB:KLFC)*DZ(KLNB:KLFC)) ) + ! if surface parcel immediately buoyant, scan upward to find first elevated + ! B>0 level above a B<0 level, label it LFC. If no such level, set LFC at surface. + KLFC = LM + KLNB = LM + aboveLFC = .false. + if (BYNCY(LM-1).gt.0.) then + do L = LM-2,1,-1 ! scan up to find elevated LFC + if (BYNCY(L).gt.0. .and. BYNCY(L+1).le.0.) then + KLFC = L + aboveLFC = .true. + end if + if (aboveLFC .and. BYNCY(L).lt.0. ) then + KLNB = L + exit + end if + end do + else ! if surface parcel not immediately buoyant, LFC is first B>0 level + do L = LM-1,1,-1 + if (BYNCY(L).gt.0. .and. .not.aboveLFC) then + KLFC = L + aboveLFC = .true. + end if + if (aboveLFC .and. BYNCY(L).lt.0.) then + KLNB = L + exit + end if + end do + end if + LFC = ZLO(KLFC) + LNB = ZLO(KLNB) + + CIN = -1.*SUM( min(0.,BYNCY(KLFC:)*DZ(KLFC:)) ) ! define CIN as positive + CAPE = SUM( max(0.,BYNCY(KLNB:KLFC)*DZ(KLNB:KLFC)) ) end subroutine RETURN_CAPE_CIN From 00f9ba995d0b85bc7128e5810d38324ae59e7e72 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Tue, 28 Mar 2023 14:18:48 -0400 Subject: [PATCH 16/43] Get CCN_OCN CCN_LND at all times --- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 921 +++++++++--------- 1 file changed, 460 insertions(+), 461 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index 4dc173969..d9ad4f1c7 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -48,20 +48,20 @@ module GEOS_MoistGridCompMod logical :: USE_AERO_BUFFER real :: CCN_OCN real :: CCN_LND - + ! !PUBLIC MEMBER FUNCTIONS: public SetServices ! !DESCRIPTION: - ! + ! ! {\tt GEOS\_MoistGridCompMod} implements moist processes in GEOS-5. These ! include all processes that involve phase changes in the atmosphere, such ! as large-scale condensation, convective clouds, and all rain and cloud ! formation. Its state consists of water vapor, various types of condensate, - ! and fractions of various cloud types. - ! two moment cloud microphysics (Barahona et al., GMD, 2014.) can be run by setting CLDMACRO==MGB2_2M. - ! When using 2-moment microphysics the number concentration of ice crystals and cloud droplets + ! and fractions of various cloud types. + ! two moment cloud microphysics (Barahona et al., GMD, 2014.) can be run by setting CLDMACRO==MGB2_2M. + ! When using 2-moment microphysics the number concentration of ice crystals and cloud droplets ! are part of the state. ! @@ -82,7 +82,7 @@ subroutine SetServices ( GC, RC ) type(ESMF_GridComp), intent(INOUT) :: GC ! gridded component integer, optional :: RC ! return code - ! !DESCRIPTION: {\tt GEOS\_MoistGridCompMod} uses the default Initialize and Finalize + ! !DESCRIPTION: {\tt GEOS\_MoistGridCompMod} uses the default Initialize and Finalize ! services, but registers its own Run method. !EOP @@ -97,17 +97,17 @@ subroutine SetServices ( GC, RC ) ! Local derived type aliases - type (MAPL_MetaComp ), pointer :: STATE + type (MAPL_MetaComp ), pointer :: STATE type (ESMF_Config ) :: CF integer :: RFRSHINT integer :: AVRGNINT real :: DT - + logical :: LCONVPAR logical :: LSHALLOW logical :: LCLDMICR - + !============================================================================= ! Begin... @@ -189,7 +189,7 @@ subroutine SetServices ( GC, RC ) AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & SHORT_NAME = 'PREF', & @@ -455,7 +455,7 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationCenter, & RESTART = MAPL_RestartSkip, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & SHORT_NAME = 'KPBL', & @@ -466,7 +466,7 @@ subroutine SetServices ( GC, RC ) AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & SHORT_NAME = 'KPBL_SC', & @@ -478,7 +478,7 @@ subroutine SetServices ( GC, RC ) REFRESH_INTERVAL = RFRSHINT, & DEFAULT = 72., & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & LONG_NAME = 'aerosols', & @@ -498,7 +498,7 @@ subroutine SetServices ( GC, RC ) UNITS = 'N m-2', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & SHORT_NAME = 'TAUGWY', & @@ -506,7 +506,7 @@ subroutine SetServices ( GC, RC ) UNITS = 'N m-2', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & @@ -557,7 +557,7 @@ subroutine SetServices ( GC, RC ) SHORT_NAME = 'ALH', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationEdge, & - RC=STATUS ) + RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec ( GC, & @@ -727,7 +727,7 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddImportSpec(GC, & LONG_NAME = 'sensible_heat_flux', & UNITS = 'W m-2', & @@ -957,7 +957,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'QPTOTLS', & - LONG_NAME = 'mass_fraction_of_large_scale_falling_precip', & + LONG_NAME = 'mass_fraction_of_large_scale_falling_precip', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) @@ -999,7 +999,7 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DVDT ', & LONG_NAME = 'meridional_wind_tendency_due_to_moist', & UNITS = 'm s-2', & @@ -1123,17 +1123,17 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_MFD', & + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'CNV_MFD', & LONG_NAME = 'detraining_mass_flux', & - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzVert, & + UNITS = 'kg m-2 s-1', & + DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_MFC', & + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'CNV_MFC', & LONG_NAME = 'cumulative_mass_flux', & UNITS = 'kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -1142,7 +1142,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_FREQ', & + SHORT_NAME = 'CNV_FREQ', & LONG_NAME = 'convective_frequency', & UNITS = 'fraction', & DIMS = MAPL_DimsHorzOnly, & @@ -1151,7 +1151,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_BASEP', & + SHORT_NAME = 'CNV_BASEP', & LONG_NAME = 'pressure_at_convective_cloud_base', & UNITS = 'Pa', & DIMS = MAPL_DimsHorzOnly, & @@ -1160,7 +1160,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_TOPP', & + SHORT_NAME = 'CNV_TOPP', & LONG_NAME = 'pressure_at_convective_cloud_top', & UNITS = 'Pa', & DIMS = MAPL_DimsHorzOnly, & @@ -1688,7 +1688,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='RL', & + SHORT_NAME ='RL', & LONG_NAME ='liquid_cloud_particle_effective_radius', & UNITS ='m', & DIMS = MAPL_DimsHorzVert, & @@ -1696,7 +1696,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RI', & + SHORT_NAME = 'RI', & LONG_NAME = 'ice_phase_cloud_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & @@ -1704,7 +1704,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RR', & + SHORT_NAME = 'RR', & LONG_NAME = 'falling_rain_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & @@ -1712,7 +1712,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RS', & + SHORT_NAME = 'RS', & LONG_NAME = 'falling_snow_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & @@ -1720,13 +1720,13 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RG', & + SHORT_NAME = 'RG', & LONG_NAME = 'falling_graupel_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME ='NCCN_LIQ', & LONG_NAME ='number_concentration_of_cloud_liquid_particles', & @@ -1742,9 +1742,9 @@ subroutine SetServices ( GC, RC ) DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & - SHORT_NAME ='CLDNCCN', & + SHORT_NAME ='CLDNCCN', & LONG_NAME ='number_concentration_of_cloud_particles', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -1752,7 +1752,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QSATI' , & + SHORT_NAME = 'QSATI' , & LONG_NAME = 'saturation_spec_hum_over_ice', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1760,7 +1760,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QSATL' , & + SHORT_NAME = 'QSATL' , & LONG_NAME = 'saturation_spec_hum_over_liquid', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1768,7 +1768,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'ALPHT' , & + SHORT_NAME = 'ALPHT' , & LONG_NAME = 'pdf_spread_for_condensation_over_qsat_total', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1776,7 +1776,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ALPH1' , & + SHORT_NAME='ALPH1' , & LONG_NAME ='pdf_spread_for_condensation_over_qsat_term1', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -1784,7 +1784,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'ALPH2' , & + SHORT_NAME = 'ALPH2' , & LONG_NAME = 'pdf_spread_for_condensation_over_qsat_term2', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1792,7 +1792,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CFPDFX' , & + SHORT_NAME = 'CFPDFX' , & LONG_NAME = 'cloud_fraction_internal_in_PDF_scheme', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1800,7 +1800,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RHCLR' , & + SHORT_NAME = 'RHCLR' , & LONG_NAME = 'RH_clear_sky', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1808,7 +1808,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CFPDF' , & + SHORT_NAME = 'CFPDF' , & LONG_NAME = 'cloud_fraction_after_PDF', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1816,7 +1816,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FCLD' , & + SHORT_NAME = 'FCLD' , & LONG_NAME = 'cloud_fraction_for_radiation', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1824,7 +1824,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='QV', & + SHORT_NAME ='QV', & LONG_NAME ='water_vapor_for_radiation', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1832,7 +1832,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QL', & + SHORT_NAME = 'QL', & LONG_NAME = 'in_cloud_cloud_liquid_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1840,7 +1840,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QI', & + SHORT_NAME = 'QI', & LONG_NAME = 'in_cloud_cloud_ice_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1848,7 +1848,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QR', & + SHORT_NAME = 'QR', & LONG_NAME = 'Falling_rain_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1856,7 +1856,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QS', & + SHORT_NAME = 'QS', & LONG_NAME = 'Falling_snow_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1944,34 +1944,34 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='LS_PRCP', & + SHORT_NAME ='LS_PRCP', & LONG_NAME ='nonanvil_large_scale_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'AN_PRCP', & + SHORT_NAME = 'AN_PRCP', & LONG_NAME = 'anvil_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='CN_PRCP', & + SHORT_NAME ='CN_PRCP', & LONG_NAME ='deep_convective_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='SC_PRCP', & + SHORT_NAME ='SC_PRCP', & LONG_NAME ='shallow_convective_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2016,10 +2016,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'ER_PRCP', & + SHORT_NAME = 'ER_PRCP', & LONG_NAME = 'spurious_rain_from_RH_cleanup', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2042,26 +2042,26 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='SC_MSE', & + SHORT_NAME ='SC_MSE', & LONG_NAME ='shallow_convective_column_MSE_tendency', & UNITS ='W m-2', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='SC_QT', & + SHORT_NAME ='SC_QT', & LONG_NAME ='shallow_convective_column_QT_tendency', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FILLNQV_IN', & + SHORT_NAME = 'FILLNQV_IN', & LONG_NAME = 'filling_of_negative_Q_on_entry_to_moist', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2074,51 +2074,51 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PGENTOT', & + SHORT_NAME = 'PGENTOT', & LONG_NAME = 'Total_column_production_of_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PREVTOT', & + SHORT_NAME = 'PREVTOT', & LONG_NAME = 'Total_column_re-evap/subl_of_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'LS_ARF', & + SHORT_NAME = 'LS_ARF', & LONG_NAME = 'areal_fraction_of_nonanvil_large_scale_showers',& UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'AN_ARF', & + SHORT_NAME = 'AN_ARF', & LONG_NAME = 'areal_fraction_of_anvil_showers', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CN_ARF', & + SHORT_NAME = 'CN_ARF', & LONG_NAME = 'areal_fraction_of_convective_showers', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SC_ARF', & + SHORT_NAME = 'SC_ARF', & LONG_NAME = 'areal_fraction_of_shallow_showers', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2171,10 +2171,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SNO', & + SHORT_NAME = 'SNO', & LONG_NAME = 'snowfall', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2188,7 +2188,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'PRECTOTAL', & - LONG_NAME = 'precipitation_total', & + LONG_NAME = 'precipitation_total', & UNITS = 'mm', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) @@ -2203,194 +2203,194 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PCU', & + SHORT_NAME = 'PCU', & LONG_NAME = 'liquid_convective_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PLS', & + SHORT_NAME = 'PLS', & LONG_NAME = 'liquid_large_scale_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPREC', & + SHORT_NAME='TPREC', & LONG_NAME ='total_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='HOURNORAIN', & + SHORT_NAME='HOURNORAIN', & LONG_NAME ='time-during_an_hour_with_no_precipitation', & UNITS ='s', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPW', & + SHORT_NAME='TPW', & LONG_NAME ='total_precipitable_water', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCWP', & + SHORT_NAME='CCWP', & LONG_NAME ='grid_mean_conv_cond_water_path_diagnostic', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CWP', & + SHORT_NAME='CWP', & LONG_NAME ='condensed_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CLWP', & + SHORT_NAME='CLWP', & LONG_NAME ='cloud_liquid_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='LWP', & + SHORT_NAME='LWP', & LONG_NAME ='liquid_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='IWP', & + SHORT_NAME='IWP', & LONG_NAME ='ice_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='BYNCY', & + SHORT_NAME='BYNCY', & LONG_NAME ='buoyancy_of surface_parcel', & UNITS ='m s-2', & - DIMS = MAPL_DimsHorzVert, & + DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CAPE', & + SHORT_NAME='CAPE', & LONG_NAME ='cape_for_surface_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='INHB', & + SHORT_NAME='INHB', & LONG_NAME ='inhibition_for_surface_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQ0', & + SHORT_NAME='TVQ0', & LONG_NAME ='Total_Water_Substance_Before', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQ1', & + SHORT_NAME='TVQ1', & LONG_NAME ='Total_Water_Substance_After', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DCPTE', & + SHORT_NAME='DCPTE', & LONG_NAME ='Total_VI_DcpT', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVE0', & + SHORT_NAME='TVE0', & LONG_NAME ='Total_VI_MSE_Before', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVE1', & + SHORT_NAME='TVE1', & LONG_NAME ='Total_VI_MSE_After', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVEX', & + SHORT_NAME='TVEX', & LONG_NAME ='Total_VI_MSE_Somewhere', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZPBLCN', & + SHORT_NAME='ZPBLCN', & LONG_NAME ='boundary_layer_depth', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZLCL', & + SHORT_NAME='ZLCL', & LONG_NAME ='lifting_condensation_level', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZLFC', & + SHORT_NAME='ZLFC', & LONG_NAME ='level_of_free_convection', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZCBL', & + SHORT_NAME='ZCBL', & LONG_NAME ='height_of_cloud_base_layer', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='MXDIAM', & + SHORT_NAME='MXDIAM', & LONG_NAME ='diameter_of_largest_RAS_plume', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2443,10 +2443,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RAS_TIME', & + SHORT_NAME='RAS_TIME', & LONG_NAME ='timescale_for_RAS_plumes', & UNITS ='s' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2490,44 +2490,44 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) -#if 0 +#if 0 ! taken out since they are now friendly to dynamics call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLCN', & LONG_NAME ='mass_fraction_of_convective_cloud_liquid_water', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QICN', & LONG_NAME ='mass_fraction_of_convective_cloud_ice_water', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLLS', & LONG_NAME ='large_scale_cloud_volume_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLCN', & LONG_NAME ='convective_cloud_volume_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) #endif call MAPL_AddExportSpec(GC, & - SHORT_NAME='RH1', & + SHORT_NAME='RH1', & LONG_NAME ='relative_humidity_before_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -2535,7 +2535,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RH2', & + SHORT_NAME='RH2', & LONG_NAME ='relative_humidity_after_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -2544,7 +2544,7 @@ subroutine SetServices ( GC, RC ) !Outputs to give model trajectory in the moist TLM/ADJ call MAPL_AddExportSpec(GC, & - SHORT_NAME='TH_moist', & + SHORT_NAME='TH_moist', & LONG_NAME ='potential_temp_before_moist', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -2552,7 +2552,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='Q_moist', & + SHORT_NAME='Q_moist', & LONG_NAME ='specific_humidity_before_moist', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -2560,7 +2560,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='KCBL_moist', & + SHORT_NAME='KCBL_moist', & LONG_NAME ='KCBL_before_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzOnly, & @@ -2568,7 +2568,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ctop_moist', & + SHORT_NAME='ctop_moist', & LONG_NAME ='ctop_after_ras', & UNITS ='1', & DIMS = MAPL_DimsHorzOnly, & @@ -2576,7 +2576,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TS_moist', & + SHORT_NAME='TS_moist', & LONG_NAME ='surface_temp_before_moist', & UNITS ='K', & DIMS = MAPL_DimsHorzOnly, & @@ -2626,7 +2626,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RHX', & + SHORT_NAME='RHX', & LONG_NAME ='relative_humidity_after_PDF', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -2634,7 +2634,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REVSU_CN', & + SHORT_NAME='REVSU_CN', & LONG_NAME ='evap_subl_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2642,7 +2642,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REVSU_LSAN', & + SHORT_NAME='REVSU_LSAN', & LONG_NAME ='evap_subl_of_non_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2650,7 +2650,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_CN', & + SHORT_NAME='REV_CN', & LONG_NAME ='evaporation_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2658,7 +2658,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_SC', & + SHORT_NAME='REV_SC', & LONG_NAME ='evaporation_of_shallow_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2666,7 +2666,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_AN', & + SHORT_NAME='REV_AN', & LONG_NAME ='evaporation_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2674,7 +2674,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_LS', & + SHORT_NAME='REV_LS', & LONG_NAME ='evaporation_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2682,7 +2682,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_CN', & + SHORT_NAME='RSU_CN', & LONG_NAME ='sublimation_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2690,7 +2690,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_SC', & + SHORT_NAME='RSU_SC', & LONG_NAME ='sublimation_of_shallow_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2698,7 +2698,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_AN', & + SHORT_NAME='RSU_AN', & LONG_NAME ='sublimation_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2706,7 +2706,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_LS', & + SHORT_NAME='RSU_LS', & LONG_NAME ='sublimation_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2714,7 +2714,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACR_TOT', & + SHORT_NAME='ACR_TOT', & LONG_NAME ='total_accretion_of__precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2722,7 +2722,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_CN', & + SHORT_NAME='ACRLL_CN', & LONG_NAME ='liq_liq_accretion_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2730,7 +2730,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_SC', & + SHORT_NAME='ACRLL_SC', & LONG_NAME ='liq_liq_accretion_of_shallow_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2738,7 +2738,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_AN', & + SHORT_NAME='ACRLL_AN', & LONG_NAME ='liq_liq_accretion_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2746,7 +2746,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_LS', & + SHORT_NAME='ACRLL_LS', & LONG_NAME ='liq_liq_accretion_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2754,7 +2754,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_CN', & + SHORT_NAME='ACRIL_CN', & LONG_NAME ='ice_liq_accretion_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2762,7 +2762,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_SC', & + SHORT_NAME='ACRIL_SC', & LONG_NAME ='ice_liq_accretion_of_shallow_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2770,7 +2770,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_AN', & + SHORT_NAME='ACRIL_AN', & LONG_NAME ='ice_liq_accretion_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2778,7 +2778,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_LS', & + SHORT_NAME='ACRIL_LS', & LONG_NAME ='ice_liq_accretion_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2786,7 +2786,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_CN', & + SHORT_NAME='PFI_CN', & LONG_NAME ='3D_flux_of_ice_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2794,7 +2794,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_SC', & + SHORT_NAME='PFI_SC', & LONG_NAME ='3D_flux_of_ice_shallow_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2802,7 +2802,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_AN', & + SHORT_NAME='PFI_AN', & LONG_NAME ='3D_flux_of_ice_anvil_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2810,7 +2810,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_LS', & + SHORT_NAME='PFI_LS', & LONG_NAME ='3D_flux_of_ice_nonanvil_large_scale_precipitation',& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2818,7 +2818,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_LSAN', & + SHORT_NAME='PFI_LSAN', & LONG_NAME ='3D_flux_of_ice_nonconvective_precipitation' ,& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2826,7 +2826,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_CN', & + SHORT_NAME='PFL_CN', & LONG_NAME ='3D_flux_of_liquid_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2834,7 +2834,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_SC', & + SHORT_NAME='PFL_SC', & LONG_NAME ='3D_flux_of_liquid_shallow_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2842,7 +2842,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_AN', & + SHORT_NAME='PFL_AN', & LONG_NAME ='3D_flux_of_liquid_anvil_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2850,7 +2850,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_LS', & + SHORT_NAME='PFL_LS', & LONG_NAME ='3D_flux_of_liquid_nonanvil_large_scale_precipitation',& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2858,7 +2858,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_LSAN', & + SHORT_NAME='PFL_LSAN', & LONG_NAME ='3D_flux_of_liquid_nonconvective_precipitation' ,& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2866,7 +2866,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DPDTMST', & + SHORT_NAME='DPDTMST', & LONG_NAME ='layer_pressure_thickness_tendency_from_moist', & UNITS ='Pa s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2874,7 +2874,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DCNVL', & + SHORT_NAME='DCNVL', & LONG_NAME ='convective_source_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2882,7 +2882,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DCNVI', & + SHORT_NAME='DCNVI', & LONG_NAME ='convective_source_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2890,7 +2890,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DLPDF', & + SHORT_NAME='DLPDF', & LONG_NAME ='pdf_source_sink_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2898,7 +2898,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DIPDF', & + SHORT_NAME='DIPDF', & LONG_NAME ='pdf_source_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2906,7 +2906,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DLFIX', & + SHORT_NAME='DLFIX', & LONG_NAME ='fix_source_sink_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2914,7 +2914,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DIFIX', & + SHORT_NAME='DIFIX', & LONG_NAME ='fix_source_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2922,7 +2922,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='AUT', & + SHORT_NAME='AUT', & LONG_NAME ='autoconv_sink_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2930,7 +2930,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='EVAPC', & + SHORT_NAME='EVAPC', & LONG_NAME ='evaporation_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2938,7 +2938,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SDM', & + SHORT_NAME='SDM', & LONG_NAME ='sedimentation_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2946,7 +2946,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLICE_AN', & + SHORT_NAME='VFALLICE_AN', & LONG_NAME ='autoconversion_fall_velocity_of_anvil_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2954,7 +2954,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLICE_LS', & + SHORT_NAME='VFALLICE_LS', & LONG_NAME ='autoconversion_fall_velocity_of_largescale_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2962,7 +2962,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLWAT_AN', & + SHORT_NAME='VFALLWAT_AN', & LONG_NAME ='autoconversion_fall_velocity_of_anvil_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2970,7 +2970,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLWAT_LS', & + SHORT_NAME='VFALLWAT_LS', & LONG_NAME ='autoconversion_fall_velocity_of_largescale_rain',& UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2978,7 +2978,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_AN', & + SHORT_NAME='VFALLRN_AN', & LONG_NAME ='reevaporation_fall_velocity_of_anvil_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2986,7 +2986,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_LS', & + SHORT_NAME='VFALLRN_LS', & LONG_NAME ='reevaporation_fall_velocity_of_largescale_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2994,7 +2994,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_CN', & + SHORT_NAME='VFALLRN_CN', & LONG_NAME ='reevaporation_fall_velocity_of_convective_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3002,7 +3002,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_SC', & + SHORT_NAME='VFALLRN_SC', & LONG_NAME ='reevaporation_fall_velocity_of_shallow_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3010,7 +3010,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_AN', & + SHORT_NAME='VFALLSN_AN', & LONG_NAME ='reevaporation_fall_velocity_of_anvil_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3018,7 +3018,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_LS', & + SHORT_NAME='VFALLSN_LS', & LONG_NAME ='reevaporation_fall_velocity_of_largescale_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3026,7 +3026,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_CN', & + SHORT_NAME='VFALLSN_CN', & LONG_NAME ='reevaporation_fall_velocity_of_convective_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3034,7 +3034,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_SC', & + SHORT_NAME='VFALLSN_SC', & LONG_NAME ='reevaporation_fall_velocity_of_shallow_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3042,7 +3042,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SUBLC', & + SHORT_NAME='SUBLC', & LONG_NAME ='sublimation_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3050,7 +3050,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZ_TT', & + SHORT_NAME='FRZ_TT', & LONG_NAME ='freezing_of_cloud_condensate', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3058,7 +3058,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZ_PP', & + SHORT_NAME='FRZ_PP', & LONG_NAME ='freezing_of_precip_condensate', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3066,7 +3066,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFRZ', & + SHORT_NAME='PFRZ', & LONG_NAME ='Probability_of_freezing_of_aerosol_part', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -3082,7 +3082,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME='ICEANMOVE', & +!!$ SHORT_NAME='ICEANMOVE', & !!$ LONG_NAME ='move2anv_source_of_anvil_ice', & !!$ UNITS ='kg kg-1 s-1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3090,7 +3090,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME = 'DLSCLD' , & +!!$ SHORT_NAME = 'DLSCLD' , & !!$ LONG_NAME = 'move2anv_change_in_large_scale_cloud_fraction', & !!$ UNITS = '1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3098,7 +3098,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME = 'DANCLD' , & +!!$ SHORT_NAME = 'DANCLD' , & !!$ LONG_NAME = 'move2anv_change_in_anvil_cloud_fraction', & !!$ UNITS = '1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3114,7 +3114,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME='CUSNOWMOVE', & +!!$ SHORT_NAME='CUSNOWMOVE', & !!$ LONG_NAME ='movels2conv_source_of_cnv_snow', & !!$ UNITS ='kg kg-1 s-1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3130,7 +3130,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFICNMOVE', & + SHORT_NAME='PFICNMOVE', & LONG_NAME ='moved_source_of_cnv_snow', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3146,7 +3146,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CU2DSNOWMOVE', & + SHORT_NAME='CU2DSNOWMOVE', & LONG_NAME ='moved_2d_source_of_cnv_snow', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzOnly, & @@ -3157,128 +3157,128 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PDFLZ', & + SHORT_NAME='PDFLZ', & LONG_NAME ='statistical_source_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PDFIZ', & + SHORT_NAME='PDFIZ', & LONG_NAME ='statistical_source_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNVRNZ', & + SHORT_NAME='CNVRNZ', & LONG_NAME ='convective_production_of_rain_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNVLZ', & + SHORT_NAME='CNVLZ', & LONG_NAME ='convective_source_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNVIZ', & + SHORT_NAME='CNVIZ', & LONG_NAME ='convective_source_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='EVPCZ', & + SHORT_NAME='EVPCZ', & LONG_NAME ='evaporation_loss_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SUBCZ', & + SHORT_NAME='SUBCZ', & LONG_NAME ='sublimation_loss_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='EVPPZ', & + SHORT_NAME='EVPPZ', & LONG_NAME ='evaporation_loss_of_precip_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SUBPZ', & + SHORT_NAME='SUBPZ', & LONG_NAME ='sublimation_loss_of_precip_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='AUTZ', & + SHORT_NAME='AUTZ', & LONG_NAME ='autoconversion_loss_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SDMZ', & + SHORT_NAME='SDMZ', & LONG_NAME ='sedimentation_loss_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='COLLLZ', & + SHORT_NAME='COLLLZ', & LONG_NAME ='accretion_loss_of_cloud_water_to_rain', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='COLLIZ', & + SHORT_NAME='COLLIZ', & LONG_NAME ='accretion_loss_of_cloud_water_to_snow', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZCZ', & + SHORT_NAME='FRZCZ', & LONG_NAME ='net_freezing_of_cloud_condensate', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZPZ', & + SHORT_NAME='FRZPZ', & LONG_NAME ='net_freezing_of_precip_condensate', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RCCODE', & + SHORT_NAME='RCCODE', & LONG_NAME ='Convection_return_codes', & UNITS ='codes', & DIMS = MAPL_DimsHorzVert, & @@ -3286,7 +3286,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TRIEDLV', & + SHORT_NAME='TRIEDLV', & LONG_NAME ='Tested_for_convection_at_this_level', & UNITS ='0 or 1', & DIMS = MAPL_DimsHorzVert, & @@ -3296,7 +3296,7 @@ subroutine SetServices ( GC, RC ) ! MATMAT Exports for after-RAS inoutputs call MAPL_AddExportSpec(GC, & - SHORT_NAME='QVRAS', & + SHORT_NAME='QVRAS', & LONG_NAME ='water_vapor_after_ras', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -3304,7 +3304,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='THRAS', & + SHORT_NAME='THRAS', & LONG_NAME ='potential_temperature_after_ras', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -3312,7 +3312,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='URAS', & + SHORT_NAME='URAS', & LONG_NAME ='eastward_wind_after_ras', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3320,7 +3320,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VRAS', & + SHORT_NAME='VRAS', & LONG_NAME ='northward_wind_after_ras', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3330,7 +3330,7 @@ subroutine SetServices ( GC, RC ) ! MATMAT Exports for before-RAS inputs for RAStest call MAPL_AddExportSpec(GC, & - SHORT_NAME='THOI', & + SHORT_NAME='THOI', & LONG_NAME ='potential_temperature_before_ras', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -3338,7 +3338,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QHOI', & + SHORT_NAME='QHOI', & LONG_NAME ='specific_humidity_before_ras', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -3346,7 +3346,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QSSI', & + SHORT_NAME='QSSI', & LONG_NAME ='saturation_specific_humidity_before_ras', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -3354,7 +3354,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQSI', & + SHORT_NAME='DQSI', & LONG_NAME ='deriv_sat_specific_humidity_wrt_t_before_ras',& UNITS ='kg kg-1 K-1', & DIMS = MAPL_DimsHorzVert, & @@ -3362,7 +3362,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PLEI', & + SHORT_NAME='PLEI', & LONG_NAME ='air_pressure_before_ras', & UNITS ='Pa', & DIMS = MAPL_DimsHorzVert, & @@ -3370,7 +3370,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPERTI', & + SHORT_NAME='TPERTI', & LONG_NAME ='temperature_perturbation_before_ras', & UNITS ='K', & DIMS = MAPL_DimsHorzOnly, & @@ -3378,7 +3378,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='KCBLI', & + SHORT_NAME='KCBLI', & LONG_NAME ='cloud_base_layer_before_ras', & UNITS ='1', & DIMS = MAPL_DimsHorzOnly, & @@ -3393,72 +3393,72 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='specific_humidity', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLLSX0', & LONG_NAME ='initial_mass_fraction_of_large_scale_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLLSX1', & LONG_NAME ='final_mass_fraction_of_large_scale_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLCNX0', & LONG_NAME ='initial_mass_fraction_of_convective_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLCNX1', & LONG_NAME ='final_mass_fraction_of_convective_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLLSX0', & LONG_NAME ='large_scale_cloud_area_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLCNX0', & LONG_NAME ='convective_cloud_area_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QILSX0', & LONG_NAME ='initial_mass_fraction_of_large_scale_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QILSX1', & LONG_NAME ='final_mass_fraction_of_large_scale_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -3466,32 +3466,32 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='initial_mass_fraction_of_convective_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QICNX1', & LONG_NAME ='final_mass_fraction_of_convective_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QCCNX0', & LONG_NAME ='initial_mass_fraction_of_convective_cloud_condensate', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QCLSX0', & LONG_NAME ='initial_mass_fraction_of_large_scale_cloud_condensate', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) @@ -3706,7 +3706,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='THAFMOIST', & + SHORT_NAME='THAFMOIST', & LONG_NAME ='potential_temperature_after_all_of_moist', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -3730,7 +3730,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SAFMOIST', & + SHORT_NAME='SAFMOIST', & LONG_NAME ='dry_static_energy_after_all_of_moist', & UNITS ='m+2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -3738,10 +3738,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) - !-------Aerosol Cloud Interactions Diagnostics + !-------Aerosol Cloud Interactions Diagnostics call MAPL_AddExportSpec(GC, & - SHORT_NAME='SMAX_LIQ', & + SHORT_NAME='SMAX_LIQ', & LONG_NAME ='Maximum incloud supersaturation for liquid', & UNITS ='%', & DIMS = MAPL_DimsHorzVert, & @@ -3749,7 +3749,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='WSUB', & + SHORT_NAME='WSUB', & LONG_NAME ='Subgrid Scale in-cloud vertical velocity', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3757,7 +3757,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCN01', & + SHORT_NAME='CCN01', & LONG_NAME ='CCN conc at 0.1 % supersaturation (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -3765,7 +3765,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCN04', & + SHORT_NAME='CCN04', & LONG_NAME ='CCN conc at 0.4 % supersaturation (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -3773,7 +3773,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCN1', & + SHORT_NAME='CCN1', & LONG_NAME ='CCN conc at 1.0 % supersaturation (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -3781,133 +3781,133 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SMAX_ICE', & + SHORT_NAME='SMAX_ICE', & LONG_NAME ='Maximum incloud supersaturation for ice', & UNITS ='%', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CDNC_NUC', & + SHORT_NAME='CDNC_NUC', & LONG_NAME ='Nucleated cloud droplet concentration (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='INC_NUC', & + SHORT_NAME='INC_NUC', & LONG_NAME ='Nucleated ice crystal concentration (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NCPL_VOL', & LONG_NAME ='particle_number_for_liquid_cloud', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NCPI_VOL', & LONG_NAME ='particle_number_for_ice_cloud', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='SO4', & LONG_NAME ='Sulfate number conc.', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='ORG', & LONG_NAME ='Organic number conc. (hydrophilic)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='BCARBON', & LONG_NAME ='Black carbon number conc. (hydrophilic)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='DUST', & LONG_NAME ='Total dust number conc', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='SEASALT', & LONG_NAME ='Total sea number conc', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NHET_NUC', & LONG_NAME ='Nucleated ice crystal concentration by het freezing (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NLIM_NUC', & LONG_NAME ='Limiting IN concentration allowing hom freezing', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SAT_RAT', & + SHORT_NAME='SAT_RAT', & LONG_NAME ='saturation_ratio_after_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQVDT_micro', & + SHORT_NAME='DQVDT_micro', & LONG_NAME ='Q tendency due to microphysics ', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQLDT_micro', & + SHORT_NAME='DQLDT_micro', & LONG_NAME ='QL tendency due to microphysics ', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQIDT_micro', & + SHORT_NAME='DQIDT_micro', & LONG_NAME ='QI tendency due to microphysics ', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME='DQRDT_micro', & @@ -3942,12 +3942,12 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DTDT_micro', & + SHORT_NAME='DTDT_micro', & LONG_NAME ='T tendency due to microphysics ', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME='DUDT_micro', & @@ -3966,24 +3966,24 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQX1', & + SHORT_NAME='TVQX1', & LONG_NAME ='Total_Water_Substance_bef_macro', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQX2', & + SHORT_NAME='TVQX2', & LONG_NAME ='Total_Water_Substance_bef_micro', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RL_MASK', & + SHORT_NAME='RL_MASK', & LONG_NAME ='volumetric_liquid_cloud_particle_volume_radius', & UNITS ='m', & DIMS = MAPL_DimsHorzVert, & @@ -3991,7 +3991,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RI_MASK', & + SHORT_NAME='RI_MASK', & LONG_NAME ='volumetric_ice_cloud_particle_volume_radius', & UNITS ='m', & DIMS = MAPL_DimsHorzVert, & @@ -3999,7 +3999,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='KAPPA', & + SHORT_NAME='KAPPA', & LONG_NAME ='kappa parameter for activation', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4011,23 +4011,23 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='liquid_cloud_area_fraction (LS)', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CFICE', & LONG_NAME ='ice_cloud_area_fraction (LS)', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='RHICE', & LONG_NAME ='Relative humidity wrt ice', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4035,7 +4035,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Relative humidity wrt liquid', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4043,7 +4043,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Effective Freezing RHi', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4052,7 +4052,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Immersion_IN', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4060,7 +4060,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Deposition_IN', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4069,7 +4069,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Immersion IN from dust', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4077,7 +4077,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='deposition IN from dust', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4085,7 +4085,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Supercooled cloud fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4093,11 +4093,11 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Supercooled cloud fraction including snow and rain', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_GW', & + SHORT_NAME='SIGW_GW', & LONG_NAME ='Subgrid Scale vertical velocity variance from GW', & UNITS ='m2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -4105,7 +4105,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_CNV', & + SHORT_NAME='SIGW_CNV', & LONG_NAME ='Subgrid Scale vertical velocity variance from convection', & UNITS ='m2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -4114,7 +4114,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_TURB', & + SHORT_NAME='SIGW_TURB', & LONG_NAME ='Subgrid Scale vertical velocity variance from turbulence', & UNITS ='m2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -4122,7 +4122,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_RC', & + SHORT_NAME='SIGW_RC', & LONG_NAME ='Mean subgrid Scale vertical velocity from rad cooling', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -4130,7 +4130,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNV_FICE', & + SHORT_NAME='CNV_FICE', & LONG_NAME ='Ice fraction in convective tower', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4138,14 +4138,14 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNV_NDROP', & + SHORT_NAME='CNV_NDROP', & LONG_NAME ='Droplet number conc. in conv. detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - - + + call MAPL_AddExportSpec(GC, & SHORT_NAME='NWFA', & LONG_NAME ='Number concentration of water-friendly aerosol', & @@ -4156,7 +4156,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNV_NICE', & + SHORT_NAME='CNV_NICE', & LONG_NAME ='Ice crystal number conc. in conv. detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -4164,7 +4164,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SC_NDROP', & + SHORT_NAME='SC_NDROP', & LONG_NAME ='Droplet number conc. in shallow detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -4172,7 +4172,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SC_NICE', & + SHORT_NAME='SC_NICE', & LONG_NAME ='Ice crystal number conc. in shallow detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -4180,7 +4180,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPERT_SC', & + SHORT_NAME='TPERT_SC', & LONG_NAME ='Shallow_convection_source_air_temperature_perturbation', & UNITS ='K', & DIMS = MAPL_DimsHorzOnly, & @@ -4188,7 +4188,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QPERT_SC', & + SHORT_NAME='QPERT_SC', & LONG_NAME ='Shallow_convection_source_air_humidity_perturbation', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzOnly, & @@ -4196,7 +4196,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RHCmicro', & + SHORT_NAME='RHCmicro', & LONG_NAME ='Corrected RHc after micro', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4204,26 +4204,26 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCNCOLUMN', & + SHORT_NAME='CCNCOLUMN', & LONG_NAME ='Vertically integrated CCN at 1% ssat', & UNITS ='m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NDCOLUMN', & + SHORT_NAME='NDCOLUMN', & LONG_NAME ='Vertically integrated NCPL', & UNITS ='m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCCOLUMN', & + SHORT_NAME='NCCOLUMN', & LONG_NAME ='Vertically integrated NCPI', & UNITS ='m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -4232,7 +4232,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='ice mixing ration tendency due to Bergeron process ', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4240,7 +4240,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Snow mixing ration tendency due to Bergeron process ', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4248,7 +4248,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Melting of cloud ice', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4257,7 +4257,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Residual cloud tendency in micro', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4265,11 +4265,11 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Residual ice cloud tendency in micro', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='AUTICE', & + SHORT_NAME='AUTICE', & LONG_NAME ='autoconv_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -4282,7 +4282,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='T tendency from ras precip', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4291,7 +4291,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to immersion freezing', & UNITS ='Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4300,7 +4300,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to contact freezing', & UNITS ='Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4320,12 +4320,12 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DTDT_macro', & + SHORT_NAME='DTDT_macro', & LONG_NAME ='T tendency due to macrophysics ', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME='DQVDT_macro', & @@ -4444,7 +4444,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Tendency in T from micro precip freezing', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4452,7 +4452,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Tendency in T from micro snow melting', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4461,7 +4461,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to nucleation on aerosol', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4470,7 +4470,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to H-M splittering', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4478,7 +4478,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to sublimation', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4486,7 +4486,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to autoconversion to snow', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4494,7 +4494,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to accretion by snow', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4503,7 +4503,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice crystal number tendency from convective detrainment', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4512,7 +4512,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to activation', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4520,7 +4520,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to accretion by snow', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4529,7 +4529,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to evaporation', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4537,7 +4537,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to accretion by rain', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4545,7 +4545,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to autoconversion', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4554,50 +4554,50 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency from convective detrainment', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CLDREFFL_TOP', & + SHORT_NAME='CLDREFFL_TOP', & LONG_NAME ='Droplet effective radius at cloud top', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CLDREFFI_TOP', & + SHORT_NAME='CLDREFFI_TOP', & LONG_NAME ='ice crystal effective radius at cloud top', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCPL_TOP', & + SHORT_NAME='NCPL_TOP', & LONG_NAME ='Grid-averaged NCPL at cloud top', & UNITS ='m-3' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCPI_TOP', & + SHORT_NAME='NCPI_TOP', & LONG_NAME ='Grid-averaged NCPI at cloud top', & UNITS ='m-3' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCPL_CLDBASE', & + SHORT_NAME='NCPL_CLDBASE', & LONG_NAME ='IN-CLOUD NCPL at cloud base', & UNITS ='m-3' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & @@ -4617,33 +4617,33 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QCVAR_EXP', & + SHORT_NAME='QCVAR_EXP', & LONG_NAME ='inverse relative variance of cloud water', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - - + + call MAPL_AddExportSpec(GC, & - SHORT_NAME='LTS', & + SHORT_NAME='LTS', & LONG_NAME ='Lower tropospheric stability', & UNITS ='K', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & - SHORT_NAME='EIS', & + SHORT_NAME='EIS', & LONG_NAME ='Estimated Inversion Strength', & UNITS ='K', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - - + + call MAPL_AddExportSpec(GC, & - SHORT_NAME='RAS_ALPHA', & + SHORT_NAME='RAS_ALPHA', & LONG_NAME ='RAS relaxation parameter', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4651,13 +4651,13 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RAS_TAU', & + SHORT_NAME='RAS_TAU', & LONG_NAME ='RAS total relaxation timescale', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddImportSpec(GC, & SHORT_NAME = 'DTDT_BL', & LONG_NAME = 'tendency_of_air_temperature_due_to_bound_layer', & @@ -4665,7 +4665,7 @@ subroutine SetServices ( GC, RC ) DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddImportSpec(GC, & SHORT_NAME = 'DQDT_BL', & LONG_NAME = 'tendency_of_spec_humidity_due_to_bound_layer', & @@ -4691,7 +4691,7 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationCenter, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DQDT_GF', & LONG_NAME = 'tendency_of_spec_humidity_due_GF', & @@ -4803,7 +4803,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'ERRDP', & - LONG_NAME = 'convection_code_deep_GF', & + LONG_NAME = 'convection_code_deep_GF', & UNITS = '1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4811,7 +4811,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'ERRSH', & - LONG_NAME = 'convection_code_shallow_GF', & + LONG_NAME = 'convection_code_shallow_GF', & UNITS = '1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4819,7 +4819,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'ERRMD', & - LONG_NAME = 'convection_code_mid_GF', & + LONG_NAME = 'convection_code_mid_GF', & UNITS = '1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4827,7 +4827,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA0', & - LONG_NAME = 'cloud work function 0', & + LONG_NAME = 'cloud work function 0', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4836,7 +4836,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA1', & - LONG_NAME = 'cloud work function 1', & + LONG_NAME = 'cloud work function 1', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4845,7 +4845,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA2', & - LONG_NAME = 'cloud work function 2', & + LONG_NAME = 'cloud work function 2', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4854,16 +4854,16 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA3', & - LONG_NAME = 'cloud work function 3', & + LONG_NAME = 'cloud work function 3', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA1_CIN', & - LONG_NAME = 'cloud work function CIN', & + LONG_NAME = 'cloud work function CIN', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4872,25 +4872,25 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA1_BL', & - LONG_NAME = 'Bound layer AA1', & + LONG_NAME = 'Bound layer AA1', & UNITS = 'J kg-1 s-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'TAU_BL', & - LONG_NAME = 'Bound layer time scale', & + LONG_NAME = 'Bound layer time scale', & UNITS = 's', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'TAU_EC', & - LONG_NAME = 'cape removal time scale', & + LONG_NAME = 'cape removal time scale', & UNITS = 's', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4898,26 +4898,26 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPWI', & + SHORT_NAME='TPWI', & LONG_NAME ='initial_total_precipitable_water', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPWI_star', & + SHORT_NAME='TPWI_star', & LONG_NAME ='saturation_initial_total_precipitable_water', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='LFR_GF', & + SHORT_NAME='LFR_GF', & LONG_NAME ='lightning_flash_density ', & UNITS ='km-2 day-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -4929,7 +4929,7 @@ subroutine SetServices ( GC, RC ) call MAPL_TimerAdd(GC,name="---CONV_TRACERS" ,RC=STATUS) VERIFY_(STATUS) call MAPL_TimerAdd(GC,name="---AERO_ACTIVATE" ,RC=STATUS) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_TimerAdd(GC,name="---CLDMACRO" ,RC=STATUS) VERIFY_(STATUS) call MAPL_TimerAdd(GC,name="---CLDMACRO" ,RC=STATUS) @@ -4965,16 +4965,16 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) ! !ARGUMENTS: - type(ESMF_GridComp), intent(inout) :: GC ! Gridded component + type(ESMF_GridComp), intent(inout) :: GC ! Gridded component type(ESMF_State), intent(inout) :: IMPORT ! Import state type(ESMF_State), intent(inout) :: EXPORT ! Export state type(ESMF_Clock), intent(inout) :: CLOCK ! The clock integer, optional, intent( out) :: RC ! Error code - ! !DESCRIPTION: The Initialize method of the Moist Physics Gridded Component first + ! !DESCRIPTION: The Initialize method of the Moist Physics Gridded Component first ! calls the Initialize method of the child Dynamics. The Dynamics Initialize method will ! create the ESMF GRID, which will then be used to set the GRID associated with the - ! SuperDyn Composite Component itself. It should be noted that the + ! SuperDyn Composite Component itself. It should be noted that the ! SuperDyn Initialize method also invokes the GEOS Topo Utility which creates all ! topography related quantities. @@ -4999,7 +4999,7 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) !============================================================================= - ! Begin... + ! Begin... ! Get the target components name and set-up traceback handle. ! ----------------------------------------------------------- @@ -5032,10 +5032,9 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetResource( MAPL, USE_AERO_BUFFER , 'USE_AERO_BUFFER:' , DEFAULT=.TRUE. , RC=STATUS); VERIFY_(STATUS) call aer_cloud_init() call WRITE_PARALLEL ("INITIALIZED aer_cloud_init") - else - call MAPL_GetResource( MAPL, CCN_OCN, 'NCCN_OCN:', DEFAULT= 100., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 - call MAPL_GetResource( MAPL, CCN_LND, 'NCCN_LND:', DEFAULT= 300., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 endif + call MAPL_GetResource( MAPL, CCN_OCN, 'NCCN_OCN:', DEFAULT= 100., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 + call MAPL_GetResource( MAPL, CCN_LND, 'NCCN_LND:', DEFAULT= 300., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 if (adjustl(CONVPAR_OPTION)=="RAS" ) call RAS_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) if (adjustl(CONVPAR_OPTION)=="GF" ) call GF_Initialize(MAPL, CLOCK, RC=STATUS) ; VERIFY_(STATUS) @@ -5063,7 +5062,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! !ARGUMENTS: - type(ESMF_GridComp), intent(inout) :: GC ! Gridded component + type(ESMF_GridComp), intent(inout) :: GC ! Gridded component type(ESMF_State), intent(inout) :: IMPORT ! Import state type(ESMF_State), intent(inout) :: EXPORT ! Export state type(ESMF_Clock), intent(inout) :: CLOCK ! The clock @@ -5111,7 +5110,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) type(ESMF_State) :: AERO type(ESMF_FieldBundle) :: TR ! Exports - real, pointer, dimension(:,:,:) :: DQDT, DQADT, DQIDT, DQLDT, DQRDT, DQSDT, DQGDT + real, pointer, dimension(:,:,:) :: DQDT, DQADT, DQIDT, DQLDT, DQRDT, DQSDT, DQGDT real, pointer, dimension(:,:,:) :: DTDT, DUDT, DVDT, DWDT real, pointer, dimension(:,:,:) :: DPDTMST, PFL_LSAN, PFI_LSAN real, pointer, dimension(:,:,:) :: DTDT_ER, DQVDT_ER @@ -5124,7 +5123,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:,: ) :: NWFA real, pointer, dimension(:,:,:) :: PTR3D real, pointer, dimension(:,: ) :: PTR2D - + integer :: IM,JM,LM @@ -5132,7 +5131,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) !============================================================================= - ! Begin... + ! Begin... ! Get my name and set-up traceback handle ! --------------------------------------- @@ -5207,7 +5206,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) end where ! Allocatables - ! Edge variables + ! Edge variables ALLOCATE ( ZLE0 (IM,JM,0:LM) ) ALLOCATE ( PLEmb(IM,JM,0:LM) ) ALLOCATE ( PKE (IM,JM,0:LM) ) @@ -5219,7 +5218,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ALLOCATE ( DQST3(IM,JM,LM ) ) ALLOCATE ( QST3(IM,JM,LM ) ) ALLOCATE ( MASS (IM,JM,LM ) ) - ALLOCATE ( TMP3D(IM,JM,LM ) ) + ALLOCATE ( TMP3D(IM,JM,LM ) ) ALLOCATE ( TMP2D(IM,JM ) ) ! Save input winds @@ -5245,13 +5244,13 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) DQST3 = GEOS_DQSAT(T, PLmb, QSAT=QST3) ! These may be used by children - call MAPL_GetPointer(EXPORT, NWFA, 'NWFA', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, NWFA, 'NWFA', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, CNV_FRC, 'CNV_FRC', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, BYNCY, 'BYNCY' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, CAPE, 'CAPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, INHB, 'INHB' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call BUOYANCY( T, Q, QST3, DQST3, DZET, ZL0, BYNCY, CAPE, INHB) - + CNV_FRC = 0.0 if( CNV_FRACTION_MAX > CNV_FRACTION_MIN ) then WHERE (CAPE .ne. MAPL_UNDEF) @@ -5303,8 +5302,8 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Exports ! Cloud fraction exports - - + + call MAPL_GetPointer(EXPORT, CFICE, 'CFICE', ALLOC=.true., RC=STATUS); VERIFY_(STATUS) if (associated(CFICE)) then CFICE=0.0 @@ -5351,12 +5350,12 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) PTR3D = 1.0 end where endif - - if (.FALSE.) then + + if (.FALSE.) then QST3 = GEOS_QsatLQU (T, PLmb*100.0, DQ=DQST3) !clean up only with respect to liquid water else DQST3 = GEOS_DQSAT (T, PLmb, QSAT=QST3) ! this qsat function expects hPa... - end if + end if call MAPL_GetPointer(EXPORT, PTR3D, 'RHLIQ', RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = Q/QST3 @@ -5383,7 +5382,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (USE_AEROSOL_NN) then deallocate ( AeroProps ) endif - + ! Export Total Moist Tendencies @@ -5687,14 +5686,14 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) endif endif - ! Diagnostic precip types: + ! Diagnostic precip types: call MAPL_GetPointer(EXPORT, ICE, 'ICE', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, FRZR, 'FRZR', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (LUPDATE_PRECIP_TYPE .OR. LDIAGNOSE_PRECIP_TYPE) then call MAPL_GetPointer(EXPORT, PTYPE, 'PTYPE', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call DIAGNOSE_PRECIP_TYPE(IM, JM, LM, TPREC, PLS, PCU, RAIN, SNOW, ICE, FRZR, & PTYPE, PLE, T/PK, PK, PKE, ZL0, LUPDATE_PRECIP_TYPE) - endif + endif ! Get Kuchera snow:rain ratios do I = 1,IM do J = 1,JM @@ -5794,7 +5793,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(IMPORT, V, 'V' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, T, 'T' , RC=STATUS); VERIFY_(STATUS) ! Allocatables - ! Edge variables + ! Edge variables ALLOCATE ( ZLE0 (IM,JM,0:LM) ) ALLOCATE ( PLEmb(IM,JM,0:LM) ) ! Layer variables @@ -5826,20 +5825,20 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(EXPORT, PTR3D, 'TAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = T - + call MAPL_GetPointer(EXPORT, PTR3D, 'QAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = Q - + call MAPL_GetPointer(EXPORT, PTR3D, 'THAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = T/PK - + call MAPL_GetPointer(EXPORT, PTR3D, 'SAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) then do L=1,LM PTR3D(:,:,L) = MAPL_CP*T(:,:,L) + MAPL_GRAV*(ZL0(:,:,L)+ZLE(:,:,LM)) enddo endif - + call MAPL_GetPointer(EXPORT, PTR3D, 'RH2', RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = MAX(MIN( Q/GEOS_QSAT (T, PLmb) , 1.02 ),0.0) From 8e363135c197defd0522ba63713a5d15139f41b9 Mon Sep 17 00:00:00 2001 From: William Putman Date: Sat, 1 Apr 2023 13:25:41 -0400 Subject: [PATCH 17/43] updted moist_import to reduce rst size, alt FV3 sponge and new FV3 diagnostics --- .../GEOS_PhysicsGridComp.F90 | 18 +- .../GEOSmoist_GridComp/ConvPar_GF2020.F90 | 8 +- .../GEOSmoist_GridComp/ConvPar_GF_GEOS5.F90 | 4 +- .../GEOS_BACM_1M_InterfaceMod.F90 | 4 +- .../GEOS_GFDL_1M_InterfaceMod.F90 | 3 +- .../GEOS_GF_InterfaceMod.F90 | 9 +- .../GEOS_MGB2_2M_InterfaceMod.F90 | 3 +- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 1421 ++++++++--------- .../GEOSmoist_GridComp/cloudnew.F90 | 52 +- 9 files changed, 719 insertions(+), 803 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 index c174b5478..c5e48ff06 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 @@ -1310,8 +1310,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddConnectivity ( GC, & - SHORT_NAME = (/'USTAR', 'TSTAR', 'QSTAR', 'T2M ', & - 'Q2M ', 'TA ', 'QA ', 'SH ', & + SHORT_NAME = (/'T2M', 'Q2M', 'TA', 'QA', 'SH', & 'EVAP ' & /), & DST_ID = MOIST, & @@ -1338,21 +1337,6 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - !Gravity wave drag parameters for subgrid scale V - call MAPL_AddConnectivity ( GC, & - SHORT_NAME = (/'TAUGWX'/), & - DST_ID = MOIST, & - SRC_ID = GWD, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddConnectivity ( GC, & - SHORT_NAME = (/'TAUGWY'/), & - DST_ID = MOIST, & - SRC_ID = GWD, & - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddConnectivity ( GC, & SHORT_NAME = (/'TAUOROX'/), & DST_ID = MOIST, & diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 index d3624ea55..4af51aa79 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 @@ -177,7 +177,7 @@ SUBROUTINE GF2020_INTERFACE( mxp,myp,mzp,LONS,LATS,DT_MOIST ,CNV_MFC, CNV_UPDF, CNV_CVW, CNV_QC, CLCN,CLLS & ,QV_DYN_IN,PLE_DYN_IN,U_DYN_IN,V_DYN_IN,T_DYN_IN & ,RADSW ,RADLW ,DQDT_BL ,DTDT_BL & - ,FRLAND ,AREA ,USTAR ,TSTAR ,QSTAR ,T2M ,Q2M & + ,FRLAND ,AREA ,T2M ,Q2M & ,TA ,QA ,SH ,EVAP ,PHIS & ,KPBLIN ,CNVFRC,SRFTYPE & ,STOCHASTIC_SIG, SIGMA_DEEP, SIGMA_MID & @@ -210,7 +210,7 @@ SUBROUTINE GF2020_INTERFACE( mxp,myp,mzp,LONS,LATS,DT_MOIST REAL ,DIMENSION(mxp,myp,mzp) ,INTENT(IN) :: RADSW, RADLW, DQDT_BL, DTDT_BL - REAL ,DIMENSION(mxp,myp) ,INTENT(IN) :: FRLAND, AREA, USTAR, TSTAR, QSTAR, & + REAL ,DIMENSION(mxp,myp) ,INTENT(IN) :: FRLAND, AREA, & T2M, Q2M, TA, QA, SH, EVAP, PHIS, & LONS, LATS, & STOCHASTIC_SIG @@ -548,8 +548,8 @@ SUBROUTINE GF2020_INTERFACE( mxp,myp,mzp,LONS,LATS,DT_MOIST DO k=1,mzp gsf_t (k,i,j) = 0. gsf_q (k,i,j) = 0. - sgsf_t (k,i,j) = 0. !DTDT_BL(i,j,flip(k)) + RADSW(i,j,flip(k)) + RADLW(i,j,flip(k)) - sgsf_q (k,i,j) = 0. !DQDT_BL(i,j,flip(k)) + sgsf_t (k,i,j) = 0. + sgsf_q (k,i,j) = 0. advf_t (k,i,j) = 0. ENDDO ENDDO diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF_GEOS5.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF_GEOS5.F90 index a3a8eba8e..e518f5f51 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF_GEOS5.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF_GEOS5.F90 @@ -93,7 +93,7 @@ SUBROUTINE GF_GEOS5_INTERFACE(mxp,myp,mzp,LONS,LATS,dt_moist & ,CNV_MFC, CNV_UPDF, CNV_CVW, CNV_QC, CLCN & ,QV_DYN_IN,PLE_DYN_IN,U_DYN_IN,V_DYN_IN,T_DYN_IN & ,RADSW ,RADLW ,DQDT_BL ,DTDT_BL & - ,FRLAND ,AREA ,USTAR ,TSTAR ,QSTAR ,T2M ,Q2M & + ,FRLAND ,AREA ,T2M ,Q2M & ,TA ,QA ,SH ,EVAP ,PHIS & ,KPBLIN ,CNVFRC,SRFTYPE & ,STOCHASTIC_SIG, SIGMA_DEEP, SIGMA_MID & @@ -131,7 +131,7 @@ SUBROUTINE GF_GEOS5_INTERFACE(mxp,myp,mzp,LONS,LATS,dt_moist & REAL ,DIMENSION(mxp,myp) ,INTENT(OUT) :: MFDP,MFSH,MFMD,ERRDP,ERRSH,ERRMD REAL ,DIMENSION(mxp,myp) ,INTENT(OUT) :: AA0,AA1,AA2,AA3,AA1_BL,AA1_CIN,TAU_BL,TAU_EC - REAL ,DIMENSION(MXP,MYP) ,INTENT(IN) :: FRLAND ,AREA ,USTAR ,TSTAR ,QSTAR & + REAL ,DIMENSION(MXP,MYP) ,INTENT(IN) :: FRLAND ,AREA & ,T2M ,Q2M ,TA ,QA ,SH ,EVAP ,PHIS & ,KPBLIN,CNVFRC,SRFTYPE,LONS,LATS & ,STOCHASTIC_SIG diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_BACM_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_BACM_1M_InterfaceMod.F90 index 06aa54e7f..f58cdcf2f 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_BACM_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_BACM_1M_InterfaceMod.F90 @@ -298,7 +298,7 @@ subroutine BACM_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, pointer, dimension(:,:,:) :: NACTL, NACTI ! Imports real, pointer, dimension(:,:,:) :: ZLE, PLE, T, U, V, KH - real, pointer, dimension(:,:) :: FRLAND, TS, DTSX, TROPP, SH, EVAP, KPBLSC + real, pointer, dimension(:,:) :: FRLAND, TS, DTSX, SH, EVAP, KPBLSC real, pointer, dimension(:,:,:) :: HL2, HL3, QT2, QT3, W2, W3, HLQT, WQT, WQL, WHL, EDMF_FRC real, pointer, dimension(:,:,:) :: OMEGA real, pointer, dimension(:,:,:) :: CNV_MFD, CNV_DQCDT, CNV_PRC3, CNV_UPDF @@ -405,7 +405,6 @@ subroutine BACM_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) call MAPL_GetPointer(IMPORT, QT3, 'QT3' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, HLQT, 'HLQT' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, TS, 'TS' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TROPP, 'TROPP' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, KPBLSC, 'KPBL_SC' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, SH, 'SH' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, EVAP, 'EVAP' , RC=STATUS); VERIFY_(STATUS) @@ -658,7 +657,6 @@ subroutine BACM_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) QDDF3 , & CNV_FRC , & SRF_TYPE , & - TROPP , & ! Diagnostics RHX , & REV_LS , & diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index 0b5421417..c3953ab2d 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -281,7 +281,7 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, pointer, dimension(:,:,:) :: NACTL, NACTI ! Imports real, pointer, dimension(:,:,:) :: ZLE, PLE, T, U, V, W, KH - real, pointer, dimension(:,:) :: AREA, FRLAND, TS, DTSX, TROPP, SH, EVAP, KPBLSC + real, pointer, dimension(:,:) :: AREA, FRLAND, TS, DTSX, SH, EVAP, KPBLSC real, pointer, dimension(:,:,:) :: HL2, HL3, QT2, QT3, W2, W3, HLQT, WQT, WQL, WHL, EDMF_FRC real, pointer, dimension(:,:,:) :: WTHV2 real, pointer, dimension(:,:,:) :: OMEGA @@ -383,7 +383,6 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) call MAPL_GetPointer(IMPORT, QT3, 'QT3' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, HLQT, 'HLQT' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, TS, 'TS' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TROPP, 'TROPP' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, KPBLSC, 'KPBL_SC' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, SH, 'SH' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, EVAP, 'EVAP' , RC=STATUS); VERIFY_(STATUS) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 index 5aec90e9b..5c9ec7f25 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 @@ -314,7 +314,7 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, pointer, dimension(:,:,:) :: CNV_MF0, ENTLAM real, pointer, dimension(:,:,:) :: MUPDP,MDNDP,MUPSH,MUPMD real, pointer, dimension(:,:,:) :: VAR3d_a,VAR3d_b,VAR3d_c,VAR3d_d - real, pointer, dimension(:,: ) :: USTAR,TSTAR,QSTAR,T2M,Q2M,TA,QA,SH,EVAP,PHIS + real, pointer, dimension(:,: ) :: T2M,Q2M,TA,QA,SH,EVAP,PHIS real, pointer, dimension(:,: ) :: MFDP,MFSH,MFMD,ERRDP,ERRSH,ERRMD real, pointer, dimension(:,: ) :: AA0,AA1,AA2,AA3,AA1_BL,AA1_CIN,TAU_BL,TAU_EC real, pointer, dimension(:,: ) :: TPWI,TPWI_star,LFR_GF,CNPCPRATE @@ -377,9 +377,6 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) call MAPL_GetPointer(IMPORT, KH ,'KH' ,RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, SH ,'SH' ,RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, EVAP ,'EVAP' ,RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, USTAR ,'USTAR' ,RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TSTAR ,'TSTAR' ,RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, QSTAR ,'QSTAR' ,RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, T2M ,'T2M' ,RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, Q2M ,'Q2M' ,RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, TA ,'TA' ,RC=STATUS); VERIFY_(STATUS) @@ -520,7 +517,7 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) ,CNV_MFC, CNV_UPDF, CNV_CVW, CNV_QC, CLCN, CLLS & ,QV_DYN_IN,PLE_DYN_IN,U_DYN_IN,V_DYN_IN,T_DYN_IN & ,RADSW ,RADLW ,DQDT_BL ,DTDT_BL & - ,FRLAND, TMP2D, USTAR, TSTAR, QSTAR, T2M & + ,FRLAND, TMP2D, T2M & ,Q2M ,TA ,QA ,SH ,EVAP ,PHIS & ,KPBL ,CNV_FRC, SRF_TYPE & ,SEEDCNV, SIGMA_DEEP, SIGMA_MID & @@ -542,7 +539,7 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) ,CNV_MFC, CNV_UPDF, CNV_CVW, CNV_QC , CLCN & ,QV_DYN_IN,PLE_DYN_IN,U_DYN_IN,V_DYN_IN,T_DYN_IN & ,RADSW ,RADLW ,DQDT_BL ,DTDT_BL & - ,FRLAND, TMP2D, USTAR, TSTAR, QSTAR, T2M, Q2M & + ,FRLAND, TMP2D, T2M, Q2M & ,TA ,QA ,SH ,EVAP ,PHIS & ,KPBL ,CNV_FRC, SRF_TYPE & ,SEEDCNV, SIGMA_DEEP, SIGMA_MID & diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MGB2_2M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MGB2_2M_InterfaceMod.F90 index db455cbaf..d0f8a87df 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MGB2_2M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MGB2_2M_InterfaceMod.F90 @@ -462,7 +462,7 @@ subroutine MGB2_2M_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, pointer, dimension(:,:,:) :: NCPL, NCPI, NRAIN, NSNOW, NGRAUPEL ! Imports real, pointer, dimension(:,:,:) :: ZLE, PLE, PK, T, U, V, W, KH, TKE - real, pointer, dimension(:,:) :: AREA, FRLAND, TS, DTSX, TROPP, SH, EVAP, KPBLSC + real, pointer, dimension(:,:) :: AREA, FRLAND, TS, DTSX, SH, EVAP, KPBLSC real, pointer, dimension(:,:,:) :: HL2, HL3, QT2, QT3, W2, W3, HLQT, WQT, WQL, WHL, EDMF_FRC real, pointer, dimension(:,:,:) :: WTHV2 real, pointer, dimension(:,:,:) :: OMEGA @@ -931,7 +931,6 @@ subroutine MGB2_2M_Run (GC, IMPORT, EXPORT, CLOCK, RC) call MAPL_GetPointer(IMPORT, QT3, 'QT3' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, HLQT, 'HLQT' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, TS, 'TS' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(IMPORT, TROPP, 'TROPP' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, KPBLSC, 'KPBL_SC' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, SH, 'SH' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, EVAP, 'EVAP' , RC=STATUS); VERIFY_(STATUS) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index 7c6ab83dc..eda549f65 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -48,20 +48,20 @@ module GEOS_MoistGridCompMod logical :: USE_AERO_BUFFER real :: CCN_OCN real :: CCN_LND - + ! !PUBLIC MEMBER FUNCTIONS: public SetServices ! !DESCRIPTION: - ! + ! ! {\tt GEOS\_MoistGridCompMod} implements moist processes in GEOS-5. These ! include all processes that involve phase changes in the atmosphere, such ! as large-scale condensation, convective clouds, and all rain and cloud ! formation. Its state consists of water vapor, various types of condensate, - ! and fractions of various cloud types. - ! two moment cloud microphysics (Barahona et al., GMD, 2014.) can be run by setting CLDMACRO==MGB2_2M. - ! When using 2-moment microphysics the number concentration of ice crystals and cloud droplets + ! and fractions of various cloud types. + ! two moment cloud microphysics (Barahona et al., GMD, 2014.) can be run by setting CLDMACRO==MGB2_2M. + ! When using 2-moment microphysics the number concentration of ice crystals and cloud droplets ! are part of the state. ! @@ -82,7 +82,7 @@ subroutine SetServices ( GC, RC ) type(ESMF_GridComp), intent(INOUT) :: GC ! gridded component integer, optional :: RC ! return code - ! !DESCRIPTION: {\tt GEOS\_MoistGridCompMod} uses the default Initialize and Finalize + ! !DESCRIPTION: {\tt GEOS\_MoistGridCompMod} uses the default Initialize and Finalize ! services, but registers its own Run method. !EOP @@ -97,17 +97,21 @@ subroutine SetServices ( GC, RC ) ! Local derived type aliases - type (MAPL_MetaComp ), pointer :: STATE + type (MAPL_MetaComp ), pointer :: STATE type (ESMF_Config ) :: CF integer :: RFRSHINT integer :: AVRGNINT real :: DT - + logical :: LCONVPAR logical :: LSHALLOW logical :: LCLDMICR + integer :: pdfRestartSkip, gfEnvRestartSkip, PDFSHAPE + + CHARACTER(len=10) :: GF_ENV_SETTING + !============================================================================= ! Begin... @@ -170,6 +174,19 @@ subroutine SetServices ( GC, RC ) adjustl(CLDMICR_OPTION)=="GFDL_1M" _ASSERT( LCLDMICR, 'Unsupported Cloud Microphysics Option' ) + call ESMF_ConfigGetAttribute( CF, GF_ENV_SETTING, Label="GF_ENV_SETTING:", default='DYNAMICS', RC=STATUS) ; VERIFY_(STATUS) + if (trim(GF_ENV_SETTING)=='DYNAMICS') then + pdfRestartSkip = MAPL_RestartOptional + else + pdfRestartSkip = MAPL_RestartSkip + endif + + call ESMF_ConfigGetAttribute( CF, PDFSHAPE, Label="PDFSHAPE:", default=1, RC=STATUS) ; VERIFY_(STATUS) + if (PDFSHAPE.eq.5) then + gfEnvRestartSkip = MAPL_RestartOptional + else + gfEnvRestartSkip = MAPL_RestartSkip + endif if (adjustl(CONVPAR_OPTION)=="RAS" ) call RAS_Setup(GC, CF, RC=STATUS) ; VERIFY_(STATUS) if (adjustl(CONVPAR_OPTION)=="GF" ) call GF_Setup(GC, CF, RC=STATUS) ; VERIFY_(STATUS) @@ -181,253 +198,270 @@ subroutine SetServices ( GC, RC ) ! !IMPORT STATE: call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PLE', & - LONG_NAME = 'air_pressure', & - UNITS = 'Pa', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationEdge, & + SHORT_NAME = 'PLE', & + LONG_NAME = 'air_pressure', & + UNITS = 'Pa', & + RESTART = MAPL_RestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationEdge, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PREF', & - LONG_NAME = 'reference_air_pressure', & - UNITS = 'Pa', & - DIMS = MAPL_DimsVertOnly, & - VLOCATION = MAPL_VLocationEdge, & + SHORT_NAME = 'PREF', & + LONG_NAME = 'reference_air_pressure', & + UNITS = 'Pa', & + RESTART = MAPL_RestartSkip, & + DIMS = MAPL_DimsVertOnly, & + VLOCATION = MAPL_VLocationEdge, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'ZLE', & - LONG_NAME = 'geopotential_height', & - UNITS = 'm', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationEdge, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'ZLE', & + LONG_NAME = 'geopotential_height', & + UNITS = 'm', & + RESTART = MAPL_RestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationEdge, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & - RC=STATUS ) + RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'KH', & - LONG_NAME = 'scalar_diffusivity', & - UNITS = 'm+2 s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationEdge, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'KH', & + LONG_NAME = 'scalar_diffusivity', & + UNITS = 'm+2 s-1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationEdge, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TKE', & - LONG_NAME = 'turbulent_kinetic_energy', & - UNITS = 'm+2 s-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationEdge, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'TKE', & + LONG_NAME = 'turbulent_kinetic_energy', & + UNITS = 'm+2 s-2', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationEdge, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'WQT', & - LONG_NAME = 'Total_water_flux', & - UNITS = 'kg kg-1 m s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'WQT', & + LONG_NAME = 'Total_water_flux', & + UNITS = 'kg kg-1 m s-1', & + RESTART = pdfRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & - RC=STATUS ) - VERIFY_(STATUS) + RC=STATUS ) + VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'WHL', & - LONG_NAME = 'Liquid_water_static_energy_flux', & - UNITS = 'K m s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'WHL', & + LONG_NAME = 'Liquid_water_static_energy_flux', & + UNITS = 'K m s-1', & + RESTART = pdfRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'W2', & - LONG_NAME = 'variance_of_vertical_velocity', & - UNITS = 'm2 s-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'W2', & + LONG_NAME = 'variance_of_vertical_velocity', & + UNITS = 'm2 s-2', & + RESTART = pdfRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'W3', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'W3', & LONG_NAME = 'third_moment_of_vertical_velocity', & - UNITS = 'm3 s-3', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = 'm3 s-3', & + RESTART = pdfRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'HL3', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'HL3', & LONG_NAME = 'third_moment_of_liquid_water_static_energy', & - UNITS = 'K+3', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = 'K+3', & + RESTART = pdfRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'EDMF_FRC', & - LONG_NAME = 'Mass_Flux_Fractional_Area', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'EDMF_FRC', & + LONG_NAME = 'Mass_Flux_Fractional_Area', & + UNITS = '1', & + RESTART = pdfRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'HL2', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'HL2', & LONG_NAME = 'variance_of_liquid_water_static_energy', & - UNITS = 'K+2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = 'K+2', & + RESTART = pdfRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'QT2', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'QT2', & LONG_NAME = 'variance_of_total_water_specific_humidity', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = '1', & + RESTART = pdfRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'QT3', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'QT3', & LONG_NAME = 'third_moment_of_total_water_specific_humidity', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = '1', & + RESTART = pdfRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'HLQT', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'HLQT', & LONG_NAME = 'covariance_of_liquid_water_static_energy_and_total_water_specific_humidity', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = 'K', & + RESTART = pdfRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'T', & - LONG_NAME = 'temperature', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + SHORT_NAME = 'T', & + LONG_NAME = 'temperature', & + UNITS = 'K', & + RESTART = MAPL_RestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'U', & - LONG_NAME = 'eastward_wind', & - UNITS = 'm s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + SHORT_NAME = 'U', & + LONG_NAME = 'eastward_wind', & + UNITS = 'm s-1', & + RESTART = MAPL_RestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'V', & - LONG_NAME = 'northward_wind', & - UNITS = 'm s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + SHORT_NAME = 'V', & + LONG_NAME = 'northward_wind', & + UNITS = 'm s-1', & + RESTART = MAPL_RestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'W', & - LONG_NAME = 'vertical_velocity', & - UNITS = 'm s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + SHORT_NAME = 'W', & + LONG_NAME = 'vertical_velocity', & + UNITS = 'm s-1', & + RESTART = MAPL_RestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TS', & - LONG_NAME = 'surface temperature', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & + SHORT_NAME = 'TS', & + LONG_NAME = 'surface temperature', & + UNITS = 'K', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'SNOMAS', & - LONG_NAME = 'snow_mass', & - UNITS = 'kg/m2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & + SHORT_NAME = 'SNOMAS', & + LONG_NAME = 'snow_mass', & + UNITS = 'kg/m2', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'FRLANDICE', & - LONG_NAME = 'areal_landice_fraction', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & + SHORT_NAME = 'FRLANDICE', & + LONG_NAME = 'areal_landice_fraction', & + UNITS = '1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'FRLAND', & - LONG_NAME = 'areal_land_fraction', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & + SHORT_NAME = 'FRLAND', & + LONG_NAME = 'areal_land_fraction', & + UNITS = '1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) @@ -447,15 +481,15 @@ subroutine SetServices ( GC, RC ) ! These bundles should be changed when we merge w/ the head. call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'MTR', & - LONG_NAME = 'tracers_for_moist', & - UNITS = 'X', & + SHORT_NAME = 'MTR', & + LONG_NAME = 'tracers_for_moist', & + UNITS = 'X', & DATATYPE = MAPL_BundleItem, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, & RESTART = MAPL_RestartSkip, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & SHORT_NAME = 'KPBL', & @@ -466,7 +500,7 @@ subroutine SetServices ( GC, RC ) AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & SHORT_NAME = 'KPBL_SC', & @@ -478,7 +512,7 @@ subroutine SetServices ( GC, RC ) REFRESH_INTERVAL = RFRSHINT, & DEFAULT = 72., & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & LONG_NAME = 'aerosols', & @@ -492,40 +526,6 @@ subroutine SetServices ( GC, RC ) !new imports required for Aer-Cloud Interactions - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TAUGWX', & - LONG_NAME = 'surface_eastward_gravity_wave_stress', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TAUGWY', & - LONG_NAME = 'surface_northward_gravity_wave_stress', & - UNITS = 'N m-2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, RC=STATUS ) - VERIFY_(STATUS) - - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'eastward_surface_stress_on_air', & - UNITS = 'N m-2', & - SHORT_NAME = 'TAUX', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'northward_surface_stress_on_air', & - UNITS = 'N m-2', & - SHORT_NAME = 'TAUY', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - call MAPL_AddImportSpec(GC, & SHORT_NAME = 'TAUOROX', & LONG_NAME = 'surface_eastward_orographic_gravity_wave_stress', & @@ -546,64 +546,45 @@ subroutine SetServices ( GC, RC ) call MAPL_AddImportSpec ( gc, & SHORT_NAME = 'OMEGA', & LONG_NAME = 'vertical_pressure_velocity', & - UNITS = 'Pa s-1', & + UNITS = 'Pa s-1', & + RESTART = MAPL_RestartSkip, & ! comes from DYN DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'Blackadar_length_scale_for_scalars', & - UNITS = 'm', & - SHORT_NAME = 'ALH', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationEdge, & - RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec ( GC, & - SHORT_NAME = 'RADLW', & - LONG_NAME = 'air_temperature_tendency_due_to_longwave', & - UNITS = 'K s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) + call MAPL_AddImportSpec(GC, & + LONG_NAME = 'Blackadar_length_scale_for_scalars', & + UNITS = 'm', & + SHORT_NAME = 'ALH', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationEdge, & + RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( GC, & - SHORT_NAME = 'RADSW', & - LONG_NAME = 'air_temperature_tendency_due_to_longwave', & - UNITS = 'K s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'AREA', & + LONG_NAME = 'agrid_cell_area', & + UNITS = 'm+2', & + RESTART = MAPL_RestartSkip, & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & + RC=STATUS ) VERIFY_(STATUS) - !============================================ - - call MAPL_AddImportSpec ( GC, & !Read WSUB from a climatology - SHORT_NAME = 'WSUB_CLIM', & - LONG_NAME = 'stdev in vertical velocity', & + call MAPL_AddImportSpec ( GC, & + SHORT_NAME = 'WSUB_CLIM', & + LONG_NAME = 'stdev in vertical velocity', & UNITS = 'm s-1', & - RESTART = MAPL_RestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + RESTART = MAPL_RestartSkip, & ! Read WSUB from a climatology + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TROPP', & - LONG_NAME = 'tropopause_pressure_based_on_blended_estimate', & - UNITS = 'Pa', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - AVERAGING_INTERVAL = AVRGNINT, & - REFRESH_INTERVAL = RFRSHINT, & - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & SHORT_NAME = 'DTDTDYN', & LONG_NAME = 'tendency_of_air_temperature_due_to_dynamics', & - UNITS = 'K s-1', & + UNITS = 'K s-1', & + RESTART = MAPL_RestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -611,86 +592,93 @@ subroutine SetServices ( GC, RC ) call MAPL_AddImportSpec ( gc, & SHORT_NAME = 'DQVDTDYN', & LONG_NAME = 'tendency_of_specific_humidity_due_to_dynamics', & - UNITS = 'kg/kg/s', & + UNITS = 'kg/kg/s', & + RESTART = MAPL_RestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & + call MAPL_AddImportSpec ( gc, & SHORT_NAME = 'QV_DYN_IN', & LONG_NAME = 'spec_humidity_at_begin_of_time_step', & UNITS = 'kg kg-1', & + RESTART = MAPL_RestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & - SHORT_NAME = 'T_DYN_IN', & - LONG_NAME = 'temperature_at_begin_of_time_step', & - UNITS = 'K', & + call MAPL_AddImportSpec ( gc, & + SHORT_NAME = 'T_DYN_IN', & + LONG_NAME = 'temperature_at_begin_of_time_step', & + UNITS = 'K', & + RESTART = MAPL_RestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & - SHORT_NAME = 'U_DYN_IN', & - LONG_NAME = 'u_wind_at_begin_of_time_step', & - UNITS = 'm s-1', & + call MAPL_AddImportSpec ( gc, & + SHORT_NAME = 'U_DYN_IN', & + LONG_NAME = 'u_wind_at_begin_of_time_step', & + UNITS = 'm s-1', & + RESTART = MAPL_RestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & - SHORT_NAME = 'V_DYN_IN', & - LONG_NAME = 'v_wind_at_begin_of_time_step', & - UNITS = 'm s-1', & + call MAPL_AddImportSpec ( gc, & + SHORT_NAME = 'V_DYN_IN', & + LONG_NAME = 'v_wind_at_begin_of_time_step', & + UNITS = 'm s-1', & + RESTART = MAPL_RestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & - SHORT_NAME = 'PLE_DYN_IN', & + call MAPL_AddImportSpec ( gc, & + SHORT_NAME = 'PLE_DYN_IN', & LONG_NAME = 'edge_pressure_at_begin_of_time_step', & - UNITS = 'Pa', & + UNITS = 'Pa', & + RESTART = MAPL_RestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationEdge, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'AREA', & - LONG_NAME = 'agrid_cell_area', & - UNITS = 'm+2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'DTDT_BL', & + LONG_NAME = 'tendency_of_air_temperature_due_to_bound_layer', & + UNITS = 'K s-1', & + RESTART = gfEnvRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'USTAR', & - LONG_NAME = 'surface_velocity_scale', & - UNITS = 'm s-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) + + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'DQDT_BL', & + LONG_NAME = 'tendency_of_spec_humidity_due_to_bound_layer', & + UNITS = 'kg kg-1 s-1', & + RESTART = gfEnvRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TSTAR', & - LONG_NAME = 'surface_temperature_scale', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) + call MAPL_AddImportSpec ( GC, & + SHORT_NAME = 'RADLW', & + LONG_NAME = 'air_temperature_tendency_due_to_longwave', & + UNITS = 'K s-1', & + RESTART = gfEnvRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & + RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'QSTAR', & - LONG_NAME = 'surface_moisture_scale', & - UNITS = 'kg kg-1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) - VERIFY_(STATUS) + call MAPL_AddImportSpec ( GC, & + SHORT_NAME = 'RADSW', & + LONG_NAME = 'air_temperature_tendency_due_to_longwave', & + UNITS = 'K s-1', & + RESTART = gfEnvRestartSkip, & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & + RC=STATUS ) call MAPL_AddImportSpec(GC, & LONG_NAME = '2-meter_air_temperature', & @@ -727,7 +715,7 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddImportSpec(GC, & LONG_NAME = 'sensible_heat_flux', & UNITS = 'W m-2', & @@ -957,7 +945,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'QPTOTLS', & - LONG_NAME = 'mass_fraction_of_large_scale_falling_precip', & + LONG_NAME = 'mass_fraction_of_large_scale_falling_precip', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) @@ -999,7 +987,7 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DVDT ', & LONG_NAME = 'meridional_wind_tendency_due_to_moist', & UNITS = 'm s-2', & @@ -1123,17 +1111,17 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_MFD', & + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'CNV_MFD', & LONG_NAME = 'detraining_mass_flux', & - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzVert, & + UNITS = 'kg m-2 s-1', & + DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_MFC', & + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'CNV_MFC', & LONG_NAME = 'cumulative_mass_flux', & UNITS = 'kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -1142,7 +1130,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_FREQ', & + SHORT_NAME = 'CNV_FREQ', & LONG_NAME = 'convective_frequency', & UNITS = 'fraction', & DIMS = MAPL_DimsHorzOnly, & @@ -1151,7 +1139,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_BASEP', & + SHORT_NAME = 'CNV_BASEP', & LONG_NAME = 'pressure_at_convective_cloud_base', & UNITS = 'Pa', & DIMS = MAPL_DimsHorzOnly, & @@ -1160,7 +1148,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_TOPP', & + SHORT_NAME = 'CNV_TOPP', & LONG_NAME = 'pressure_at_convective_cloud_top', & UNITS = 'Pa', & DIMS = MAPL_DimsHorzOnly, & @@ -1688,7 +1676,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='RL', & + SHORT_NAME ='RL', & LONG_NAME ='liquid_cloud_particle_effective_radius', & UNITS ='m', & DIMS = MAPL_DimsHorzVert, & @@ -1696,7 +1684,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RI', & + SHORT_NAME = 'RI', & LONG_NAME = 'ice_phase_cloud_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & @@ -1704,7 +1692,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RR', & + SHORT_NAME = 'RR', & LONG_NAME = 'falling_rain_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & @@ -1712,7 +1700,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RS', & + SHORT_NAME = 'RS', & LONG_NAME = 'falling_snow_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & @@ -1720,13 +1708,13 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RG', & + SHORT_NAME = 'RG', & LONG_NAME = 'falling_graupel_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME ='NCCN_LIQ', & LONG_NAME ='number_concentration_of_cloud_liquid_particles', & @@ -1742,9 +1730,9 @@ subroutine SetServices ( GC, RC ) DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & - SHORT_NAME ='CLDNCCN', & + SHORT_NAME ='CLDNCCN', & LONG_NAME ='number_concentration_of_cloud_particles', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -1752,7 +1740,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QSATI' , & + SHORT_NAME = 'QSATI' , & LONG_NAME = 'saturation_spec_hum_over_ice', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1760,7 +1748,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QSATL' , & + SHORT_NAME = 'QSATL' , & LONG_NAME = 'saturation_spec_hum_over_liquid', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1768,7 +1756,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'ALPHT' , & + SHORT_NAME = 'ALPHT' , & LONG_NAME = 'pdf_spread_for_condensation_over_qsat_total', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1776,7 +1764,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ALPH1' , & + SHORT_NAME='ALPH1' , & LONG_NAME ='pdf_spread_for_condensation_over_qsat_term1', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -1784,7 +1772,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'ALPH2' , & + SHORT_NAME = 'ALPH2' , & LONG_NAME = 'pdf_spread_for_condensation_over_qsat_term2', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1792,7 +1780,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CFPDFX' , & + SHORT_NAME = 'CFPDFX' , & LONG_NAME = 'cloud_fraction_internal_in_PDF_scheme', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1800,7 +1788,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RHCLR' , & + SHORT_NAME = 'RHCLR' , & LONG_NAME = 'RH_clear_sky', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1808,7 +1796,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CFPDF' , & + SHORT_NAME = 'CFPDF' , & LONG_NAME = 'cloud_fraction_after_PDF', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1816,7 +1804,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FCLD' , & + SHORT_NAME = 'FCLD' , & LONG_NAME = 'cloud_fraction_for_radiation', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1824,7 +1812,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='QV', & + SHORT_NAME ='QV', & LONG_NAME ='water_vapor_for_radiation', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1832,7 +1820,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QL', & + SHORT_NAME = 'QL', & LONG_NAME = 'in_cloud_cloud_liquid_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1840,7 +1828,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QI', & + SHORT_NAME = 'QI', & LONG_NAME = 'in_cloud_cloud_ice_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1848,7 +1836,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QR', & + SHORT_NAME = 'QR', & LONG_NAME = 'Falling_rain_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1856,7 +1844,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QS', & + SHORT_NAME = 'QS', & LONG_NAME = 'Falling_snow_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1944,34 +1932,34 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='LS_PRCP', & + SHORT_NAME ='LS_PRCP', & LONG_NAME ='nonanvil_large_scale_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'AN_PRCP', & + SHORT_NAME = 'AN_PRCP', & LONG_NAME = 'anvil_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='CN_PRCP', & + SHORT_NAME ='CN_PRCP', & LONG_NAME ='deep_convective_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='SC_PRCP', & + SHORT_NAME ='SC_PRCP', & LONG_NAME ='shallow_convective_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2016,10 +2004,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'ER_PRCP', & + SHORT_NAME = 'ER_PRCP', & LONG_NAME = 'spurious_rain_from_RH_cleanup', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2042,26 +2030,26 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='SC_MSE', & + SHORT_NAME ='SC_MSE', & LONG_NAME ='shallow_convective_column_MSE_tendency', & UNITS ='W m-2', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='SC_QT', & + SHORT_NAME ='SC_QT', & LONG_NAME ='shallow_convective_column_QT_tendency', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FILLNQV_IN', & + SHORT_NAME = 'FILLNQV_IN', & LONG_NAME = 'filling_of_negative_Q_on_entry_to_moist', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2074,51 +2062,51 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PGENTOT', & + SHORT_NAME = 'PGENTOT', & LONG_NAME = 'Total_column_production_of_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PREVTOT', & + SHORT_NAME = 'PREVTOT', & LONG_NAME = 'Total_column_re-evap/subl_of_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'LS_ARF', & + SHORT_NAME = 'LS_ARF', & LONG_NAME = 'areal_fraction_of_nonanvil_large_scale_showers',& UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'AN_ARF', & + SHORT_NAME = 'AN_ARF', & LONG_NAME = 'areal_fraction_of_anvil_showers', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CN_ARF', & + SHORT_NAME = 'CN_ARF', & LONG_NAME = 'areal_fraction_of_convective_showers', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SC_ARF', & + SHORT_NAME = 'SC_ARF', & LONG_NAME = 'areal_fraction_of_shallow_showers', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2171,10 +2159,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SNO', & + SHORT_NAME = 'SNO', & LONG_NAME = 'snowfall', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2188,7 +2176,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'PRECTOTAL', & - LONG_NAME = 'precipitation_total', & + LONG_NAME = 'precipitation_total', & UNITS = 'mm', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) @@ -2203,106 +2191,106 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PCU', & + SHORT_NAME = 'PCU', & LONG_NAME = 'liquid_convective_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PLS', & + SHORT_NAME = 'PLS', & LONG_NAME = 'liquid_large_scale_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPREC', & + SHORT_NAME='TPREC', & LONG_NAME ='total_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='HOURNORAIN', & + SHORT_NAME='HOURNORAIN', & LONG_NAME ='time-during_an_hour_with_no_precipitation', & UNITS ='s', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPW', & + SHORT_NAME='TPW', & LONG_NAME ='total_precipitable_water', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCWP', & + SHORT_NAME='CCWP', & LONG_NAME ='grid_mean_conv_cond_water_path_diagnostic', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CWP', & + SHORT_NAME='CWP', & LONG_NAME ='condensed_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CLWP', & + SHORT_NAME='CLWP', & LONG_NAME ='cloud_liquid_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='LWP', & + SHORT_NAME='LWP', & LONG_NAME ='liquid_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='IWP', & + SHORT_NAME='IWP', & LONG_NAME ='ice_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='BYNCY', & + SHORT_NAME='BYNCY', & LONG_NAME ='buoyancy_of surface_parcel', & UNITS ='m s-2', & - DIMS = MAPL_DimsHorzVert, & + DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CAPE', & + SHORT_NAME='CAPE', & LONG_NAME ='cape_for_surface_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='INHB', & + SHORT_NAME='INHB', & LONG_NAME ='inhibition_for_surface_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2356,74 +2344,74 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQ0', & + SHORT_NAME='TVQ0', & LONG_NAME ='Total_Water_Substance_Before', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQ1', & + SHORT_NAME='TVQ1', & LONG_NAME ='Total_Water_Substance_After', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DCPTE', & + SHORT_NAME='DCPTE', & LONG_NAME ='Total_VI_DcpT', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVE0', & + SHORT_NAME='TVE0', & LONG_NAME ='Total_VI_MSE_Before', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVE1', & + SHORT_NAME='TVE1', & LONG_NAME ='Total_VI_MSE_After', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVEX', & + SHORT_NAME='TVEX', & LONG_NAME ='Total_VI_MSE_Somewhere', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZPBLCN', & + SHORT_NAME='ZPBLCN', & LONG_NAME ='boundary_layer_depth', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZLCL', & + SHORT_NAME='ZLCL', & LONG_NAME ='lifting_condensation_level', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZLFC', & + SHORT_NAME='ZLFC', & LONG_NAME ='level_of_free_convection', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2439,15 +2427,15 @@ subroutine SetServices ( GC, RC ) SHORT_NAME='ZCBL', & LONG_NAME ='height_of_cloud_base_layer', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='MXDIAM', & + SHORT_NAME='MXDIAM', & LONG_NAME ='diameter_of_largest_RAS_plume', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2500,10 +2488,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RAS_TIME', & + SHORT_NAME='RAS_TIME', & LONG_NAME ='timescale_for_RAS_plumes', & UNITS ='s' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2547,44 +2535,44 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) -#if 0 +#if 0 ! taken out since they are now friendly to dynamics call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLCN', & LONG_NAME ='mass_fraction_of_convective_cloud_liquid_water', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QICN', & LONG_NAME ='mass_fraction_of_convective_cloud_ice_water', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLLS', & LONG_NAME ='large_scale_cloud_volume_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLCN', & LONG_NAME ='convective_cloud_volume_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) #endif call MAPL_AddExportSpec(GC, & - SHORT_NAME='RH1', & + SHORT_NAME='RH1', & LONG_NAME ='relative_humidity_before_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -2592,7 +2580,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RH2', & + SHORT_NAME='RH2', & LONG_NAME ='relative_humidity_after_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -2601,7 +2589,7 @@ subroutine SetServices ( GC, RC ) !Outputs to give model trajectory in the moist TLM/ADJ call MAPL_AddExportSpec(GC, & - SHORT_NAME='TH_moist', & + SHORT_NAME='TH_moist', & LONG_NAME ='potential_temp_before_moist', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -2609,7 +2597,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='Q_moist', & + SHORT_NAME='Q_moist', & LONG_NAME ='specific_humidity_before_moist', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -2617,7 +2605,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='KCBL_moist', & + SHORT_NAME='KCBL_moist', & LONG_NAME ='KCBL_before_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzOnly, & @@ -2625,7 +2613,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ctop_moist', & + SHORT_NAME='ctop_moist', & LONG_NAME ='ctop_after_ras', & UNITS ='1', & DIMS = MAPL_DimsHorzOnly, & @@ -2633,7 +2621,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TS_moist', & + SHORT_NAME='TS_moist', & LONG_NAME ='surface_temp_before_moist', & UNITS ='K', & DIMS = MAPL_DimsHorzOnly, & @@ -2683,7 +2671,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RHX', & + SHORT_NAME='RHX', & LONG_NAME ='relative_humidity_after_PDF', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -2691,7 +2679,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REVSU_CN', & + SHORT_NAME='REVSU_CN', & LONG_NAME ='evap_subl_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2699,7 +2687,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REVSU_LSAN', & + SHORT_NAME='REVSU_LSAN', & LONG_NAME ='evap_subl_of_non_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2707,7 +2695,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_CN', & + SHORT_NAME='REV_CN', & LONG_NAME ='evaporation_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2715,7 +2703,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_SC', & + SHORT_NAME='REV_SC', & LONG_NAME ='evaporation_of_shallow_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2723,7 +2711,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_AN', & + SHORT_NAME='REV_AN', & LONG_NAME ='evaporation_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2731,7 +2719,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_LS', & + SHORT_NAME='REV_LS', & LONG_NAME ='evaporation_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2739,7 +2727,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_CN', & + SHORT_NAME='RSU_CN', & LONG_NAME ='sublimation_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2747,7 +2735,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_SC', & + SHORT_NAME='RSU_SC', & LONG_NAME ='sublimation_of_shallow_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2755,7 +2743,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_AN', & + SHORT_NAME='RSU_AN', & LONG_NAME ='sublimation_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2763,7 +2751,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_LS', & + SHORT_NAME='RSU_LS', & LONG_NAME ='sublimation_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2771,7 +2759,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACR_TOT', & + SHORT_NAME='ACR_TOT', & LONG_NAME ='total_accretion_of__precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2779,7 +2767,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_CN', & + SHORT_NAME='ACRLL_CN', & LONG_NAME ='liq_liq_accretion_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2787,7 +2775,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_SC', & + SHORT_NAME='ACRLL_SC', & LONG_NAME ='liq_liq_accretion_of_shallow_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2795,7 +2783,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_AN', & + SHORT_NAME='ACRLL_AN', & LONG_NAME ='liq_liq_accretion_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2803,7 +2791,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_LS', & + SHORT_NAME='ACRLL_LS', & LONG_NAME ='liq_liq_accretion_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2811,7 +2799,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_CN', & + SHORT_NAME='ACRIL_CN', & LONG_NAME ='ice_liq_accretion_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2819,7 +2807,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_SC', & + SHORT_NAME='ACRIL_SC', & LONG_NAME ='ice_liq_accretion_of_shallow_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2827,7 +2815,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_AN', & + SHORT_NAME='ACRIL_AN', & LONG_NAME ='ice_liq_accretion_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2835,7 +2823,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_LS', & + SHORT_NAME='ACRIL_LS', & LONG_NAME ='ice_liq_accretion_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2843,7 +2831,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_CN', & + SHORT_NAME='PFI_CN', & LONG_NAME ='3D_flux_of_ice_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2851,7 +2839,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_SC', & + SHORT_NAME='PFI_SC', & LONG_NAME ='3D_flux_of_ice_shallow_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2859,7 +2847,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_AN', & + SHORT_NAME='PFI_AN', & LONG_NAME ='3D_flux_of_ice_anvil_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2867,7 +2855,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_LS', & + SHORT_NAME='PFI_LS', & LONG_NAME ='3D_flux_of_ice_nonanvil_large_scale_precipitation',& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2875,7 +2863,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_LSAN', & + SHORT_NAME='PFI_LSAN', & LONG_NAME ='3D_flux_of_ice_nonconvective_precipitation' ,& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2883,7 +2871,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_CN', & + SHORT_NAME='PFL_CN', & LONG_NAME ='3D_flux_of_liquid_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2891,7 +2879,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_SC', & + SHORT_NAME='PFL_SC', & LONG_NAME ='3D_flux_of_liquid_shallow_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2899,7 +2887,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_AN', & + SHORT_NAME='PFL_AN', & LONG_NAME ='3D_flux_of_liquid_anvil_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2907,7 +2895,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_LS', & + SHORT_NAME='PFL_LS', & LONG_NAME ='3D_flux_of_liquid_nonanvil_large_scale_precipitation',& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2915,7 +2903,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_LSAN', & + SHORT_NAME='PFL_LSAN', & LONG_NAME ='3D_flux_of_liquid_nonconvective_precipitation' ,& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2923,7 +2911,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DPDTMST', & + SHORT_NAME='DPDTMST', & LONG_NAME ='layer_pressure_thickness_tendency_from_moist', & UNITS ='Pa s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2931,7 +2919,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DCNVL', & + SHORT_NAME='DCNVL', & LONG_NAME ='convective_source_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2939,7 +2927,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DCNVI', & + SHORT_NAME='DCNVI', & LONG_NAME ='convective_source_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2947,7 +2935,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DLPDF', & + SHORT_NAME='DLPDF', & LONG_NAME ='pdf_source_sink_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2955,7 +2943,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DIPDF', & + SHORT_NAME='DIPDF', & LONG_NAME ='pdf_source_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2963,7 +2951,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DLFIX', & + SHORT_NAME='DLFIX', & LONG_NAME ='fix_source_sink_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2971,7 +2959,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DIFIX', & + SHORT_NAME='DIFIX', & LONG_NAME ='fix_source_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2979,7 +2967,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='AUT', & + SHORT_NAME='AUT', & LONG_NAME ='autoconv_sink_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2987,7 +2975,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='EVAPC', & + SHORT_NAME='EVAPC', & LONG_NAME ='evaporation_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2995,7 +2983,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SDM', & + SHORT_NAME='SDM', & LONG_NAME ='sedimentation_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3003,7 +2991,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLICE_AN', & + SHORT_NAME='VFALLICE_AN', & LONG_NAME ='autoconversion_fall_velocity_of_anvil_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3011,7 +2999,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLICE_LS', & + SHORT_NAME='VFALLICE_LS', & LONG_NAME ='autoconversion_fall_velocity_of_largescale_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3019,7 +3007,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLWAT_AN', & + SHORT_NAME='VFALLWAT_AN', & LONG_NAME ='autoconversion_fall_velocity_of_anvil_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3027,7 +3015,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLWAT_LS', & + SHORT_NAME='VFALLWAT_LS', & LONG_NAME ='autoconversion_fall_velocity_of_largescale_rain',& UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3035,7 +3023,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_AN', & + SHORT_NAME='VFALLRN_AN', & LONG_NAME ='reevaporation_fall_velocity_of_anvil_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3043,7 +3031,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_LS', & + SHORT_NAME='VFALLRN_LS', & LONG_NAME ='reevaporation_fall_velocity_of_largescale_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3051,7 +3039,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_CN', & + SHORT_NAME='VFALLRN_CN', & LONG_NAME ='reevaporation_fall_velocity_of_convective_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3059,7 +3047,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_SC', & + SHORT_NAME='VFALLRN_SC', & LONG_NAME ='reevaporation_fall_velocity_of_shallow_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3067,7 +3055,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_AN', & + SHORT_NAME='VFALLSN_AN', & LONG_NAME ='reevaporation_fall_velocity_of_anvil_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3075,7 +3063,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_LS', & + SHORT_NAME='VFALLSN_LS', & LONG_NAME ='reevaporation_fall_velocity_of_largescale_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3083,7 +3071,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_CN', & + SHORT_NAME='VFALLSN_CN', & LONG_NAME ='reevaporation_fall_velocity_of_convective_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3091,7 +3079,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_SC', & + SHORT_NAME='VFALLSN_SC', & LONG_NAME ='reevaporation_fall_velocity_of_shallow_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3099,7 +3087,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SUBLC', & + SHORT_NAME='SUBLC', & LONG_NAME ='sublimation_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3107,7 +3095,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZ_TT', & + SHORT_NAME='FRZ_TT', & LONG_NAME ='freezing_of_cloud_condensate', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3115,7 +3103,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZ_PP', & + SHORT_NAME='FRZ_PP', & LONG_NAME ='freezing_of_precip_condensate', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3123,7 +3111,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFRZ', & + SHORT_NAME='PFRZ', & LONG_NAME ='Probability_of_freezing_of_aerosol_part', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -3139,7 +3127,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME='ICEANMOVE', & +!!$ SHORT_NAME='ICEANMOVE', & !!$ LONG_NAME ='move2anv_source_of_anvil_ice', & !!$ UNITS ='kg kg-1 s-1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3147,7 +3135,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME = 'DLSCLD' , & +!!$ SHORT_NAME = 'DLSCLD' , & !!$ LONG_NAME = 'move2anv_change_in_large_scale_cloud_fraction', & !!$ UNITS = '1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3155,7 +3143,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME = 'DANCLD' , & +!!$ SHORT_NAME = 'DANCLD' , & !!$ LONG_NAME = 'move2anv_change_in_anvil_cloud_fraction', & !!$ UNITS = '1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3171,7 +3159,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME='CUSNOWMOVE', & +!!$ SHORT_NAME='CUSNOWMOVE', & !!$ LONG_NAME ='movels2conv_source_of_cnv_snow', & !!$ UNITS ='kg kg-1 s-1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3187,7 +3175,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFICNMOVE', & + SHORT_NAME='PFICNMOVE', & LONG_NAME ='moved_source_of_cnv_snow', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3203,7 +3191,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CU2DSNOWMOVE', & + SHORT_NAME='CU2DSNOWMOVE', & LONG_NAME ='moved_2d_source_of_cnv_snow', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzOnly, & @@ -3214,128 +3202,128 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PDFLZ', & + SHORT_NAME='PDFLZ', & LONG_NAME ='statistical_source_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PDFIZ', & + SHORT_NAME='PDFIZ', & LONG_NAME ='statistical_source_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNVRNZ', & + SHORT_NAME='CNVRNZ', & LONG_NAME ='convective_production_of_rain_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNVLZ', & + SHORT_NAME='CNVLZ', & LONG_NAME ='convective_source_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNVIZ', & + SHORT_NAME='CNVIZ', & LONG_NAME ='convective_source_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='EVPCZ', & + SHORT_NAME='EVPCZ', & LONG_NAME ='evaporation_loss_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SUBCZ', & + SHORT_NAME='SUBCZ', & LONG_NAME ='sublimation_loss_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='EVPPZ', & + SHORT_NAME='EVPPZ', & LONG_NAME ='evaporation_loss_of_precip_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SUBPZ', & + SHORT_NAME='SUBPZ', & LONG_NAME ='sublimation_loss_of_precip_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='AUTZ', & + SHORT_NAME='AUTZ', & LONG_NAME ='autoconversion_loss_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SDMZ', & + SHORT_NAME='SDMZ', & LONG_NAME ='sedimentation_loss_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='COLLLZ', & + SHORT_NAME='COLLLZ', & LONG_NAME ='accretion_loss_of_cloud_water_to_rain', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='COLLIZ', & + SHORT_NAME='COLLIZ', & LONG_NAME ='accretion_loss_of_cloud_water_to_snow', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZCZ', & + SHORT_NAME='FRZCZ', & LONG_NAME ='net_freezing_of_cloud_condensate', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZPZ', & + SHORT_NAME='FRZPZ', & LONG_NAME ='net_freezing_of_precip_condensate', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RCCODE', & + SHORT_NAME='RCCODE', & LONG_NAME ='Convection_return_codes', & UNITS ='codes', & DIMS = MAPL_DimsHorzVert, & @@ -3343,7 +3331,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TRIEDLV', & + SHORT_NAME='TRIEDLV', & LONG_NAME ='Tested_for_convection_at_this_level', & UNITS ='0 or 1', & DIMS = MAPL_DimsHorzVert, & @@ -3353,7 +3341,7 @@ subroutine SetServices ( GC, RC ) ! MATMAT Exports for after-RAS inoutputs call MAPL_AddExportSpec(GC, & - SHORT_NAME='QVRAS', & + SHORT_NAME='QVRAS', & LONG_NAME ='water_vapor_after_ras', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -3361,7 +3349,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='THRAS', & + SHORT_NAME='THRAS', & LONG_NAME ='potential_temperature_after_ras', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -3369,7 +3357,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='URAS', & + SHORT_NAME='URAS', & LONG_NAME ='eastward_wind_after_ras', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3377,7 +3365,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VRAS', & + SHORT_NAME='VRAS', & LONG_NAME ='northward_wind_after_ras', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3387,7 +3375,7 @@ subroutine SetServices ( GC, RC ) ! MATMAT Exports for before-RAS inputs for RAStest call MAPL_AddExportSpec(GC, & - SHORT_NAME='THOI', & + SHORT_NAME='THOI', & LONG_NAME ='potential_temperature_before_ras', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -3395,7 +3383,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QHOI', & + SHORT_NAME='QHOI', & LONG_NAME ='specific_humidity_before_ras', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -3403,7 +3391,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QSSI', & + SHORT_NAME='QSSI', & LONG_NAME ='saturation_specific_humidity_before_ras', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -3411,7 +3399,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQSI', & + SHORT_NAME='DQSI', & LONG_NAME ='deriv_sat_specific_humidity_wrt_t_before_ras',& UNITS ='kg kg-1 K-1', & DIMS = MAPL_DimsHorzVert, & @@ -3419,7 +3407,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PLEI', & + SHORT_NAME='PLEI', & LONG_NAME ='air_pressure_before_ras', & UNITS ='Pa', & DIMS = MAPL_DimsHorzVert, & @@ -3427,7 +3415,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPERTI', & + SHORT_NAME='TPERTI', & LONG_NAME ='temperature_perturbation_before_ras', & UNITS ='K', & DIMS = MAPL_DimsHorzOnly, & @@ -3435,7 +3423,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='KCBLI', & + SHORT_NAME='KCBLI', & LONG_NAME ='cloud_base_layer_before_ras', & UNITS ='1', & DIMS = MAPL_DimsHorzOnly, & @@ -3450,72 +3438,72 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='specific_humidity', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLLSX0', & LONG_NAME ='initial_mass_fraction_of_large_scale_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLLSX1', & LONG_NAME ='final_mass_fraction_of_large_scale_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLCNX0', & LONG_NAME ='initial_mass_fraction_of_convective_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLCNX1', & LONG_NAME ='final_mass_fraction_of_convective_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLLSX0', & LONG_NAME ='large_scale_cloud_area_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLCNX0', & LONG_NAME ='convective_cloud_area_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QILSX0', & LONG_NAME ='initial_mass_fraction_of_large_scale_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QILSX1', & LONG_NAME ='final_mass_fraction_of_large_scale_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -3523,32 +3511,32 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='initial_mass_fraction_of_convective_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QICNX1', & LONG_NAME ='final_mass_fraction_of_convective_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QCCNX0', & LONG_NAME ='initial_mass_fraction_of_convective_cloud_condensate', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QCLSX0', & LONG_NAME ='initial_mass_fraction_of_large_scale_cloud_condensate', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) @@ -3763,7 +3751,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='THAFMOIST', & + SHORT_NAME='THAFMOIST', & LONG_NAME ='potential_temperature_after_all_of_moist', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -3787,7 +3775,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SAFMOIST', & + SHORT_NAME='SAFMOIST', & LONG_NAME ='dry_static_energy_after_all_of_moist', & UNITS ='m+2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -3795,10 +3783,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) - !-------Aerosol Cloud Interactions Diagnostics + !-------Aerosol Cloud Interactions Diagnostics call MAPL_AddExportSpec(GC, & - SHORT_NAME='SMAX_LIQ', & + SHORT_NAME='SMAX_LIQ', & LONG_NAME ='Maximum incloud supersaturation for liquid', & UNITS ='%', & DIMS = MAPL_DimsHorzVert, & @@ -3806,7 +3794,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='WSUB', & + SHORT_NAME='WSUB', & LONG_NAME ='Subgrid Scale in-cloud vertical velocity', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3814,7 +3802,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCN01', & + SHORT_NAME='CCN01', & LONG_NAME ='CCN conc at 0.1 % supersaturation (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -3822,7 +3810,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCN04', & + SHORT_NAME='CCN04', & LONG_NAME ='CCN conc at 0.4 % supersaturation (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -3830,7 +3818,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCN1', & + SHORT_NAME='CCN1', & LONG_NAME ='CCN conc at 1.0 % supersaturation (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -3838,133 +3826,133 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SMAX_ICE', & + SHORT_NAME='SMAX_ICE', & LONG_NAME ='Maximum incloud supersaturation for ice', & UNITS ='%', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CDNC_NUC', & + SHORT_NAME='CDNC_NUC', & LONG_NAME ='Nucleated cloud droplet concentration (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='INC_NUC', & + SHORT_NAME='INC_NUC', & LONG_NAME ='Nucleated ice crystal concentration (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NCPL_VOL', & LONG_NAME ='particle_number_for_liquid_cloud', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NCPI_VOL', & LONG_NAME ='particle_number_for_ice_cloud', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='SO4', & LONG_NAME ='Sulfate number conc.', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='ORG', & LONG_NAME ='Organic number conc. (hydrophilic)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='BCARBON', & LONG_NAME ='Black carbon number conc. (hydrophilic)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='DUST', & LONG_NAME ='Total dust number conc', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='SEASALT', & LONG_NAME ='Total sea number conc', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NHET_NUC', & LONG_NAME ='Nucleated ice crystal concentration by het freezing (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NLIM_NUC', & LONG_NAME ='Limiting IN concentration allowing hom freezing', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SAT_RAT', & + SHORT_NAME='SAT_RAT', & LONG_NAME ='saturation_ratio_after_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQVDT_micro', & + SHORT_NAME='DQVDT_micro', & LONG_NAME ='Q tendency due to microphysics ', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQLDT_micro', & + SHORT_NAME='DQLDT_micro', & LONG_NAME ='QL tendency due to microphysics ', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQIDT_micro', & + SHORT_NAME='DQIDT_micro', & LONG_NAME ='QI tendency due to microphysics ', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME='DQRDT_micro', & @@ -3999,12 +3987,12 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DTDT_micro', & + SHORT_NAME='DTDT_micro', & LONG_NAME ='T tendency due to microphysics ', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME='DUDT_micro', & @@ -4023,24 +4011,24 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQX1', & + SHORT_NAME='TVQX1', & LONG_NAME ='Total_Water_Substance_bef_macro', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQX2', & + SHORT_NAME='TVQX2', & LONG_NAME ='Total_Water_Substance_bef_micro', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RL_MASK', & + SHORT_NAME='RL_MASK', & LONG_NAME ='volumetric_liquid_cloud_particle_volume_radius', & UNITS ='m', & DIMS = MAPL_DimsHorzVert, & @@ -4048,7 +4036,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RI_MASK', & + SHORT_NAME='RI_MASK', & LONG_NAME ='volumetric_ice_cloud_particle_volume_radius', & UNITS ='m', & DIMS = MAPL_DimsHorzVert, & @@ -4056,7 +4044,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='KAPPA', & + SHORT_NAME='KAPPA', & LONG_NAME ='kappa parameter for activation', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4068,23 +4056,23 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='liquid_cloud_area_fraction (LS)', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CFICE', & LONG_NAME ='ice_cloud_area_fraction (LS)', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='RHICE', & LONG_NAME ='Relative humidity wrt ice', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4092,7 +4080,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Relative humidity wrt liquid', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4100,7 +4088,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Effective Freezing RHi', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4109,7 +4097,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Immersion_IN', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4117,7 +4105,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Deposition_IN', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4126,7 +4114,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Immersion IN from dust', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4134,7 +4122,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='deposition IN from dust', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4142,7 +4130,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Supercooled cloud fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4150,11 +4138,11 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Supercooled cloud fraction including snow and rain', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_GW', & + SHORT_NAME='SIGW_GW', & LONG_NAME ='Subgrid Scale vertical velocity variance from GW', & UNITS ='m2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -4162,7 +4150,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_CNV', & + SHORT_NAME='SIGW_CNV', & LONG_NAME ='Subgrid Scale vertical velocity variance from convection', & UNITS ='m2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -4171,7 +4159,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_TURB', & + SHORT_NAME='SIGW_TURB', & LONG_NAME ='Subgrid Scale vertical velocity variance from turbulence', & UNITS ='m2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -4179,7 +4167,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_RC', & + SHORT_NAME='SIGW_RC', & LONG_NAME ='Mean subgrid Scale vertical velocity from rad cooling', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -4187,7 +4175,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNV_FICE', & + SHORT_NAME='CNV_FICE', & LONG_NAME ='Ice fraction in convective tower', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4195,14 +4183,14 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNV_NDROP', & + SHORT_NAME='CNV_NDROP', & LONG_NAME ='Droplet number conc. in conv. detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - - + + call MAPL_AddExportSpec(GC, & SHORT_NAME='NWFA', & LONG_NAME ='Number concentration of water-friendly aerosol', & @@ -4213,7 +4201,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNV_NICE', & + SHORT_NAME='CNV_NICE', & LONG_NAME ='Ice crystal number conc. in conv. detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -4221,7 +4209,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SC_NDROP', & + SHORT_NAME='SC_NDROP', & LONG_NAME ='Droplet number conc. in shallow detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -4229,7 +4217,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SC_NICE', & + SHORT_NAME='SC_NICE', & LONG_NAME ='Ice crystal number conc. in shallow detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -4237,7 +4225,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPERT_SC', & + SHORT_NAME='TPERT_SC', & LONG_NAME ='Shallow_convection_source_air_temperature_perturbation', & UNITS ='K', & DIMS = MAPL_DimsHorzOnly, & @@ -4245,7 +4233,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QPERT_SC', & + SHORT_NAME='QPERT_SC', & LONG_NAME ='Shallow_convection_source_air_humidity_perturbation', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzOnly, & @@ -4253,7 +4241,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RHCmicro', & + SHORT_NAME='RHCmicro', & LONG_NAME ='Corrected RHc after micro', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4261,26 +4249,26 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCNCOLUMN', & + SHORT_NAME='CCNCOLUMN', & LONG_NAME ='Vertically integrated CCN at 1% ssat', & UNITS ='m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NDCOLUMN', & + SHORT_NAME='NDCOLUMN', & LONG_NAME ='Vertically integrated NCPL', & UNITS ='m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCCOLUMN', & + SHORT_NAME='NCCOLUMN', & LONG_NAME ='Vertically integrated NCPI', & UNITS ='m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -4289,7 +4277,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='ice mixing ration tendency due to Bergeron process ', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4297,7 +4285,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Snow mixing ration tendency due to Bergeron process ', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4305,7 +4293,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Melting of cloud ice', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4314,7 +4302,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Residual cloud tendency in micro', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4322,11 +4310,11 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Residual ice cloud tendency in micro', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='AUTICE', & + SHORT_NAME='AUTICE', & LONG_NAME ='autoconv_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -4339,7 +4327,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='T tendency from ras precip', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4348,7 +4336,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to immersion freezing', & UNITS ='Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4357,7 +4345,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to contact freezing', & UNITS ='Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4377,12 +4365,12 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DTDT_macro', & + SHORT_NAME='DTDT_macro', & LONG_NAME ='T tendency due to macrophysics ', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME='DQVDT_macro', & @@ -4501,7 +4489,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Tendency in T from micro precip freezing', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4509,7 +4497,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Tendency in T from micro snow melting', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4518,7 +4506,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to nucleation on aerosol', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4527,7 +4515,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to H-M splittering', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4535,7 +4523,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to sublimation', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4543,7 +4531,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to autoconversion to snow', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4551,7 +4539,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to accretion by snow', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4560,7 +4548,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice crystal number tendency from convective detrainment', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4569,7 +4557,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to activation', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4577,7 +4565,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to accretion by snow', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4586,7 +4574,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to evaporation', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4594,7 +4582,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to accretion by rain', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4602,7 +4590,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to autoconversion', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4611,50 +4599,50 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency from convective detrainment', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CLDREFFL_TOP', & + SHORT_NAME='CLDREFFL_TOP', & LONG_NAME ='Droplet effective radius at cloud top', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CLDREFFI_TOP', & + SHORT_NAME='CLDREFFI_TOP', & LONG_NAME ='ice crystal effective radius at cloud top', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCPL_TOP', & + SHORT_NAME='NCPL_TOP', & LONG_NAME ='Grid-averaged NCPL at cloud top', & UNITS ='m-3' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCPI_TOP', & + SHORT_NAME='NCPI_TOP', & LONG_NAME ='Grid-averaged NCPI at cloud top', & UNITS ='m-3' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCPL_CLDBASE', & + SHORT_NAME='NCPL_CLDBASE', & LONG_NAME ='IN-CLOUD NCPL at cloud base', & UNITS ='m-3' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & @@ -4674,33 +4662,33 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QCVAR_EXP', & + SHORT_NAME='QCVAR_EXP', & LONG_NAME ='inverse relative variance of cloud water', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - - + + call MAPL_AddExportSpec(GC, & - SHORT_NAME='LTS', & + SHORT_NAME='LTS', & LONG_NAME ='Lower tropospheric stability', & UNITS ='K', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & - SHORT_NAME='EIS', & + SHORT_NAME='EIS', & LONG_NAME ='Estimated Inversion Strength', & UNITS ='K', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - - + + call MAPL_AddExportSpec(GC, & - SHORT_NAME='RAS_ALPHA', & + SHORT_NAME='RAS_ALPHA', & LONG_NAME ='RAS relaxation parameter', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4708,29 +4696,13 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RAS_TAU', & + SHORT_NAME='RAS_TAU', & LONG_NAME ='RAS total relaxation timescale', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'DTDT_BL', & - LONG_NAME = 'tendency_of_air_temperature_due_to_bound_layer', & - UNITS = 'K s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'DQDT_BL', & - LONG_NAME = 'tendency_of_spec_humidity_due_to_bound_layer', & - UNITS = 'kg kg-1 s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DNDDT ', & LONG_NAME = 'total_liq_droplet_number_tendency_due_to_moist', & @@ -4748,7 +4720,7 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationCenter, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DQDT_GF', & LONG_NAME = 'tendency_of_spec_humidity_due_GF', & @@ -4860,7 +4832,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'ERRDP', & - LONG_NAME = 'convection_code_deep_GF', & + LONG_NAME = 'convection_code_deep_GF', & UNITS = '1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4868,7 +4840,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'ERRSH', & - LONG_NAME = 'convection_code_shallow_GF', & + LONG_NAME = 'convection_code_shallow_GF', & UNITS = '1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4876,7 +4848,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'ERRMD', & - LONG_NAME = 'convection_code_mid_GF', & + LONG_NAME = 'convection_code_mid_GF', & UNITS = '1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4884,7 +4856,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA0', & - LONG_NAME = 'cloud work function 0', & + LONG_NAME = 'cloud work function 0', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4893,7 +4865,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA1', & - LONG_NAME = 'cloud work function 1', & + LONG_NAME = 'cloud work function 1', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4902,7 +4874,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA2', & - LONG_NAME = 'cloud work function 2', & + LONG_NAME = 'cloud work function 2', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4911,16 +4883,16 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA3', & - LONG_NAME = 'cloud work function 3', & + LONG_NAME = 'cloud work function 3', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA1_CIN', & - LONG_NAME = 'cloud work function CIN', & + LONG_NAME = 'cloud work function CIN', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4929,25 +4901,25 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA1_BL', & - LONG_NAME = 'Bound layer AA1', & + LONG_NAME = 'Bound layer AA1', & UNITS = 'J kg-1 s-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'TAU_BL', & - LONG_NAME = 'Bound layer time scale', & + LONG_NAME = 'Bound layer time scale', & UNITS = 's', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'TAU_EC', & - LONG_NAME = 'cape removal time scale', & + LONG_NAME = 'cape removal time scale', & UNITS = 's', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4955,26 +4927,26 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPWI', & + SHORT_NAME='TPWI', & LONG_NAME ='initial_total_precipitable_water', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPWI_star', & + SHORT_NAME='TPWI_star', & LONG_NAME ='saturation_initial_total_precipitable_water', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='LFR_GF', & + SHORT_NAME='LFR_GF', & LONG_NAME ='lightning_flash_density ', & UNITS ='km-2 day-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -4986,7 +4958,7 @@ subroutine SetServices ( GC, RC ) call MAPL_TimerAdd(GC,name="---CONV_TRACERS" ,RC=STATUS) VERIFY_(STATUS) call MAPL_TimerAdd(GC,name="---AERO_ACTIVATE" ,RC=STATUS) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_TimerAdd(GC,name="---CLDMACRO" ,RC=STATUS) VERIFY_(STATUS) call MAPL_TimerAdd(GC,name="---CLDMACRO" ,RC=STATUS) @@ -5022,16 +4994,16 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) ! !ARGUMENTS: - type(ESMF_GridComp), intent(inout) :: GC ! Gridded component + type(ESMF_GridComp), intent(inout) :: GC ! Gridded component type(ESMF_State), intent(inout) :: IMPORT ! Import state type(ESMF_State), intent(inout) :: EXPORT ! Export state type(ESMF_Clock), intent(inout) :: CLOCK ! The clock integer, optional, intent( out) :: RC ! Error code - ! !DESCRIPTION: The Initialize method of the Moist Physics Gridded Component first + ! !DESCRIPTION: The Initialize method of the Moist Physics Gridded Component first ! calls the Initialize method of the child Dynamics. The Dynamics Initialize method will ! create the ESMF GRID, which will then be used to set the GRID associated with the - ! SuperDyn Composite Component itself. It should be noted that the + ! SuperDyn Composite Component itself. It should be noted that the ! SuperDyn Initialize method also invokes the GEOS Topo Utility which creates all ! topography related quantities. @@ -5056,7 +5028,7 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) !============================================================================= - ! Begin... + ! Begin... ! Get the target components name and set-up traceback handle. ! ----------------------------------------------------------- @@ -5089,9 +5061,10 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetResource( MAPL, USE_AERO_BUFFER , 'USE_AERO_BUFFER:' , DEFAULT=.TRUE. , RC=STATUS); VERIFY_(STATUS) call aer_cloud_init() call WRITE_PARALLEL ("INITIALIZED aer_cloud_init") + else + call MAPL_GetResource( MAPL, CCN_OCN, 'NCCN_OCN:', DEFAULT= 100., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 + call MAPL_GetResource( MAPL, CCN_LND, 'NCCN_LND:', DEFAULT= 300., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 endif - call MAPL_GetResource( MAPL, CCN_OCN, 'NCCN_OCN:', DEFAULT= 100., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 - call MAPL_GetResource( MAPL, CCN_LND, 'NCCN_LND:', DEFAULT= 300., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 if (adjustl(CONVPAR_OPTION)=="RAS" ) call RAS_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) if (adjustl(CONVPAR_OPTION)=="GF" ) call GF_Initialize(MAPL, CLOCK, RC=STATUS) ; VERIFY_(STATUS) @@ -5119,7 +5092,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! !ARGUMENTS: - type(ESMF_GridComp), intent(inout) :: GC ! Gridded component + type(ESMF_GridComp), intent(inout) :: GC ! Gridded component type(ESMF_State), intent(inout) :: IMPORT ! Import state type(ESMF_State), intent(inout) :: EXPORT ! Export state type(ESMF_Clock), intent(inout) :: CLOCK ! The clock @@ -5167,7 +5140,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) type(ESMF_State) :: AERO type(ESMF_FieldBundle) :: TR ! Exports - real, pointer, dimension(:,:,:) :: DQDT, DQADT, DQIDT, DQLDT, DQRDT, DQSDT, DQGDT + real, pointer, dimension(:,:,:) :: DQDT, DQADT, DQIDT, DQLDT, DQRDT, DQSDT, DQGDT real, pointer, dimension(:,:,:) :: DTDT, DUDT, DVDT, DWDT real, pointer, dimension(:,:,:) :: DPDTMST, PFL_LSAN, PFI_LSAN real, pointer, dimension(:,:,:) :: DTDT_ER, DQVDT_ER @@ -5180,7 +5153,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:,: ) :: NWFA real, pointer, dimension(:,:,:) :: PTR3D real, pointer, dimension(:,: ) :: PTR2D - + integer :: IM,JM,LM @@ -5188,7 +5161,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) !============================================================================= - ! Begin... + ! Begin... ! Get my name and set-up traceback handle ! --------------------------------------- @@ -5263,7 +5236,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) end where ! Allocatables - ! Edge variables + ! Edge variables ALLOCATE ( ZLE0 (IM,JM,0:LM) ) ALLOCATE ( PLEmb(IM,JM,0:LM) ) ALLOCATE ( PKE (IM,JM,0:LM) ) @@ -5275,7 +5248,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ALLOCATE ( DQST3(IM,JM,LM ) ) ALLOCATE ( QST3(IM,JM,LM ) ) ALLOCATE ( MASS (IM,JM,LM ) ) - ALLOCATE ( TMP3D(IM,JM,LM ) ) + ALLOCATE ( TMP3D(IM,JM,LM ) ) ALLOCATE ( TMP2D(IM,JM ) ) ! Save input winds @@ -5301,7 +5274,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) DQST3 = GEOS_DQSAT(T, PLmb, QSAT=QST3) ! These may be used by children - call MAPL_GetPointer(EXPORT, NWFA, 'NWFA', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, NWFA, 'NWFA', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, CNV_FRC, 'CNV_FRC', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, BYNCY, 'BYNCY' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, CAPE, 'CAPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) @@ -5316,7 +5289,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(EXPORT, LNB, 'ZLNB' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call BUOYANCY2( IM, JM, LM, T, Q, QST3, DQST3, DZET, ZL0, PLmb, PLEmb(:,:,LM), SBCAPE, MLCAPE, MUCAPE, SBCIN, MLCIN, MUCIN, BYNCY, LFC, LNB ) call BUOYANCY( T, Q, QST3, DQST3, DZET, ZL0, BYNCY, CAPE, INHB) - + CNV_FRC = 0.0 if( CNV_FRACTION_MAX > CNV_FRACTION_MIN ) then WHERE (CAPE .ne. MAPL_UNDEF) @@ -5368,8 +5341,8 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Exports ! Cloud fraction exports - - + + call MAPL_GetPointer(EXPORT, CFICE, 'CFICE', ALLOC=.true., RC=STATUS); VERIFY_(STATUS) if (associated(CFICE)) then CFICE=0.0 @@ -5416,12 +5389,12 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) PTR3D = 1.0 end where endif - - if (.FALSE.) then + + if (.FALSE.) then QST3 = GEOS_QsatLQU (T, PLmb*100.0, DQ=DQST3) !clean up only with respect to liquid water else DQST3 = GEOS_DQSAT (T, PLmb, QSAT=QST3) ! this qsat function expects hPa... - end if + end if call MAPL_GetPointer(EXPORT, PTR3D, 'RHLIQ', RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = Q/QST3 @@ -5448,7 +5421,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (USE_AEROSOL_NN) then deallocate ( AeroProps ) endif - + ! Export Total Moist Tendencies @@ -5752,14 +5725,14 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) endif endif - ! Diagnostic precip types: + ! Diagnostic precip types: call MAPL_GetPointer(EXPORT, ICE, 'ICE', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, FRZR, 'FRZR', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (LUPDATE_PRECIP_TYPE .OR. LDIAGNOSE_PRECIP_TYPE) then call MAPL_GetPointer(EXPORT, PTYPE, 'PTYPE', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call DIAGNOSE_PRECIP_TYPE(IM, JM, LM, TPREC, PLS, PCU, RAIN, SNOW, ICE, FRZR, & PTYPE, PLE, T/PK, PK, PKE, ZL0, LUPDATE_PRECIP_TYPE) - endif + endif ! Get Kuchera snow:rain ratios do I = 1,IM do J = 1,JM @@ -5859,7 +5832,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(IMPORT, V, 'V' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, T, 'T' , RC=STATUS); VERIFY_(STATUS) ! Allocatables - ! Edge variables + ! Edge variables ALLOCATE ( ZLE0 (IM,JM,0:LM) ) ALLOCATE ( PLEmb(IM,JM,0:LM) ) ! Layer variables @@ -5891,20 +5864,20 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(EXPORT, PTR3D, 'TAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = T - + call MAPL_GetPointer(EXPORT, PTR3D, 'QAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = Q - + call MAPL_GetPointer(EXPORT, PTR3D, 'THAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = T/PK - + call MAPL_GetPointer(EXPORT, PTR3D, 'SAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) then do L=1,LM PTR3D(:,:,L) = MAPL_CP*T(:,:,L) + MAPL_GRAV*(ZL0(:,:,L)+ZLE(:,:,LM)) enddo endif - + call MAPL_GetPointer(EXPORT, PTR3D, 'RH2', RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = MAX(MIN( Q/GEOS_QSAT (T, PLmb) , 1.02 ),0.0) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/cloudnew.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/cloudnew.F90 index 56d47cfdb..af96a80df 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/cloudnew.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/cloudnew.F90 @@ -102,7 +102,6 @@ module cloudnew real, allocatable, dimension(:,:), device :: QDDF3_dev real, allocatable, dimension(: ), device :: CNVFRC_dev real, allocatable, dimension(: ), device :: SRFTYPE_dev - real, allocatable, dimension(: ), device :: TROPP_dev ! Inoutputs ! --------- @@ -462,7 +461,6 @@ subroutine progno_cloud( & QDDF3_dev , & CNVFRC_dev , & SRFTYPE_dev , & - TROPP_dev , & RHX_dev , & REV_LS_dev , & REV_AN_dev , & @@ -580,7 +578,6 @@ subroutine progno_cloud( & real, intent(in ), dimension(IRUN, LM) :: QDDF3_dev ! QDDF3 real, intent(in ), dimension(IRUN) :: CNVFRC_dev ! CNV_FRACTION real, intent(in ), dimension(IRUN) :: SRFTYPE_dev - real, intent(in ), dimension(IRUN) :: TROPP_dev ! TROPP real, intent( out), dimension(IRUN, LM) :: RHX_dev ! RHX real, intent( out), dimension(IRUN, LM) :: REV_LS_dev ! REV_LS @@ -1012,7 +1009,7 @@ subroutine progno_cloud( & end if call pdf_spread ( & - PP_dev(I,K),PPE_dev(I,LM),TROPP_dev(I),& + PP_dev(I,K),PPE_dev(I,LM),& minrhcrit(I), maxrhcrit(I), turnrhcrit(I),& ALPHA, ALPHT_dev(I,K) ) @@ -1273,7 +1270,6 @@ subroutine progno_cloud( & PP_dev(I,K) , & TEMP , & ANVFRC_dev(I,K), & - TROPP_dev(I) , & VFALLICE_AN_dev(I,K), & ICE_SETTLE , & ANV_ICEFALL_C, LS_ICEFALL_C, CNVFRC_dev(I) ) @@ -1293,7 +1289,6 @@ subroutine progno_cloud( & PP_dev(I,K) , & TEMP , & CLDFRC_dev(I,K), & - TROPP_dev(I) , & VFALLICE_LS_dev(I,K), & ICE_SETTLE , & ANV_ICEFALL_C, LS_ICEFALL_C, CNVFRC_dev(I) ) @@ -1734,19 +1729,17 @@ END SUBROUTINE PROGNO_CLOUD #ifdef _CUDA attributes(device) & #endif - subroutine pdf_spread (PP,PPsfc,TROPP, & + subroutine pdf_spread (PP,PPsfc, & minrhcrit, maxrhcrit, turnrhcrit, & ALPHA, ALPHT_DIAG) - real, intent(in) :: PP,PPsfc,TROPP + real, intent(in) :: PP,PPsfc real, intent(in) :: minrhcrit, maxrhcrit, turnrhcrit real, intent(out) :: ALPHA real, intent(out) :: ALPHT_DIAG real :: a1, Al, Au, TURNRHCRIT_UP -#define OLD_RHCRIT -#ifdef OLD_RHCRIT ! alpha is the 1/2*width so RH_crit=1.0-alpha ! Use Slingo-Ritter (1985) formulation for critical relative humidity @@ -1764,29 +1757,6 @@ subroutine pdf_spread (PP,PPsfc,TROPP, & alpha = 1. - a1 ALPHA = MIN( ALPHA , 0.25 ) ! restrict RHcrit to > 75% -#else - ! Use Slingo-Ritter (1985) formulation for critical relative humidity - ! lower turn from maxrhcrit - if (pp .le. TURNRHCRIT) then - Al = minrhcrit - else - Al = minrhcrit + (maxrhcrit-minrhcrit)/(19.) * & - ((atan( (2.*(pp-TURNRHCRIT)/(PPsfc-TURNRHCRIT)-1.) * & - tan(20.*MAPL_PI/21.-0.5*MAPL_PI) ) + 0.5*MAPL_PI) * 21./MAPL_PI - 1.) - endif - ! upper turn back to maxrhcrit - TURNRHCRIT_UP = TROPP/100.0 ! Pa to mb - IF (TURNRHCRIT_UP == MAPL_UNDEF) TURNRHCRIT_UP = 100. - if (pp .le. TURNRHCRIT_UP) then - Au = maxrhcrit - else - Au = maxrhcrit - (maxrhcrit-minrhcrit)/(19.) * & - ((atan( (2.*(pp-TURNRHCRIT_UP)/(TURNRHCRIT-TURNRHCRIT_UP)-1.) * & - tan(20.*MAPL_PI/21.-0.5*MAPL_PI) ) + 0.5*MAPL_PI) * 21./MAPL_PI - 1.) - endif - ! combine and limit - ALPHA = min( 0.25, 1.0 - min(max(Al,Au),1.) ) ! restrict RHcrit to > 75% -#endif ALPHT_DIAG = ALPHA @@ -2940,10 +2910,10 @@ end subroutine ICEFALL #ifdef _CUDA attributes(device) & #endif - subroutine SETTLE_VEL( QI, PL, TE, CF, TROPP_Pa, VF, ICE_SETTLE, LARGESCALE, ANVIL, CNVFRC ) + subroutine SETTLE_VEL( QI, PL, TE, CF, VF, ICE_SETTLE, LARGESCALE, ANVIL, CNVFRC ) real, intent(in ) :: TE - real, intent(in ) :: QI, CF, PL, TROPP_Pa + real, intent(in ) :: QI, CF, PL real, intent(out ) :: VF real, intent(in) :: ANVIL, LARGESCALE, CNVFRC @@ -3052,25 +3022,21 @@ subroutine SETTLE_VEL( QI, PL, TE, CF, TROPP_Pa, VF, ICE_SETTLE, LARGESCALE, ANV END SELECT ! ! -- include stratospheric ice cloud settling adjustment - ! VF = PSC_ICE_SETTLE_VEL(VF, QI, RHO, TE, PL, TROPP_Pa) + ! VF = PSC_ICE_SETTLE_VEL(VF, QI, RHO, TE, PL ) end SUBROUTINE SETTLE_VEL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -FUNCTION PSC_ICE_SETTLE_VEL(VF, QI, RHO, TE, PL, TROPP_Pa) RESULT(VF_PSC) +FUNCTION PSC_ICE_SETTLE_VEL(VF, QI, RHO, TE, PL ) RESULT(VF_PSC) - real, intent(in ) :: VF, QI, RHO, TE, PL, TROPP_Pa + real, intent(in ) :: VF, QI, RHO, TE, PL REAL :: VF_PSC REAL :: ricecm,ndensice,h2ocond REAL :: rmedice,radius,rhoi,mdens,mfp,dynvis,wgt1,wgt2,tpp_hPa -! Change TROPP_Pa from Pa to hPa to match units of PL - tpp_hPa = TROPP_Pa/100. - -! If tropopause pressure is undefined set equal to 100. hPa - IF (TROPP_Pa == MAPL_UNDEF) tpp_hPa = 100. + tpp_hPa = 100. IF( (PL < tpp_hPa) .AND.(QI > 0.) ) THEN mdens = (RHO/1000.)*MAPL_AVOGAD*1.00E-06/MAPL_AIRMW h2ocond = mdens*QI*MAPL_AIRMW/MAPL_H2OMW From fe145a2a96cf7a3a0deaf468964d154a8c6ee521 Mon Sep 17 00:00:00 2001 From: William Putman Date: Tue, 4 Apr 2023 10:31:41 -0400 Subject: [PATCH 18/43] updated GF2020 options, GFDL and GWD adjustments --- .../GEOSgwd_GridComp/ncar_gwd/gw_convect.F90 | 10 +- .../GEOSgwd_GridComp/ncar_gwd/gw_rdg.F90 | 6 - .../GEOSmoist_GridComp/ConvPar_GF2020.F90 | 4 +- .../GEOS_GFDL_1M_InterfaceMod.F90 | 4 +- .../GEOS_GF_InterfaceMod.F90 | 42 ++-- .../GEOS_UW_InterfaceMod.F90 | 7 +- .../gfdl_cloud_microphys.F90 | 195 +++++++++--------- 7 files changed, 142 insertions(+), 126 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/ncar_gwd/gw_convect.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/ncar_gwd/gw_convect.F90 index 0798f87a3..f245a8f08 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/ncar_gwd/gw_convect.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/ncar_gwd/gw_convect.F90 @@ -596,6 +596,14 @@ subroutine gw_beres_ifc( band, & effgw = 0.0 end where +!GEOS pressure scaling near model top + zfac_layer = 1.0e2 ! 1mb + do k=1,pver+1 + do i=1,ncol + pint_adj(i,k) = MIN(1.0,MAX(0.0,(pint(i,k)/zfac_layer)**3)) + enddo + enddo + do k = 0, pver ! spectrum source index if (pref(k+1) < desc%spectrum_source) desc%k(:) = k+1 @@ -611,7 +619,7 @@ subroutine gw_beres_ifc( band, & src_level, tend_level, dt, t, & piln, rhoi, nm, ni, ubm, ubi, xv, yv, & c, kvtt, tau, utgw, vtgw, & - ttgw, gwut, alpha) + ttgw, gwut, alpha, tau_adjust=pint_adj) ! Apply efficiency and limiters call energy_momentum_adjust(ncol, pver, band, pint, delp, u, v, dt, c, tau, & diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/ncar_gwd/gw_rdg.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/ncar_gwd/gw_rdg.F90 index 6a003b9f4..fab1e67c9 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/ncar_gwd/gw_rdg.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/ncar_gwd/gw_rdg.F90 @@ -297,12 +297,6 @@ subroutine gw_rdg_ifc( band, & pint_adj(i,k) = MIN(1.0,MAX(0.0,(pint(i,k)/zfac_layer)**3)) enddo enddo -! AVOID this code in favor of tndmax limiter -! adjust strength from surface (1.0) to 10,000m (0.1) -! do k=1,pver+1 -! pint_adj(:,k)= 0.1 + PINTADJ_0 * ((ATAN((2.*(z+zi(:,k)-2500.0)/(-2500.0)-1.) * PINTADJ_1) + PINTADJ_2) * PINTADJ_3 - 1.) -! enddo -! AVOID this code in favor of tndmax limiter isoflag = 0 diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 index 4af51aa79..d22277222 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 @@ -2313,8 +2313,8 @@ SUBROUTINE CUP_gf(its,ite,kts,kte ,itf,ktf, mtp, nmp & ierrc(i)='scale_dep renders convection insignificant' endif if(ierr(i) /= 0) cycle - !sig(i)= 1.0-0.9839*exp(-0.09835*(dx(i)/1000.)) ! Arakawa 2011 sigma - sig(i)= 1.0-0.9900*exp(-0.12500*(dx(i)/3000.)) ! Modified from Arakawa 2011 sigma + sig(i)= 1.0-0.9839*exp(-0.09835*(dx(i)/1000.)) ! Arakawa 2011 sigma + !sig(i)= 1.0-0.9900*exp(-0.12500*(dx(i)/3000.)) ! Modified from Arakawa 2011 sigma if (stochastic_sig(i) /= 1.0) then sig(i) = sig(i)**(stochastic_sig(i)*MAX(1.0,sig(i))) endif diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index c3953ab2d..7a0bec0a5 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -246,11 +246,11 @@ subroutine GFDL_1M_Initialize (MAPL, RC) call MAPL_GetResource( MAPL, MAX_RL , 'MAX_RL:' , DEFAULT=60.0e-6, RC=STATUS); VERIFY_(STATUS) CCW_EVAP_EFF = 4.e-3 - if (do_evap) CCW_EVAP_EFF = 0.0 ! Evap done inside of GFDL + !!! if (do_evap) CCW_EVAP_EFF = 0.0 ! Evap done inside of GFDL call MAPL_GetResource( MAPL, CCW_EVAP_EFF, 'CCW_EVAP_EFF:', DEFAULT= CCW_EVAP_EFF, RC=STATUS); VERIFY_(STATUS) CCI_EVAP_EFF = 4.e-3 - if (do_subl) CCI_EVAP_EFF = 0.0 ! Subl done inside of GFDL + !!! if (do_subl) CCI_EVAP_EFF = 0.0 ! Subl done inside of GFDL call MAPL_GetResource( MAPL, CCI_EVAP_EFF, 'CCI_EVAP_EFF:', DEFAULT= CCI_EVAP_EFF, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, CNV_FRACTION_MIN, 'CNV_FRACTION_MIN:', DEFAULT= 0.0, RC=STATUS); VERIFY_(STATUS) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 index 5c9ec7f25..61e2fc010 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 @@ -126,12 +126,12 @@ subroutine GF_Initialize (MAPL, CLOCK, RC) call MAPL_GetResource(MAPL, CLOSURE_CHOICE(MID) , 'CLOSURE_CONGESTUS:' ,default= 3, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_ENTR_RATE(DEEP) , 'ENTR_DP:' ,default= 1.e-4,RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_ENTR_RATE(SHAL) , 'ENTR_SH:' ,default= 2.e-3,RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_ENTR_RATE(MID) , 'ENTR_MD:' ,default= 5.e-4,RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_ENTR_RATE(MID) , 'ENTR_MD:' ,default= 9.e-4,RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_FADJ_MASSFLX(DEEP) , 'FADJ_MASSFLX_DP:' ,default= 1.0, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_FADJ_MASSFLX(SHAL) , 'FADJ_MASSFLX_SH:' ,default= 1.0, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_FADJ_MASSFLX(MID) , 'FADJ_MASSFLX_MD:' ,default= 0.5, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_FADJ_MASSFLX(MID) , 'FADJ_MASSFLX_MD:' ,default= 1.0, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, USE_TRACER_TRANSP , 'USE_TRACER_TRANSP:' ,default= 1, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, USE_TRACER_SCAVEN , 'USE_TRACER_SCAVEN:' ,default= 1, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, USE_TRACER_SCAVEN , 'USE_TRACER_SCAVEN:' ,default= 2, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, USE_SCALE_DEP , 'USE_SCALE_DEP:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, USE_MOMENTUM_TRANSP , 'USE_MOMENTUM_TRANSP:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, DICYCLE , 'DICYCLE:' ,default= 1, RC=STATUS );VERIFY_(STATUS) @@ -160,8 +160,8 @@ subroutine GF_Initialize (MAPL, CLOCK, RC) call MAPL_GetResource(MAPL, STOCH_BOT , 'STOCH_BOT:' ,default= 0.75, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource(MAPL, STOCHASTIC_CNV , 'STOCHASTIC_CNV:' ,default= .FALSE.,RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource(MAPL, GF_MIN_AREA , 'GF_MIN_AREA:' ,default= 0.00, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, TAU_MID , 'TAU_MID:' ,default= 5400., RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, TAU_DEEP , 'TAU_DEEP:' ,default= 10800.,RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, TAU_MID , 'TAU_MID:' ,default= 3600., RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, TAU_DEEP , 'TAU_DEEP:' ,default= 5400., RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CLEV_GRID , 'CLEV_GRID:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, VERT_DISCR , 'VERT_DISCR:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, USE_FCT , 'USE_FCT:' ,default= 1, RC=STATUS );VERIFY_(STATUS) @@ -170,10 +170,10 @@ subroutine GF_Initialize (MAPL, CLOCK, RC) call MAPL_GetResource(MAPL, USE_REBCB , 'USE_REBCB:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, AUTOCONV , 'AUTOCONV:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, LAMBAU_DEEP , 'LAMBAU_DEEP:' ,default= 0.0, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL ,MOIST_TRIGGER , 'MOIST_TRIGGER:' ,default= 0, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL ,MOIST_TRIGGER , 'MOIST_TRIGGER:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, SGS_W_TIMESCALE , 'SGS_W_TIMESCALE:' ,default= 0, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL ,FRAC_MODIS , 'FRAC_MODIS:' ,default= 1, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL ,USE_SMOOTH_PROF , 'USE_SMOOTH_PROF:' ,default= 0, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL ,USE_SMOOTH_PROF , 'USE_SMOOTH_PROF:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL ,EVAP_FIX , 'EVAP_FIX:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, ADV_TRIGGER , 'ADV_TRIGGER:' ,default= 0, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_AVE_LAYER(DEEP) , 'AVE_LAYER_DP:' ,default= 40., RC=STATUS );VERIFY_(STATUS) @@ -194,24 +194,24 @@ subroutine GF_Initialize (MAPL, CLOCK, RC) call MAPL_GetResource(MAPL, QRC_CRIT , 'QRC_CRIT:' ,default= 1.0e-4,RC=STATUS );VERIFY_(STATUS) endif call MAPL_GetResource(MAPL, C1 , 'C1:' ,default= 0., RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_HEI_DOWN_LAND(DEEP) , 'HEI_DOWN_LAND_DP:' ,default= 0.65, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_HEI_DOWN_LAND(DEEP) , 'HEI_DOWN_LAND_DP:' ,default= 0.3, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_HEI_DOWN_LAND(SHAL) , 'HEI_DOWN_LAND_SH:' ,default= 0.0, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_HEI_DOWN_LAND(MID) , 'HEI_DOWN_LAND_MD:' ,default= 0.65, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_HEI_DOWN_OCEAN(DEEP) , 'HEI_DOWN_OCEAN_DP:' ,default= 0.65, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_HEI_DOWN_LAND(MID) , 'HEI_DOWN_LAND_MD:' ,default= 0.3, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_HEI_DOWN_OCEAN(DEEP) , 'HEI_DOWN_OCEAN_DP:' ,default= 0.6, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_HEI_DOWN_OCEAN(SHAL) , 'HEI_DOWN_OCEAN_SH:' ,default= 0.0, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_HEI_DOWN_OCEAN(MID) , 'HEI_DOWN_OCEAN_MD:' ,default= 0.5, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_HEI_UPDF_LAND(DEEP) , 'HEI_UPDF_LAND_DP:' ,default= 0.35, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_HEI_UPDF_LAND(SHAL) , 'HEI_UPDF_LAND_SH:' ,default= 0.10, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_HEI_UPDF_LAND(MID) , 'HEI_UPDF_LAND_MD:' ,default= 0.35, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_HEI_UPDF_OCEAN(DEEP) , 'HEI_UPDF_OCEAN_DP:' ,default= 0.35, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_HEI_UPDF_OCEAN(SHAL) , 'HEI_UPDF_OCEAN_SH:' ,default= 0.10, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_HEI_UPDF_OCEAN(MID) , 'HEI_UPDF_OCEAN_MD:' ,default= 0.35, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_MAX_EDT_LAND(DEEP) , 'MAX_EDT_LAND_DP:' ,default= 0.5, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_HEI_DOWN_OCEAN(MID) , 'HEI_DOWN_OCEAN_MD:' ,default= 0.6, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_HEI_UPDF_LAND(DEEP) , 'HEI_UPDF_LAND_DP:' ,default= 0.4, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_HEI_UPDF_LAND(SHAL) , 'HEI_UPDF_LAND_SH:' ,default= 0.2, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_HEI_UPDF_LAND(MID) , 'HEI_UPDF_LAND_MD:' ,default= 0.4, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_HEI_UPDF_OCEAN(DEEP) , 'HEI_UPDF_OCEAN_DP:' ,default= 0.4, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_HEI_UPDF_OCEAN(SHAL) , 'HEI_UPDF_OCEAN_SH:' ,default= 0.2, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_HEI_UPDF_OCEAN(MID) , 'HEI_UPDF_OCEAN_MD:' ,default= 0.4, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_MAX_EDT_LAND(DEEP) , 'MAX_EDT_LAND_DP:' ,default= 0.4, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_MAX_EDT_LAND(SHAL) , 'MAX_EDT_LAND_SH:' ,default= 0.0, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_MAX_EDT_LAND(MID) , 'MAX_EDT_LAND_MD:' ,default= 0.5, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_MAX_EDT_OCEAN(DEEP) , 'MAX_EDT_OCEAN_DP:' ,default= 0.2, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_MAX_EDT_LAND(MID) , 'MAX_EDT_LAND_MD:' ,default= 0.4, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_MAX_EDT_OCEAN(DEEP) , 'MAX_EDT_OCEAN_DP:' ,default= 0.3, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_MAX_EDT_OCEAN(SHAL) , 'MAX_EDT_OCEAN_SH:' ,default= 0.0, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, CUM_MAX_EDT_OCEAN(MID) , 'MAX_EDT_OCEAN_MD:' ,default= 0.2, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, CUM_MAX_EDT_OCEAN(MID) , 'MAX_EDT_OCEAN_MD:' ,default= 0.3, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, SCLM_DEEP , 'SCLM_DEEP:' ,default= 1.0, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource(MAPL, FIX_CNV_CLOUD , 'FIX_CNV_CLOUD:' ,default= .FALSE., RC=STATUS); VERIFY_(STATUS) ELSE diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 index 0a4ecd27e..8e4ff0aa1 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 @@ -323,8 +323,11 @@ subroutine UW_Run (GC, IMPORT, EXPORT, CLOCK, RC) MFD_SC = 0.0 end where ! Tiedtke-style cloud fraction !! - DQADT_SC= MFD_SC*SCLM_SHALLOW/MASS - !DQADT_SC= DCM_SC*SCLM_SHALLOW/MASS ! Generally reduces low cloud QA + !if (JASON_UW) then + DQADT_SC= MFD_SC*SCLM_SHALLOW/MASS + !else + ! DQADT_SC= DCM_SC*SCLM_SHALLOW/MASS ! Generally reduces low cloud QA + !endif CLCN = CLCN + DQADT_SC*DT_MOIST CLCN = MIN( CLCN , 1.0 ) ! Convert detrained water units before passing to cloud diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index 17565c69d..f0e406a59 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -124,7 +124,7 @@ module gfdl2_cloud_microphys_mod real, parameter :: sfcrho = 1.2 !< surface air density real, parameter :: rhor = 1.e3 !< density of rain water, lin83 - + real, parameter :: rc = (4. / 3.) * pi * rhor real :: cracs, csacr, cgacr, cgacs, csacw, craci, csaci, cgacw, cgaci, cracw !< constants for accretions @@ -157,6 +157,7 @@ module gfdl2_cloud_microphys_mod logical :: preciprad = .true. !< consider precipitates in cloud fraciton calculation logical :: fix_negative = .false. !< fix negative water species logical :: do_setup = .true. !< setup constants and parameters + logical :: p_nonhydro = .false. !< perform hydrosatic adjustment on air density real, allocatable :: table (:), table2 (:), table3 (:), tablew (:) real, allocatable :: des (:), des2 (:), des3 (:), desw (:) @@ -231,8 +232,8 @@ module gfdl2_cloud_microphys_mod real :: ccn_l = 270. !< ccn over land (cm^ - 3) real :: rthreshu = 7.0e-6 !< critical cloud drop radius (micro m) - real :: rthreshs = 13.0e-6 !< critical cloud drop radius (micro m) - + real :: rthreshs = 10.0e-6 !< critical cloud drop radius (micro m) + real :: sat_adj0 = 0.90 !< adjustment factor (0: no, 1: full) during fast_sat_adj real :: qc_crt = 5.0e-8 !< mini condensate mixing ratio to allow partial cloudiness @@ -288,7 +289,7 @@ module gfdl2_cloud_microphys_mod real :: vs_max = 2.0 !< max fall speed for snow real :: vg_max = 12. !< max fall speed for graupel real :: vr_max = 12. !< max fall speed for rain - + ! cloud microphysics switchers logical :: fast_sat_adj = .false. !< has fast saturation adjustments @@ -415,9 +416,11 @@ subroutine gfdl_cloud_microphys_driver (qv, ql, qr, qi, qs, qg, qa, qn, & if (phys_hydrostatic .or. hydrostatic) then c_air = cp_air c_vap = cp_vap + p_nonhydro = .false. else c_air = cv_air c_vap = cv_vap + p_nonhydro = .true. endif d0_vap = c_vap - c_liq lv00 = hlv0 - d0_vap * t_ice @@ -644,13 +647,13 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & real, intent (in), dimension (is:) :: eis real, intent (in), dimension (is:, js:, ks:) :: rhcrit - + real, intent (in) :: anv_icefall, lsc_icefall real, intent (in), dimension (is:, js:, ks:) :: uin, vin, delp, pt, dz real, intent (in), dimension (is:, js:, ks:) :: qv, qi, ql, qr, qs, qg, qa, qn real, intent (in), dimension (is:, js:, ks:) :: qicn, qlcn, clcn - + real, intent (inout), dimension (is:, js:, ks:) :: u_dt, v_dt, w, pt_dt, qa_dt real, intent (inout), dimension (is:, js:, ks:) :: qv_dt, ql_dt, qr_dt, qi_dt, qs_dt, qg_dt real, intent ( out), dimension (is:, js:, ks:) :: revap, isubl @@ -662,7 +665,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & real, intent (out), dimension (is:, js:, ks:) :: vt_r, vt_s, vt_g, vt_i, qn2 real, intent (out), dimension (is:, js:, ks:) :: m2_rain, m2_sol - + real, dimension (ktop:kbot) :: h_var1d real, dimension (ktop:kbot) :: qlcnz, qicnz, clcnz real, dimension (ktop:kbot) :: qvz, qlz, qrz, qiz, qsz, qgz, qaz @@ -697,8 +700,8 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & tz (k) = t0 (k) dp1 (k) = delp (i, j, k) dp0 (k) = dp1 (k) ! moist air mass * grav - - ! ----------------------------------------------------------------------- + + ! ----------------------------------------------------------------------- ! import horizontal subgrid variability with pressure dependence ! total water subgrid deviation in horizontal direction ! default area dependent form: use dx ~ 100 km as the base @@ -708,7 +711,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & ! ----------------------------------------------------------------------- ! convert moist mixing ratios to dry mixing ratios ! ----------------------------------------------------------------------- - + ! Convective portion qicnz (k) = qicn (i, j, k) qlcnz (k) = qlcn (i, j, k) @@ -732,7 +735,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & qiz (k) = qiz (k) * omq qsz (k) = qsz (k) * omq qgz (k) = qgz (k) * omq - + ! Convective portion qicnz (k) = qicnz (k) * omq qlcnz (k) = qlcnz (k) * omq @@ -777,11 +780,11 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & ! calculate cloud condensation nuclei (ccn) ! the following is based on klein eq. 15 ! ----------------------------------------------------------------------- - + cpaut = c_paut * 0.104 * grav / 1.717e-5 - ! slow autoconversion in stable regimes - cpaut = cpaut * (0.5 + 0.5*(1.0-min(1.0,eis(i)/10.0)**2)) - + !! slow autoconversion in stable regimes + !cpaut = cpaut * (0.5 + 0.5*(1.0-min(1.0,eis(i)/10.0)**2)) + ! ccn needs units #/m^3 if (prog_ccn) then do k = ktop, kbot @@ -816,11 +819,19 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & ! dry air density ! ----------------------------------------------------------------------- - do k = ktop, kbot - dz1 (k) = dz0 (k) - den (k) = den0 (k) ! dry air density remains the same - denfac (k) = sqrt ( den(kbot) / den (k)) - enddo + if (p_nonhydro) then + do k = ktop, kbot + dz1 (k) = dz0 (k) + den (k) = den0 (k) ! dry air density remains the same + denfac (k) = sqrt (sfcrho / den (k)) + enddo + else + do k = ktop, kbot + dz1 (k) = dz0 (k) * tz (k) / t0 (k) ! hydrostatic balance + den (k) = den0 (k) * dz0 (k) / dz1 (k) + denfac (k) = sqrt (sfcrho / den (k)) + enddo + endif ! ----------------------------------------------------------------------- ! sedimentation of cloud ice, snow, and graupel @@ -1042,7 +1053,7 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & real, intent (in), dimension (ktop:kbot) :: qlcn, qicn, clcn real, intent (in) :: eis !< estimated inversion strength - + real, intent (inout), dimension (ktop:kbot) :: tz, vtr real, intent (inout), dimension (ktop:kbot) :: qv, ql, qr, qi, qs, qg, qa real, intent (inout), dimension (ktop:kbot) :: evap1, m1_rain, w1 @@ -1174,7 +1185,7 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & ! assuming linear subgrid vertical distribution of cloud water ! following lin et al. 1994, mwr ! ----------------------------------------------------------------------- - + ! Use In-Cloud condensates qadum = max(qa,qcmin) ql = ql/qadum @@ -1188,11 +1199,11 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & ! ----------------------------------------------------------------------- ! no subgrid varaibility ! ----------------------------------------------------------------------- - + do k = ktop, kbot qc0 = fac_rc * ccn (k) if (tz (k) > t_wfr) then - qc = qc0 / den (k) + qc = qc0 / den (k) dq = ql (k) - qc if (dq > 0.) then sink = min (dq, dt * c_praut (k) * den (k) * exp (so3 * log (ql (k)))) @@ -1219,7 +1230,7 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & ! -------------------------------------------------------------------- ! as in klein's gfdl am2 stratiform scheme (with subgrid variations) ! -------------------------------------------------------------------- - qc = qc0 / den (k) + qc = qc0 / den (k) dq = 0.5 * (ql (k) + dl (k) - qc) ! -------------------------------------------------------------------- ! dq = dl if qc == q_minus = ql - dl @@ -1238,9 +1249,9 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & endif enddo endif - ! Revert In-Cloud condensate - ql = ql*qadum - qi = qi*qadum + ! Revert In-Cloud condensate + ql = ql*qadum + qi = qi*qadum end subroutine warm_rain @@ -1255,7 +1266,7 @@ subroutine revap_racc (ktop, kbot, dt, tz, qv, ql, qr, qi, qs, qg, qa, revap, de integer, intent (in) :: ktop, kbot real, intent (in) :: dt ! time step (s) - + real, intent (in), dimension (ktop:kbot) :: h_var real, intent (in), dimension (ktop:kbot) :: den, denfac @@ -1267,7 +1278,7 @@ subroutine revap_racc (ktop, kbot, dt, tz, qv, ql, qr, qi, qs, qg, qa, revap, de real :: dqv, qsat, dqsdt, evap, t2, qden, q_plus, q_minus, sink real :: qpz, dq, dqh, tin - real :: fac_revp + real :: fac_revp real :: TOT_PREC_LS, AREA_LS_PRC, AREA_LS_PRC_K integer :: k @@ -1276,7 +1287,7 @@ subroutine revap_racc (ktop, kbot, dt, tz, qv, ql, qr, qi, qs, qg, qa, revap, de TOT_PREC_LS = 0. AREA_LS_PRC = 0. do k = ktop, kbot - + TOT_PREC_LS = TOT_PREC_LS + ( ( qr (k) + qs (k) + qg (k) ) * den (k) ) AREA_LS_PRC = AREA_LS_PRC + ( qa (k) * ( qr (k) + qs (k) + qg (k) ) * den (k) ) @@ -1287,7 +1298,7 @@ subroutine revap_racc (ktop, kbot, dt, tz, qv, ql, qr, qi, qs, qg, qa, revap, de !if (TOT_PREC_LS > 0.0) AREA_LS_PRC_K = MAX( AREA_LS_PRC/TOT_PREC_LS, 1.E-6 ) !fac_revp = 1. - exp (- AREA_LS_PRC_K * dt / tau_revp) fac_revp = 1. - exp (- dt / tau_revp) - + ! ----------------------------------------------------------------------- ! define heat capacity and latent heat coefficient ! ----------------------------------------------------------------------- @@ -1446,7 +1457,7 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & real, intent (in) :: dts, cnv_fraction, srf_type real, intent (in), dimension (ktop:kbot) :: h_var, ccn - + real, dimension (ktop:kbot) :: lcpk, icpk, tcpk, di, lhl, lhi real, dimension (ktop:kbot) :: cvm, q_liq, q_sol @@ -1462,7 +1473,7 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & integer :: k, it rdts = 1. / dts - + ! ----------------------------------------------------------------------- ! define conversion scalar / factor ! ----------------------------------------------------------------------- @@ -1472,7 +1483,7 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & fac_imlt = 1. - exp (- dts / tau_imlt) fac_frz = 1. - exp (- dts / tau_frz) - + ! ----------------------------------------------------------------------- ! define heat capacity and latend heat coefficient ! ----------------------------------------------------------------------- @@ -1495,11 +1506,11 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & do k = ktop, kbot if (tzk (k) > tice .and. qik (k) > qcmin) then - + ! ----------------------------------------------------------------------- ! pimlt: instant melting of cloud ice ! ----------------------------------------------------------------------- - + melt = min (qik (k), fac_imlt * (tzk (k) - tice) / icpk (k)) tmp = min (melt, dim (ql_mlt, qlk (k))) ! max ql amount @@ -2004,7 +2015,7 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & enddo do k = ktop, kbot - + rh_adj = 1. - h_var(k) - rh_inc rh_rain = max (0.35, rh_adj - rh_inr) @@ -2037,7 +2048,7 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & icpk (k) = lhi (k) / cvm (k) tcpk (k) = lcpk (k) + icpk (k) tcp3 (k) = lcpk (k) + icpk (k) * min (1., dim (tice, tz (k)) / (tice - t_wfr)) - + ! ----------------------------------------------------------------------- ! instant evaporation / sublimation of all clouds if rh < rh_adj -- > cloud free ! ----------------------------------------------------------------------- @@ -2045,37 +2056,37 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & tin = tz (k) - (lhl (k) * (ql (k) + qi (k)) + lhi (k) * qi (k)) / (c_air + & qpz * c_vap + qr (k) * c_liq + (qs (k) + qg (k)) * c_ice) if (tin > t_sub + 6.) then - rh = qpz / iqs1 (tin, den (k)) - if (rh < rh_adj) then ! qpz / rh_adj < qs - tz (k) = tin - qv (k) = qpz - ql (k) = 0. - qi (k) = 0. - qa (k) = 0. - cycle ! cloud free - endif + rh = qpz / iqs1 (tin, den (k)) + if (rh < rh_adj) then ! qpz / rh_adj < qs + tz (k) = tin + qv (k) = qpz + ql (k) = 0. + qi (k) = 0. + qa (k) = 0. + cycle ! cloud free + endif endif - + ! ----------------------------------------------------------------------- ! cloud water < -- > vapor adjustment: LS evaporation ! ----------------------------------------------------------------------- - qsw = wqs2 (tz (k), den (k), dwsdt) - dq0 = qsw - qv (k) + qsw = wqs2 (tz (k), den (k), dwsdt) + dq0 = qsw - qv (k) if (dq0 > qvmin) then - factor = min (1., fac_l2v * (10. * dq0 / qsw)) - evap = min ( ql(k), factor*ql(k)/(1. + tcp3 (k) * dwsdt)) - else - evap = 0.0 - endif + factor = min (1., fac_l2v * (10. * dq0 / qsw)) + evap = min (ql (k), factor * ql(k) / (1. + tcp3 (k) * dwsdt)) + else + evap = 0.0 + endif if (.not. do_evap) evap = min(evap,max(0.0,ql(k)-qlcn(k))) ! restrict evap to just LS QL ! new total condensate / old condensate qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)-evap,0.0 ) / & max(qi(k)+ql(k) ,qcmin) ) ) - qv (k) = qv (k) + evap - ql (k) = ql (k) - evap - q_liq (k) = q_liq (k) - evap - cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice - tz (k) = tz (k) - evap * lhl (k) / cvm (k) + qv (k) = qv (k) + evap + ql (k) = ql (k) - evap + q_liq (k) = q_liq (k) - evap + cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice + tz (k) = tz (k) - evap * lhl (k) / cvm (k) ! ----------------------------------------------------------------------- ! update heat capacity and latend heat coefficient @@ -2109,18 +2120,18 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & ! ----------------------------------------------------------------------- ! bigg mechanism heterogeneous freezing on existing cloud nuclei ! ----------------------------------------------------------------------- - tc = tice - tz (k) + tc = tice - tz (k) if (do_bigg .and. ql (k) > qcmin .and. tc > 0.) then sink = fac_frz * (100.0/rhor/ccn(k)) * dts * (exp (0.66 * tc) - 1.) * den (k) * ql (k) * ql (k) sink = min (ql (k), tc / icpk (k), sink) - ql (k) = ql (k) - sink - qi (k) = qi (k) + sink - q_liq (k) = q_liq (k) - sink - q_sol (k) = q_sol (k) + sink - cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice - tz (k) = tz (k) + sink * lhi (k) / cvm (k) - endif ! significant ql existed - + ql (k) = ql (k) - sink + qi (k) = qi (k) + sink + q_liq (k) = q_liq (k) - sink + q_sol (k) = q_sol (k) + sink + cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice + tz (k) = tz (k) + sink * lhi (k) / cvm (k) + endif ! significant ql existed + ! ----------------------------------------------------------------------- ! update capacity heat and latend heat coefficient ! ----------------------------------------------------------------------- @@ -2137,37 +2148,37 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & if (tz (k) < tice) then ! partial subl of LS ice - qsi = iqs2 (tz (k), den (k), dqsdt) + qsi = iqs2 (tz (k), den (k), dqsdt) dq = (qv (k) - qsi) sink = min(qi(k), dq / (1. + tcpk (k) * dqsdt)) if (qi (k) > qcmin) then - ! eq 9, hong et al. 2004, mwr - ! for a and b, see dudhia 1989: page 3103 eq (b7) and (b8) + ! eq 9, hong et al. 2004, mwr + ! for a and b, see dudhia 1989: page 3103 eq (b7) and (b8) pidep = dts * dq * 349138.78 * exp (0.875 * log (qi (k) * den (k))) & - / (qsi * den (k) * lat2 / (0.0243 * rvgas * tz (k) ** 2) + 4.42478e4) - else - pidep = 0. - endif - if (dq > 0.) then ! vapor - > ice - tmp = tice - tz (k) + / (qsi * den (k) * lat2 / (0.0243 * rvgas * tz (k) ** 2) + 4.42478e4) + else + pidep = 0. + endif + if (dq > 0.) then ! vapor - > ice + tmp = tice - tz (k) ifrac = ice_fraction(tz(k),cnv_fraction,srf_type) qi_crt = 4.92e-11 * exp (1.33 * log (1.e3 * exp (0.1 * tmp))) qi_crt = max (qi_crt, 1.82e-6) * min (qi_lim, ifrac) / den (k) - sink = min (sink, max (qi_crt - qi (k), pidep), tmp / tcpk (k)) - else ! ice -- > vapor - pidep = pidep * min (1., dim (tz (k), t_sub) * 0.2) - sink = max (pidep, sink, - qi (k) ) + sink = min (sink, max (qi_crt - qi (k), pidep), tmp / tcpk (k)) + else ! ice -- > vapor + pidep = pidep * min (1., dim (tz (k), t_sub) * 0.2) + sink = max (pidep, sink, - qi (k)) if (.not. do_subl) sink = max(sink,min(0.0,-1.0*(qi(k)-qicn(k)))) ! restrict subl to just LS QI - endif + endif ! new total condensate / old condensate qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)+sink,0.0 ) / & max(qi(k)+ql(k) ,qcmin) ) ) - qv (k) = qv (k) - sink - qi (k) = qi (k) + sink - q_sol (k) = q_sol (k) + sink - cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice - tz (k) = tz (k) + sink * (lhl (k) + lhi (k)) / cvm (k) + qv (k) = qv (k) - sink + qi (k) = qi (k) + sink + q_sol (k) = q_sol (k) + sink + cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice + tz (k) = tz (k) + sink * (lhl (k) + lhi (k)) / cvm (k) endif ! ----------------------------------------------------------------------- @@ -2184,7 +2195,7 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & ! sublimation / deposition of snow ! this process happens for all temp rage ! ----------------------------------------------------------------------- - + if (qs (k) > qpmin) then qsi = iqs2 (tz (k), den (k), dqsdt) qden = qs (k) * den (k) @@ -2296,7 +2307,7 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & q_cond (k) = q_liq (k) + q_sol (k) qpz = qv (k) + q_cond (k) ! qpz is conserved - + ! ----------------------------------------------------------------------- ! use the "liquid - frozen water temperature" (tin) to compute saturated specific humidity ! ----------------------------------------------------------------------- @@ -2304,7 +2315,7 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & tin = tz (k) - (lcpk (k) * q_cond (k) + icpk (k) * q_sol (k)) ! minimum temperature ! tin = tz (k) - ((lv00 + d0_vap * tz (k)) * q_cond (k) + & ! (li00 + dc_ice * tz (k)) * q_sol (k)) / (c_air + qpz * c_vap) - + ! ----------------------------------------------------------------------- ! determine saturated specific humidity ! ----------------------------------------------------------------------- From 9bc0dacdd52306a35f20a1d42266e00765b3f0b0 Mon Sep 17 00:00:00 2001 From: William Putman Date: Fri, 7 Apr 2023 13:12:13 -0400 Subject: [PATCH 19/43] added UW_DT option --- .../GEOSmoist_GridComp/ConvPar_GF2020.F90 | 4 +- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 2 +- .../GEOS_UW_InterfaceMod.F90 | 84 +++++++++++++------ 3 files changed, 61 insertions(+), 29 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 index d22277222..97b60591e 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 @@ -2313,8 +2313,8 @@ SUBROUTINE CUP_gf(its,ite,kts,kte ,itf,ktf, mtp, nmp & ierrc(i)='scale_dep renders convection insignificant' endif if(ierr(i) /= 0) cycle - sig(i)= 1.0-0.9839*exp(-0.09835*(dx(i)/1000.)) ! Arakawa 2011 sigma - !sig(i)= 1.0-0.9900*exp(-0.12500*(dx(i)/3000.)) ! Modified from Arakawa 2011 sigma + !sig(i)= 1.0-0.9839*exp(-0.09835*(dx(i)/1000.)) ! Arakawa 2011 sigma + sig(i)= 1.0-0.9839*exp(-0.09835*(dx(i)/ 500.)) ! Modified from Arakawa 2011 sigma if (stochastic_sig(i) /= 1.0) then sig(i) = sig(i)**(stochastic_sig(i)*MAX(1.0,sig(i))) endif diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index eda549f65..967dc273a 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -5068,7 +5068,7 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) if (adjustl(CONVPAR_OPTION)=="RAS" ) call RAS_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) if (adjustl(CONVPAR_OPTION)=="GF" ) call GF_Initialize(MAPL, CLOCK, RC=STATUS) ; VERIFY_(STATUS) - if (adjustl(SHALLOW_OPTION)=="UW" ) call UW_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) + if (adjustl(SHALLOW_OPTION)=="UW" ) call UW_Initialize(MAPL, CLOCK, RC=STATUS) ; VERIFY_(STATUS) if (adjustl(CLDMICR_OPTION)=="BACM_1M") call BACM_1M_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) if (adjustl(CLDMICR_OPTION)=="GFDL_1M") call GFDL_1M_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) if (adjustl(CLDMICR_OPTION)=="MGB2_2M") call MGB2_2M_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 index 8e4ff0aa1..d46a70de6 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_UW_InterfaceMod.F90 @@ -56,11 +56,43 @@ subroutine UW_Setup (GC, CF, RC) end subroutine UW_Setup -subroutine UW_Initialize (MAPL, RC) +subroutine UW_Initialize (MAPL, CLOCK, RC) type (MAPL_MetaComp), intent(inout) :: MAPL + type (ESMF_Clock), intent(inout) :: CLOCK ! The clock integer, optional :: RC ! return code integer :: LM + type (ESMF_Alarm ) :: ALARM + type (ESMF_TimeInterval) :: TINT + real(ESMF_KIND_R8) :: DT_R8 + real :: MOIST_DT + real :: UW_DT + + type(ESMF_Calendar) :: calendar + type(ESMF_Time) :: currentTime + type(ESMF_Alarm) :: UW_RunAlarm + type(ESMF_Time) :: ringTime + type(ESMF_TimeInterval) :: ringInterval + integer :: year, month, day, hh, mm, ss + + call MAPL_Get(MAPL, RUNALARM=ALARM, LM=LM, RC=STATUS );VERIFY_(STATUS) + call ESMF_AlarmGet(ALARM, RingInterval=TINT, RC=STATUS); VERIFY_(STATUS) + call ESMF_TimeIntervalGet(TINT, S_R8=DT_R8,RC=STATUS); VERIFY_(STATUS) + MOIST_DT = DT_R8 + call MAPL_GetResource(MAPL, UW_DT, 'UW_DT:', default=MOIST_DT, RC=STATUS); VERIFY_(STATUS) + + call ESMF_ClockGet(CLOCK, calendar=calendar, currTime=currentTime, RC=STATUS); VERIFY_(STATUS) + call ESMF_TimeGet(currentTime, YY=year, MM=month, DD=day, H=hh, M=mm, S=ss, RC=STATUS); VERIFY_(STATUS) + call ESMF_TimeSet(ringTime, YY=year, MM=month, DD=day, H=0, M=0, S=0, RC=STATUS); VERIFY_(STATUS) + call ESMF_TimeIntervalSet(ringInterval, S=nint(UW_DT), calendar=calendar, RC=STATUS); VERIFY_(STATUS) + + UW_RunAlarm = ESMF_AlarmCreate(Clock = CLOCK, & + Name = 'UW_RunAlarm',& + RingInterval = ringInterval, & + RingTime = currentTime, & + Enabled = .true. , & + Sticky = .false. , RC=STATUS); VERIFY_(STATUS) + call MAPL_Get ( MAPL, LM=LM, RC=STATUS ) VERIFY_(STATUS) @@ -157,22 +189,28 @@ subroutine UW_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, pointer, dimension(:,:) :: PTR2D type (MAPL_MetaComp), pointer :: MAPL - type (ESMF_Config ) :: CF type (ESMF_State ) :: INTERNAL - type (ESMF_Alarm ) :: ALARM type (ESMF_TimeInterval) :: TINT real(ESMF_KIND_R8) :: DT_R8 - real :: DT_MOIST + real :: UW_DT + type(ESMF_Alarm) :: alarm + logical :: alarm_is_ringing ! Local variables integer :: I, J, L integer :: IM,JM,LM - real, pointer, dimension(:,:) :: LONS - real, pointer, dimension(:,:) :: LATS - call ESMF_GridCompGet( GC, CONFIG=CF, RC=STATUS ) - VERIFY_(STATUS) + call ESMF_ClockGetAlarm(clock, 'UW_RunAlarm', alarm, RC=STATUS); VERIFY_(STATUS) + alarm_is_ringing = ESMF_AlarmIsRinging(alarm, RC=STATUS); VERIFY_(STATUS) + + if (alarm_is_ringing) then + +!!! call WRITE_PARALLEL('UW is Running') + call ESMF_AlarmRingerOff(alarm, RC=STATUS); VERIFY_(STATUS) + call ESMF_AlarmGet(alarm, RingInterval=TINT, RC=STATUS); VERIFY_(STATUS) + call ESMF_TimeIntervalGet(TINT, S_R8=DT_R8,RC=STATUS); VERIFY_(STATUS) + UW_DT = DT_R8 ! Get my internal MAPL_Generic state !----------------------------------- @@ -186,18 +224,10 @@ subroutine UW_Run (GC, IMPORT, EXPORT, CLOCK, RC) !----------------------------------- call MAPL_Get( MAPL, IM=IM, JM=JM, LM=LM, & - RUNALARM = ALARM, & - CF = CF, & - LONS = LONS, & - LATS = LATS, & INTERNAL_ESMF_STATE=INTERNAL, & RC=STATUS ) VERIFY_(STATUS) - call ESMF_AlarmGet(ALARM, RingInterval=TINT, RC=STATUS); VERIFY_(STATUS) - call ESMF_TimeIntervalGet(TINT, S_R8=DT_R8,RC=STATUS); VERIFY_(STATUS) - DT_MOIST = DT_R8 - ! Internals call MAPL_GetPointer(INTERNAL, Q, 'Q' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(INTERNAL, QLLS, 'QLLS' , RC=STATUS); VERIFY_(STATUS) @@ -287,7 +317,7 @@ subroutine UW_Run (GC, IMPORT, EXPORT, CLOCK, RC) ! Call UW shallow convection !---------------------------------------------------------------- - call compute_uwshcu_inv(IM*JM, LM, DT_MOIST, & ! IN + call compute_uwshcu_inv(IM*JM, LM, UW_DT, & ! IN PL, ZL0, PK, PLE, ZLE0, PKE, DP, & U, V, Q, QLTOT, QITOT, T, TKE, KPBL_SC, & SH, EVAP, CNPCPRATE, FRLAND, & @@ -311,10 +341,10 @@ subroutine UW_Run (GC, IMPORT, EXPORT, CLOCK, RC) ! Apply tendencies !-------------------------------------------------------------- - Q = Q + DQVDT_SC * DT_MOIST ! note this adds to the convective - T = T + DTDT_SC * DT_MOIST ! tendencies calculated below - U = U + DUDT_SC * DT_MOIST - V = V + DVDT_SC * DT_MOIST + Q = Q + DQVDT_SC * UW_DT ! note this adds to the convective + T = T + DTDT_SC * UW_DT ! tendencies calculated below + U = U + DUDT_SC * UW_DT + V = V + DVDT_SC * UW_DT ! Calculate detrained mass flux !-------------------------------------------------------------- where (DETR_SC.ne.MAPL_UNDEF) @@ -328,7 +358,7 @@ subroutine UW_Run (GC, IMPORT, EXPORT, CLOCK, RC) !else ! DQADT_SC= DCM_SC*SCLM_SHALLOW/MASS ! Generally reduces low cloud QA !endif - CLCN = CLCN + DQADT_SC*DT_MOIST + CLCN = CLCN + DQADT_SC*UW_DT CLCN = MIN( CLCN , 1.0 ) ! Convert detrained water units before passing to cloud !--------------------------------------------------------------- @@ -345,16 +375,16 @@ subroutine UW_Run (GC, IMPORT, EXPORT, CLOCK, RC) QIDET_SC = 0. END WHERE ! add detrained shallow convective ice/liquid source - QLCN = QLCN + QLDET_SC*DT_MOIST - QICN = QICN + QIDET_SC*DT_MOIST + QLCN = QLCN + QLDET_SC*UW_DT + QICN = QICN + QIDET_SC*UW_DT ! scale the detrained fluxes before exporting QLDET_SC = QLDET_SC*MASS QIDET_SC = QIDET_SC*MASS ! Apply condensate tendency from subsidence, and sink from ! condensate entrained into shallow updraft. !------------------------------------------------------------- - QLLS = QLLS + (QLSUB_SC+QLENT_SC)*DT_MOIST - QILS = QILS + (QISUB_SC+QIENT_SC)*DT_MOIST + QLLS = QLLS + (QLSUB_SC+QLENT_SC)*UW_DT + QILS = QILS + (QISUB_SC+QIENT_SC)*UW_DT ! Precipitation !-------------------------------------------------------------- call MAPL_GetPointer(EXPORT, PTR3D, 'SHLW_PRC3', RC=STATUS); VERIFY_(STATUS) @@ -397,6 +427,8 @@ subroutine UW_Run (GC, IMPORT, EXPORT, CLOCK, RC) call MAPL_TimerOff (MAPL,"--UW") + endif + end subroutine UW_Run end module GEOS_UW_InterfaceMod From 6ec6cedd04c80f0ed4b14eb418cbb03c33831a67 Mon Sep 17 00:00:00 2001 From: William Putman Date: Sun, 9 Apr 2023 17:40:41 -0400 Subject: [PATCH 20/43] GF scheme options reverted for tested GF2020 flags --- .../GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 index 61e2fc010..01764690f 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 @@ -131,7 +131,7 @@ subroutine GF_Initialize (MAPL, CLOCK, RC) call MAPL_GetResource(MAPL, CUM_FADJ_MASSFLX(SHAL) , 'FADJ_MASSFLX_SH:' ,default= 1.0, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_FADJ_MASSFLX(MID) , 'FADJ_MASSFLX_MD:' ,default= 1.0, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, USE_TRACER_TRANSP , 'USE_TRACER_TRANSP:' ,default= 1, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, USE_TRACER_SCAVEN , 'USE_TRACER_SCAVEN:' ,default= 2, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, USE_TRACER_SCAVEN , 'USE_TRACER_SCAVEN:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, USE_SCALE_DEP , 'USE_SCALE_DEP:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, USE_MOMENTUM_TRANSP , 'USE_MOMENTUM_TRANSP:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, DICYCLE , 'DICYCLE:' ,default= 1, RC=STATUS );VERIFY_(STATUS) @@ -170,10 +170,10 @@ subroutine GF_Initialize (MAPL, CLOCK, RC) call MAPL_GetResource(MAPL, USE_REBCB , 'USE_REBCB:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, AUTOCONV , 'AUTOCONV:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, LAMBAU_DEEP , 'LAMBAU_DEEP:' ,default= 0.0, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL ,MOIST_TRIGGER , 'MOIST_TRIGGER:' ,default= 1, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL ,MOIST_TRIGGER , 'MOIST_TRIGGER:' ,default= 0, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, SGS_W_TIMESCALE , 'SGS_W_TIMESCALE:' ,default= 0, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL ,FRAC_MODIS , 'FRAC_MODIS:' ,default= 1, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL ,USE_SMOOTH_PROF , 'USE_SMOOTH_PROF:' ,default= 1, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL ,USE_SMOOTH_PROF , 'USE_SMOOTH_PROF:' ,default= 0, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL ,EVAP_FIX , 'EVAP_FIX:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, ADV_TRIGGER , 'ADV_TRIGGER:' ,default= 0, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CUM_AVE_LAYER(DEEP) , 'AVE_LAYER_DP:' ,default= 40., RC=STATUS );VERIFY_(STATUS) From 963cc4578459eb70138067cad14d0e480b6d1d87 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Mon, 10 Apr 2023 09:27:18 -0400 Subject: [PATCH 21/43] Enable coupled run test --- .circleci/config.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index ae223fe65..cc09c5c54 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -23,6 +23,7 @@ workflows: checkout_fixture: true mepodevelop: true persist_workspace: true # Needs to be true to run fv3/gcm experiment, costs extra + # Run GCM (1 hour, no ExtData) - ci/run_gcm: name: run-GCM-on-<< matrix.compiler >> @@ -37,3 +38,18 @@ workflows: baselibs_version: *baselibs_version bcs_version: *bcs_version + # Run Coupled GCM (1 hour, no ExtData) + - ci/run_gcm: + name: run-coupled-GCM-on-<< matrix.compiler >> + context: + - docker-hub-creds + matrix: + parameters: + compiler: [gfortran, ifort] + requires: + - build-GEOSgcm-on-<< matrix.compiler >> + repo: GEOSgcm + baselibs_version: *baselibs_version + bcs_version: *bcs_version + gcm_ocean_type: MOM6 + change_layout: false From 15548335028ff6bba6a538c0e35c322364b26f03 Mon Sep 17 00:00:00 2001 From: William Putman Date: Mon, 10 Apr 2023 19:49:02 -0400 Subject: [PATCH 22/43] updated CN/LS redistribution in GFDL and FV3 --- .../GEOS_GFDL_1M_InterfaceMod.F90 | 20 ++++++-- .../gfdl_cloud_microphys.F90 | 51 +++++++++---------- 2 files changed, 42 insertions(+), 29 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index 7a0bec0a5..ab4ae7e42 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -891,7 +891,13 @@ end subroutine GFDL_1M_Run subroutine REDISTRIBUTE_CLOUDS(CF, QL, QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, QV, TE) real, dimension(:,:,:), intent(inout) :: CF, QL, QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, QV, TE + ! local storage for cnv fraction of condensate/cloud + real :: FCN(size(CF,1),size(CF,2),size(CF,3)) + FCN = 0.0 + WHERE (QLCN+QLLS > 0.0) + FCN = min(max(QLCN/(QLCN+QLLS), 0.0), 1.0) + END WHERE WHERE (QL < 1.e-8) QV = QV + QL TE = TE - (MAPL_ALHL/MAPL_CP)*QL @@ -899,10 +905,14 @@ subroutine REDISTRIBUTE_CLOUDS(CF, QL, QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, Q QLLS = 0.0 QLCN = 0.0 ELSE WHERE - QLCN = MAX(0.0,MIN(QL,QLCN)) + QLCN = FCN*QL QLLS = MAX(0.0,QL-QLCN) END WHERE + FCN = 0.0 + WHERE (QICN+QILS > 0.0) + FCN = min(max(QICN/(QICN+QILS), 0.0), 1.0) + END WHERE WHERE (QI < 1.e-8) QV = QV + QI TE = TE - (MAPL_ALHS/MAPL_CP)*QI @@ -910,10 +920,14 @@ subroutine REDISTRIBUTE_CLOUDS(CF, QL, QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, Q QILS = 0.0 QICN = 0.0 ELSE WHERE - QICN = MAX(0.0,MIN(QI,QICN)) + QICN = FCN*QI QILS = MAX(0.0,QI-QICN) END WHERE + FCN = 0.0 + WHERE (CLCN+CLLS > 0.0) + FCN = min(max(CLCN/(CLCN+CLLS), 0.0), 1.0) + END WHERE WHERE ( (CF < 1.e-5) .or. (QL+QI < 1.e-8) ) CF = 0.0 CLLS = 0.0 @@ -927,7 +941,7 @@ subroutine REDISTRIBUTE_CLOUDS(CF, QL, QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, Q QILS = 0.0 QICN = 0.0 ELSE WHERE - CLCN = MAX(0.0,MIN(CF,CLCN,1.0)) + CLCN = FCN*CF CLLS = MAX(0.0,MIN(CF-CLCN,1.0)) END WHERE diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index f0e406a59..d5fc696ca 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -2070,23 +2070,24 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & ! ----------------------------------------------------------------------- ! cloud water < -- > vapor adjustment: LS evaporation ! ----------------------------------------------------------------------- - qsw = wqs2 (tz (k), den (k), dwsdt) - dq0 = qsw - qv (k) + if (do_evap) then + qsw = wqs2 (tz (k), den (k), dwsdt) + dq0 = qsw - qv (k) if (dq0 > qvmin) then - factor = min (1., fac_l2v * (10. * dq0 / qsw)) - evap = min (ql (k), factor * ql(k) / (1. + tcp3 (k) * dwsdt)) - else - evap = 0.0 - endif - if (.not. do_evap) evap = min(evap,max(0.0,ql(k)-qlcn(k))) ! restrict evap to just LS QL + factor = min (1., fac_l2v * (10. * dq0 / qsw)) + evap = min (ql (k), factor * ql(k) / (1. + tcp3 (k) * dwsdt)) + else + evap = 0.0 + endif ! new total condensate / old condensate qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)-evap,0.0 ) / & max(qi(k)+ql(k) ,qcmin) ) ) - qv (k) = qv (k) + evap - ql (k) = ql (k) - evap - q_liq (k) = q_liq (k) - evap - cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice - tz (k) = tz (k) - evap * lhl (k) / cvm (k) + qv (k) = qv (k) + evap + ql (k) = ql (k) - evap + q_liq (k) = q_liq (k) - evap + cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice + tz (k) = tz (k) - evap * lhl (k) / cvm (k) + endif ! ----------------------------------------------------------------------- ! update heat capacity and latend heat coefficient @@ -2146,16 +2147,16 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & ! sublimation / deposition of LS ice ! ----------------------------------------------------------------------- - if (tz (k) < tice) then - ! partial subl of LS ice + if (do_subl .and. (tz (k) < tice)) then + ! partial subl of LS ice qsi = iqs2 (tz (k), den (k), dqsdt) - dq = (qv (k) - qsi) - sink = min(qi(k), dq / (1. + tcpk (k) * dqsdt)) - if (qi (k) > qcmin) then + dq = (qv (k) - qsi) + sink = min(qi(k), dq / (1. + tcpk (k) * dqsdt)) + if (qi (k) > qcmin) then ! eq 9, hong et al. 2004, mwr ! for a and b, see dudhia 1989: page 3103 eq (b7) and (b8) - pidep = dts * dq * 349138.78 * exp (0.875 * log (qi (k) * den (k))) & - / (qsi * den (k) * lat2 / (0.0243 * rvgas * tz (k) ** 2) + 4.42478e4) + pidep = dts * dq * 349138.78 * exp (0.875 * log (qi (k) * den (k))) & + / (qsi * den (k) * lat2 / (0.0243 * rvgas * tz (k) ** 2) + 4.42478e4) else pidep = 0. endif @@ -2167,13 +2168,11 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & sink = min (sink, max (qi_crt - qi (k), pidep), tmp / tcpk (k)) else ! ice -- > vapor pidep = pidep * min (1., dim (tz (k), t_sub) * 0.2) - sink = max (pidep, sink, - qi (k)) - if (.not. do_subl) sink = max(sink,min(0.0,-1.0*(qi(k)-qicn(k)))) ! restrict subl to just LS QI + sink = fac_i2v * max (pidep, sink, - qi (k)) endif - - ! new total condensate / old condensate - qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)+sink,0.0 ) / & - max(qi(k)+ql(k) ,qcmin) ) ) + ! new total condensate / old condensate + qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)+sink,0.0 ) / & + max(qi(k)+ql(k) ,qcmin) ) ) qv (k) = qv (k) - sink qi (k) = qi (k) + sink q_sol (k) = q_sol (k) + sink From 3c535582a79bfbe261f20591241d985bb0e174d7 Mon Sep 17 00:00:00 2001 From: William Putman Date: Tue, 11 Apr 2023 09:45:05 -0400 Subject: [PATCH 23/43] enabled vapor->ice deposition when subl is disabled --- .../GEOSmoist_GridComp/gfdl_cloud_microphys.F90 | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index d5fc696ca..9d15ca60b 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -2147,8 +2147,7 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & ! sublimation / deposition of LS ice ! ----------------------------------------------------------------------- - if (do_subl .and. (tz (k) < tice)) then - ! partial subl of LS ice + if (tz (k) < tice) then qsi = iqs2 (tz (k), den (k), dqsdt) dq = (qv (k) - qsi) sink = min(qi(k), dq / (1. + tcpk (k) * dqsdt)) @@ -2161,14 +2160,20 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & pidep = 0. endif if (dq > 0.) then ! vapor - > ice + ! deposition tmp = tice - tz (k) ifrac = ice_fraction(tz(k),cnv_fraction,srf_type) qi_crt = 4.92e-11 * exp (1.33 * log (1.e3 * exp (0.1 * tmp))) qi_crt = max (qi_crt, 1.82e-6) * min (qi_lim, ifrac) / den (k) sink = min (sink, max (qi_crt - qi (k), pidep), tmp / tcpk (k)) else ! ice -- > vapor + ! sublimation + if (do_subl) then pidep = pidep * min (1., dim (tz (k), t_sub) * 0.2) sink = fac_i2v * max (pidep, sink, - qi (k)) + else + sink = 0. + endif endif ! new total condensate / old condensate qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)+sink,0.0 ) / & From 8fe7e65cd195bb6d342f4979cfdafc5ff06eef60 Mon Sep 17 00:00:00 2001 From: William Putman Date: Wed, 12 Apr 2023 13:42:42 -0400 Subject: [PATCH 24/43] updated GFDL-mp to use QA tendencies rather than direct update of cloud fraction --- .../GEOS_GFDL_1M_InterfaceMod.F90 | 2 +- .../gfdl_cloud_microphys.F90 | 29 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index ab4ae7e42..4d704949b 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -749,7 +749,7 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) RAD_QI = RAD_QI + DQIDTmic * DT_MOIST RAD_QS = RAD_QS + DQSDTmic * DT_MOIST RAD_QG = RAD_QG + DQGDTmic * DT_MOIST - RAD_CF = RAD_CF + DQADTmic * DT_MOIST + RAD_CF = MIN(1.0,MAX(0.0,RAD_CF + DQADTmic * DT_MOIST)) ! Redistribute CN/LS CF/QL/QI call REDISTRIBUTE_CLOUDS(RAD_CF, RAD_QL, RAD_QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, RAD_QV, T) ! Convert precip diagnostics from mm/day to kg m-2 s-1 diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index 9d15ca60b..428f2014e 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -928,10 +928,13 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & ! ----------------------------------------------------------------------- ! update cloud fraction tendency ! ----------------------------------------------------------------------- - + if (.not. do_qa) then do k = ktop, kbot - qa_dt (i, j, k) = rdt * (qaz (k) - qa0 (k)) + qa_dt (i, j, k) = qa_dt (i, j, k) + rdt * ( & + qa0(k)*SQRT( (qiz(k)+qlz(k)) / max(qi0(k)+ql0(k),qcmin) ) - & ! New Cloud - + qa0(k) ) ! Old Cloud enddo + endif ! ----------------------------------------------------------------------- ! fms diagnostics: @@ -1210,7 +1213,7 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & sink = min(ql0_max/qadum(k), ql(k), max(0.,sink)) ql (k) = ql (k) - sink qr (k) = qr (k) + sink*qadum(k) - qa (k) = qa(k) * SQRT( max(qi(k)+ql(k),0.0) / max(qi(k)+ql(k) + sink,qcmin) ) + if (do_qa) qa (k) = qa(k) * SQRT( max(qi(k)+ql(k),0.0) / max(qi(k)+ql(k) + sink,qcmin) ) endif endif enddo @@ -1244,7 +1247,7 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & sink = min(ql0_max/qadum(k), ql(k), max(0.,sink)) ql (k) = ql (k) - sink qr (k) = qr (k) + sink*qadum(k) - qa (k) = qa (k) * SQRT( max(qi(k)+ql(k),0.0) / max(qi(k) + ql(k) + sink,qcmin) ) + if (do_qa) qa (k) = qa (k) * SQRT( max(qi(k)+ql(k),0.0) / max(qi(k) + ql(k) + sink,qcmin) ) endif endif enddo @@ -1359,8 +1362,8 @@ subroutine revap_racc (ktop, kbot, dt, tz, qv, ql, qr, qi, qs, qg, qa, revap, de sink = sink / (1. + sink) * ql (k) ! new total condensate / old condensate - qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)-sink,0.0 ) / & - max(qi(k)+ql(k) ,qcmin) ) ) + if (do_qa) qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)-sink,0.0 ) / & + max(qi(k)+ql(k) ,qcmin) ) ) ql (k) = ql (k) - sink qr (k) = qr (k) + sink @@ -2034,7 +2037,7 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & q_sol (k) = q_sol (k) + sink cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice tz (k) = tz (k) + sink * (lhl (k) + lhi (k)) / cvm (k) - qa (k) = 1. ! air fully saturated; 100 % cloud cover + if (do_qa) qa (k) = 1. ! air fully saturated; 100 % cloud cover cycle endif @@ -2062,7 +2065,7 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & qv (k) = qpz ql (k) = 0. qi (k) = 0. - qa (k) = 0. + if (do_qa) qa (k) = 0. cycle ! cloud free endif endif @@ -2080,8 +2083,8 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & evap = 0.0 endif ! new total condensate / old condensate - qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)-evap,0.0 ) / & - max(qi(k)+ql(k) ,qcmin) ) ) + if (do_qa) qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)-evap,0.0 ) / & + max(qi(k)+ql(k) ,qcmin) ) ) qv (k) = qv (k) + evap ql (k) = ql (k) - evap q_liq (k) = q_liq (k) - evap @@ -2176,8 +2179,8 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & endif endif ! new total condensate / old condensate - qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)+sink,0.0 ) / & - max(qi(k)+ql(k) ,qcmin) ) ) + if (do_qa) qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)+sink,0.0 ) / & + max(qi(k)+ql(k) ,qcmin) ) ) qv (k) = qv (k) - sink qi (k) = qi (k) + sink q_sol (k) = q_sol (k) + sink @@ -2297,7 +2300,7 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & ! compute cloud fraction ! ----------------------------------------------------------------------- if (.not. do_qa) cycle - + ! ----------------------------------------------------------------------- ! combine water species ! ----------------------------------------------------------------------- From fc7135066022bfde1e7ac7dfd3e40249b0f1062d Mon Sep 17 00:00:00 2001 From: William Putman Date: Thu, 13 Apr 2023 10:13:20 -0400 Subject: [PATCH 25/43] repair imports for regression --- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 1277 ++++++++--------- 1 file changed, 623 insertions(+), 654 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index 967dc273a..1aeaa05b8 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -48,20 +48,20 @@ module GEOS_MoistGridCompMod logical :: USE_AERO_BUFFER real :: CCN_OCN real :: CCN_LND - + ! !PUBLIC MEMBER FUNCTIONS: public SetServices ! !DESCRIPTION: - ! + ! ! {\tt GEOS\_MoistGridCompMod} implements moist processes in GEOS-5. These ! include all processes that involve phase changes in the atmosphere, such ! as large-scale condensation, convective clouds, and all rain and cloud ! formation. Its state consists of water vapor, various types of condensate, - ! and fractions of various cloud types. - ! two moment cloud microphysics (Barahona et al., GMD, 2014.) can be run by setting CLDMACRO==MGB2_2M. - ! When using 2-moment microphysics the number concentration of ice crystals and cloud droplets + ! and fractions of various cloud types. + ! two moment cloud microphysics (Barahona et al., GMD, 2014.) can be run by setting CLDMACRO==MGB2_2M. + ! When using 2-moment microphysics the number concentration of ice crystals and cloud droplets ! are part of the state. ! @@ -82,7 +82,7 @@ subroutine SetServices ( GC, RC ) type(ESMF_GridComp), intent(INOUT) :: GC ! gridded component integer, optional :: RC ! return code - ! !DESCRIPTION: {\tt GEOS\_MoistGridCompMod} uses the default Initialize and Finalize + ! !DESCRIPTION: {\tt GEOS\_MoistGridCompMod} uses the default Initialize and Finalize ! services, but registers its own Run method. !EOP @@ -97,13 +97,13 @@ subroutine SetServices ( GC, RC ) ! Local derived type aliases - type (MAPL_MetaComp ), pointer :: STATE + type (MAPL_MetaComp ), pointer :: STATE type (ESMF_Config ) :: CF integer :: RFRSHINT integer :: AVRGNINT real :: DT - + logical :: LCONVPAR logical :: LSHALLOW logical :: LCLDMICR @@ -198,270 +198,253 @@ subroutine SetServices ( GC, RC ) ! !IMPORT STATE: call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PLE', & - LONG_NAME = 'air_pressure', & - UNITS = 'Pa', & - RESTART = MAPL_RestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationEdge, & + SHORT_NAME = 'PLE', & + LONG_NAME = 'air_pressure', & + UNITS = 'Pa', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationEdge, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'PREF', & - LONG_NAME = 'reference_air_pressure', & - UNITS = 'Pa', & - RESTART = MAPL_RestartSkip, & - DIMS = MAPL_DimsVertOnly, & - VLOCATION = MAPL_VLocationEdge, & + SHORT_NAME = 'PREF', & + LONG_NAME = 'reference_air_pressure', & + UNITS = 'Pa', & + DIMS = MAPL_DimsVertOnly, & + VLOCATION = MAPL_VLocationEdge, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'ZLE', & - LONG_NAME = 'geopotential_height', & - UNITS = 'm', & - RESTART = MAPL_RestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationEdge, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'ZLE', & + LONG_NAME = 'geopotential_height', & + UNITS = 'm', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationEdge, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & - RC=STATUS ) + RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'KH', & - LONG_NAME = 'scalar_diffusivity', & - UNITS = 'm+2 s-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationEdge, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'KH', & + LONG_NAME = 'scalar_diffusivity', & + UNITS = 'm+2 s-1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationEdge, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TKE', & - LONG_NAME = 'turbulent_kinetic_energy', & - UNITS = 'm+2 s-2', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationEdge, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'TKE', & + LONG_NAME = 'turbulent_kinetic_energy', & + UNITS = 'm+2 s-2', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationEdge, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'WQT', & - LONG_NAME = 'Total_water_flux', & - UNITS = 'kg kg-1 m s-1', & - RESTART = pdfRestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'WQT', & + LONG_NAME = 'Total_water_flux', & + UNITS = 'kg kg-1 m s-1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & - RC=STATUS ) - VERIFY_(STATUS) + RC=STATUS ) + VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'WHL', & - LONG_NAME = 'Liquid_water_static_energy_flux', & - UNITS = 'K m s-1', & - RESTART = pdfRestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'WHL', & + LONG_NAME = 'Liquid_water_static_energy_flux', & + UNITS = 'K m s-1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'W2', & - LONG_NAME = 'variance_of_vertical_velocity', & - UNITS = 'm2 s-2', & - RESTART = pdfRestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'W2', & + LONG_NAME = 'variance_of_vertical_velocity', & + UNITS = 'm2 s-2', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'W3', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'W3', & LONG_NAME = 'third_moment_of_vertical_velocity', & - UNITS = 'm3 s-3', & - RESTART = pdfRestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = 'm3 s-3', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'HL3', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'HL3', & LONG_NAME = 'third_moment_of_liquid_water_static_energy', & - UNITS = 'K+3', & - RESTART = pdfRestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = 'K+3', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'EDMF_FRC', & - LONG_NAME = 'Mass_Flux_Fractional_Area', & - UNITS = '1', & - RESTART = pdfRestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'EDMF_FRC', & + LONG_NAME = 'Mass_Flux_Fractional_Area', & + UNITS = '1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'HL2', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'HL2', & LONG_NAME = 'variance_of_liquid_water_static_energy', & - UNITS = 'K+2', & - RESTART = pdfRestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = 'K+2', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'QT2', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'QT2', & LONG_NAME = 'variance_of_total_water_specific_humidity', & - UNITS = '1', & - RESTART = pdfRestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = '1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'QT3', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'QT3', & LONG_NAME = 'third_moment_of_total_water_specific_humidity', & - UNITS = '1', & - RESTART = pdfRestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = '1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'HLQT', & + call MAPL_AddImportSpec(GC, & + SHORT_NAME = 'HLQT', & LONG_NAME = 'covariance_of_liquid_water_static_energy_and_total_water_specific_humidity', & - UNITS = 'K', & - RESTART = pdfRestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + UNITS = 'K', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'T', & - LONG_NAME = 'temperature', & - UNITS = 'K', & - RESTART = MAPL_RestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + SHORT_NAME = 'T', & + LONG_NAME = 'temperature', & + UNITS = 'K', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'U', & - LONG_NAME = 'eastward_wind', & - UNITS = 'm s-1', & - RESTART = MAPL_RestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + SHORT_NAME = 'U', & + LONG_NAME = 'eastward_wind', & + UNITS = 'm s-1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'V', & - LONG_NAME = 'northward_wind', & - UNITS = 'm s-1', & - RESTART = MAPL_RestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + SHORT_NAME = 'V', & + LONG_NAME = 'northward_wind', & + UNITS = 'm s-1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'W', & - LONG_NAME = 'vertical_velocity', & - UNITS = 'm s-1', & - RESTART = MAPL_RestartSkip, & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & + SHORT_NAME = 'W', & + LONG_NAME = 'vertical_velocity', & + UNITS = 'm s-1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'TS', & - LONG_NAME = 'surface temperature', & - UNITS = 'K', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & + SHORT_NAME = 'TS', & + LONG_NAME = 'surface temperature', & + UNITS = 'K', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'SNOMAS', & - LONG_NAME = 'snow_mass', & - UNITS = 'kg/m2', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & + SHORT_NAME = 'SNOMAS', & + LONG_NAME = 'snow_mass', & + UNITS = 'kg/m2', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'FRLANDICE', & - LONG_NAME = 'areal_landice_fraction', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & + SHORT_NAME = 'FRLANDICE', & + LONG_NAME = 'areal_landice_fraction', & + UNITS = '1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'FRLAND', & - LONG_NAME = 'areal_land_fraction', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & + SHORT_NAME = 'FRLAND', & + LONG_NAME = 'areal_land_fraction', & + UNITS = '1', & + DIMS = MAPL_DimsHorzOnly, & + VLOCATION = MAPL_VLocationNone, & AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) @@ -481,15 +464,15 @@ subroutine SetServices ( GC, RC ) ! These bundles should be changed when we merge w/ the head. call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'MTR', & - LONG_NAME = 'tracers_for_moist', & - UNITS = 'X', & + SHORT_NAME = 'MTR', & + LONG_NAME = 'tracers_for_moist', & + UNITS = 'X', & DATATYPE = MAPL_BundleItem, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, & RESTART = MAPL_RestartSkip, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & SHORT_NAME = 'KPBL', & @@ -500,7 +483,7 @@ subroutine SetServices ( GC, RC ) AVERAGING_INTERVAL = AVRGNINT, & REFRESH_INTERVAL = RFRSHINT, & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & SHORT_NAME = 'KPBL_SC', & @@ -512,7 +495,7 @@ subroutine SetServices ( GC, RC ) REFRESH_INTERVAL = RFRSHINT, & DEFAULT = 72., & RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddImportSpec(GC, & LONG_NAME = 'aerosols', & @@ -524,8 +507,6 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - !new imports required for Aer-Cloud Interactions - call MAPL_AddImportSpec(GC, & SHORT_NAME = 'TAUOROX', & LONG_NAME = 'surface_eastward_orographic_gravity_wave_stress', & @@ -546,45 +527,43 @@ subroutine SetServices ( GC, RC ) call MAPL_AddImportSpec ( gc, & SHORT_NAME = 'OMEGA', & LONG_NAME = 'vertical_pressure_velocity', & - UNITS = 'Pa s-1', & - RESTART = MAPL_RestartSkip, & ! comes from DYN + UNITS = 'Pa s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & - LONG_NAME = 'Blackadar_length_scale_for_scalars', & - UNITS = 'm', & - SHORT_NAME = 'ALH', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationEdge, & - RC=STATUS ) + call MAPL_AddImportSpec(GC, & + LONG_NAME = 'Blackadar_length_scale_for_scalars', & + UNITS = 'm', & + SHORT_NAME = 'ALH', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationEdge, & + RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & + call MAPL_AddImportSpec ( GC, & SHORT_NAME = 'AREA', & LONG_NAME = 'agrid_cell_area', & UNITS = 'm+2', & RESTART = MAPL_RestartSkip, & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & - RC=STATUS ) + RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( GC, & - SHORT_NAME = 'WSUB_CLIM', & - LONG_NAME = 'stdev in vertical velocity', & + call MAPL_AddImportSpec ( GC, & + SHORT_NAME = 'WSUB_CLIM', & + LONG_NAME = 'stdev in vertical velocity', & UNITS = 'm s-1', & RESTART = MAPL_RestartSkip, & ! Read WSUB from a climatology - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddImportSpec ( gc, & SHORT_NAME = 'DTDTDYN', & LONG_NAME = 'tendency_of_air_temperature_due_to_dynamics', & - UNITS = 'K s-1', & - RESTART = MAPL_RestartSkip, & + UNITS = 'K s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -592,93 +571,83 @@ subroutine SetServices ( GC, RC ) call MAPL_AddImportSpec ( gc, & SHORT_NAME = 'DQVDTDYN', & LONG_NAME = 'tendency_of_specific_humidity_due_to_dynamics', & - UNITS = 'kg/kg/s', & - RESTART = MAPL_RestartSkip, & + UNITS = 'kg/kg/s', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & + call MAPL_AddImportSpec ( gc, & SHORT_NAME = 'QV_DYN_IN', & LONG_NAME = 'spec_humidity_at_begin_of_time_step', & UNITS = 'kg kg-1', & - RESTART = MAPL_RestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & - SHORT_NAME = 'T_DYN_IN', & - LONG_NAME = 'temperature_at_begin_of_time_step', & - UNITS = 'K', & - RESTART = MAPL_RestartSkip, & + call MAPL_AddImportSpec ( gc, & + SHORT_NAME = 'T_DYN_IN', & + LONG_NAME = 'temperature_at_begin_of_time_step', & + UNITS = 'K', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & - SHORT_NAME = 'U_DYN_IN', & - LONG_NAME = 'u_wind_at_begin_of_time_step', & - UNITS = 'm s-1', & - RESTART = MAPL_RestartSkip, & + call MAPL_AddImportSpec ( gc, & + SHORT_NAME = 'U_DYN_IN', & + LONG_NAME = 'u_wind_at_begin_of_time_step', & + UNITS = 'm s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & - SHORT_NAME = 'V_DYN_IN', & - LONG_NAME = 'v_wind_at_begin_of_time_step', & - UNITS = 'm s-1', & - RESTART = MAPL_RestartSkip, & + call MAPL_AddImportSpec ( gc, & + SHORT_NAME = 'V_DYN_IN', & + LONG_NAME = 'v_wind_at_begin_of_time_step', & + UNITS = 'm s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( gc, & - SHORT_NAME = 'PLE_DYN_IN', & + call MAPL_AddImportSpec ( gc, & + SHORT_NAME = 'PLE_DYN_IN', & LONG_NAME = 'edge_pressure_at_begin_of_time_step', & - UNITS = 'Pa', & - RESTART = MAPL_RestartSkip, & + UNITS = 'Pa', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationEdge, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec(GC, & + call MAPL_AddImportSpec(GC, & SHORT_NAME = 'DTDT_BL', & LONG_NAME = 'tendency_of_air_temperature_due_to_bound_layer', & UNITS = 'K s-1', & - RESTART = gfEnvRestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - - call MAPL_AddImportSpec(GC, & + + call MAPL_AddImportSpec(GC, & SHORT_NAME = 'DQDT_BL', & LONG_NAME = 'tendency_of_spec_humidity_due_to_bound_layer', & UNITS = 'kg kg-1 s-1', & - RESTART = gfEnvRestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( GC, & + call MAPL_AddImportSpec(GC, & SHORT_NAME = 'RADLW', & LONG_NAME = 'air_temperature_tendency_due_to_longwave', & UNITS = 'K s-1', & - RESTART = gfEnvRestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) + RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddImportSpec ( GC, & + call MAPL_AddImportSpec(GC, & SHORT_NAME = 'RADSW', & LONG_NAME = 'air_temperature_tendency_due_to_longwave', & UNITS = 'K s-1', & - RESTART = gfEnvRestartSkip, & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) + RC=STATUS ) call MAPL_AddImportSpec(GC, & LONG_NAME = '2-meter_air_temperature', & @@ -715,7 +684,7 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddImportSpec(GC, & LONG_NAME = 'sensible_heat_flux', & UNITS = 'W m-2', & @@ -945,7 +914,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'QPTOTLS', & - LONG_NAME = 'mass_fraction_of_large_scale_falling_precip', & + LONG_NAME = 'mass_fraction_of_large_scale_falling_precip', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) @@ -987,7 +956,7 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DVDT ', & LONG_NAME = 'meridional_wind_tendency_due_to_moist', & UNITS = 'm s-2', & @@ -1111,17 +1080,17 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_MFD', & + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'CNV_MFD', & LONG_NAME = 'detraining_mass_flux', & - UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzVert, & + UNITS = 'kg m-2 s-1', & + DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, & RC=STATUS ) VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_MFC', & + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'CNV_MFC', & LONG_NAME = 'cumulative_mass_flux', & UNITS = 'kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -1130,7 +1099,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_FREQ', & + SHORT_NAME = 'CNV_FREQ', & LONG_NAME = 'convective_frequency', & UNITS = 'fraction', & DIMS = MAPL_DimsHorzOnly, & @@ -1139,7 +1108,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_BASEP', & + SHORT_NAME = 'CNV_BASEP', & LONG_NAME = 'pressure_at_convective_cloud_base', & UNITS = 'Pa', & DIMS = MAPL_DimsHorzOnly, & @@ -1148,7 +1117,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CNV_TOPP', & + SHORT_NAME = 'CNV_TOPP', & LONG_NAME = 'pressure_at_convective_cloud_top', & UNITS = 'Pa', & DIMS = MAPL_DimsHorzOnly, & @@ -1676,7 +1645,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='RL', & + SHORT_NAME ='RL', & LONG_NAME ='liquid_cloud_particle_effective_radius', & UNITS ='m', & DIMS = MAPL_DimsHorzVert, & @@ -1684,7 +1653,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RI', & + SHORT_NAME = 'RI', & LONG_NAME = 'ice_phase_cloud_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & @@ -1692,7 +1661,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RR', & + SHORT_NAME = 'RR', & LONG_NAME = 'falling_rain_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & @@ -1700,7 +1669,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RS', & + SHORT_NAME = 'RS', & LONG_NAME = 'falling_snow_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & @@ -1708,13 +1677,13 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RG', & + SHORT_NAME = 'RG', & LONG_NAME = 'falling_graupel_particle_effective_radius', & UNITS = 'm', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME ='NCCN_LIQ', & LONG_NAME ='number_concentration_of_cloud_liquid_particles', & @@ -1730,9 +1699,9 @@ subroutine SetServices ( GC, RC ) DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & - SHORT_NAME ='CLDNCCN', & + SHORT_NAME ='CLDNCCN', & LONG_NAME ='number_concentration_of_cloud_particles', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -1740,7 +1709,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QSATI' , & + SHORT_NAME = 'QSATI' , & LONG_NAME = 'saturation_spec_hum_over_ice', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1748,7 +1717,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QSATL' , & + SHORT_NAME = 'QSATL' , & LONG_NAME = 'saturation_spec_hum_over_liquid', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1756,7 +1725,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'ALPHT' , & + SHORT_NAME = 'ALPHT' , & LONG_NAME = 'pdf_spread_for_condensation_over_qsat_total', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1764,7 +1733,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ALPH1' , & + SHORT_NAME='ALPH1' , & LONG_NAME ='pdf_spread_for_condensation_over_qsat_term1', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -1772,7 +1741,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'ALPH2' , & + SHORT_NAME = 'ALPH2' , & LONG_NAME = 'pdf_spread_for_condensation_over_qsat_term2', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1780,7 +1749,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CFPDFX' , & + SHORT_NAME = 'CFPDFX' , & LONG_NAME = 'cloud_fraction_internal_in_PDF_scheme', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1788,7 +1757,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'RHCLR' , & + SHORT_NAME = 'RHCLR' , & LONG_NAME = 'RH_clear_sky', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1796,7 +1765,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CFPDF' , & + SHORT_NAME = 'CFPDF' , & LONG_NAME = 'cloud_fraction_after_PDF', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1804,7 +1773,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FCLD' , & + SHORT_NAME = 'FCLD' , & LONG_NAME = 'cloud_fraction_for_radiation', & UNITS = '1', & DIMS = MAPL_DimsHorzVert, & @@ -1812,7 +1781,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='QV', & + SHORT_NAME ='QV', & LONG_NAME ='water_vapor_for_radiation', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1820,7 +1789,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QL', & + SHORT_NAME = 'QL', & LONG_NAME = 'in_cloud_cloud_liquid_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1828,7 +1797,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QI', & + SHORT_NAME = 'QI', & LONG_NAME = 'in_cloud_cloud_ice_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1836,7 +1805,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QR', & + SHORT_NAME = 'QR', & LONG_NAME = 'Falling_rain_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1844,7 +1813,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'QS', & + SHORT_NAME = 'QS', & LONG_NAME = 'Falling_snow_for_radiation', & UNITS = 'kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -1932,34 +1901,34 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='LS_PRCP', & + SHORT_NAME ='LS_PRCP', & LONG_NAME ='nonanvil_large_scale_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'AN_PRCP', & + SHORT_NAME = 'AN_PRCP', & LONG_NAME = 'anvil_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='CN_PRCP', & + SHORT_NAME ='CN_PRCP', & LONG_NAME ='deep_convective_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='SC_PRCP', & + SHORT_NAME ='SC_PRCP', & LONG_NAME ='shallow_convective_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2004,10 +1973,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'ER_PRCP', & + SHORT_NAME = 'ER_PRCP', & LONG_NAME = 'spurious_rain_from_RH_cleanup', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2030,26 +1999,26 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='SC_MSE', & + SHORT_NAME ='SC_MSE', & LONG_NAME ='shallow_convective_column_MSE_tendency', & UNITS ='W m-2', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME ='SC_QT', & + SHORT_NAME ='SC_QT', & LONG_NAME ='shallow_convective_column_QT_tendency', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'FILLNQV_IN', & + SHORT_NAME = 'FILLNQV_IN', & LONG_NAME = 'filling_of_negative_Q_on_entry_to_moist', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2062,51 +2031,51 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PGENTOT', & + SHORT_NAME = 'PGENTOT', & LONG_NAME = 'Total_column_production_of_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PREVTOT', & + SHORT_NAME = 'PREVTOT', & LONG_NAME = 'Total_column_re-evap/subl_of_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'LS_ARF', & + SHORT_NAME = 'LS_ARF', & LONG_NAME = 'areal_fraction_of_nonanvil_large_scale_showers',& UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'AN_ARF', & + SHORT_NAME = 'AN_ARF', & LONG_NAME = 'areal_fraction_of_anvil_showers', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'CN_ARF', & + SHORT_NAME = 'CN_ARF', & LONG_NAME = 'areal_fraction_of_convective_showers', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SC_ARF', & + SHORT_NAME = 'SC_ARF', & LONG_NAME = 'areal_fraction_of_shallow_showers', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2159,10 +2128,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'SNO', & + SHORT_NAME = 'SNO', & LONG_NAME = 'snowfall', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2176,7 +2145,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'PRECTOTAL', & - LONG_NAME = 'precipitation_total', & + LONG_NAME = 'precipitation_total', & UNITS = 'mm', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) @@ -2191,106 +2160,106 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PCU', & + SHORT_NAME = 'PCU', & LONG_NAME = 'liquid_convective_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PLS', & + SHORT_NAME = 'PLS', & LONG_NAME = 'liquid_large_scale_precipitation', & UNITS = 'kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPREC', & + SHORT_NAME='TPREC', & LONG_NAME ='total_precipitation', & UNITS ='kg m-2 s-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='HOURNORAIN', & + SHORT_NAME='HOURNORAIN', & LONG_NAME ='time-during_an_hour_with_no_precipitation', & UNITS ='s', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPW', & + SHORT_NAME='TPW', & LONG_NAME ='total_precipitable_water', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCWP', & + SHORT_NAME='CCWP', & LONG_NAME ='grid_mean_conv_cond_water_path_diagnostic', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CWP', & + SHORT_NAME='CWP', & LONG_NAME ='condensed_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CLWP', & + SHORT_NAME='CLWP', & LONG_NAME ='cloud_liquid_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='LWP', & + SHORT_NAME='LWP', & LONG_NAME ='liquid_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='IWP', & + SHORT_NAME='IWP', & LONG_NAME ='ice_water_path', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='BYNCY', & + SHORT_NAME='BYNCY', & LONG_NAME ='buoyancy_of surface_parcel', & UNITS ='m s-2', & - DIMS = MAPL_DimsHorzVert, & + DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CAPE', & + SHORT_NAME='CAPE', & LONG_NAME ='cape_for_surface_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='INHB', & + SHORT_NAME='INHB', & LONG_NAME ='inhibition_for_surface_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2344,74 +2313,74 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQ0', & + SHORT_NAME='TVQ0', & LONG_NAME ='Total_Water_Substance_Before', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQ1', & + SHORT_NAME='TVQ1', & LONG_NAME ='Total_Water_Substance_After', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DCPTE', & + SHORT_NAME='DCPTE', & LONG_NAME ='Total_VI_DcpT', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVE0', & + SHORT_NAME='TVE0', & LONG_NAME ='Total_VI_MSE_Before', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVE1', & + SHORT_NAME='TVE1', & LONG_NAME ='Total_VI_MSE_After', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVEX', & + SHORT_NAME='TVEX', & LONG_NAME ='Total_VI_MSE_Somewhere', & UNITS ='J m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZPBLCN', & + SHORT_NAME='ZPBLCN', & LONG_NAME ='boundary_layer_depth', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZLCL', & + SHORT_NAME='ZLCL', & LONG_NAME ='lifting_condensation_level', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZLFC', & + SHORT_NAME='ZLFC', & LONG_NAME ='level_of_free_convection', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2427,15 +2396,15 @@ subroutine SetServices ( GC, RC ) SHORT_NAME='ZCBL', & LONG_NAME ='height_of_cloud_base_layer', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='MXDIAM', & + SHORT_NAME='MXDIAM', & LONG_NAME ='diameter_of_largest_RAS_plume', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2488,10 +2457,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RAS_TIME', & + SHORT_NAME='RAS_TIME', & LONG_NAME ='timescale_for_RAS_plumes', & UNITS ='s' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2535,44 +2504,44 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) -#if 0 +#if 0 ! taken out since they are now friendly to dynamics call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLCN', & LONG_NAME ='mass_fraction_of_convective_cloud_liquid_water', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QICN', & LONG_NAME ='mass_fraction_of_convective_cloud_ice_water', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLLS', & LONG_NAME ='large_scale_cloud_volume_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLCN', & LONG_NAME ='convective_cloud_volume_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) #endif call MAPL_AddExportSpec(GC, & - SHORT_NAME='RH1', & + SHORT_NAME='RH1', & LONG_NAME ='relative_humidity_before_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -2580,7 +2549,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RH2', & + SHORT_NAME='RH2', & LONG_NAME ='relative_humidity_after_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -2589,7 +2558,7 @@ subroutine SetServices ( GC, RC ) !Outputs to give model trajectory in the moist TLM/ADJ call MAPL_AddExportSpec(GC, & - SHORT_NAME='TH_moist', & + SHORT_NAME='TH_moist', & LONG_NAME ='potential_temp_before_moist', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -2597,7 +2566,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='Q_moist', & + SHORT_NAME='Q_moist', & LONG_NAME ='specific_humidity_before_moist', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -2605,7 +2574,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='KCBL_moist', & + SHORT_NAME='KCBL_moist', & LONG_NAME ='KCBL_before_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzOnly, & @@ -2613,7 +2582,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ctop_moist', & + SHORT_NAME='ctop_moist', & LONG_NAME ='ctop_after_ras', & UNITS ='1', & DIMS = MAPL_DimsHorzOnly, & @@ -2621,7 +2590,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TS_moist', & + SHORT_NAME='TS_moist', & LONG_NAME ='surface_temp_before_moist', & UNITS ='K', & DIMS = MAPL_DimsHorzOnly, & @@ -2671,7 +2640,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RHX', & + SHORT_NAME='RHX', & LONG_NAME ='relative_humidity_after_PDF', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -2679,7 +2648,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REVSU_CN', & + SHORT_NAME='REVSU_CN', & LONG_NAME ='evap_subl_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2687,7 +2656,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REVSU_LSAN', & + SHORT_NAME='REVSU_LSAN', & LONG_NAME ='evap_subl_of_non_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2695,7 +2664,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_CN', & + SHORT_NAME='REV_CN', & LONG_NAME ='evaporation_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2703,7 +2672,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_SC', & + SHORT_NAME='REV_SC', & LONG_NAME ='evaporation_of_shallow_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2711,7 +2680,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_AN', & + SHORT_NAME='REV_AN', & LONG_NAME ='evaporation_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2719,7 +2688,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='REV_LS', & + SHORT_NAME='REV_LS', & LONG_NAME ='evaporation_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2727,7 +2696,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_CN', & + SHORT_NAME='RSU_CN', & LONG_NAME ='sublimation_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2735,7 +2704,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_SC', & + SHORT_NAME='RSU_SC', & LONG_NAME ='sublimation_of_shallow_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2743,7 +2712,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_AN', & + SHORT_NAME='RSU_AN', & LONG_NAME ='sublimation_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2751,7 +2720,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RSU_LS', & + SHORT_NAME='RSU_LS', & LONG_NAME ='sublimation_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2759,7 +2728,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACR_TOT', & + SHORT_NAME='ACR_TOT', & LONG_NAME ='total_accretion_of__precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2767,7 +2736,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_CN', & + SHORT_NAME='ACRLL_CN', & LONG_NAME ='liq_liq_accretion_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2775,7 +2744,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_SC', & + SHORT_NAME='ACRLL_SC', & LONG_NAME ='liq_liq_accretion_of_shallow_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2783,7 +2752,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_AN', & + SHORT_NAME='ACRLL_AN', & LONG_NAME ='liq_liq_accretion_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2791,7 +2760,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRLL_LS', & + SHORT_NAME='ACRLL_LS', & LONG_NAME ='liq_liq_accretion_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2799,7 +2768,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_CN', & + SHORT_NAME='ACRIL_CN', & LONG_NAME ='ice_liq_accretion_of_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2807,7 +2776,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_SC', & + SHORT_NAME='ACRIL_SC', & LONG_NAME ='ice_liq_accretion_of_shallow_convective_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2815,7 +2784,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_AN', & + SHORT_NAME='ACRIL_AN', & LONG_NAME ='ice_liq_accretion_of_anvil_precipitation', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2823,7 +2792,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ACRIL_LS', & + SHORT_NAME='ACRIL_LS', & LONG_NAME ='ice_liq_accretion_of_nonanvil_large_scale_precipitation',& UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2831,7 +2800,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_CN', & + SHORT_NAME='PFI_CN', & LONG_NAME ='3D_flux_of_ice_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2839,7 +2808,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_SC', & + SHORT_NAME='PFI_SC', & LONG_NAME ='3D_flux_of_ice_shallow_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2847,7 +2816,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_AN', & + SHORT_NAME='PFI_AN', & LONG_NAME ='3D_flux_of_ice_anvil_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2855,7 +2824,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_LS', & + SHORT_NAME='PFI_LS', & LONG_NAME ='3D_flux_of_ice_nonanvil_large_scale_precipitation',& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2863,7 +2832,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFI_LSAN', & + SHORT_NAME='PFI_LSAN', & LONG_NAME ='3D_flux_of_ice_nonconvective_precipitation' ,& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2871,7 +2840,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_CN', & + SHORT_NAME='PFL_CN', & LONG_NAME ='3D_flux_of_liquid_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2879,7 +2848,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_SC', & + SHORT_NAME='PFL_SC', & LONG_NAME ='3D_flux_of_liquid_shallow_convective_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2887,7 +2856,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_AN', & + SHORT_NAME='PFL_AN', & LONG_NAME ='3D_flux_of_liquid_anvil_precipitation', & UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2895,7 +2864,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_LS', & + SHORT_NAME='PFL_LS', & LONG_NAME ='3D_flux_of_liquid_nonanvil_large_scale_precipitation',& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2903,7 +2872,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFL_LSAN', & + SHORT_NAME='PFL_LSAN', & LONG_NAME ='3D_flux_of_liquid_nonconvective_precipitation' ,& UNITS ='kg m-2 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2911,7 +2880,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DPDTMST', & + SHORT_NAME='DPDTMST', & LONG_NAME ='layer_pressure_thickness_tendency_from_moist', & UNITS ='Pa s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2919,7 +2888,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DCNVL', & + SHORT_NAME='DCNVL', & LONG_NAME ='convective_source_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2927,7 +2896,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DCNVI', & + SHORT_NAME='DCNVI', & LONG_NAME ='convective_source_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2935,7 +2904,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DLPDF', & + SHORT_NAME='DLPDF', & LONG_NAME ='pdf_source_sink_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2943,7 +2912,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DIPDF', & + SHORT_NAME='DIPDF', & LONG_NAME ='pdf_source_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2951,7 +2920,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DLFIX', & + SHORT_NAME='DLFIX', & LONG_NAME ='fix_source_sink_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2959,7 +2928,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DIFIX', & + SHORT_NAME='DIFIX', & LONG_NAME ='fix_source_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2967,7 +2936,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='AUT', & + SHORT_NAME='AUT', & LONG_NAME ='autoconv_sink_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2975,7 +2944,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='EVAPC', & + SHORT_NAME='EVAPC', & LONG_NAME ='evaporation_of_cloud_liq', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2983,7 +2952,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SDM', & + SHORT_NAME='SDM', & LONG_NAME ='sedimentation_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2991,7 +2960,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLICE_AN', & + SHORT_NAME='VFALLICE_AN', & LONG_NAME ='autoconversion_fall_velocity_of_anvil_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -2999,7 +2968,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLICE_LS', & + SHORT_NAME='VFALLICE_LS', & LONG_NAME ='autoconversion_fall_velocity_of_largescale_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3007,7 +2976,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLWAT_AN', & + SHORT_NAME='VFALLWAT_AN', & LONG_NAME ='autoconversion_fall_velocity_of_anvil_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3015,7 +2984,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLWAT_LS', & + SHORT_NAME='VFALLWAT_LS', & LONG_NAME ='autoconversion_fall_velocity_of_largescale_rain',& UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3023,7 +2992,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_AN', & + SHORT_NAME='VFALLRN_AN', & LONG_NAME ='reevaporation_fall_velocity_of_anvil_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3031,7 +3000,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_LS', & + SHORT_NAME='VFALLRN_LS', & LONG_NAME ='reevaporation_fall_velocity_of_largescale_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3039,7 +3008,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_CN', & + SHORT_NAME='VFALLRN_CN', & LONG_NAME ='reevaporation_fall_velocity_of_convective_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3047,7 +3016,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLRN_SC', & + SHORT_NAME='VFALLRN_SC', & LONG_NAME ='reevaporation_fall_velocity_of_shallow_rain', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3055,7 +3024,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_AN', & + SHORT_NAME='VFALLSN_AN', & LONG_NAME ='reevaporation_fall_velocity_of_anvil_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3063,7 +3032,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_LS', & + SHORT_NAME='VFALLSN_LS', & LONG_NAME ='reevaporation_fall_velocity_of_largescale_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3071,7 +3040,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_CN', & + SHORT_NAME='VFALLSN_CN', & LONG_NAME ='reevaporation_fall_velocity_of_convective_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3079,7 +3048,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VFALLSN_SC', & + SHORT_NAME='VFALLSN_SC', & LONG_NAME ='reevaporation_fall_velocity_of_shallow_snow', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3087,7 +3056,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SUBLC', & + SHORT_NAME='SUBLC', & LONG_NAME ='sublimation_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3095,7 +3064,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZ_TT', & + SHORT_NAME='FRZ_TT', & LONG_NAME ='freezing_of_cloud_condensate', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3103,7 +3072,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZ_PP', & + SHORT_NAME='FRZ_PP', & LONG_NAME ='freezing_of_precip_condensate', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3111,7 +3080,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFRZ', & + SHORT_NAME='PFRZ', & LONG_NAME ='Probability_of_freezing_of_aerosol_part', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -3127,7 +3096,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME='ICEANMOVE', & +!!$ SHORT_NAME='ICEANMOVE', & !!$ LONG_NAME ='move2anv_source_of_anvil_ice', & !!$ UNITS ='kg kg-1 s-1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3135,7 +3104,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME = 'DLSCLD' , & +!!$ SHORT_NAME = 'DLSCLD' , & !!$ LONG_NAME = 'move2anv_change_in_large_scale_cloud_fraction', & !!$ UNITS = '1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3143,7 +3112,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME = 'DANCLD' , & +!!$ SHORT_NAME = 'DANCLD' , & !!$ LONG_NAME = 'move2anv_change_in_anvil_cloud_fraction', & !!$ UNITS = '1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3159,7 +3128,7 @@ subroutine SetServices ( GC, RC ) !!$ VERIFY_(STATUS) !!$ !!$ call MAPL_AddExportSpec(GC, & -!!$ SHORT_NAME='CUSNOWMOVE', & +!!$ SHORT_NAME='CUSNOWMOVE', & !!$ LONG_NAME ='movels2conv_source_of_cnv_snow', & !!$ UNITS ='kg kg-1 s-1', & !!$ DIMS = MAPL_DimsHorzVert, & @@ -3175,7 +3144,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PFICNMOVE', & + SHORT_NAME='PFICNMOVE', & LONG_NAME ='moved_source_of_cnv_snow', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3191,7 +3160,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CU2DSNOWMOVE', & + SHORT_NAME='CU2DSNOWMOVE', & LONG_NAME ='moved_2d_source_of_cnv_snow', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzOnly, & @@ -3202,128 +3171,128 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PDFLZ', & + SHORT_NAME='PDFLZ', & LONG_NAME ='statistical_source_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PDFIZ', & + SHORT_NAME='PDFIZ', & LONG_NAME ='statistical_source_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNVRNZ', & + SHORT_NAME='CNVRNZ', & LONG_NAME ='convective_production_of_rain_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNVLZ', & + SHORT_NAME='CNVLZ', & LONG_NAME ='convective_source_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNVIZ', & + SHORT_NAME='CNVIZ', & LONG_NAME ='convective_source_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='EVPCZ', & + SHORT_NAME='EVPCZ', & LONG_NAME ='evaporation_loss_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SUBCZ', & + SHORT_NAME='SUBCZ', & LONG_NAME ='sublimation_loss_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='EVPPZ', & + SHORT_NAME='EVPPZ', & LONG_NAME ='evaporation_loss_of_precip_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SUBPZ', & + SHORT_NAME='SUBPZ', & LONG_NAME ='sublimation_loss_of_precip_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='AUTZ', & + SHORT_NAME='AUTZ', & LONG_NAME ='autoconversion_loss_of_cloud_water', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SDMZ', & + SHORT_NAME='SDMZ', & LONG_NAME ='sedimentation_loss_of_cloud_ice', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='COLLLZ', & + SHORT_NAME='COLLLZ', & LONG_NAME ='accretion_loss_of_cloud_water_to_rain', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='COLLIZ', & + SHORT_NAME='COLLIZ', & LONG_NAME ='accretion_loss_of_cloud_water_to_snow', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZCZ', & + SHORT_NAME='FRZCZ', & LONG_NAME ='net_freezing_of_cloud_condensate', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='FRZPZ', & + SHORT_NAME='FRZPZ', & LONG_NAME ='net_freezing_of_precip_condensate', & UNITS ='kg m-2 s-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RCCODE', & + SHORT_NAME='RCCODE', & LONG_NAME ='Convection_return_codes', & UNITS ='codes', & DIMS = MAPL_DimsHorzVert, & @@ -3331,7 +3300,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TRIEDLV', & + SHORT_NAME='TRIEDLV', & LONG_NAME ='Tested_for_convection_at_this_level', & UNITS ='0 or 1', & DIMS = MAPL_DimsHorzVert, & @@ -3341,7 +3310,7 @@ subroutine SetServices ( GC, RC ) ! MATMAT Exports for after-RAS inoutputs call MAPL_AddExportSpec(GC, & - SHORT_NAME='QVRAS', & + SHORT_NAME='QVRAS', & LONG_NAME ='water_vapor_after_ras', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -3349,7 +3318,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='THRAS', & + SHORT_NAME='THRAS', & LONG_NAME ='potential_temperature_after_ras', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -3357,7 +3326,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='URAS', & + SHORT_NAME='URAS', & LONG_NAME ='eastward_wind_after_ras', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3365,7 +3334,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='VRAS', & + SHORT_NAME='VRAS', & LONG_NAME ='northward_wind_after_ras', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3375,7 +3344,7 @@ subroutine SetServices ( GC, RC ) ! MATMAT Exports for before-RAS inputs for RAStest call MAPL_AddExportSpec(GC, & - SHORT_NAME='THOI', & + SHORT_NAME='THOI', & LONG_NAME ='potential_temperature_before_ras', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -3383,7 +3352,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QHOI', & + SHORT_NAME='QHOI', & LONG_NAME ='specific_humidity_before_ras', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -3391,7 +3360,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QSSI', & + SHORT_NAME='QSSI', & LONG_NAME ='saturation_specific_humidity_before_ras', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & @@ -3399,7 +3368,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQSI', & + SHORT_NAME='DQSI', & LONG_NAME ='deriv_sat_specific_humidity_wrt_t_before_ras',& UNITS ='kg kg-1 K-1', & DIMS = MAPL_DimsHorzVert, & @@ -3407,7 +3376,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='PLEI', & + SHORT_NAME='PLEI', & LONG_NAME ='air_pressure_before_ras', & UNITS ='Pa', & DIMS = MAPL_DimsHorzVert, & @@ -3415,7 +3384,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPERTI', & + SHORT_NAME='TPERTI', & LONG_NAME ='temperature_perturbation_before_ras', & UNITS ='K', & DIMS = MAPL_DimsHorzOnly, & @@ -3423,7 +3392,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='KCBLI', & + SHORT_NAME='KCBLI', & LONG_NAME ='cloud_base_layer_before_ras', & UNITS ='1', & DIMS = MAPL_DimsHorzOnly, & @@ -3438,72 +3407,72 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='specific_humidity', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLLSX0', & LONG_NAME ='initial_mass_fraction_of_large_scale_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLLSX1', & LONG_NAME ='final_mass_fraction_of_large_scale_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLCNX0', & LONG_NAME ='initial_mass_fraction_of_convective_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QLCNX1', & LONG_NAME ='final_mass_fraction_of_convective_cloud_liquid_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLLSX0', & LONG_NAME ='large_scale_cloud_area_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CLCNX0', & LONG_NAME ='convective_cloud_area_fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QILSX0', & LONG_NAME ='initial_mass_fraction_of_large_scale_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QILSX1', & LONG_NAME ='final_mass_fraction_of_large_scale_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -3511,32 +3480,32 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='initial_mass_fraction_of_convective_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QICNX1', & LONG_NAME ='final_mass_fraction_of_convective_cloud_ice_water', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QCCNX0', & LONG_NAME ='initial_mass_fraction_of_convective_cloud_condensate', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='QCLSX0', & LONG_NAME ='initial_mass_fraction_of_large_scale_cloud_condensate', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) @@ -3751,7 +3720,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='THAFMOIST', & + SHORT_NAME='THAFMOIST', & LONG_NAME ='potential_temperature_after_all_of_moist', & UNITS ='K', & DIMS = MAPL_DimsHorzVert, & @@ -3775,7 +3744,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SAFMOIST', & + SHORT_NAME='SAFMOIST', & LONG_NAME ='dry_static_energy_after_all_of_moist', & UNITS ='m+2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -3783,10 +3752,10 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) - !-------Aerosol Cloud Interactions Diagnostics + !-------Aerosol Cloud Interactions Diagnostics call MAPL_AddExportSpec(GC, & - SHORT_NAME='SMAX_LIQ', & + SHORT_NAME='SMAX_LIQ', & LONG_NAME ='Maximum incloud supersaturation for liquid', & UNITS ='%', & DIMS = MAPL_DimsHorzVert, & @@ -3794,7 +3763,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='WSUB', & + SHORT_NAME='WSUB', & LONG_NAME ='Subgrid Scale in-cloud vertical velocity', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -3802,7 +3771,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCN01', & + SHORT_NAME='CCN01', & LONG_NAME ='CCN conc at 0.1 % supersaturation (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -3810,7 +3779,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCN04', & + SHORT_NAME='CCN04', & LONG_NAME ='CCN conc at 0.4 % supersaturation (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -3818,7 +3787,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCN1', & + SHORT_NAME='CCN1', & LONG_NAME ='CCN conc at 1.0 % supersaturation (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -3826,133 +3795,133 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SMAX_ICE', & + SHORT_NAME='SMAX_ICE', & LONG_NAME ='Maximum incloud supersaturation for ice', & UNITS ='%', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CDNC_NUC', & + SHORT_NAME='CDNC_NUC', & LONG_NAME ='Nucleated cloud droplet concentration (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='INC_NUC', & + SHORT_NAME='INC_NUC', & LONG_NAME ='Nucleated ice crystal concentration (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NCPL_VOL', & LONG_NAME ='particle_number_for_liquid_cloud', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NCPI_VOL', & LONG_NAME ='particle_number_for_ice_cloud', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='SO4', & LONG_NAME ='Sulfate number conc.', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='ORG', & LONG_NAME ='Organic number conc. (hydrophilic)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='BCARBON', & LONG_NAME ='Black carbon number conc. (hydrophilic)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='DUST', & LONG_NAME ='Total dust number conc', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='SEASALT', & LONG_NAME ='Total sea number conc', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NHET_NUC', & LONG_NAME ='Nucleated ice crystal concentration by het freezing (grid_avg)', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='NLIM_NUC', & LONG_NAME ='Limiting IN concentration allowing hom freezing', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SAT_RAT', & + SHORT_NAME='SAT_RAT', & LONG_NAME ='saturation_ratio_after_moist', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQVDT_micro', & + SHORT_NAME='DQVDT_micro', & LONG_NAME ='Q tendency due to microphysics ', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQLDT_micro', & + SHORT_NAME='DQLDT_micro', & LONG_NAME ='QL tendency due to microphysics ', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DQIDT_micro', & + SHORT_NAME='DQIDT_micro', & LONG_NAME ='QI tendency due to microphysics ', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME='DQRDT_micro', & @@ -3987,12 +3956,12 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DTDT_micro', & + SHORT_NAME='DTDT_micro', & LONG_NAME ='T tendency due to microphysics ', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME='DUDT_micro', & @@ -4011,24 +3980,24 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQX1', & + SHORT_NAME='TVQX1', & LONG_NAME ='Total_Water_Substance_bef_macro', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TVQX2', & + SHORT_NAME='TVQX2', & LONG_NAME ='Total_Water_Substance_bef_micro', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RL_MASK', & + SHORT_NAME='RL_MASK', & LONG_NAME ='volumetric_liquid_cloud_particle_volume_radius', & UNITS ='m', & DIMS = MAPL_DimsHorzVert, & @@ -4036,7 +4005,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RI_MASK', & + SHORT_NAME='RI_MASK', & LONG_NAME ='volumetric_ice_cloud_particle_volume_radius', & UNITS ='m', & DIMS = MAPL_DimsHorzVert, & @@ -4044,7 +4013,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='KAPPA', & + SHORT_NAME='KAPPA', & LONG_NAME ='kappa parameter for activation', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4056,23 +4025,23 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='liquid_cloud_area_fraction (LS)', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='CFICE', & LONG_NAME ='ice_cloud_area_fraction (LS)', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME ='RHICE', & LONG_NAME ='Relative humidity wrt ice', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4080,7 +4049,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Relative humidity wrt liquid', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4088,7 +4057,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Effective Freezing RHi', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4097,7 +4066,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Immersion_IN', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4105,7 +4074,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Deposition_IN', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4114,7 +4083,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Immersion IN from dust', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4122,7 +4091,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='deposition IN from dust', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4130,7 +4099,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Supercooled cloud fraction', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4138,11 +4107,11 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Supercooled cloud fraction including snow and rain', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_GW', & + SHORT_NAME='SIGW_GW', & LONG_NAME ='Subgrid Scale vertical velocity variance from GW', & UNITS ='m2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -4150,7 +4119,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_CNV', & + SHORT_NAME='SIGW_CNV', & LONG_NAME ='Subgrid Scale vertical velocity variance from convection', & UNITS ='m2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -4159,7 +4128,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_TURB', & + SHORT_NAME='SIGW_TURB', & LONG_NAME ='Subgrid Scale vertical velocity variance from turbulence', & UNITS ='m2 s-2', & DIMS = MAPL_DimsHorzVert, & @@ -4167,7 +4136,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SIGW_RC', & + SHORT_NAME='SIGW_RC', & LONG_NAME ='Mean subgrid Scale vertical velocity from rad cooling', & UNITS ='m s-1', & DIMS = MAPL_DimsHorzVert, & @@ -4175,7 +4144,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNV_FICE', & + SHORT_NAME='CNV_FICE', & LONG_NAME ='Ice fraction in convective tower', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4183,14 +4152,14 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNV_NDROP', & + SHORT_NAME='CNV_NDROP', & LONG_NAME ='Droplet number conc. in conv. detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - - + + call MAPL_AddExportSpec(GC, & SHORT_NAME='NWFA', & LONG_NAME ='Number concentration of water-friendly aerosol', & @@ -4201,7 +4170,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CNV_NICE', & + SHORT_NAME='CNV_NICE', & LONG_NAME ='Ice crystal number conc. in conv. detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -4209,7 +4178,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SC_NDROP', & + SHORT_NAME='SC_NDROP', & LONG_NAME ='Droplet number conc. in shallow detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -4217,7 +4186,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SC_NICE', & + SHORT_NAME='SC_NICE', & LONG_NAME ='Ice crystal number conc. in shallow detrainment', & UNITS ='m-3', & DIMS = MAPL_DimsHorzVert, & @@ -4225,7 +4194,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPERT_SC', & + SHORT_NAME='TPERT_SC', & LONG_NAME ='Shallow_convection_source_air_temperature_perturbation', & UNITS ='K', & DIMS = MAPL_DimsHorzOnly, & @@ -4233,7 +4202,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QPERT_SC', & + SHORT_NAME='QPERT_SC', & LONG_NAME ='Shallow_convection_source_air_humidity_perturbation', & UNITS ='kg kg-1', & DIMS = MAPL_DimsHorzOnly, & @@ -4241,7 +4210,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RHCmicro', & + SHORT_NAME='RHCmicro', & LONG_NAME ='Corrected RHc after micro', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4249,26 +4218,26 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CCNCOLUMN', & + SHORT_NAME='CCNCOLUMN', & LONG_NAME ='Vertically integrated CCN at 1% ssat', & UNITS ='m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NDCOLUMN', & + SHORT_NAME='NDCOLUMN', & LONG_NAME ='Vertically integrated NCPL', & UNITS ='m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCCOLUMN', & + SHORT_NAME='NCCOLUMN', & LONG_NAME ='Vertically integrated NCPI', & UNITS ='m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -4277,7 +4246,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='ice mixing ration tendency due to Bergeron process ', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4285,7 +4254,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Snow mixing ration tendency due to Bergeron process ', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4293,7 +4262,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Melting of cloud ice', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4302,7 +4271,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Residual cloud tendency in micro', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4310,11 +4279,11 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Residual ice cloud tendency in micro', & UNITS ='Kg Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='AUTICE', & + SHORT_NAME='AUTICE', & LONG_NAME ='autoconv_sink_of_cloud_ice', & UNITS ='kg kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & @@ -4327,7 +4296,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='T tendency from ras precip', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4336,7 +4305,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to immersion freezing', & UNITS ='Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4345,7 +4314,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to contact freezing', & UNITS ='Kg-1 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4365,12 +4334,12 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='DTDT_macro', & + SHORT_NAME='DTDT_macro', & LONG_NAME ='T tendency due to macrophysics ', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME='DQVDT_macro', & @@ -4489,7 +4458,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Tendency in T from micro precip freezing', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4497,7 +4466,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Tendency in T from micro snow melting', & UNITS ='K s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4506,7 +4475,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to nucleation on aerosol', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4515,7 +4484,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to H-M splittering', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4523,7 +4492,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to sublimation', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4531,7 +4500,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to autoconversion to snow', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4539,7 +4508,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice number tendency due to accretion by snow', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4548,7 +4517,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Ice crystal number tendency from convective detrainment', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4557,7 +4526,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to activation', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4565,7 +4534,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to accretion by snow', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4574,7 +4543,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to evaporation', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4582,7 +4551,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to accretion by rain', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & @@ -4590,7 +4559,7 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency due to autoconversion', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) @@ -4599,50 +4568,50 @@ subroutine SetServices ( GC, RC ) LONG_NAME ='Cloud droplet number tendency from convective detrainment', & UNITS ='m-3 s-1', & DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, RC=STATUS ) + VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CLDREFFL_TOP', & + SHORT_NAME='CLDREFFL_TOP', & LONG_NAME ='Droplet effective radius at cloud top', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='CLDREFFI_TOP', & + SHORT_NAME='CLDREFFI_TOP', & LONG_NAME ='ice crystal effective radius at cloud top', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCPL_TOP', & + SHORT_NAME='NCPL_TOP', & LONG_NAME ='Grid-averaged NCPL at cloud top', & UNITS ='m-3' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCPI_TOP', & + SHORT_NAME='NCPI_TOP', & LONG_NAME ='Grid-averaged NCPI at cloud top', & UNITS ='m-3' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='NCPL_CLDBASE', & + SHORT_NAME='NCPL_CLDBASE', & LONG_NAME ='IN-CLOUD NCPL at cloud base', & UNITS ='m-3' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & @@ -4662,33 +4631,33 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='QCVAR_EXP', & + SHORT_NAME='QCVAR_EXP', & LONG_NAME ='inverse relative variance of cloud water', & UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - - + + call MAPL_AddExportSpec(GC, & - SHORT_NAME='LTS', & + SHORT_NAME='LTS', & LONG_NAME ='Lower tropospheric stability', & UNITS ='K', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & - SHORT_NAME='EIS', & + SHORT_NAME='EIS', & LONG_NAME ='Estimated Inversion Strength', & UNITS ='K', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - - + + call MAPL_AddExportSpec(GC, & - SHORT_NAME='RAS_ALPHA', & + SHORT_NAME='RAS_ALPHA', & LONG_NAME ='RAS relaxation parameter', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & @@ -4696,13 +4665,13 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='RAS_TAU', & + SHORT_NAME='RAS_TAU', & LONG_NAME ='RAS total relaxation timescale', & UNITS ='1', & DIMS = MAPL_DimsHorzVert, & VLOCATION = MAPL_VLocationCenter, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DNDDT ', & LONG_NAME = 'total_liq_droplet_number_tendency_due_to_moist', & @@ -4720,7 +4689,7 @@ subroutine SetServices ( GC, RC ) VLOCATION = MAPL_VLocationCenter, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DQDT_GF', & LONG_NAME = 'tendency_of_spec_humidity_due_GF', & @@ -4832,7 +4801,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'ERRDP', & - LONG_NAME = 'convection_code_deep_GF', & + LONG_NAME = 'convection_code_deep_GF', & UNITS = '1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4840,7 +4809,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'ERRSH', & - LONG_NAME = 'convection_code_shallow_GF', & + LONG_NAME = 'convection_code_shallow_GF', & UNITS = '1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4848,7 +4817,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'ERRMD', & - LONG_NAME = 'convection_code_mid_GF', & + LONG_NAME = 'convection_code_mid_GF', & UNITS = '1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4856,7 +4825,7 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA0', & - LONG_NAME = 'cloud work function 0', & + LONG_NAME = 'cloud work function 0', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4865,7 +4834,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA1', & - LONG_NAME = 'cloud work function 1', & + LONG_NAME = 'cloud work function 1', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4874,7 +4843,7 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA2', & - LONG_NAME = 'cloud work function 2', & + LONG_NAME = 'cloud work function 2', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4883,16 +4852,16 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA3', & - LONG_NAME = 'cloud work function 3', & + LONG_NAME = 'cloud work function 3', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA1_CIN', & - LONG_NAME = 'cloud work function CIN', & + LONG_NAME = 'cloud work function CIN', & UNITS = 'J kg-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4901,25 +4870,25 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'AA1_BL', & - LONG_NAME = 'Bound layer AA1', & + LONG_NAME = 'Bound layer AA1', & UNITS = 'J kg-1 s-1', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'TAU_BL', & - LONG_NAME = 'Bound layer time scale', & + LONG_NAME = 'Bound layer time scale', & UNITS = 's', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'TAU_EC', & - LONG_NAME = 'cape removal time scale', & + LONG_NAME = 'cape removal time scale', & UNITS = 's', & DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, & @@ -4927,26 +4896,26 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPWI', & + SHORT_NAME='TPWI', & LONG_NAME ='initial_total_precipitable_water', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) - + call MAPL_AddExportSpec(GC, & - SHORT_NAME='TPWI_star', & + SHORT_NAME='TPWI_star', & LONG_NAME ='saturation_initial_total_precipitable_water', & UNITS ='kg m-2' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='LFR_GF', & + SHORT_NAME='LFR_GF', & LONG_NAME ='lightning_flash_density ', & UNITS ='km-2 day-1' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -4958,7 +4927,7 @@ subroutine SetServices ( GC, RC ) call MAPL_TimerAdd(GC,name="---CONV_TRACERS" ,RC=STATUS) VERIFY_(STATUS) call MAPL_TimerAdd(GC,name="---AERO_ACTIVATE" ,RC=STATUS) - VERIFY_(STATUS) + VERIFY_(STATUS) call MAPL_TimerAdd(GC,name="---CLDMACRO" ,RC=STATUS) VERIFY_(STATUS) call MAPL_TimerAdd(GC,name="---CLDMACRO" ,RC=STATUS) @@ -4994,16 +4963,16 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) ! !ARGUMENTS: - type(ESMF_GridComp), intent(inout) :: GC ! Gridded component + type(ESMF_GridComp), intent(inout) :: GC ! Gridded component type(ESMF_State), intent(inout) :: IMPORT ! Import state type(ESMF_State), intent(inout) :: EXPORT ! Export state type(ESMF_Clock), intent(inout) :: CLOCK ! The clock integer, optional, intent( out) :: RC ! Error code - ! !DESCRIPTION: The Initialize method of the Moist Physics Gridded Component first + ! !DESCRIPTION: The Initialize method of the Moist Physics Gridded Component first ! calls the Initialize method of the child Dynamics. The Dynamics Initialize method will ! create the ESMF GRID, which will then be used to set the GRID associated with the - ! SuperDyn Composite Component itself. It should be noted that the + ! SuperDyn Composite Component itself. It should be noted that the ! SuperDyn Initialize method also invokes the GEOS Topo Utility which creates all ! topography related quantities. @@ -5028,7 +4997,7 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) !============================================================================= - ! Begin... + ! Begin... ! Get the target components name and set-up traceback handle. ! ----------------------------------------------------------- @@ -5062,8 +5031,8 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) call aer_cloud_init() call WRITE_PARALLEL ("INITIALIZED aer_cloud_init") else - call MAPL_GetResource( MAPL, CCN_OCN, 'NCCN_OCN:', DEFAULT= 100., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 - call MAPL_GetResource( MAPL, CCN_LND, 'NCCN_LND:', DEFAULT= 300., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 + call MAPL_GetResource( MAPL, CCN_OCN, 'NCCN_OCN:', DEFAULT= 100., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 + call MAPL_GetResource( MAPL, CCN_LND, 'NCCN_LND:', DEFAULT= 300., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 endif if (adjustl(CONVPAR_OPTION)=="RAS" ) call RAS_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) @@ -5092,7 +5061,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! !ARGUMENTS: - type(ESMF_GridComp), intent(inout) :: GC ! Gridded component + type(ESMF_GridComp), intent(inout) :: GC ! Gridded component type(ESMF_State), intent(inout) :: IMPORT ! Import state type(ESMF_State), intent(inout) :: EXPORT ! Export state type(ESMF_Clock), intent(inout) :: CLOCK ! The clock @@ -5140,7 +5109,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) type(ESMF_State) :: AERO type(ESMF_FieldBundle) :: TR ! Exports - real, pointer, dimension(:,:,:) :: DQDT, DQADT, DQIDT, DQLDT, DQRDT, DQSDT, DQGDT + real, pointer, dimension(:,:,:) :: DQDT, DQADT, DQIDT, DQLDT, DQRDT, DQSDT, DQGDT real, pointer, dimension(:,:,:) :: DTDT, DUDT, DVDT, DWDT real, pointer, dimension(:,:,:) :: DPDTMST, PFL_LSAN, PFI_LSAN real, pointer, dimension(:,:,:) :: DTDT_ER, DQVDT_ER @@ -5153,7 +5122,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) real, pointer, dimension(:,:,: ) :: NWFA real, pointer, dimension(:,:,:) :: PTR3D real, pointer, dimension(:,: ) :: PTR2D - + integer :: IM,JM,LM @@ -5161,7 +5130,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) !============================================================================= - ! Begin... + ! Begin... ! Get my name and set-up traceback handle ! --------------------------------------- @@ -5236,7 +5205,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) end where ! Allocatables - ! Edge variables + ! Edge variables ALLOCATE ( ZLE0 (IM,JM,0:LM) ) ALLOCATE ( PLEmb(IM,JM,0:LM) ) ALLOCATE ( PKE (IM,JM,0:LM) ) @@ -5248,7 +5217,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ALLOCATE ( DQST3(IM,JM,LM ) ) ALLOCATE ( QST3(IM,JM,LM ) ) ALLOCATE ( MASS (IM,JM,LM ) ) - ALLOCATE ( TMP3D(IM,JM,LM ) ) + ALLOCATE ( TMP3D(IM,JM,LM ) ) ALLOCATE ( TMP2D(IM,JM ) ) ! Save input winds @@ -5274,7 +5243,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) DQST3 = GEOS_DQSAT(T, PLmb, QSAT=QST3) ! These may be used by children - call MAPL_GetPointer(EXPORT, NWFA, 'NWFA', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, NWFA, 'NWFA', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, CNV_FRC, 'CNV_FRC', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, BYNCY, 'BYNCY' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, CAPE, 'CAPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) @@ -5289,7 +5258,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(EXPORT, LNB, 'ZLNB' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call BUOYANCY2( IM, JM, LM, T, Q, QST3, DQST3, DZET, ZL0, PLmb, PLEmb(:,:,LM), SBCAPE, MLCAPE, MUCAPE, SBCIN, MLCIN, MUCIN, BYNCY, LFC, LNB ) call BUOYANCY( T, Q, QST3, DQST3, DZET, ZL0, BYNCY, CAPE, INHB) - + CNV_FRC = 0.0 if( CNV_FRACTION_MAX > CNV_FRACTION_MIN ) then WHERE (CAPE .ne. MAPL_UNDEF) @@ -5341,8 +5310,8 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Exports ! Cloud fraction exports - - + + call MAPL_GetPointer(EXPORT, CFICE, 'CFICE', ALLOC=.true., RC=STATUS); VERIFY_(STATUS) if (associated(CFICE)) then CFICE=0.0 @@ -5389,12 +5358,12 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) PTR3D = 1.0 end where endif - - if (.FALSE.) then + + if (.FALSE.) then QST3 = GEOS_QsatLQU (T, PLmb*100.0, DQ=DQST3) !clean up only with respect to liquid water else DQST3 = GEOS_DQSAT (T, PLmb, QSAT=QST3) ! this qsat function expects hPa... - end if + end if call MAPL_GetPointer(EXPORT, PTR3D, 'RHLIQ', RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = Q/QST3 @@ -5421,7 +5390,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) if (USE_AEROSOL_NN) then deallocate ( AeroProps ) endif - + ! Export Total Moist Tendencies @@ -5725,14 +5694,14 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) endif endif - ! Diagnostic precip types: + ! Diagnostic precip types: call MAPL_GetPointer(EXPORT, ICE, 'ICE', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, FRZR, 'FRZR', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (LUPDATE_PRECIP_TYPE .OR. LDIAGNOSE_PRECIP_TYPE) then call MAPL_GetPointer(EXPORT, PTYPE, 'PTYPE', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call DIAGNOSE_PRECIP_TYPE(IM, JM, LM, TPREC, PLS, PCU, RAIN, SNOW, ICE, FRZR, & PTYPE, PLE, T/PK, PK, PKE, ZL0, LUPDATE_PRECIP_TYPE) - endif + endif ! Get Kuchera snow:rain ratios do I = 1,IM do J = 1,JM @@ -5832,7 +5801,7 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(IMPORT, V, 'V' , RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(IMPORT, T, 'T' , RC=STATUS); VERIFY_(STATUS) ! Allocatables - ! Edge variables + ! Edge variables ALLOCATE ( ZLE0 (IM,JM,0:LM) ) ALLOCATE ( PLEmb(IM,JM,0:LM) ) ! Layer variables @@ -5864,20 +5833,20 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetPointer(EXPORT, PTR3D, 'TAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = T - + call MAPL_GetPointer(EXPORT, PTR3D, 'QAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = Q - + call MAPL_GetPointer(EXPORT, PTR3D, 'THAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = T/PK - + call MAPL_GetPointer(EXPORT, PTR3D, 'SAFMOIST', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) then do L=1,LM PTR3D(:,:,L) = MAPL_CP*T(:,:,L) + MAPL_GRAV*(ZL0(:,:,L)+ZLE(:,:,LM)) enddo endif - + call MAPL_GetPointer(EXPORT, PTR3D, 'RH2', RC=STATUS); VERIFY_(STATUS) if (associated(PTR3D)) PTR3D = MAX(MIN( Q/GEOS_QSAT (T, PLmb) , 1.02 ),0.0) From 77982c929e4e5b2e7a7a59ba51ad6147bb2b3753 Mon Sep 17 00:00:00 2001 From: William Putman Date: Sat, 15 Apr 2023 20:51:56 -0400 Subject: [PATCH 26/43] split macro/micro tendencies in BACM and PDF updates for GFDL --- .../GEOS_BACM_1M_InterfaceMod.F90 | 14 ++- .../GEOS_GFDL_1M_InterfaceMod.F90 | 108 ++++-------------- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 2 +- .../GEOSmoist_GridComp/Process_Library.F90 | 90 ++++++++++++++- .../GEOSmoist_GridComp/cloudnew.F90 | 26 +++-- .../gfdl_cloud_microphys.F90 | 52 +++------ 6 files changed, 156 insertions(+), 136 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_BACM_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_BACM_1M_InterfaceMod.F90 index f58cdcf2f..c2c421ad4 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_BACM_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_BACM_1M_InterfaceMod.F90 @@ -318,6 +318,7 @@ subroutine BACM_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, allocatable, dimension(:,:) :: TMP2D type(ESMF_State) :: AERO ! Exports + real, pointer, dimension(:,:,:) :: DQVDT_macro, DQIDT_macro, DQLDT_macro, DQADT_macro real, pointer, dimension(:,:,:) :: DQVDT_micro, DQIDT_micro, DQLDT_micro, DQADT_micro real, pointer, dimension(:,:,:) :: DUDT_micro, DVDT_micro, DTDT_micro real, pointer, dimension(:,:,:) :: RAD_CF, RAD_QV, RAD_QL, RAD_QI, RAD_QR, RAD_QS, RAD_QG @@ -474,6 +475,10 @@ subroutine BACM_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) end do ! Export Tendencies + call MAPL_GetPointer(EXPORT, DQVDT_macro, 'DQVDT_macro' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, DQIDT_macro, 'DQIDT_macro' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, DQLDT_macro, 'DQLDT_macro' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, DQADT_macro, 'DQADT_macro' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, DQVDT_micro, 'DQVDT_micro' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, DQIDT_micro, 'DQIDT_micro' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, DQLDT_micro, 'DQLDT_micro' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) @@ -686,6 +691,7 @@ subroutine BACM_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) VFALLSN_AN , VFALLSN_LS ,VFALLSN_CN ,VFALLSN_SC , & VFALLRN_AN , VFALLRN_LS ,VFALLRN_CN ,VFALLRN_SC , & PDF_A, PDFITERS, & + DQVDT_macro, DQLDT_macro, DQIDT_macro, DQADT_macro, & WTHV2, WQL, & NACTL, & NACTI, & @@ -730,10 +736,10 @@ subroutine BACM_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) CLDREFFL = 14.0e-6 end where - DQVDT_micro = ( Q - DQVDT_micro) / DT_MOIST - DQLDT_micro = ((QLLS+QLCN) - DQLDT_micro) / DT_MOIST - DQIDT_micro = ((QILS+QICN) - DQIDT_micro) / DT_MOIST - DQADT_micro = ((CLLS+CLCN) - DQADT_micro) / DT_MOIST + DQVDT_micro = ( Q - DQVDT_micro) / DT_MOIST - DQVDT_macro + DQLDT_micro = ((QLLS+QLCN) - DQLDT_micro) / DT_MOIST - DQLDT_macro + DQIDT_micro = ((QILS+QICN) - DQIDT_micro) / DT_MOIST - DQIDT_macro + DQADT_micro = ((CLLS+CLCN) - DQADT_micro) / DT_MOIST - DQADT_macro DUDT_micro = ( U - DUDT_micro) / DT_MOIST DVDT_micro = ( V - DVDT_micro) / DT_MOIST DTDT_micro = ( T - DTDT_micro) / DT_MOIST diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index 4d704949b..7224412f1 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -234,8 +234,8 @@ subroutine GFDL_1M_Initialize (MAPL, RC) call gfdl_cloud_microphys_init() call WRITE_PARALLEL ("INITIALIZED GFDL_1M microphysics in non-generic GC INIT") - call MAPL_GetResource( MAPL, TURNRHCRIT , 'TURNRHCRIT:' , DEFAULT= 750.0 , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource( MAPL, PDFSHAPE , 'PDFSHAPE:' , DEFAULT= 2 , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource( MAPL, TURNRHCRIT , 'TURNRHCRIT:' , DEFAULT= -9999., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetResource( MAPL, PDFSHAPE , 'PDFSHAPE:' , DEFAULT= 1 , RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, ANV_ICEFALL , 'ANV_ICEFALL:' , DEFAULT= 0.8 , RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, LS_ICEFALL , 'LS_ICEFALL:' , DEFAULT= 0.8 , RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, FAC_RI , 'FAC_RI:' , DEFAULT= 1.0 , RC=STATUS); VERIFY_(STATUS) @@ -246,11 +246,9 @@ subroutine GFDL_1M_Initialize (MAPL, RC) call MAPL_GetResource( MAPL, MAX_RL , 'MAX_RL:' , DEFAULT=60.0e-6, RC=STATUS); VERIFY_(STATUS) CCW_EVAP_EFF = 4.e-3 - !!! if (do_evap) CCW_EVAP_EFF = 0.0 ! Evap done inside of GFDL call MAPL_GetResource( MAPL, CCW_EVAP_EFF, 'CCW_EVAP_EFF:', DEFAULT= CCW_EVAP_EFF, RC=STATUS); VERIFY_(STATUS) CCI_EVAP_EFF = 4.e-3 - !!! if (do_subl) CCI_EVAP_EFF = 0.0 ! Subl done inside of GFDL call MAPL_GetResource( MAPL, CCI_EVAP_EFF, 'CCI_EVAP_EFF:', DEFAULT= CCI_EVAP_EFF, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, CNV_FRACTION_MIN, 'CNV_FRACTION_MIN:', DEFAULT= 0.0, RC=STATUS); VERIFY_(STATUS) @@ -319,8 +317,8 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) real, pointer, dimension(:,: ) :: PTR2D ! Local variables - real :: turnrhcritS, turnrhcritU, facEIS - real :: turnrhcrit, minrhcrit, ALPHA, RHCRIT + real :: facEIS + real :: minrhcrit, ALPHA, RHCRIT integer :: IM,JM,LM integer :: I, J, L @@ -532,10 +530,12 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) do I=1,IM ! Send the condensates through the pdf after convection facEIS = MIN(1.0,EIS(I,J)/10.0)**2 - ! determine the turn pressure using the LCL - turnrhcrit = PLmb(I, J, KLCL(I,J)) - 50.0 ! 50mb above the LCL ! determine combined minrhcrit in stable/unstable regimes minrhcrit = (1.0-dw_ocean)*(1.0-facEIS) + (1.0-dw_land)*facEIS + if (turnrhcrit <= 0.0) then + ! determine the turn pressure using the LCL + turnrhcrit = PLmb(I, J, KLCL(I,J)) - 50.0 ! 50mb above the LCL + endif ! Use Slingo-Ritter (1985) formulation for critical relative humidity RHCRIT = 1.0 ! lower turn from maxrhcrit=1.0 @@ -546,7 +546,7 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) RHCRIT = 1.0 else RHCRIT = minrhcrit + (1.0-minrhcrit)/(19.) * & - ((atan( (2.*(PLmb(i,j,l)-turnrhcrit)/min(100., PLEmb(i,j,LM)-turnrhcrit)-1.) * & + ((atan( (2.*(PLmb(i,j,l)-turnrhcrit)/(PLEmb(i,j,LM)-turnrhcrit)-1.) * & tan(20.*MAPL_PI/21.-0.5*MAPL_PI) ) + 0.5*MAPL_PI) * 21./MAPL_PI - 1.) endif endif @@ -592,6 +592,19 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) USE_BERGERON) RHX(I,J,L) = Q(I,J,L)/GEOS_QSAT( T(I,J,L), PLmb(I,J,L) ) endif + ! meltfrz new condensates + call MELTFRZ ( DT_MOIST , & + CNV_FRC(I,J) , & + SRF_TYPE(I,J), & + T(I,J,L) , & + QLCN(I,J,L) , & + QICN(I,J,L) ) + call MELTFRZ ( DT_MOIST , & + CNV_FRC(I,J) , & + SRF_TYPE(I,J), & + T(I,J,L) , & + QLLS(I,J,L) , & + QILS(I,J,L) ) ! evaporation for CN if (CCW_EVAP_EFF > 0.0) then ! else evap done inside GFDL RHCRIT = 1.0 @@ -630,19 +643,8 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) QST3(I,J,L) ) SUBLC(I,J,L) = ( Q(I,J,L) - SUBLC(I,J,L) ) / DT_MOIST endif - ! meltfrz new condensates - call MELTFRZ ( DT_MOIST , & - CNV_FRC(I,J) , & - SRF_TYPE(I,J), & - T(I,J,L) , & - QLCN(I,J,L) , & - QICN(I,J,L) ) - call MELTFRZ ( DT_MOIST , & - CNV_FRC(I,J) , & - SRF_TYPE(I,J), & - T(I,J,L) , & - QLLS(I,J,L) , & - QILS(I,J,L) ) + ! cleanup clouds + call FIX_UP_CLOUDS( Q(I,J,L), T(I,J,L), QLLS(I,J,L), QILS(I,J,L), CLLS(I,J,L), QLCN(I,J,L), QICN(I,J,L), CLCN(I,J,L) ) end do ! IM loop end do ! JM loop end do ! LM loop @@ -719,8 +721,6 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) call gfdl_cloud_microphys_driver( & ! Input water/cloud species and liquid+ice CCN [NACTL+NACTI (#/m^3)] RAD_QV, RAD_QL, RAD_QR, RAD_QI, RAD_QS, RAD_QG, RAD_CF, (NACTL+NACTI), & - ! convective portions - QICN, QLCN, CLCN, & ! Output tendencies DQVDTmic, DQLDTmic, DQRDTmic, DQIDTmic, & DQSDTmic, DQGDTmic, DQADTmic, DTDTmic, & @@ -889,64 +889,4 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) end subroutine GFDL_1M_Run - subroutine REDISTRIBUTE_CLOUDS(CF, QL, QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, QV, TE) - real, dimension(:,:,:), intent(inout) :: CF, QL, QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, QV, TE - ! local storage for cnv fraction of condensate/cloud - real :: FCN(size(CF,1),size(CF,2),size(CF,3)) - - FCN = 0.0 - WHERE (QLCN+QLLS > 0.0) - FCN = min(max(QLCN/(QLCN+QLLS), 0.0), 1.0) - END WHERE - WHERE (QL < 1.e-8) - QV = QV + QL - TE = TE - (MAPL_ALHL/MAPL_CP)*QL - QL = 0.0 - QLLS = 0.0 - QLCN = 0.0 - ELSE WHERE - QLCN = FCN*QL - QLLS = MAX(0.0,QL-QLCN) - END WHERE - - FCN = 0.0 - WHERE (QICN+QILS > 0.0) - FCN = min(max(QICN/(QICN+QILS), 0.0), 1.0) - END WHERE - WHERE (QI < 1.e-8) - QV = QV + QI - TE = TE - (MAPL_ALHS/MAPL_CP)*QI - QI = 0.0 - QILS = 0.0 - QICN = 0.0 - ELSE WHERE - QICN = FCN*QI - QILS = MAX(0.0,QI-QICN) - END WHERE - - FCN = 0.0 - WHERE (CLCN+CLLS > 0.0) - FCN = min(max(CLCN/(CLCN+CLLS), 0.0), 1.0) - END WHERE - WHERE ( (CF < 1.e-5) .or. (QL+QI < 1.e-8) ) - CF = 0.0 - CLLS = 0.0 - CLCN = 0.0 - QV = QV + QL + QI - TE = TE - (MAPL_ALHL/MAPL_CP)*QL - (MAPL_ALHS/MAPL_CP)*QI - QL = 0.0 - QLLS = 0.0 - QLCN = 0.0 - QI = 0.0 - QILS = 0.0 - QICN = 0.0 - ELSE WHERE - CLCN = FCN*CF - CLLS = MAX(0.0,MIN(CF-CLCN,1.0)) - END WHERE - - end subroutine REDISTRIBUTE_CLOUDS - - - end module GEOS_GFDL_1M_InterfaceMod diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index 1aeaa05b8..41a4131be 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -167,7 +167,7 @@ subroutine SetServices ( GC, RC ) ! Inititialize cloud microphysics (Options: BACM_1M, MGB2_2M or GFDL_1M) !-------------------------------------------------------------- - call ESMF_ConfigGetAttribute( CF, CLDMICR_OPTION, Label="CLDMICR_OPTION:", default="GFDL_1M", RC=STATUS) + call ESMF_ConfigGetAttribute( CF, CLDMICR_OPTION, Label="CLDMICR_OPTION:", default="BACM_1M", RC=STATUS) VERIFY_(STATUS) LCLDMICR = adjustl(CLDMICR_OPTION)=="BACM_1M" .or. & adjustl(CLDMICR_OPTION)=="MGB2_2M" .or. & diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index f97736a60..ef6d8e789 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -92,7 +92,8 @@ module GEOSmoist_Process_Library public :: AeroProps public :: CNV_Tracer_Type, CNV_Tracers, CNV_Tracers_Init - public :: ICE_FRACTION, EVAP3, SUBL3, LDRADIUS4, BUOYANCY, BUOYANCY2, RADCOUPLE, FIX_UP_CLOUDS + public :: ICE_FRACTION, EVAP3, SUBL3, LDRADIUS4, BUOYANCY, BUOYANCY2 + public :: REDISTRIBUTE_CLOUDS, RADCOUPLE, FIX_UP_CLOUDS public :: hystpdf, fix_up_clouds_2M public :: FILLQ2ZERO, FILLQ2ZERO1 public :: MELTFRZ @@ -2072,6 +2073,21 @@ subroutine hystpdf( & QV = QV - (dQICN+dQILS+dQLCN+dQLLS) TE = TE + alhlbcp*(dQICN+dQILS+dQLCN+dQLLS) + alhfbcp*(dQICN+dQILS) + ! We need to take care of situations where QS moves past QA + ! during QSAT iteration. This should be only when QA/AF is small + ! to begin with. Effect is to make QAo negative. So, we + ! "evaporate" offending QA's + ! + ! We get rid of anvil fraction also, although strictly + ! speaking, PDF-wise, we should not do this. + if ( QAo <= 0. ) then + QV = QV + QICN + QLCN + TE = TE - alhsbcp*QICN - alhlbcp*QLCN + QICN = 0. + QLCN = 0. + CLCN = 0. + end if + end subroutine hystpdf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -3183,6 +3199,78 @@ subroutine FIX_NEGATIVE_PRECIP(QRAIN, QSNOW, QGRAUPEL) END WHERE end subroutine FIX_NEGATIVE_PRECIP + + subroutine REDISTRIBUTE_CLOUDS(CF, QL, QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, QV, TE) + real, dimension(:,:,:), intent(inout) :: CF, QL, QI, CLCN, CLLS, QLCN, QLLS, QICN, QILS, QV, TE + ! local storage for cnv fraction of condensate/cloud + real :: FCN(size(CF,1),size(CF,2),size(CF,3)) + real :: DQC(size(CF,1),size(CF,2),size(CF,3)) + + ! Fix cloud quants if too small + WHERE (QL+QI < 1.E-8) + QV = QV + QL + QI + TE = TE - alhlbcp*QL - alhsbcp*QI + CF = 0. + QL = 0. + QI = 0. + END WHERE + WHERE (CF < 1.E-5) + QV = QV + QL + QI + TE = TE - alhlbcp*QL - alhsbcp*QI + CF = 0. + QL = 0. + QI = 0. + END WHERE + + ! Redistribute liquid CN/LS portions based on prior fractions + ! FCN Needs to be calculated first + FCN = 0.0 + WHERE (QLCN+QLLS > 0.0) + FCN = min(max(QLCN/(QLCN+QLLS), 0.0), 1.0) + END WHERE + ! put all new condensate into LS + DQC = QL - (QLCN+QLLS) + WHERE (DQC > 0.0) + QLLS = QLLS+DQC + DQC = 0.0 + END WHERE + ! any loss of condensate uses the FCN ratio + QLCN = QLCN + DQC*( FCN) + QLLS = QLLS + DQC*(1.0-FCN) + + ! Redistribute ice CN/LS portions based on prior fractions + ! FCN Needs to be calculated first + FCN = 0.0 + WHERE (QICN+QILS > 0.0) + FCN = min(max(QICN/(QICN+QILS), 0.0), 1.0) + END WHERE + ! put all new condensate into LS + DQC = QI - (QICN+QILS) + WHERE (DQC > 0.0) + QILS = QILS+DQC + DQC = 0.0 + END WHERE + ! any loss of condensate uses the FCN ratio + QICN = QICN + DQC*( FCN) + QILS = QILS + DQC*(1.0-FCN) + + ! Redistribute cloud-fraction CN/LS portions based on prior fractions + ! FCN Needs to be calculated first + FCN = 0.0 + WHERE (CLCN+CLLS > 0.0) + FCN = min(max(CLCN/(CLCN+CLLS), 0.0), 1.0) + END WHERE + ! put all new condensate into LS + DQC = CF - (CLCN+CLLS) + WHERE (DQC > 0.0) + CLLS = CLLS+DQC + DQC = 0.0 + END WHERE + ! any loss of condensate uses the FCN ratio + CLCN = CLCN + DQC*( FCN) + CLLS = CLLS + DQC*(1.0-FCN) + + end subroutine REDISTRIBUTE_CLOUDS subroutine cs_interpolator(is, ie, js, je, km, qin, zout, wz, qout, qmin) integer, intent(in):: is, ie, js, je, km diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/cloudnew.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/cloudnew.F90 index af96a80df..d00625c1e 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/cloudnew.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/cloudnew.F90 @@ -489,6 +489,7 @@ subroutine progno_cloud( & VFALLSN_AN_dev,VFALLSN_LS_dev,VFALLSN_CN_dev,VFALLSN_SC_dev, & VFALLRN_AN_dev,VFALLRN_LS_dev,VFALLRN_CN_dev,VFALLRN_SC_dev, & PDF_A_dev, PDFITERS_dev, & + DQVDTMAC_dev, DQLDTMAC_dev, DQIDTMAC_dev, DQADTMAC_dev, & #ifdef PDFDIAG PDF_SIGW1_dev, PDF_SIGW2_dev, PDF_W1_dev, PDF_W2_dev, & PDF_SIGTH1_dev, PDF_SIGTH2_dev, PDF_TH1_dev, PDF_TH2_dev, & @@ -658,6 +659,10 @@ subroutine progno_cloud( & real, intent(in ), dimension(IRUN, LM) :: NACTL_dev ! NACTL real, intent(in ), dimension(IRUN, LM) :: NACTI_dev ! NACTI + real, intent( out), dimension(IRUN, LM) :: DQVDTMAC_dev + real, intent( out), dimension(IRUN, LM) :: DQLDTMAC_dev + real, intent( out), dimension(IRUN, LM) :: DQIDTMAC_dev + real, intent( out), dimension(IRUN, LM) :: DQADTMAC_dev !!$ real, intent( out), dimension(IRUN, LM) :: LIQANMOVE_dev ! LIQANMOVE !!$ real, intent( out), dimension(IRUN, LM) :: ICEANMOVE_dev ! ICEANMOVE @@ -725,8 +730,6 @@ subroutine progno_cloud( & real :: NI, NL, TROPICAL, EXTRATROPICAL - real :: LSPDFLIQNEW, LSPDFICENEW, LSPDFFRACNEW - ! These are in constant memory in CUDA and are set in the GridComp #ifndef _CUDA CNV_BETA = CLDPARAMS%CNV_BETA ! Area factor for convective rain showers (non-dim) @@ -928,6 +931,11 @@ subroutine progno_cloud( & end if end if + DQVDTMAC_dev(I,K) = Q_dev(I,K) + DQLDTMAC_dev(I,K) = QLW_LS_dev(I,K) + QLW_AN_dev(I,K) + DQIDTMAC_dev(I,K) = QIW_LS_dev(I,K) + QIW_AN_dev(I,K) + DQADTMAC_dev(I,K) = CLDFRC_dev(I,K) + ANVFRC_dev(I,K) + !!!!!!!!!!!!!!!!!!!!!!!!!!! ! Total Condensate Source !!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -1016,10 +1024,6 @@ subroutine progno_cloud( & ! impose a minimum amount of variability ALPHA = MAX( ALPHA , 1.0 - RH00 ) - LSPDFLIQNEW = QLW_LS_dev(I,K) - LSPDFICENEW = QIW_LS_dev(I,K) - LSPDFFRACNEW= CLDFRC_dev(I,K) - IF(HYSTPDFOPT==1) THEN call hystpdf_new( & DT , & @@ -1124,10 +1128,6 @@ subroutine progno_cloud( & USE_BERGERON) endif - LSPDFLIQNEW = QLW_LS_dev(I,K) - LSPDFLIQNEW - LSPDFICENEW = QIW_LS_dev(I,K) - LSPDFICENEW - LSPDFFRACNEW= CLDFRC_dev(I,K) - LSPDFFRACNEW - RHX_dev(I,K) = Q_dev(I,K)/QSAT( TEMP, PP_dev(I,K) ) CFPDF_dev(I,K) = CLDFRC_dev(I,K) PDFL_dev(I,K) = ( QLW_LS_dev(I,K) + QLW_AN_dev(I,K) - PDFL_dev(I,K) ) / DT @@ -1208,6 +1208,11 @@ subroutine progno_cloud( & EVAPC_dev(I,K) = ( EVAPC_dev(I,K) - (QLW_LS_dev(I,K)+QLW_AN_dev(I,K)) ) / DT SUBLC_dev(I,K) = ( SUBLC_dev(I,K) - (QIW_LS_dev(I,K)+QIW_AN_dev(I,K)) ) / DT + DQVDTMAC_dev(I,K) = ((Q_dev(I,K) ) - DQVDTMAC_dev(I,K)) / DT + DQLDTMAC_dev(I,K) = ((QLW_LS_dev(I,K) + QLW_AN_dev(I,K)) - DQLDTMAC_dev(I,K)) / DT + DQIDTMAC_dev(I,K) = ((QIW_LS_dev(I,K) + QIW_AN_dev(I,K)) - DQIDTMAC_dev(I,K)) / DT + DQADTMAC_dev(I,K) = ((CLDFRC_dev(I,K) + ANVFRC_dev(I,K)) - DQADTMAC_dev(I,K)) / DT + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! A U T O C O N V E R S I O N !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -1629,7 +1634,6 @@ subroutine progno_cloud( & QIW_LS_dev(I,K) = QIW_LS_dev(I,K) * QTMP2 * QTMP3 QIW_AN_dev(I,K) = QIW_AN_dev(I,K) * QTMP2 * QTMP3 - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TH_dev(I,K) = TEMP / EXNP_dev(I,K) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index 428f2014e..8bbae48e0 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -343,7 +343,6 @@ module gfdl2_cloud_microphys_mod !>@brief The subroutine 'gfdl_cloud_microphys_driver' executes the full GFDL !! cloud microphysics. subroutine gfdl_cloud_microphys_driver (qv, ql, qr, qi, qs, qg, qa, qn, & - qicn, qlcn, clcn, & qv_dt, ql_dt, qr_dt, qi_dt, qs_dt, qg_dt, qa_dt, pt_dt, pt, w, & uin, vin, udt, vdt, dz, delp, area, dt_in, & land, cnv_fraction, srf_type, eis, & @@ -373,7 +372,6 @@ subroutine gfdl_cloud_microphys_driver (qv, ql, qr, qi, qs, qg, qa, qn, & real, intent (in), dimension (:, :, :) :: delp, dz, uin, vin real, intent (in), dimension (:, :, :) :: pt, qv, ql, qr, qg, qa, qn - real, intent (in), dimension (:, :, :) :: qicn, qlcn, clcn real, intent (inout), dimension (:, :, :) :: qi, qs real, intent (inout), dimension (:, :, :) :: pt_dt, qa_dt, udt, vdt, w @@ -475,7 +473,7 @@ subroutine gfdl_cloud_microphys_driver (qv, ql, qr, qi, qs, qg, qa, qn, & do j = js, je call mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, qg,& - qa, qn, qicn, qlcn, clcn, dz, is, ie, js, je, ks, ke, ktop, kbot, j, dt_in, ntimes, & + qa, qn, dz, is, ie, js, je, ks, ke, ktop, kbot, j, dt_in, ntimes, & rain (:, j), snow (:, j), graupel (:, j), ice (:, j), m2_rain, & m2_sol, cond (:, j), area (:, j), & land (:, j), cnv_fraction(:, j), srf_type(:, j), eis(:,j), & @@ -626,7 +624,7 @@ end subroutine gfdl_cloud_microphys_driver !>@param 6) qg: graupel (kg / kg) ! ----------------------------------------------------------------------- subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & - qg, qa, qn, qicn, qlcn, clcn, dz, is, ie, js, je, ks, ke, ktop, kbot, j, dt_in, ntimes, & + qg, qa, qn, dz, is, ie, js, je, ks, ke, ktop, kbot, j, dt_in, ntimes, & rain, snow, graupel, ice, m2_rain, m2_sol, cond, area1, land, & cnv_fraction, srf_type, eis, rhcrit, anv_icefall, lsc_icefall, revap, isubl, & u_dt, v_dt, pt_dt, qv_dt, ql_dt, qr_dt, qi_dt, qs_dt, qg_dt, qa_dt, & @@ -652,7 +650,6 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & real, intent (in), dimension (is:, js:, ks:) :: uin, vin, delp, pt, dz real, intent (in), dimension (is:, js:, ks:) :: qv, qi, ql, qr, qs, qg, qa, qn - real, intent (in), dimension (is:, js:, ks:) :: qicn, qlcn, clcn real, intent (inout), dimension (is:, js:, ks:) :: u_dt, v_dt, w, pt_dt, qa_dt real, intent (inout), dimension (is:, js:, ks:) :: qv_dt, ql_dt, qr_dt, qi_dt, qs_dt, qg_dt @@ -667,7 +664,6 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & real, intent (out), dimension (is:, js:, ks:) :: m2_rain, m2_sol real, dimension (ktop:kbot) :: h_var1d - real, dimension (ktop:kbot) :: qlcnz, qicnz, clcnz real, dimension (ktop:kbot) :: qvz, qlz, qrz, qiz, qsz, qgz, qaz real, dimension (ktop:kbot) :: vtiz, vtsz, vtgz, vtrz real, dimension (ktop:kbot) :: dp0, dp1, dz0, dz1 @@ -712,11 +708,6 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & ! convert moist mixing ratios to dry mixing ratios ! ----------------------------------------------------------------------- - ! Convective portion - qicnz (k) = qicn (i, j, k) - qlcnz (k) = qlcn (i, j, k) - clcnz (k) = clcn (i, j, k) - qvz (k) = qv (i, j, k) qlz (k) = ql (i, j, k) qiz (k) = qi (i, j, k) @@ -736,10 +727,6 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & qsz (k) = qsz (k) * omq qgz (k) = qgz (k) * omq - ! Convective portion - qicnz (k) = qicnz (k) * omq - qlcnz (k) = qlcnz (k) * omq - qa0 (k) = qa (i, j, k) qaz (k) = qa (i, j, k) dz0 (k) = dz (i, j, k) @@ -861,7 +848,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & ! ----------------------------------------------------------------------- call warm_rain (dts, ktop, kbot, dp1, dz1, tz, qvz, qlz, qrz, qiz, qsz, & - qgz, qaz, qlcnz, qicnz, clcnz, eis(i), den, denfac, ccn, c_praut, vtrz, & + qgz, qaz, eis(i), den, denfac, ccn, c_praut, vtrz, & r1, evap1, m1_rain, w1, h_var1d) rain (i) = rain (i) + r1 @@ -878,7 +865,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & ! ----------------------------------------------------------------------- call icloud (ktop, kbot, tz, p1, qvz, qlz, qrz, qiz, qsz, qgz, dp1, den, & - denfac, vtsz, vtgz, vtrz, qaz, qlcnz, qicnz, clcnz, dts, subl1, h_var1d, & + denfac, vtsz, vtgz, vtrz, qaz, dts, subl1, h_var1d, & ccn, cnv_fraction(i), srf_type(i)) do k = ktop, kbot @@ -1040,7 +1027,7 @@ end subroutine sedi_heat ! ----------------------------------------------------------------------- subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & - qlcn, qicn, clcn, eis, & + eis, & den, denfac, ccn, c_praut, vtr, r1, evap1, m1_rain, w1, h_var) implicit none @@ -1053,7 +1040,6 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & real, intent (in), dimension (ktop:kbot) :: dp, dz, den real, intent (in), dimension (ktop:kbot) :: denfac, ccn, c_praut - real, intent (in), dimension (ktop:kbot) :: qlcn, qicn, clcn real, intent (in) :: eis !< estimated inversion strength @@ -1443,7 +1429,7 @@ end subroutine linear_prof ! ======================================================================= subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & - den, denfac, vts, vtg, vtr, qak, qlcnk, qicnk, clcnk, dts, subl1, h_var, ccn, cnv_fraction, srf_type) + den, denfac, vts, vtg, vtr, qak, dts, subl1, h_var, ccn, cnv_fraction, srf_type) implicit none @@ -1451,8 +1437,6 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & real, intent (in), dimension (ktop:kbot) :: p1, dp1, den, denfac, vts, vtg, vtr - real, intent (in), dimension (ktop:kbot) :: qlcnk, qicnk, clcnk - real, intent (inout), dimension (ktop:kbot) :: tzk, qvk, qlk, qrk, qik, qsk, qgk, qak real, intent (out), dimension (ktop:kbot) :: subl1 @@ -1940,7 +1924,7 @@ subroutine icloud (ktop, kbot, tzk, p1, qvk, qlk, qrk, qik, qsk, qgk, dp1, & ! ----------------------------------------------------------------------- call subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tzk, qvk, & - qlk, qrk, qik, qsk, qgk, qak, qlcnk, qicnk, clcnk, subl1, h_var, ccn, cnv_fraction, srf_type) + qlk, qrk, qik, qsk, qgk, qak, subl1, h_var, ccn, cnv_fraction, srf_type) end subroutine icloud @@ -1949,7 +1933,7 @@ end subroutine icloud ! ======================================================================= subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & - ql, qr, qi, qs, qg, qa, qlcn, qicn, clcn, subl1, h_var, ccn, cnv_fraction, srf_type) + ql, qr, qi, qs, qg, qa, subl1, h_var, ccn, cnv_fraction, srf_type) implicit none @@ -1960,7 +1944,6 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & real, intent (in) :: dts, cnv_fraction, srf_type real, intent (in), dimension (ktop:kbot) :: h_var, ccn - real, intent (in), dimension (ktop:kbot) :: qlcn, qicn, clcn real, intent (inout), dimension (ktop:kbot) :: tz, qv, ql, qr, qi, qs, qg, qa @@ -2124,17 +2107,17 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & ! ----------------------------------------------------------------------- ! bigg mechanism heterogeneous freezing on existing cloud nuclei ! ----------------------------------------------------------------------- - tc = tice - tz (k) + tc = tice - tz (k) if (do_bigg .and. ql (k) > qcmin .and. tc > 0.) then sink = fac_frz * (100.0/rhor/ccn(k)) * dts * (exp (0.66 * tc) - 1.) * den (k) * ql (k) * ql (k) sink = min (ql (k), tc / icpk (k), sink) - ql (k) = ql (k) - sink - qi (k) = qi (k) + sink - q_liq (k) = q_liq (k) - sink - q_sol (k) = q_sol (k) + sink - cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice - tz (k) = tz (k) + sink * lhi (k) / cvm (k) - endif ! significant ql existed + ql (k) = ql (k) - sink + qi (k) = qi (k) + sink + q_liq (k) = q_liq (k) - sink + q_sol (k) = q_sol (k) + sink + cvm (k) = c_air + qv (k) * c_vap + q_liq (k) * c_liq + q_sol (k) * c_ice + tz (k) = tz (k) + sink * lhi (k) / cvm (k) + endif ! significant ql existed ! ----------------------------------------------------------------------- ! update capacity heat and latend heat coefficient @@ -2165,9 +2148,8 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & if (dq > 0.) then ! vapor - > ice ! deposition tmp = tice - tz (k) - ifrac = ice_fraction(tz(k),cnv_fraction,srf_type) qi_crt = 4.92e-11 * exp (1.33 * log (1.e3 * exp (0.1 * tmp))) - qi_crt = max (qi_crt, 1.82e-6) * min (qi_lim, ifrac) / den (k) + qi_crt = max (qi_crt, 1.82e-6) * qi_lim / den (k) sink = min (sink, max (qi_crt - qi (k), pidep), tmp / tcpk (k)) else ! ice -- > vapor ! sublimation From 4b2ef330b2e14681e9a4cb22e5662e7c0568fd26 Mon Sep 17 00:00:00 2001 From: William Putman Date: Sat, 15 Apr 2023 22:04:29 -0400 Subject: [PATCH 27/43] patched hystpdf in Process_Library --- .../GEOSmoist_GridComp/Process_Library.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index ef6d8e789..175e8e0ad 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -1879,8 +1879,6 @@ subroutine hystpdf( & character*(10) :: Iam='Process_Library:hystpdf' - QT = QLLS + QILS + QV !Total LS water after microphysics - tmpARR = 0.0 if (CLCN < 1.0) tmpARR = 1.0/(1.0-CLCN) @@ -1894,6 +1892,8 @@ subroutine hystpdf( & DQS = GEOS_DQSAT( TEn, PL, QSAT=QSx ) QVn = ( QV - QSx*CLCN )*tmpARR + QT = QCn + QVn !Total LS water after microphysics + nmax = 20 do n=1,nmax From f67009fb32aef8067c286b67404df9872920a003 Mon Sep 17 00:00:00 2001 From: William Putman Date: Sat, 15 Apr 2023 22:56:51 -0400 Subject: [PATCH 28/43] reduced deep GF particularly at horz res 10km and finer --- .../GEOSmoist_GridComp/ConvPar_GF2020.F90 | 4 ++-- .../GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 | 2 +- .../GEOSmoist_GridComp/gfdl_cloud_microphys.F90 | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 index 97b60591e..3da21a3be 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/ConvPar_GF2020.F90 @@ -2313,8 +2313,8 @@ SUBROUTINE CUP_gf(its,ite,kts,kte ,itf,ktf, mtp, nmp & ierrc(i)='scale_dep renders convection insignificant' endif if(ierr(i) /= 0) cycle - !sig(i)= 1.0-0.9839*exp(-0.09835*(dx(i)/1000.)) ! Arakawa 2011 sigma - sig(i)= 1.0-0.9839*exp(-0.09835*(dx(i)/ 500.)) ! Modified from Arakawa 2011 sigma + sig(i)= 1.0-0.9839*exp(-0.09835*(dx(i)/1000.)) ! Arakawa 2011 sigma + !sig(i)= 1.0-0.9839*exp(-0.09835*(dx(i)/ 500.)) ! Modified from Arakawa 2011 sigma if (stochastic_sig(i) /= 1.0) then sig(i) = sig(i)**(stochastic_sig(i)*MAX(1.0,sig(i))) endif diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 index 01764690f..5f01047d5 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 @@ -161,7 +161,7 @@ subroutine GF_Initialize (MAPL, CLOCK, RC) call MAPL_GetResource(MAPL, STOCHASTIC_CNV , 'STOCHASTIC_CNV:' ,default= .FALSE.,RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource(MAPL, GF_MIN_AREA , 'GF_MIN_AREA:' ,default= 0.00, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, TAU_MID , 'TAU_MID:' ,default= 3600., RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, TAU_DEEP , 'TAU_DEEP:' ,default= 5400., RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, TAU_DEEP , 'TAU_DEEP:' ,default= 7200., RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CLEV_GRID , 'CLEV_GRID:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, VERT_DISCR , 'VERT_DISCR:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, USE_FCT , 'USE_FCT:' ,default= 1, RC=STATUS );VERIFY_(STATUS) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index 8bbae48e0..4c4de134a 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -2147,9 +2147,10 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & endif if (dq > 0.) then ! vapor - > ice ! deposition - tmp = tice - tz (k) + ifrac = ice_fraction(tz (k),cnv_fraction,srf_type) + tmp = tice - tz (k) qi_crt = 4.92e-11 * exp (1.33 * log (1.e3 * exp (0.1 * tmp))) - qi_crt = max (qi_crt, 1.82e-6) * qi_lim / den (k) + qi_crt = max (qi_crt, 1.82e-6) * qi_lim * ifrac / den (k) sink = min (sink, max (qi_crt - qi (k), pidep), tmp / tcpk (k)) else ! ice -- > vapor ! sublimation From 704deb6587a0901278da1ed43db62dfeebeb8a6c Mon Sep 17 00:00:00 2001 From: William Putman Date: Sun, 16 Apr 2023 15:01:35 -0400 Subject: [PATCH 29/43] bug fix in EIS usage, raised turnrhcrit and reduction in rain revap --- .../GEOS_GFDL_1M_InterfaceMod.F90 | 6 +++--- .../gfdl_cloud_microphys.F90 | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index 7224412f1..c2ec7e9a9 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -529,12 +529,12 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) do J=1,JM do I=1,IM ! Send the condensates through the pdf after convection - facEIS = MIN(1.0,EIS(I,J)/10.0)**2 + facEIS = MAX(0.0,MIN(1.0,EIS(I,J)/10.0))**2 ! determine combined minrhcrit in stable/unstable regimes minrhcrit = (1.0-dw_ocean)*(1.0-facEIS) + (1.0-dw_land)*facEIS if (turnrhcrit <= 0.0) then ! determine the turn pressure using the LCL - turnrhcrit = PLmb(I, J, KLCL(I,J)) - 50.0 ! 50mb above the LCL + turnrhcrit = PLmb(I, J, KLCL(I,J)) - 250.0 ! 250mb above the LCL endif ! Use Slingo-Ritter (1985) formulation for critical relative humidity RHCRIT = 1.0 @@ -551,7 +551,7 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) endif endif ! include grid cell area scaling and limit RHcrit to > 70% - ALPHA = max(0.0,min(0.30, (1.0-RHCRIT)*SQRT(SQRT(AREA(I,J)/1.e10)))) + ALPHA = max(0.0,min(0.30, (1.0-RHCRIT)*SQRT(SQRT(AREA(I,J)/1.e10)) ) ) ! fill RHCRIT export if (associated(RHCRIT3D)) RHCRIT3D(I,J,L) = 1.0-ALPHA ! Put condensates in touch with the PDF diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index 4c4de134a..e18dc13a0 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -770,7 +770,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & cpaut = c_paut * 0.104 * grav / 1.717e-5 !! slow autoconversion in stable regimes - !cpaut = cpaut * (0.5 + 0.5*(1.0-min(1.0,eis(i)/10.0)**2)) + !cpaut = cpaut * (0.5 + 0.5*(1.0-max(0.0,min(1.0,eis(i)/10.0))**2)) ! ccn needs units #/m^3 if (prog_ccn) then @@ -1238,9 +1238,10 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & endif enddo endif - ! Revert In-Cloud condensate - ql = ql*qadum - qi = qi*qadum + + ! Revert In-Cloud condensate + ql = ql*qadum + qi = qi*qadum end subroutine warm_rain @@ -1282,11 +1283,11 @@ subroutine revap_racc (ktop, kbot, dt, tz, qv, ql, qr, qi, qs, qg, qa, revap, de if (tz (k) > t_wfr .and. qr (k) > qpmin) then - !! area and timescale efficiency on revap - ! AREA_LS_PRC_K = 0.0 - !if (TOT_PREC_LS > 0.0) AREA_LS_PRC_K = MAX( AREA_LS_PRC/TOT_PREC_LS, 1.E-6 ) - !fac_revp = 1. - exp (- AREA_LS_PRC_K * dt / tau_revp) - fac_revp = 1. - exp (- dt / tau_revp) + ! area and timescale efficiency on revap + AREA_LS_PRC_K = 0.0 + if (TOT_PREC_LS > 0.0) AREA_LS_PRC_K = MAX( AREA_LS_PRC/TOT_PREC_LS, 1.E-6 ) + fac_revp = 1. - exp (- AREA_LS_PRC_K * dt / tau_revp) + !fac_revp = 1. - exp (- dt / tau_revp) ! ----------------------------------------------------------------------- ! define heat capacity and latent heat coefficient From 1e335ddb2b07c9bad14b05f92d5e2730f1c88b4d Mon Sep 17 00:00:00 2001 From: William Putman Date: Thu, 27 Apr 2023 15:03:04 -0400 Subject: [PATCH 30/43] disabled sponge adj on increments --- .../GEOSmoist_GridComp/gfdl_cloud_microphys.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index e18dc13a0..78d8bccae 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -1192,7 +1192,7 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & do k = ktop, kbot qc0 = fac_rc * ccn (k) if (tz (k) > t_wfr) then - qc = qc0 / den (k) + qc = qc0 / den (k) dq = ql (k) - qc if (dq > 0.) then sink = min (dq, dt * c_praut (k) * den (k) * exp (so3 * log (ql (k)))) @@ -1219,7 +1219,7 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & ! -------------------------------------------------------------------- ! as in klein's gfdl am2 stratiform scheme (with subgrid variations) ! -------------------------------------------------------------------- - qc = qc0 / den (k) + qc = qc0 / den (k) dq = 0.5 * (ql (k) + dl (k) - qc) ! -------------------------------------------------------------------- ! dq = dl if qc == q_minus = ql - dl From ea6332d8b351503ba61ad9d30a532d122da5c4b0 Mon Sep 17 00:00:00 2001 From: William Putman Date: Thu, 27 Apr 2023 15:06:39 -0400 Subject: [PATCH 31/43] added disabled sponge adj on increments --- .../GEOS_PhysicsGridComp.F90 | 38 ++++++++++++++++--- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 index c5e48ff06..03ad3587e 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 @@ -339,28 +339,23 @@ subroutine SetServices ( GC, RC ) ! Add export states for turbulence increments !------------------------------------------------- call ESMF_ConfigGetDim (cf, NQ, nCols, label=('TRI_increments::'), rc=STATUS) - if (NQ > 0) then call ESMF_ConfigFindLabel (cf, ('TRI_increments::'), rc=STATUS) VERIFY_(STATUS) - allocate (NAMES(NQ), stat=STATUS) VERIFY_(STATUS) - do i = 1, NQ call ESMF_ConfigNextLine(cf, rc=STATUS) VERIFY_(STATUS) call ESMF_ConfigGetAttribute(cf, NAMES(i), rc=STATUS) VERIFY_(STATUS) enddo - do i = 1, NQ if (NAMES(i) == 'AOADAYS') then TendUnits = 'days s-1' else TendUnits = 'UNITS' end if - call MAPL_AddExportSpec(GC, & SHORT_NAME = trim(NAMES(i))//'IT', & LONG_NAME = 'tendency_of_'//trim(NAMES(i))//'_due_to_turbulence', & @@ -374,6 +369,14 @@ subroutine SetServices ( GC, RC ) end if !NQ > 0 !----------------------------------------------------------- + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'PADJ_SPONGE', & + LONG_NAME = 'pressure_adjustment_in_sponge_of_tendencies_due_to_physics', & + UNITS = 'unitless', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & + RC=STATUS ) + VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DTDT', & @@ -2009,7 +2012,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) type (ESMF_FieldBundle) :: BUNDLE character(len=ESMF_MAXSTR),pointer :: GCNames(:) character(len=ESMF_MAXSTR) :: DUMMY - integer :: I, L, K, N + integer :: I, J, L, K, N integer :: IM, JM, LM, NQ integer :: ISPPT,ISKEB logical :: DO_SPPT,DO_SKEB @@ -2095,6 +2098,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) real(kind=MAPL_R8), allocatable, dimension(:,:,:) :: dq real, pointer, dimension(:,:,:) :: DTDT_BL, DQDT_BL + real, pointer, dimension(:,:,:) :: PADJ_SPONGE real*8, allocatable, dimension(:,:) :: sum_qdp_b4 real*8, allocatable, dimension(:,:) :: sum_qdp_af @@ -2676,6 +2680,27 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) ! and may be friendly to dynamics. !--------------------------------------------------------------- +!GEOS sponge scaling of increments 0.3mb to model top + call MAPL_GetPointer(EXPORT, PADJ_SPONGE, 'PADJ_SPONGE', RC=STATUS); VERIFY_(STATUS) + if (associated(PADJ_SPONGE)) then + do L=1,LM + do J=1,JM + do I=1,IM + PADJ_SPONGE(I,J,L) = MIN(1.0,MAX(0.0,(0.5*(PLE(I,J,L)+PLE(I,J,L-1))/0.3e2)**3)) + enddo + enddo + enddo + UIM = UIM * PADJ_SPONGE + UIT = UIT * PADJ_SPONGE + UIG = UIG * PADJ_SPONGE + TIR = TIR * PADJ_SPONGE + STN = STN * PADJ_SPONGE + TTN = TTN * PADJ_SPONGE + FRI = FRI * PADJ_SPONGE + TIG = TIG * PADJ_SPONGE + TICU = TICU * PADJ_SPONGE + endif + ! NEED_TOT = associated(DTDTTOT) .or. associated(DTDT) NEED_TOT = .TRUE. NEED_FRI = associated( TIF) .or. NEED_TOT @@ -2754,6 +2779,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) if( MAPL_am_I_root() ) print*, "GEOS_PhysicsGridComp: missing T-tend pointer, aborting ..." VERIFY_(STATUS) endif + TOT = TIR & ! Mass-Weighted Temperature Tendency due to Radiation + STN & ! Mass-Weighted Temperature Tendency due to Turbulent Mixing + TTN & ! Mass-Weighted Temperature Tendency due to Moist Processes From 37a285c8575c3a35877a648bbf4002bdd687a878 Mon Sep 17 00:00:00 2001 From: Atanas Trayanov Date: Thu, 27 Apr 2023 19:30:14 -0400 Subject: [PATCH 32/43] Added ability to compute MTRI for user selected MTR species to fill the wet scavenging due to moist processes --- .../GEOSphysics_GridComp/CMakeLists.txt | 2 +- .../GEOS_PhysicsGridComp.F90 | 10 +- .../MBundle_IncrementMod.F90 | 397 ++++++++++++++++++ 3 files changed, 405 insertions(+), 4 deletions(-) create mode 100755 GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/CMakeLists.txt b/GEOSagcm_GridComp/GEOSphysics_GridComp/CMakeLists.txt index 23033710b..a28c3a36a 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/CMakeLists.txt +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/CMakeLists.txt @@ -13,7 +13,7 @@ set (alldirs if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/GEOS_PhysicsGridComp.F90) esma_add_library (${this} - SRCS GEOS_PhysicsGridComp.F90 + SRCS GEOS_PhysicsGridComp.F90 MBundle_IncrementMod.F90 SUBCOMPONENTS ${alldirs} DEPENDENCIES MAPL GMAO_mpeu GMAO_stoch esmf) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 index c5e48ff06..e990e2faf 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 @@ -28,6 +28,7 @@ module GEOS_PhysicsGridCompMod use GEOS_UtilsMod, only: GEOS_Qsat use Bundle_IncrementMod + use MBundle_IncrementMod ! PGI Module that contains the initialization ! routines for the GPUs @@ -1948,7 +1949,7 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Fill the moist increments bundle !--------------------------------- - call Initialize_IncBundle_init(GC, GIM(MOIST), EXPORT, MTRIinc, __RC__) + call Initialize_IncMBundle_init(GC, GIM(MOIST), EXPORT, __RC__) #ifdef PRINT_STATES call WRITE_PARALLEL ( trim(Iam)//": Convective Transport Tendency Bundle" ) @@ -1998,6 +1999,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Local derived type aliases type (MAPL_MetaComp), pointer :: STATE + type (MAPL_MetaComp), pointer :: CMETA type (ESMF_GridComp), pointer :: GCS(:) type (ESMF_State), pointer :: GIM(:) type (ESMF_State), pointer :: GEX(:) @@ -2433,7 +2435,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) ! Moist Processes !---------------- - call Initialize_IncBundle_run(GIM(MOIST), EXPORT, MTRIinc, __RC__) + call Initialize_IncMBundle_run(GIM(MOIST), EXPORT, DM=DM,__RC__) I=MOIST @@ -2442,7 +2444,9 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GenericRunCouplers (STATE, I, CLOCK, RC=STATUS ); VERIFY_(STATUS) call MAPL_TimerOff(STATE,GCNames(I)) - call Compute_IncBundle(GIM(MOIST), EXPORT, MTRIinc, STATE, __RC__) + call MAPL_GetObjectFromGC ( GCS(I), CMETA, _RC) + + call Compute_IncMBundle(GIM(MOIST), EXPORT, CMETA, DM=DM,__RC__) call MAPL_GetPointer(GIM(MOIST), DTDT_BL, 'DTDT_BL', alloc = .true. ,RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(GIM(MOIST), DQDT_BL, 'DQDT_BL', alloc = .true. ,RC=STATUS); VERIFY_(STATUS) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 new file mode 100755 index 000000000..d628d3590 --- /dev/null +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 @@ -0,0 +1,397 @@ +#include "MAPL_Generic.h" + +!------------------------------------------------------------------------- +! NASA/GSFC, GMAO, Code 610.1 ! +!------------------------------------------------------------------------- +!BOP +! +! +! !MODULE: Bundle_IncrementMod --- Computes tracer increments and puts them into a bundle +! +! !INTERFACE: +! + +MODULE MBundle_IncrementMod + +! !USES: + + + +! +! !DESCRIPTION: This module can be used to compute model variable increments if the +! following conditions are met: +! 1) A non-increment, or "parent", bundle exists (e.g. TR, TRADV, MTR) +! 2) The increment is computed as: (X_t2 - X_t1)/(t2-t1) +! For new increment bundles the user must do at least the following: +! 1) Define an increment bundle in Set Services of a gridded component. + + + +!EOP +!------------------------------------------------------------------------- + +!BOC + + USE ESMF + USE MAPL + + IMPLICIT NONE + PRIVATE + +! !PUBLIC MEMBER FUNCTIONS: + PUBLIC Initialize_IncMBundle_init + PUBLIC Initialize_IncMBundle_run + PUBLIC Compute_IncMBundle + + type MAPPING + integer :: n + character(len=ESMF_MAXSTR), allocatable :: fieldName(:) + end type MAPPING + + type (Mapping), allocatable :: map(:) + + character(len=ESMF_MAXSTR) :: fieldname + character(len=ESMF_MAXSTR) :: org_bundle ! Original bundle name + character(len=ESMF_MAXSTR) :: inc_bundle ! Increment bundle name + integer :: i, ppos, NQ + + CONTAINS + +!------------------------------------------------------------------------- +!------------------------------------------------------------------------- +!BOP +! +! !ROUTINE: Initialize_IncMBundle_init - Initialize increment bundle with fields from a +! "parent" bundle. This must be called in the Initialize method of a gridded component. + + SUBROUTINE Initialize_IncMBundle_init(GC, state1, state2, RC) + + IMPLICIT NONE + + ! ARGUMENTS + type(ESMF_GridComp), intent(in) :: GC ! Gridded component + type(ESMF_State), intent(in) :: state1 ! Original bundle state + type(ESMF_State), intent(in) :: state2 ! Increment bundle state + integer, optional, intent( out) :: RC ! Error code + + + ! TYPES and VARIABLES + integer :: STATUS + type(ESMF_FieldBundle) :: BUNDLE, BUNDLEi + type(ESMF_Config) :: cf ! AGCM.rc + character(len=ESMF_MAXSTR) :: IAm, valueOld + character(len=ESMF_MAXSTR) :: longname ! longname metadata description + character(len=2) :: suffix ! suffix appended to variable name + integer :: nCols + integer :: n, k, kg, fieldRank + integer :: j, j1, j2, n0 + integer, parameter :: nmax=9 + logical :: found + type(ESMF_Field), pointer :: fields(:) + character(len=ESMF_MAXSTR), allocatable :: NAMES(:), RULES(:) + character(len=ESMF_MAXSTR) :: splitNames(nmax) + type(ESMF_Field) :: field, TempField + character(len=:), allocatable :: s + + Iam = "Initialize_IncMBundle_init" + +! ============================================================================ + +! Begin... + org_bundle = 'MTR' + inc_bundle = 'MTRI' + suffix = 'IM' + longname = '_due_to_moist_processes' + + call ESMF_GridCompGet ( GC, config=cf, RC=STATUS ) + VERIFY_(STATUS) + + call ESMF_ConfigGetDim (cf, NQ, nCols, label=(trim(inc_bundle)//'_increments::'), rc=status) + + if (NQ > 0) then + call ESMF_ConfigFindLabel (cf, (trim(inc_bundle)//'_increments::'), rc=STATUS) + VERIFY_(STATUS) + + allocate (NAMES(NQ), RULES(NQ), _STAT) + + do i = 1, NQ + call ESMF_ConfigNextLine(cf, _RC) + call ESMF_ConfigGetAttribute(cf, NAMES(i), _RC) + call ESMF_ConfigGetAttribute(cf, RULES(i), _RC) + enddo + +! Fill the increments bundle with fields from "parent" bundle +!------------------------------------------------------------------ + call ESMF_StateGet(state1, org_bundle, BUNDLE, rc=STATUS) + VERIFY_(STATUS) + + call ESMF_StateGet(state2, inc_bundle, BUNDLEi, rc=STATUS) + VERIFY_(STATUS) + + allocate(map(NQ), _STAT) + + do i = 1, NQ + + call ESMF_FieldBundleGet (BUNDLE, NAMES(i), field=field, rc=status) + _ASSERT(status==0,trim(NAMES(i))//' is not valid. It likely does not exist in '//trim(org_bundle)) + + call ESMF_FieldGet (field, name=fieldname, _RC) + + ! If the field rank is 3, create rank 2 array (reduction is due to vertical integration + call ESMF_FieldGet(FIELD, dimCount=fieldRank, _RC) + _ASSERT(fieldRank == 3, "Supporting only rank 3 fields") + + !KLUGDE: the only reason we call split to reduce rank 3 to rank 2 + ! we are using only 1 of the split fields, + ! but at least we get the attributes correctly set + call MAPL_FieldSplit(field, fields, _RC) + + TempField = MAPL_FieldCreate (fields(1), name=(trim(fieldname)//suffix) ,DoCopy=.true., _RC) + + + call ESMF_FieldGet(tempFIELD, dimCount=fieldRank, _RC) + _ASSERT(fieldRank == 2, "Expecting rank 2 field") + + + call MAPL_FieldBundleAdd (BUNDLEi, TempField, rc=status) + VERIFY_(STATUS) + + !ALT: for each of the entries in NAMES: + ! generate "split" name (i.e. the entry in the original bundle), + + if (rules(i) == 'default') then + call generateSplitName(NAMES(i), splitNames) + + ! the test if we even have splitting, and if YES, how many (n); then loop over n + n = 1 + do k=2,nmax + call ESMF_FieldBundleGet(bundle,splitNames(k), ispresent=found, _RC) + if (.not.found) exit + n=n+1 + end do + + ! populate a mapping + map(i)%n=n + allocate(map(i)%fieldName(n),_STAT) + do k=1,n + map(i)%fieldName(k) = splitNames(k) + end do + splitNames="" + + else + ! process the list of aggregation names + s = rules(i) + ! 2 in the next expession refrects that we 1 fewer separator + ! than items, and the original name is not the rules' list + n=count([(s(k:k),k=1,len_trim(s))] == ',') + 2 + + ! populate a mapping + map(i)%n=n + allocate(map(i)%fieldName(n),_STAT) + map(i)%fieldName(1) = fieldname + j1=1 + n0 = len_trim(s) + do k=2,n + j=index(s(j1:),',') + j2 = n0 + if (j /= 0) j2= j-1 + map(i)%fieldName(k) = s(j1:j2) + j1= j+1 + end do + end if + end do + + deallocate (NAMES, RULES, _STAT) + +! Set Species Attributes +!---------------------------------- + do i = 1, NQ + call ESMF_FieldBundleGet (BUNDLEi, fieldIndex=i, field=field, _RC ) + call ESMF_FieldGet (field, name=fieldname, _RC) + + if (fieldname==('AOADAYS'//suffix)) then + call ESMF_AttributeSET (field, name='UNITS', value='days s-1', _RC) + else + call ESMF_AttributeGET (field, name='UNITS', value=valueOld, _RC) + ! Remove kg-1 + kg = index(valueOld,'kg-1') + if (kg == 0) then ! did not find kg-1, use oldvalue + call ESMF_AttributeSET (field, name='UNITS', value=trim(valueOld)//' s-1', _RC) + else + call ESMF_AttributeSET (field, name='UNITS', value=valueOld(1:kg-1)//'m-2 s-1', _RC) + end if + end if + + ppos = len(trim(fieldname)) + call ESMF_AttributeSET (field, name='LONG_NAME', value=('tendency_of_'//fieldname(1:ppos-2)//trim(longname)), _RC) + end do + + end if ! NQ > 0 + + _RETURN(ESMF_SUCCESS) + + contains + subroutine generateSplitName(name, splitNameArray) + character(len=*) :: name + character(len=*) :: splitNameArray(:) + + integer :: n + integer :: i + + n = size(splitNameArray) + + splitNameArray(1) = name + do i=2,n + write(splitNameArray(i),'(A,I3.3)') trim(name), i + end do + + _RETURN(ESMF_SUCCESS) + end subroutine GenerateSplitName + + END SUBROUTINE Initialize_IncMBundle_init +!============================================================================================================== + +!------------------------------------------------------------------------- +! NASA/GSFC, Data Assimilation Office, Code 610.1 GEOS/DAS ! +!------------------------------------------------------------------------- +!BOP +! +! !ROUTINE: Initialize_IncMBundle_run - Re-initialize increment bundle with data from the +! ! "parent" bundle within the Run method. The "parent" bundle is the non-increment +! bundle (e.g. TR, MTR, TRADV) + + SUBROUTINE Initialize_IncMBundle_run(state1, state2, dm, RC) + + IMPLICIT NONE + + ! ARGUMENTS + type(ESMF_State), intent(in) :: state1 ! Original bundle state + type(ESMF_State), intent(in) :: state2 ! Increment bundle state + real, intent(in) :: dm(:,:,:) ! delp/mapl_grav + integer, optional, intent( out) :: RC ! Error code + + ! TYPES and VARIABLES + integer :: STATUS + type(ESMF_FieldBundle) :: BUNDLE, BUNDLEi + character(len=ESMF_MAXSTR) :: IAm + character(len=ESMF_MAXSTR), allocatable :: NAMES(:) + real, dimension(:,:,:), pointer :: org_ptr + real, dimension(:,:), pointer :: inc_ptr + integer :: k + + Iam = "Initialize_IncMBundle_run" + +! ============================================================================ + +! Begin... + org_bundle = 'MTR' + inc_bundle = 'MTRI' + + +! !Initialize increment bundle in Run method before the child is called +! !-------------------------------------------------------------------- + call ESMF_StateGet (state2, inc_bundle, BUNDLEi, _RC) + call ESMF_StateGet (state1, org_bundle, BUNDLE, _RC) + call ESMF_FieldBundleGet (BUNDLEi, fieldCount=NQ, _RC) + +! !Check if there is anything in the bundle. + _RETURN_IF (NQ == 0) + allocate (NAMES(NQ), _STAT) + + call ESMF_FieldBundleGet(BUNDLEi, itemOrderFlag=ESMF_ITEMORDER_ADDORDER, & + fieldNameList=NAMES, _RC) + +! !Get increment data pointer and initialize value + do i = 1, NQ + + call ESMFL_BundleGetPointerToData (BUNDLEi, trim(NAMES(i)), inc_ptr, _RC) + + inc_ptr = 0.0 + ! aggregage bins + do k=1,map(i)%n + call ESMFL_BundleGetPointerToData (BUNDLE, map(i)%fieldName(k),& + org_ptr, _RC) + inc_ptr = inc_ptr + sum(org_ptr*dm,3) ! vertical integration, mass weighted + end do + end do + deallocate(NAMES) + + _RETURN(ESMF_SUCCESS) + END SUBROUTINE Initialize_IncMBundle_run +!======================================================================================= +! +!------------------------------------------------------------------------- +! NASA/GSFC, Data Assimilation Office, Code 610.1 GEOS/DAS ! +!------------------------------------------------------------------------- +!BOP +! +! !ROUTINE: Compute_IncMBundle - Compute the increment after the child has run. + + SUBROUTINE Compute_IncMBundle(state1, state2, META, DM, RC) + + IMPLICIT NONE + + ! ARGUMENTS + type(ESMF_State), intent(in) :: state1 ! Original bundle state + type(ESMF_State), intent(in) :: state2 ! Increment bundle state + type(MAPL_MetaComp), pointer, intent(in) :: META + real, intent(in) :: dm(:,:,:) ! delp/mapl_grav + integer, optional, intent( out) :: RC ! Error code + + + ! TYPES and VARIABLES + integer :: STATUS + type(ESMF_FieldBundle) :: BUNDLE, BUNDLEi + character(len=ESMF_MAXSTR) :: IAm + character(len=ESMF_MAXSTR), allocatable :: NAMES(:) + real :: DT + real, dimension(:,:,:), pointer :: org_ptr + real, dimension(:,:), pointer :: inc_ptr + integer :: k + real, allocatable :: tmp(:,:) + + Iam = "Compute_IncMBundle" +! ============================================================================ +! Begin... + org_bundle = 'MTR' + inc_bundle = 'MTRI' + + call ESMF_StateGet (state2, inc_bundle, BUNDLEi, _RC) + call ESMF_FieldBundleGet (BUNDLEi, fieldCount=NQ, _RC) + +! !Check if there is anything in the bundle. + _RETURN_IF (NQ == 0) + call ESMF_StateGet (state1, org_bundle, BUNDLE, _RC) + + call MAPL_GetResource(META, DT, label="RUN_DT:", _RC) + allocate (NAMES(NQ), _STAT) + + call ESMF_FieldBundleGet(BUNDLEi, itemOrderFlag=ESMF_ITEMORDER_ADDORDER, & + fieldNameList=NAMES, _RC) + +! !Get pointers to data + do i = 1, NQ + call ESMFL_BundleGetPointerToData (BUNDLEi, trim(NAMES(i)), inc_ptr, _RC) + if (.not. allocated(tmp)) then + allocate(tmp(size(inc_ptr,1), size(inc_ptr,2)), _STAT) + end if + tmp = 0.0 + ! aggregage bins + do k=1,map(i)%n + call ESMFL_BundleGetPointerToData (BUNDLE, map(i)%fieldName(k),& + org_ptr, _RC) + tmp = tmp + sum(org_ptr*dm,3) ! vertical integration, mass weighted + end do + + !Compute increment and update pointer + inc_ptr = (tmp-inc_ptr)/DT + + end do + deallocate(tmp) + deallocate(NAMES) + + _RETURN(ESMF_SUCCESS) + END SUBROUTINE Compute_IncMBundle + + +END MODULE MBundle_IncrementMod From a8f6e5b4d6b0d70dda37a3664431c4ea9609a9e8 Mon Sep 17 00:00:00 2001 From: William Putman Date: Thu, 27 Apr 2023 22:53:30 -0400 Subject: [PATCH 33/43] removed sponge adjustment code --- .../GEOS_PhysicsGridComp.F90 | 32 +------------------ 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 index 03ad3587e..50788f254 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 @@ -369,15 +369,6 @@ subroutine SetServices ( GC, RC ) end if !NQ > 0 !----------------------------------------------------------- - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'PADJ_SPONGE', & - LONG_NAME = 'pressure_adjustment_in_sponge_of_tendencies_due_to_physics', & - UNITS = 'unitless', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - VERIFY_(STATUS) - call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DTDT', & LONG_NAME = 'pressure_weighted_tendency_of_air_temperature_due_to_physics', & @@ -2098,7 +2089,6 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) real(kind=MAPL_R8), allocatable, dimension(:,:,:) :: dq real, pointer, dimension(:,:,:) :: DTDT_BL, DQDT_BL - real, pointer, dimension(:,:,:) :: PADJ_SPONGE real*8, allocatable, dimension(:,:) :: sum_qdp_b4 real*8, allocatable, dimension(:,:) :: sum_qdp_af @@ -2680,27 +2670,6 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) ! and may be friendly to dynamics. !--------------------------------------------------------------- -!GEOS sponge scaling of increments 0.3mb to model top - call MAPL_GetPointer(EXPORT, PADJ_SPONGE, 'PADJ_SPONGE', RC=STATUS); VERIFY_(STATUS) - if (associated(PADJ_SPONGE)) then - do L=1,LM - do J=1,JM - do I=1,IM - PADJ_SPONGE(I,J,L) = MIN(1.0,MAX(0.0,(0.5*(PLE(I,J,L)+PLE(I,J,L-1))/0.3e2)**3)) - enddo - enddo - enddo - UIM = UIM * PADJ_SPONGE - UIT = UIT * PADJ_SPONGE - UIG = UIG * PADJ_SPONGE - TIR = TIR * PADJ_SPONGE - STN = STN * PADJ_SPONGE - TTN = TTN * PADJ_SPONGE - FRI = FRI * PADJ_SPONGE - TIG = TIG * PADJ_SPONGE - TICU = TICU * PADJ_SPONGE - endif - ! NEED_TOT = associated(DTDTTOT) .or. associated(DTDT) NEED_TOT = .TRUE. NEED_FRI = associated( TIF) .or. NEED_TOT @@ -2721,6 +2690,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC ) if(associated(DUDT )) DUDT = UIM + UIT + UIG if(associated(DVDT )) DVDT = VIM + VIT + VIG if(associated(DWDT )) DWDT = WIM + !-stochastic-physics IF( DO_SPPT ) THEN allocate(TMP(IM,JM,LM),stat=STATUS) From 8005d89732302eb4ad6b191cd30fe646e9c4cedc Mon Sep 17 00:00:00 2001 From: William Putman Date: Sun, 30 Apr 2023 00:58:14 -0400 Subject: [PATCH 34/43] reduce role of GF --- .../GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 index 5f01047d5..70300756a 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GF_InterfaceMod.F90 @@ -159,9 +159,9 @@ subroutine GF_Initialize (MAPL, CLOCK, RC) call MAPL_GetResource(MAPL, STOCH_TOP , 'STOCH_TOP:' ,default= 2.50, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource(MAPL, STOCH_BOT , 'STOCH_BOT:' ,default= 0.75, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource(MAPL, STOCHASTIC_CNV , 'STOCHASTIC_CNV:' ,default= .FALSE.,RC=STATUS); VERIFY_(STATUS) - call MAPL_GetResource(MAPL, GF_MIN_AREA , 'GF_MIN_AREA:' ,default= 0.00, RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, TAU_MID , 'TAU_MID:' ,default= 3600., RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, TAU_DEEP , 'TAU_DEEP:' ,default= 7200., RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, GF_MIN_AREA , 'GF_MIN_AREA:' ,default= -1.e6, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, TAU_MID , 'TAU_MID:' ,default= 5400., RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, TAU_DEEP , 'TAU_DEEP:' ,default= 10800.,RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, CLEV_GRID , 'CLEV_GRID:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, VERT_DISCR , 'VERT_DISCR:' ,default= 1, RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, USE_FCT , 'USE_FCT:' ,default= 1, RC=STATUS );VERIFY_(STATUS) @@ -186,7 +186,7 @@ subroutine GF_Initialize (MAPL, CLOCK, RC) call MAPL_GetResource(MAPL, C0_DEEP , 'C0_DEEP:' ,default= 2.0e-3,RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, C0_MID , 'C0_MID:' ,default= 2.0e-3,RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, C0_SHAL , 'C0_SHAL:' ,default= 0. ,RC=STATUS );VERIFY_(STATUS) - call MAPL_GetResource(MAPL, QRC_CRIT , 'QRC_CRIT:' ,default= 2.e-4, RC=STATUS );VERIFY_(STATUS) + call MAPL_GetResource(MAPL, QRC_CRIT , 'QRC_CRIT:' ,default= 2.0e-4,RC=STATUS );VERIFY_(STATUS) else call MAPL_GetResource(MAPL, C0_DEEP , 'C0_DEEP:' ,default= 1.5e-3,RC=STATUS );VERIFY_(STATUS) call MAPL_GetResource(MAPL, C0_MID , 'C0_MID:' ,default= 1.0e-3,RC=STATUS );VERIFY_(STATUS) @@ -502,7 +502,11 @@ subroutine GF_Run (GC, IMPORT, EXPORT, CLOCK, RC) TMP2D = AREA endwhere else if (GF_MIN_AREA < 0) then - TMP2D = ABS(GF_MIN_AREA) + where (AREA > ABS(GF_MIN_AREA)) + TMP2D = AREA*CNV_FRC + ABS(GF_MIN_AREA)*(1.0-CNV_FRC) + elsewhere + TMP2D = AREA + endwhere else TMP2D = AREA endif From ef4b57071ed4931c1778753cd72e4e0182a9f827 Mon Sep 17 00:00:00 2001 From: Benjamin Auer Date: Mon, 1 May 2023 15:06:51 -0400 Subject: [PATCH 35/43] fix bug with last commit, when you fieldsplit, need to reset dims and vlocation --- .../GEOSphysics_GridComp/MBundle_IncrementMod.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 index d628d3590..5573086d8 100755 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 @@ -148,11 +148,12 @@ SUBROUTINE Initialize_IncMBundle_init(GC, state1, state2, RC) TempField = MAPL_FieldCreate (fields(1), name=(trim(fieldname)//suffix) ,DoCopy=.true., _RC) - call ESMF_FieldGet(tempFIELD, dimCount=fieldRank, _RC) _ASSERT(fieldRank == 2, "Expecting rank 2 field") + call ESMF_AttributeSet(tempField,name="DIMS",value=MAPL_DimsHorzOnly,_RC) + call ESMF_AttributeSet(tempField,name="VLOCATION",value=MAPL_VLocationNone,_RC) call MAPL_FieldBundleAdd (BUNDLEi, TempField, rc=status) VERIFY_(STATUS) From 856acbc9587a56c230a17f44f5da46be769a1ae2 Mon Sep 17 00:00:00 2001 From: William Putman Date: Mon, 1 May 2023 21:58:06 -0400 Subject: [PATCH 36/43] CAPE/CIN patches --- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 10 +++++----- .../GEOSmoist_GridComp/Process_Library.F90 | 15 ++++++++------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index 41a4131be..d424ac407 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -5243,17 +5243,17 @@ subroutine RUN ( GC, IMPORT, EXPORT, CLOCK, RC ) DQST3 = GEOS_DQSAT(T, PLmb, QSAT=QST3) ! These may be used by children - call MAPL_GetPointer(EXPORT, NWFA, 'NWFA', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, NWFA, 'NWFA' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, CNV_FRC, 'CNV_FRC', ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, BYNCY, 'BYNCY' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, CAPE, 'CAPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, INHB, 'INHB' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, SBCAPE, 'SBCAPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, SBCIN, 'SBCIN' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, MLCAPE, 'MLCAPE' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, MLCIN, 'MLCIN' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, MUCAPE, 'MUCAPE' , RC=STATUS); VERIFY_(STATUS) - call MAPL_GetPointer(EXPORT, MUCIN, 'MUCIN' , RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, MLCAPE, 'MLCAPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, MLCIN, 'MLCIN' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, MUCAPE, 'MUCAPE' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) + call MAPL_GetPointer(EXPORT, MUCIN, 'MUCIN' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, LFC, 'ZLFC' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call MAPL_GetPointer(EXPORT, LNB, 'ZLNB' , ALLOC=.TRUE., RC=STATUS); VERIFY_(STATUS) call BUOYANCY2( IM, JM, LM, T, Q, QST3, DQST3, DZET, ZL0, PLmb, PLEmb(:,:,LM), SBCAPE, MLCAPE, MUCAPE, SBCIN, MLCIN, MUCIN, BYNCY, LFC, LNB ) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 index 175e8e0ad..188ed7ced 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/Process_Library.F90 @@ -531,19 +531,19 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP MSEp = 0. Qp = 0. - ! Mixed-layer calculation. Parcel properties averaged over lowest 50 hPa + ! Mixed-layer calculation. Parcel properties averaged over lowest 90 hPa if ( associated(MLCAPE) .and. associated(MLCIN) ) then BYNCY = MAPL_UNDEF tmp1 = 0. Lev0 = LM do L = LM,1,-1 - where (PS-PLO(:,:,L).lt.50.) + where (PS-PLO(:,:,L).lt.90.) MSEp = MSEp + (T(:,:,L) + gravbcp*ZLO(:,:,L) + alhlbcp*Q(:,:,L))*DZ(:,:,L) Qp = Qp + Q(:,:,L)*DZ(:,:,L) tmp1 = tmp1 + DZ(:,:,L) Lev0 = L end where - if (all(PS-PLO(:,:,L).gt.50.)) exit + if (all(PS-PLO(:,:,L).gt.90.)) exit end do where (tmp1.gt.0.) ! average MSEp = MSEp / tmp1 @@ -562,7 +562,7 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP end where end if - ! Most unstable calculation. Parcel in lowest 300 hPa with largest CAPE + ! Most unstable calculation. Parcel in lowest 255 hPa with largest CAPE if ( associated(MUCAPE) .and. associated(MUCIN) ) then MUCAPE = 0. MUCIN = 0. @@ -572,7 +572,7 @@ subroutine BUOYANCY2( IM, JM, LM, T, Q, QS, DQS, DZ, ZLO, PLO, PS, SBCAPE, MLCAP do I = 1,IM do J = 1,JM do L = LM,1,-1 - if (PS(I,J)-PLO(I,J,L).gt.300.) exit + if (PS(I,J)-PLO(I,J,L).gt.255.) exit MSEp(I,J) = T(I,J,L) + gravbcp*ZLO(I,J,L) + alhlbcp*Q(I,J,L) Qp(I,J) = Q(I,J,L) call RETURN_CAPE_CIN( ZLO(I,J,1:L), PLO(I,J,1:L), DZ(I,J,1:L), & @@ -700,8 +700,9 @@ subroutine RETURN_CAPE_CIN( ZLO, PLO, DZ, MSEp, Qp, Tve, Qsate, DQS, CAPE, CIN, LFC = ZLO(KLFC) LNB = ZLO(KLNB) - CIN = -1.*SUM( min(0.,BYNCY(KLFC:)*DZ(KLFC:)) ) ! define CIN as positive - CAPE = SUM( max(0.,BYNCY(KLNB:KLFC)*DZ(KLNB:KLFC)) ) + CIN = SUM( min(0.,BYNCY(KLFC:)*DZ(KLFC:)) ) ! define CIN as negative +! CAPE = SUM( max(0.,BYNCY(KLNB:KLFC)*DZ(KLNB:KLFC)) ) + CAPE = SUM( max(0.,BYNCY(:)*DZ(:)) ) end subroutine RETURN_CAPE_CIN From 46cb4c5a3a464058e9e3e22b0cea6839f8c3c605 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Thu, 4 May 2023 12:04:56 -0400 Subject: [PATCH 37/43] Fix character array constructor for GNU --- .../GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 index e990e2faf..95402bbe1 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 @@ -1311,8 +1311,8 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddConnectivity ( GC, & - SHORT_NAME = (/'T2M', 'Q2M', 'TA', 'QA', 'SH', & - 'EVAP ' & + SHORT_NAME = (/'T2M ', 'Q2M ', 'TA ', 'QA ', 'SH ', & + 'EVAP' & /), & DST_ID = MOIST, & SRC_ID = SURF, & From 935a82347d4848cddf94e6c52fb83d94a9fc3e41 Mon Sep 17 00:00:00 2001 From: Matthew Thompson Date: Thu, 4 May 2023 13:26:00 -0400 Subject: [PATCH 38/43] Fix uninitialized CCN_OCN CCN_LND --- .../GEOSmoist_GridComp/GEOS_MoistGridComp.F90 | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 index 1aeaa05b8..f5bb01f75 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_MoistGridComp.F90 @@ -2265,50 +2265,50 @@ subroutine SetServices ( GC, RC ) call MAPL_AddExportSpec(GC, & - SHORT_NAME='MLCAPE', & + SHORT_NAME='MLCAPE', & LONG_NAME ='cape_for_mixed_layer_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='MLCIN', & + SHORT_NAME='MLCIN', & LONG_NAME ='inhibition_for_mixed_layer_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='MUCAPE', & + SHORT_NAME='MUCAPE', & LONG_NAME ='cape_for_most_unstable_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SBCAPE', & + SHORT_NAME='SBCAPE', & LONG_NAME ='cape_for_surface_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='MUCIN', & + SHORT_NAME='MUCIN', & LONG_NAME ='inhibition_for_most_unstable_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='SBCIN', & + SHORT_NAME='SBCIN', & LONG_NAME ='inhibition_for_surface_parcel', & UNITS ='J kg-1', & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) @@ -2385,15 +2385,15 @@ subroutine SetServices ( GC, RC ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZLNB', & + SHORT_NAME='ZLNB', & LONG_NAME ='level_of_neutral_buoyancy', & UNITS ='m' , & - DIMS = MAPL_DimsHorzOnly, & + DIMS = MAPL_DimsHorzOnly, & VLOCATION = MAPL_VLocationNone, RC=STATUS ) VERIFY_(STATUS) call MAPL_AddExportSpec(GC, & - SHORT_NAME='ZCBL', & + SHORT_NAME='ZCBL', & LONG_NAME ='height_of_cloud_base_layer', & UNITS ='m' , & DIMS = MAPL_DimsHorzOnly, & @@ -5030,10 +5030,13 @@ subroutine Initialize ( GC, IMPORT, EXPORT, CLOCK, RC ) call MAPL_GetResource( MAPL, USE_AERO_BUFFER , 'USE_AERO_BUFFER:' , DEFAULT=.TRUE. , RC=STATUS); VERIFY_(STATUS) call aer_cloud_init() call WRITE_PARALLEL ("INITIALIZED aer_cloud_init") - else + endif + + ! MAT These have to be defined as they are passed into Aer_Activate below and are intent(in) + ! Note: It's possible these aren't *used* if USE_AEROSOL_NN=.TRUE. but they are still passed + ! in so they have to be defined call MAPL_GetResource( MAPL, CCN_OCN, 'NCCN_OCN:', DEFAULT= 100., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 call MAPL_GetResource( MAPL, CCN_LND, 'NCCN_LND:', DEFAULT= 300., RC=STATUS); VERIFY_(STATUS) ! #/cm^3 - endif if (adjustl(CONVPAR_OPTION)=="RAS" ) call RAS_Initialize(MAPL, RC=STATUS) ; VERIFY_(STATUS) if (adjustl(CONVPAR_OPTION)=="GF" ) call GF_Initialize(MAPL, CLOCK, RC=STATUS) ; VERIFY_(STATUS) From 3c46f207335ef25f664750a1b939d26a113f880b Mon Sep 17 00:00:00 2001 From: Scott Rabenhorst Date: Fri, 5 May 2023 14:07:48 -0400 Subject: [PATCH 39/43] remove required phys_hydrostatic from mpdrv subroutine --- .../GEOSmoist_GridComp/gfdl_cloud_microphys.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index dc7cad73f..78d8bccae 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -632,7 +632,7 @@ subroutine mpdrv (hydrostatic, uin, vin, w, delp, pt, qv, ql, qr, qi, qs, & implicit none - logical, intent (in) :: phys_hydrostatic, hydrostatic + logical, intent (in) :: hydrostatic integer, intent (in) :: j, is, ie, js, je, ks, ke integer, intent (in) :: ntimes, ktop, kbot From 0e26afe6fa4b53f4b8296e9aef7951b822479821 Mon Sep 17 00:00:00 2001 From: Benjamin Auer Date: Tue, 9 May 2023 09:25:32 -0400 Subject: [PATCH 40/43] add new bundle for wet scavenging since MTRI conflicts so rename MCHEMTRI --- .../GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 | 8 ++++++++ .../GEOSphysics_GridComp/MBundle_IncrementMod.F90 | 8 +++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 index 4da9591e1..8f459efb8 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOS_PhysicsGridComp.F90 @@ -565,6 +565,14 @@ subroutine SetServices ( GC, RC ) RC=STATUS ) VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'MCHEMTRI', & + LONG_NAME = 'moist_quantities', & + UNITS = 'UNITS s-1', & + DATATYPE = MAPL_BundleItem, & + RC=STATUS ) + VERIFY_(STATUS) + call MAPL_AddExportSpec(GC, & LONG_NAME = 'upward_net_turbulence_heat_flux', & UNITS = 'W m-2', & diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 index 5573086d8..d0aca734e 100755 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/MBundle_IncrementMod.F90 @@ -99,7 +99,7 @@ SUBROUTINE Initialize_IncMBundle_init(GC, state1, state2, RC) ! Begin... org_bundle = 'MTR' - inc_bundle = 'MTRI' + inc_bundle = 'MCHEMTRI' suffix = 'IM' longname = '_due_to_moist_processes' @@ -204,6 +204,8 @@ SUBROUTINE Initialize_IncMBundle_init(GC, state1, state2, RC) deallocate (NAMES, RULES, _STAT) + + ! Set Species Attributes !---------------------------------- do i = 1, NQ @@ -286,7 +288,7 @@ SUBROUTINE Initialize_IncMBundle_run(state1, state2, dm, RC) ! Begin... org_bundle = 'MTR' - inc_bundle = 'MTRI' + inc_bundle = 'MCHEMTRI' ! !Initialize increment bundle in Run method before the child is called @@ -355,7 +357,7 @@ SUBROUTINE Compute_IncMBundle(state1, state2, META, DM, RC) ! ============================================================================ ! Begin... org_bundle = 'MTR' - inc_bundle = 'MTRI' + inc_bundle = 'MCHEMTRI' call ESMF_StateGet (state2, inc_bundle, BUNDLEi, _RC) call ESMF_FieldBundleGet (BUNDLEi, fieldCount=NQ, _RC) From 8ace3cabc26e2323f1cb1682af11126b5d0bc16c Mon Sep 17 00:00:00 2001 From: William Putman Date: Tue, 9 May 2023 11:32:34 -0400 Subject: [PATCH 41/43] cleaned up the qa/evap/subl options between GFDL and cldmacro --- .../GEOS_GFDL_1M_InterfaceMod.F90 | 4 +++- .../gfdl_cloud_microphys.F90 | 19 +++++-------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 index c2ec7e9a9..f169a3f96 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/GEOS_GFDL_1M_InterfaceMod.F90 @@ -246,9 +246,11 @@ subroutine GFDL_1M_Initialize (MAPL, RC) call MAPL_GetResource( MAPL, MAX_RL , 'MAX_RL:' , DEFAULT=60.0e-6, RC=STATUS); VERIFY_(STATUS) CCW_EVAP_EFF = 4.e-3 + if (do_evap) CCW_EVAP_EFF = 0.0 ! Evap done inside GFDL-MP call MAPL_GetResource( MAPL, CCW_EVAP_EFF, 'CCW_EVAP_EFF:', DEFAULT= CCW_EVAP_EFF, RC=STATUS); VERIFY_(STATUS) CCI_EVAP_EFF = 4.e-3 + if (do_subl) CCI_EVAP_EFF = 0.0 ! Subl done inside GFDL-MP call MAPL_GetResource( MAPL, CCI_EVAP_EFF, 'CCI_EVAP_EFF:', DEFAULT= CCI_EVAP_EFF, RC=STATUS); VERIFY_(STATUS) call MAPL_GetResource( MAPL, CNV_FRACTION_MIN, 'CNV_FRACTION_MIN:', DEFAULT= 0.0, RC=STATUS); VERIFY_(STATUS) @@ -591,7 +593,6 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) .false. , & USE_BERGERON) RHX(I,J,L) = Q(I,J,L)/GEOS_QSAT( T(I,J,L), PLmb(I,J,L) ) - endif ! meltfrz new condensates call MELTFRZ ( DT_MOIST , & CNV_FRC(I,J) , & @@ -605,6 +606,7 @@ subroutine GFDL_1M_Run (GC, IMPORT, EXPORT, CLOCK, RC) T(I,J,L) , & QLLS(I,J,L) , & QILS(I,J,L) ) + endif ! evaporation for CN if (CCW_EVAP_EFF > 0.0) then ! else evap done inside GFDL RHCRIT = 1.0 diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index 78d8bccae..ec8ae17cb 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -1176,7 +1176,11 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & ! ----------------------------------------------------------------------- ! Use In-Cloud condensates - qadum = max(qa,qcmin) + if (.not. do_qa) then + qadum = max(qa,qcmin) + else + qadum = 1.0 + endif ql = ql/qadum qi = qi/qadum @@ -1199,7 +1203,6 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & sink = min(ql0_max/qadum(k), ql(k), max(0.,sink)) ql (k) = ql (k) - sink qr (k) = qr (k) + sink*qadum(k) - if (do_qa) qa (k) = qa(k) * SQRT( max(qi(k)+ql(k),0.0) / max(qi(k)+ql(k) + sink,qcmin) ) endif endif enddo @@ -1233,7 +1236,6 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & sink = min(ql0_max/qadum(k), ql(k), max(0.,sink)) ql (k) = ql (k) - sink qr (k) = qr (k) + sink*qadum(k) - if (do_qa) qa (k) = qa (k) * SQRT( max(qi(k)+ql(k),0.0) / max(qi(k) + ql(k) + sink,qcmin) ) endif endif enddo @@ -1347,11 +1349,6 @@ subroutine revap_racc (ktop, kbot, dt, tz, qv, ql, qr, qi, qs, qg, qa, revap, de if (qr (k) > qpmin .and. ql (k) > qcmin .and. qsat < q_minus) then sink = dt * denfac (k) * cracw * exp (0.95 * log (qr (k) * den (k))) sink = sink / (1. + sink) * ql (k) - - ! new total condensate / old condensate - if (do_qa) qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)-sink,0.0 ) / & - max(qi(k)+ql(k) ,qcmin) ) ) - ql (k) = ql (k) - sink qr (k) = qr (k) + sink endif @@ -2066,9 +2063,6 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & else evap = 0.0 endif - ! new total condensate / old condensate - if (do_qa) qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)-evap,0.0 ) / & - max(qi(k)+ql(k) ,qcmin) ) ) qv (k) = qv (k) + evap ql (k) = ql (k) - evap q_liq (k) = q_liq (k) - evap @@ -2162,9 +2156,6 @@ subroutine subgrid_z_proc (ktop, kbot, p1, den, denfac, dts, tz, qv, & sink = 0. endif endif - ! new total condensate / old condensate - if (do_qa) qa(k) = max(0.0,min(1.,qa(k) * max(qi(k)+ql(k)+sink,0.0 ) / & - max(qi(k)+ql(k) ,qcmin) ) ) qv (k) = qv (k) - sink qi (k) = qi (k) + sink q_sol (k) = q_sol (k) + sink From 1f3f4c163e825488a7a8aa4b6d6b2f554921a71a Mon Sep 17 00:00:00 2001 From: William Putman Date: Tue, 9 May 2023 18:16:07 -0400 Subject: [PATCH 42/43] removed area dependence on rain revap in GFDL --- .../GEOSmoist_GridComp/gfdl_cloud_microphys.F90 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index ec8ae17cb..c79e29bfa 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -1285,11 +1285,11 @@ subroutine revap_racc (ktop, kbot, dt, tz, qv, ql, qr, qi, qs, qg, qa, revap, de if (tz (k) > t_wfr .and. qr (k) > qpmin) then - ! area and timescale efficiency on revap - AREA_LS_PRC_K = 0.0 - if (TOT_PREC_LS > 0.0) AREA_LS_PRC_K = MAX( AREA_LS_PRC/TOT_PREC_LS, 1.E-6 ) - fac_revp = 1. - exp (- AREA_LS_PRC_K * dt / tau_revp) - !fac_revp = 1. - exp (- dt / tau_revp) + !! area and timescale efficiency on revap + ! AREA_LS_PRC_K = 0.0 + !if (TOT_PREC_LS > 0.0) AREA_LS_PRC_K = MAX( AREA_LS_PRC/TOT_PREC_LS, 1.E-6 ) + !fac_revp = 1. - exp (- AREA_LS_PRC_K * dt / tau_revp) + fac_revp = 1. - exp (- dt / tau_revp) ! ----------------------------------------------------------------------- ! define heat capacity and latent heat coefficient From 558f25cecfe22e831c8b44414a5eb87059d57552 Mon Sep 17 00:00:00 2001 From: William Putman Date: Wed, 10 May 2023 11:54:37 -0400 Subject: [PATCH 43/43] moved autoconversion to the top of warm_rain routine --- .../gfdl_cloud_microphys.F90 | 167 +++++++++--------- 1 file changed, 82 insertions(+), 85 deletions(-) diff --git a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 index c79e29bfa..7dc22a456 100644 --- a/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 +++ b/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSmoist_GridComp/gfdl_cloud_microphys.F90 @@ -1079,17 +1079,90 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & m1_rain (:) = 0. call check_column (ktop, kbot, qr, no_fall) - - if (no_fall) then - vtr (:) = vf_min - r1 = 0. + + ! ----------------------------------------------------------------------- + ! auto - conversion + ! assuming linear subgrid vertical distribution of cloud water + ! following lin et al. 1994, mwr + ! ----------------------------------------------------------------------- + + ! Use In-Cloud condensates + if (.not. do_qa) then + qadum = max(qa,qcmin) else + qadum = 1.0 + endif + ql = ql/qadum + qi = qi/qadum + + fac_rc = min(1.0,eis/10.0)**2 ! Estimated inversion strength determine stable regime + fac_rc = rc * (rthreshs*fac_rc + rthreshu*(1.0-fac_rc)) ** 3 + + if (irain_f /= 0) then + ! ----------------------------------------------------------------------- + ! no subgrid varaibility + ! ----------------------------------------------------------------------- + + do k = ktop, kbot + qc0 = fac_rc * ccn (k) + if (tz (k) > t_wfr) then + qc = qc0 / den (k) + dq = ql (k) - qc + if (dq > 0.) then + sink = min (dq, dt * c_praut (k) * den (k) * exp (so3 * log (ql (k)))) + sink = min(ql0_max/qadum(k), ql(k), max(0.,sink)) + ql (k) = ql (k) - sink + qr (k) = qr (k) + sink*qadum(k) + endif + endif + enddo + + else + + ! ----------------------------------------------------------------------- + ! with subgrid variability + ! ----------------------------------------------------------------------- + + call linear_prof (kbot - ktop + 1, ql (ktop), dl (ktop), z_slope_liq, h_var) + + do k = ktop, kbot + qc0 = fac_rc * ccn (k) + if (tz (k) > t_wfr + dt_fr) then + dl (k) = min (max (qcmin, dl (k)), 0.5 * ql (k)) + ! -------------------------------------------------------------------- + ! as in klein's gfdl am2 stratiform scheme (with subgrid variations) + ! -------------------------------------------------------------------- + qc = qc0 / den (k) + dq = 0.5 * (ql (k) + dl (k) - qc) + ! -------------------------------------------------------------------- + ! dq = dl if qc == q_minus = ql - dl + ! dq = 0 if qc == q_plus = ql + dl + ! -------------------------------------------------------------------- + if (dq > 0.) then ! q_plus > qc + ! -------------------------------------------------------------------- + ! revised continuous form: linearly decays (with subgrid dl) to zero at qc == ql + dl + ! -------------------------------------------------------------------- + sink = min (1., dq / dl (k)) * dt * c_praut (k) * den (k) * exp (so3 * log (ql (k))) + sink = min(ql0_max/qadum(k), ql(k), max(0.,sink)) + ql (k) = ql (k) - sink + qr (k) = qr (k) + sink*qadum(k) + endif + endif + enddo + endif + + ! Revert In-Cloud condensate + ql = ql*qadum + qi = qi*qadum + ! ----------------------------------------------------------------------- ! fall speed of rain ! ----------------------------------------------------------------------- - if (const_vr) then + if (no_fall) then + vtr (:) = vf_min + elseif (const_vr) then vtr (:) = vr_fac ! ifs_2016: 4.0 else do k = ktop, kbot @@ -1126,7 +1199,9 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & ! mass flux induced by falling rain ! ----------------------------------------------------------------------- - if (use_ppm) then + if (no_fall) then + r1 = 0.0 + elseif (use_ppm) then zt (ktop) = ze (ktop) do k = ktop + 1, kbot zt (k) = ze (k) - dt * (vtr (k - 1) + vtr (k))/2.0 @@ -1163,87 +1238,9 @@ subroutine warm_rain (dt, ktop, kbot, dp, dz, tz, qv, ql, qr, qi, qs, qg, qa, & ! ----------------------------------------------------------------------- ! evaporation and accretion of rain for the remaing 1 / 2 time step ! ----------------------------------------------------------------------- - + call revap_racc (ktop, kbot, dt5, tz, qv, ql, qr, qi, qs, qg, qa, revap, den, denfac, h_var) evap1 = evap1 + revap - - endif - - ! ----------------------------------------------------------------------- - ! auto - conversion - ! assuming linear subgrid vertical distribution of cloud water - ! following lin et al. 1994, mwr - ! ----------------------------------------------------------------------- - - ! Use In-Cloud condensates - if (.not. do_qa) then - qadum = max(qa,qcmin) - else - qadum = 1.0 - endif - ql = ql/qadum - qi = qi/qadum - - fac_rc = min(1.0,eis/10.0)**2 ! Estimated inversion strength determine stable regime - fac_rc = rc * (rthreshs*fac_rc + rthreshu*(1.0-fac_rc)) ** 3 - - if (irain_f /= 0) then - - ! ----------------------------------------------------------------------- - ! no subgrid varaibility - ! ----------------------------------------------------------------------- - - do k = ktop, kbot - qc0 = fac_rc * ccn (k) - if (tz (k) > t_wfr) then - qc = qc0 / den (k) - dq = ql (k) - qc - if (dq > 0.) then - sink = min (dq, dt * c_praut (k) * den (k) * exp (so3 * log (ql (k)))) - sink = min(ql0_max/qadum(k), ql(k), max(0.,sink)) - ql (k) = ql (k) - sink - qr (k) = qr (k) + sink*qadum(k) - endif - endif - enddo - - else - - ! ----------------------------------------------------------------------- - ! with subgrid variability - ! ----------------------------------------------------------------------- - - call linear_prof (kbot - ktop + 1, ql (ktop), dl (ktop), z_slope_liq, h_var) - - do k = ktop, kbot - qc0 = fac_rc * ccn (k) - if (tz (k) > t_wfr + dt_fr) then - dl (k) = min (max (qcmin, dl (k)), 0.5 * ql (k)) - ! -------------------------------------------------------------------- - ! as in klein's gfdl am2 stratiform scheme (with subgrid variations) - ! -------------------------------------------------------------------- - qc = qc0 / den (k) - dq = 0.5 * (ql (k) + dl (k) - qc) - ! -------------------------------------------------------------------- - ! dq = dl if qc == q_minus = ql - dl - ! dq = 0 if qc == q_plus = ql + dl - ! -------------------------------------------------------------------- - if (dq > 0.) then ! q_plus > qc - ! -------------------------------------------------------------------- - ! revised continuous form: linearly decays (with subgrid dl) to zero at qc == ql + dl - ! -------------------------------------------------------------------- - sink = min (1., dq / dl (k)) * dt * c_praut (k) * den (k) * exp (so3 * log (ql (k))) - sink = min(ql0_max/qadum(k), ql(k), max(0.,sink)) - ql (k) = ql (k) - sink - qr (k) = qr (k) + sink*qadum(k) - endif - endif - enddo - endif - - ! Revert In-Cloud condensate - ql = ql*qadum - qi = qi*qadum end subroutine warm_rain