diff --git a/physics/GFS_MP_generic.F90 b/physics/GFS_MP_generic.F90 index 239aded39..6a8d3bfcb 100644 --- a/physics/GFS_MP_generic.F90 +++ b/physics/GFS_MP_generic.F90 @@ -84,8 +84,9 @@ end subroutine GFS_MP_generic_post_init !! !> \section gfs_mp_gen GFS MP Generic Post General Algorithm !> @{ - subroutine GFS_MP_generic_post_run(im, levs, kdt, nrcm, nncl, ntcw, ntrac, imp_physics, imp_physics_gfdl, & - imp_physics_thompson, imp_physics_mg, imp_physics_fer_hires, cal_pre, cplflx, cplchm, con_g, dtf, frain, rainc, & + subroutine GFS_MP_generic_post_run( & + im, levs, kdt, nrcm, nncl, ntcw, ntrac, imp_physics, imp_physics_gfdl, imp_physics_thompson, & + imp_physics_mg, imp_physics_fer_hires, cal_pre, cplflx, cplchm, con_g, rainmin, dtf, frain, rainc, & rain1, rann, xlat, xlon, gt0, gq0, prsl, prsi, phii, tsfc, ice, snow, graupel, save_t, save_q, rain0, ice0, snow0,& graupel0, del, rain, domr_diag, domzr_diag, domip_diag, doms_diag, tprcp, srflag, sr, cnvprcp, totprcp, totice, & totsnw, totgrp, cnvprcpb, totprcpb, toticeb, totsnwb, totgrpb, rain_cpl, rainc_cpl, snow_cpl, pwat, & @@ -103,7 +104,7 @@ subroutine GFS_MP_generic_post_run(im, levs, kdt, nrcm, nncl, ntcw, ntrac, imp_p logical, intent(in) :: cal_pre, lssav, ldiag3d, qdiag3d, cplflx, cplchm integer, intent(in) :: index_of_temperature,index_of_process_mp - real(kind=kind_phys), intent(in) :: dtf, frain, con_g + real(kind=kind_phys), intent(in) :: dtf, frain, con_g, rainmin real(kind=kind_phys), dimension(:), intent(in) :: rain1, xlat, xlon, tsfc real(kind=kind_phys), dimension(:), intent(inout) :: ice, snow, graupel, rainc real(kind=kind_phys), dimension(:), intent(in) :: rain0, ice0, snow0, graupel0 @@ -146,7 +147,6 @@ subroutine GFS_MP_generic_post_run(im, levs, kdt, nrcm, nncl, ntcw, ntrac, imp_p ! DH* TODO: CLEANUP, all of these should be coming in through the argument list real(kind=kind_phys), parameter :: con_p001= 0.001_kind_phys real(kind=kind_phys), parameter :: con_day = 86400.0_kind_phys - real(kind=kind_phys), parameter :: rainmin = 1.0e-13_kind_phys real(kind=kind_phys), parameter :: p850 = 85000.0_kind_phys ! *DH diff --git a/physics/GFS_MP_generic.meta b/physics/GFS_MP_generic.meta index e80536e37..30de79201 100644 --- a/physics/GFS_MP_generic.meta +++ b/physics/GFS_MP_generic.meta @@ -159,6 +159,15 @@ type = integer intent = in optional = F +[rainmin] + standard_name = lwe_thickness_of_minimum_rain_amount + long_name = minimum rain amount + units = m + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [nrcm] standard_name = number_of_random_numbers long_name = second dimension of random number stream for RAS diff --git a/physics/aerclm_def.F b/physics/aerclm_def.F index 3862aa1b1..157c7b961 100644 --- a/physics/aerclm_def.F +++ b/physics/aerclm_def.F @@ -1,7 +1,7 @@ module aerclm_def use machine , only : kind_phys implicit none - + integer, parameter :: levsaer=72, ntrcaerm=15, timeaer=12 integer :: latsaer, lonsaer, ntrcaer, levsw diff --git a/physics/cu_gf_driver.F90 b/physics/cu_gf_driver.F90 index 157247f6a..96c5d8eb6 100644 --- a/physics/cu_gf_driver.F90 +++ b/physics/cu_gf_driver.F90 @@ -5,7 +5,7 @@ module cu_gf_driver ! DH* TODO: replace constants with arguments to cu_gf_driver_run - use physcons , g => con_g, cp => con_cp, xlv => con_hvap, r_v => con_rv + !use physcons , g => con_g, cp => con_cp, xlv => con_hvap, r_v => con_rv use machine , only: kind_phys use cu_gf_deep, only: cu_gf_deep_run,neg_check,autoconv,aeroevap,fct1d3 use cu_gf_sh , only: cu_gf_sh_run @@ -75,7 +75,7 @@ end subroutine cu_gf_driver_finalize !! !>\section gen_gf_driver GSD GF Cumulus Scheme General Algorithm !> @{ - subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,cactiv, & + subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,cactiv,g,cp,xlv,r_v, & forcet,forceqv_spechum,phil,raincv,qv_spechum,t,cld1d, & us,vs,t2di,w,qv2di_spechum,p2di,psuri, & hbot,htop,kcnv,xland,hfx2,qfx2,cliw,clcw, & @@ -106,9 +106,10 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,cactiv, & integer :: its,ite, jts,jte, kts,kte integer, intent(in ) :: im,km,ntracer logical, intent(in ) :: flag_for_scnv_generic_tend,flag_for_dcnv_generic_tend + real (kind=kind_phys), intent(in) :: g,cp,xlv,r_v logical, intent(in ) :: ldiag3d - real(kind=kind_phys), optional, intent(inout) :: dtend(:,:,:) + real(kind=kind_phys), intent(inout) :: dtend(:,:,:) integer, intent(in) :: dtidx(:,:), & index_of_x_wind, index_of_y_wind, index_of_temperature, & index_of_process_scnv, index_of_process_dcnv, ntqv, ntcw, ntiw diff --git a/physics/cu_gf_driver.meta b/physics/cu_gf_driver.meta index 99eef2ce3..732eb9679 100644 --- a/physics/cu_gf_driver.meta +++ b/physics/cu_gf_driver.meta @@ -127,6 +127,42 @@ type = integer intent = inout optional = F +[g] + standard_name = gravitational_acceleration + long_name = gravitational acceleration + units = m s-2 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[cp] + standard_name = specific_heat_of_dry_air_at_constant_pressure + long_name = specific heat !of dry air at constant pressure + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[xlv] + standard_name = latent_heat_of_vaporization_of_water_at_0C + long_name = latent heat of evaporation/sublimation + units = J kg-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[r_v] + standard_name = gas_constant_water_vapor + long_name = ideal gas constant for water vapor + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [forcet] standard_name = tendency_of_air_temperature_due_to_nonphysics long_name = temperature tendency due to dynamics only diff --git a/physics/dcyc2.f b/physics/dcyc2.f index 7cc14b389..8b311dc02 100644 --- a/physics/dcyc2.f +++ b/physics/dcyc2.f @@ -172,6 +172,7 @@ end subroutine dcyc2t3_finalize subroutine dcyc2t3_run & ! --- inputs: & ( solhr,slag,sdec,cdec,sinlat,coslat, & + & con_g, con_cp, con_pi, con_sbc, & & xlon,coszen,tsfc_lnd,tsfc_ice,tsfc_wat,tf,tsflw,tsfc, & & sfcemis_lnd, sfcemis_ice, sfcemis_wat, & & sfcdsw,sfcnsw,sfcdlw,swh,swhc,hlw,hlwc, & @@ -194,8 +195,8 @@ subroutine dcyc2t3_run & & ) ! use machine, only : kind_phys - use physcons, only : con_pi, con_sbc, con_cp, con_g - use radiation_tools, only : cmp_tlev + use radiation_tools, only : cmp_tlev + implicit none ! ! --- constant parameters: @@ -204,8 +205,7 @@ subroutine dcyc2t3_run & & hour12 = 12.0_kind_phys, & & f3600 = one/3600.0_kind_phys, & & f7200 = one/7200.0_kind_phys, & - & czlimt = 0.0001_kind_phys, & ! ~ cos(89.99427) - & pid12 = con_pi / hour12 + & czlimt = 0.0001_kind_phys ! ~ cos(89.99427) ! --- inputs: integer, intent(in) :: im, levs @@ -237,6 +237,12 @@ subroutine dcyc2t3_run & real(kind=kind_phys), dimension(:,:), intent(in) :: p_lev, & & flux2D_lwUP, flux2D_lwDOWN, fluxlwUP_jac, t_lev + real(kind_phys), intent(in ) :: con_g, con_cp, & + & con_pi, con_sbc + + real(kind_phys) :: pid12 + + ! --- input/output: real(kind=kind_phys), dimension(:,:), intent(inout) :: dtdt, htrlw real(kind=kind_phys), dimension(:,:), intent(inout) :: dtdtnp @@ -286,6 +292,7 @@ subroutine dcyc2t3_run & tem1 = fhswr / deltim nstp = max(6, nint(tem1)) nstl = max(1, nint(nstp/tem1)) + pid12 = con_pi / hour12 ! ! --- ... sw time-step adjustment for current cosine of zenith angle ! ---------------------------------------------------------- diff --git a/physics/dcyc2.meta b/physics/dcyc2.meta index 2429730b4..a65d5d451 100644 --- a/physics/dcyc2.meta +++ b/physics/dcyc2.meta @@ -79,6 +79,42 @@ kind = kind_phys intent = in optional = F +[con_g] + standard_name = gravitational_acceleration + long_name = gravitational acceleration + units = m s-2 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[con_cp] + standard_name = specific_heat_of_dry_air_at_constant_pressure + long_name = specific heat of dry air at constant pressure + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[con_pi] + standard_name = pi + long_name = ratio of a circle's circumference to its diameter + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[con_sbc] + standard_name = stefan_boltzmann_constant + long_name = Stefan-Boltzmann constant + units = W m-2 K-4 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [tsfc_lnd] standard_name = surface_skin_temperature_over_land_interstitial long_name = surface skin temperature over land (temporary use as interstitial) diff --git a/physics/get_prs_fv3.F90 b/physics/get_prs_fv3.F90 index b55ad1abe..35bdc35ca 100644 --- a/physics/get_prs_fv3.F90 +++ b/physics/get_prs_fv3.F90 @@ -1,7 +1,7 @@ module get_prs_fv3 use machine, only: kind_phys - use physcons, only: con_fvirt +! use physcons, only: con_fvirt !--- public declarations public get_prs_fv3_init, get_prs_fv3_run, get_prs_fv3_finalize @@ -18,20 +18,21 @@ end subroutine get_prs_fv3_init !! \section arg_table_get_prs_fv3_run Argument Table !! \htmlinclude get_prs_fv3_run.html !! - subroutine get_prs_fv3_run(ix, levs, phii, prsi, tgrs, qgrs1, del, del_gz, errmsg, errflg) + subroutine get_prs_fv3_run(ix, levs, con_fvirt, phii, prsi, tgrs, qgrs1, del, del_gz, errmsg, errflg) implicit none ! Interface variables integer, intent(in) :: ix, levs + real(kind=kind_phys), intent(in) :: con_fvirt real(kind=kind_phys), dimension(:,:), intent(in) :: phii real(kind=kind_phys), dimension(:,:), intent(in) :: prsi - real(kind=kind_phys), dimension(:,:), intent(in) :: tgrs - real(kind=kind_phys), dimension(:,:), intent(in) :: qgrs1 - real(kind=kind_phys), dimension(:,:), intent(out) :: del + real(kind=kind_phys), dimension(:,:), intent(in) :: tgrs + real(kind=kind_phys), dimension(:,:), intent(in) :: qgrs1 + real(kind=kind_phys), dimension(:,:), intent(out) :: del real(kind=kind_phys), dimension(:,:), intent(out) :: del_gz - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg + character(len=*), intent(out) :: errmsg + integer, intent(out) :: errflg ! Local variables integer :: i, k @@ -79,19 +80,20 @@ end subroutine get_phi_fv3_init !! \section arg_table_get_phi_fv3_run Argument Table !! \htmlinclude get_phi_fv3_run.html !! - subroutine get_phi_fv3_run(ix, levs, gt0, gq01, del_gz, phii, phil, errmsg, errflg) + subroutine get_phi_fv3_run(ix, levs, con_fvirt, gt0, gq01, del_gz, phii, phil, errmsg, errflg) implicit none ! Interface variables integer, intent(in) :: ix, levs - real(kind=kind_phys), dimension(:,:), intent(in) :: gt0 - real(kind=kind_phys), dimension(:,:), intent(in) :: gq01 + real(kind=kind_phys), intent(in) :: con_fvirt + real(kind=kind_phys), dimension(:,:), intent(in) :: gt0 + real(kind=kind_phys), dimension(:,:), intent(in) :: gq01 real(kind=kind_phys), dimension(:,:), intent(inout) :: del_gz real(kind=kind_phys), dimension(:,:), intent(out) :: phii - real(kind=kind_phys), dimension(:,:), intent(out) :: phil - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg + real(kind=kind_phys), dimension(:,:), intent(out) :: phil + character(len=*), intent(out) :: errmsg + integer, intent(out) :: errflg ! Local variables integer :: i, k diff --git a/physics/get_prs_fv3.meta b/physics/get_prs_fv3.meta index 33b7cb581..aa690573a 100644 --- a/physics/get_prs_fv3.meta +++ b/physics/get_prs_fv3.meta @@ -23,6 +23,15 @@ type = integer intent = in optional = F +[con_fvirt] + standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one + long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [phii] standard_name = geopotential_at_interface long_name = interface geopotential @@ -121,6 +130,15 @@ type = integer intent = in optional = F +[con_fvirt] + standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one + long_name = rv/rd - 1 (rv = ideal gas constant for water vapor) + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [gt0] standard_name = air_temperature_of_new_state long_name = updated air temperature diff --git a/physics/gfdl_cloud_microphys.F90 b/physics/gfdl_cloud_microphys.F90 index fd9a23489..309cbac92 100644 --- a/physics/gfdl_cloud_microphys.F90 +++ b/physics/gfdl_cloud_microphys.F90 @@ -112,13 +112,13 @@ end subroutine gfdl_cloud_microphys_finalize !! \section arg_table_gfdl_cloud_microphys_run Argument Table !! \htmlinclude gfdl_cloud_microphys_run.html !! - subroutine gfdl_cloud_microphys_run( & - levs, im, con_g, con_fvirt, con_rd, con_eps, frland, garea, islmsk, & - gq0, gq0_ntcw, gq0_ntrw, gq0_ntiw, gq0_ntsw, gq0_ntgl, gq0_ntclamt, & - gt0, gu0, gv0, vvl, prsl, phii, del, & - rain0, ice0, snow0, graupel0, prcp0, sr, & - dtp, hydrostatic, phys_hydrostatic, lradar, refl_10cm, & - reset, effr_in, rew, rei, rer, res, reg, & + subroutine gfdl_cloud_microphys_run( & + levs, im, rainmin, con_g, con_fvirt, con_rd, con_eps, frland, garea, islmsk, & + gq0, gq0_ntcw, gq0_ntrw, gq0_ntiw, gq0_ntsw, gq0_ntgl, gq0_ntclamt, & + gt0, gu0, gv0, vvl, prsl, phii, del, & + rain0, ice0, snow0, graupel0, prcp0, sr, & + dtp, hydrostatic, phys_hydrostatic, lradar, refl_10cm, & + reset, effr_in, rew, rei, rer, res, reg, & cplchm, pfi_lsan, pfl_lsan, errmsg, errflg) use machine, only: kind_phys @@ -130,16 +130,16 @@ subroutine gfdl_cloud_microphys_run( & real(kind=kind_phys), parameter :: one = 1.0d0 real(kind=kind_phys), parameter :: con_p001= 0.001d0 real(kind=kind_phys), parameter :: con_day = 86400.d0 - real(kind=kind_phys), parameter :: rainmin = 1.0d-13 + !real(kind=kind_phys), parameter :: rainmin = 1.0d-13 ! *DH ! interface variables integer, intent(in ) :: levs, im - real(kind=kind_phys), intent(in ) :: con_g, con_fvirt, con_rd, con_eps + real(kind=kind_phys), intent(in ) :: con_g, con_fvirt, con_rd, con_eps, rainmin real(kind=kind_phys), intent(in ), dimension(:) :: frland, garea integer, intent(in ), dimension(:) :: islmsk real(kind=kind_phys), intent(inout), dimension(:,:) :: gq0, gq0_ntcw, gq0_ntrw, gq0_ntiw, & - gq0_ntsw, gq0_ntgl, gq0_ntclamt + gq0_ntsw, gq0_ntgl, gq0_ntclamt real(kind=kind_phys), intent(inout), dimension(:,:) :: gt0, gu0, gv0 real(kind=kind_phys), intent(in ), dimension(:,:) :: vvl, prsl, del real(kind=kind_phys), intent(in ), dimension(:,:) :: phii diff --git a/physics/gfdl_cloud_microphys.meta b/physics/gfdl_cloud_microphys.meta index 5d9649e5f..f18754703 100644 --- a/physics/gfdl_cloud_microphys.meta +++ b/physics/gfdl_cloud_microphys.meta @@ -141,6 +141,15 @@ type = integer intent = in optional = F +[rainmin] + standard_name = lwe_thickness_of_minimum_rain_amount + long_name = minimum rain amount + units = m + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [con_g] standard_name = gravitational_acceleration long_name = gravitational acceleration diff --git a/physics/gfdl_sfc_layer.F90 b/physics/gfdl_sfc_layer.F90 index f9fc949a4..a9dc3fe98 100644 --- a/physics/gfdl_sfc_layer.F90 +++ b/physics/gfdl_sfc_layer.F90 @@ -100,7 +100,7 @@ end subroutine gfdl_sfc_layer_finalize !! \htmlinclude gfdl_sfc_layer_run.html !! subroutine gfdl_sfc_layer_run (im, nsoil, km, xlat, xlon, flag_iter, lsm, & - lsm_noah, lsm_noahmp, lsm_ruc, lsm_noah_wrfv4, icoef_sf, cplwav, & + lsm_noah, lsm_noahmp, lsm_ruc, lsm_noah_wrfv4, icoef_sf, cplwav, karman,& cplwav2atm, lcurr_sf, pert_Cd, ntsflg, sfenth, z1, shdmax, ivegsrc, & vegtype, sigmaf, dt, wet, dry, icy, isltyp, rd, grav, ep1, ep2, smois, & psfc, prsl1, q1, t1, u1, v1, wspd, u10, v10, gsw, glw, tsurf_wat, & @@ -157,7 +157,7 @@ subroutine gfdl_sfc_layer_run (im, nsoil, km, xlat, xlon, flag_iter, lsm, & logical :: ch_bound_excursion !GJF: the vonKarman constant should come in through the CCPP and be defined by the host model - real (kind=kind_phys), parameter :: karman = 0.4 + real (kind=kind_phys), intent(in) :: karman real (kind=kind_phys), parameter :: log01=log(0.01), log05=log(0.05), & log07=log(0.07) diff --git a/physics/gfdl_sfc_layer.meta b/physics/gfdl_sfc_layer.meta index e31fba11e..893b54379 100644 --- a/physics/gfdl_sfc_layer.meta +++ b/physics/gfdl_sfc_layer.meta @@ -101,6 +101,14 @@ type = integer intent = in optional = F +[karman] + standard_name = von_karman_constant + long_name = von karman constant + units = none + dimensions = () + type = real + intent = in + optional = F [xlat] standard_name = latitude long_name = latitude diff --git a/physics/gscond.f b/physics/gscond.f index 1606bc93a..8756bc320 100644 --- a/physics/gscond.f +++ b/physics/gscond.f @@ -79,6 +79,7 @@ end subroutine zhaocarr_gscond_finalize !> @{ subroutine zhaocarr_gscond_run (im,km,dt,dtf,prsl,ps,q,clw1 & &, clw2, cwm, t, tp, qp, psp & + &, psat,hvap,grav,hfus,ttp,rd,cp,eps,epsm1,rv & &, tp1, qp1, psp1, u, lprnt, ipr, errmsg, errflg) ! @@ -99,10 +100,6 @@ subroutine zhaocarr_gscond_run (im,km,dt,dtf,prsl,ps,q,clw1 & ! use machine , only : kind_phys use funcphys , only : fpvs - use physcons, psat => con_psat, hvap => con_hvap, grav => con_g - &, hfus => con_hfus, ttp => con_ttp, rd => con_rd - &, cp => con_cp, eps => con_eps, epsm1 => con_epsm1 - &, rv => con_rv ! use namelist_def, only: nsdfi,fhdfi implicit none ! @@ -118,19 +115,17 @@ subroutine zhaocarr_gscond_run (im,km,dt,dtf,prsl,ps,q,clw1 & &, tp1(:,:), qp1(:,:), psp1(:) real(kind=kind_phys), intent(in) :: u(:,:) logical, intent(in) :: lprnt + real(kind=kind_phys), intent(in) :: psat, hvap, grav, hfus & + &, ttp, rd, cp, eps, epsm1, rv ! character(len=*), intent(out) :: errmsg integer, intent(out) :: errflg ! ! Local variables - real (kind=kind_phys) h1 - &, d00, elwv, eliv - &, epsq - &, r, cpr, rcp - parameter (h1=1.e0, d00=0.e0 - &, elwv=hvap, eliv=hvap+hfus - &, epsq=2.e-12, r=rd - &, cpr=cp*r, rcp=h1/cp) + real (kind=kind_phys) h1, d00, elwv, eliv + &, epsq, r, cpr, rcp +! + parameter (h1=1.e0, d00=0.e0, epsq=2.e-12) ! real(kind=kind_phys), parameter :: cons_0=0.0, cons_m15=-15.0 ! @@ -158,9 +153,13 @@ subroutine zhaocarr_gscond_run (im,km,dt,dtf,prsl,ps,q,clw1 & enddo !-----------------prepare constants for later uses----------------- ! + elwv = hvap + eliv = hvap+hfus + r = rd + cpr = cp*r + rcp = h1/cp el2orc = hvap*hvap / (rv*cp) albycp = hvap / cp -! write(0,*)' in gscond im=',im ! rdt = h1/dt us = h1 diff --git a/physics/gscond.meta b/physics/gscond.meta index d9a326c08..202097825 100644 --- a/physics/gscond.meta +++ b/physics/gscond.meta @@ -182,6 +182,96 @@ kind = kind_phys intent = inout optional = F +[psat] + standard_name = saturation_pressure_at_triple_point_of_water + long_name = saturation pressure at triple point of water + units = Pa + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[hvap] + standard_name = latent_heat_of_vaporization_of_water_at_0C + long_name = latent heat of evaporation/sublimation + units = J kg-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[grav] + standard_name = gravitational_acceleration + long_name = gravitational acceleration + units = m s-2 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[hfus] + standard_name = latent_heat_of_fusion_of_water_at_0C + long_name = latent heat of fusion + units = J kg-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[ttp] + standard_name = triple_point_temperature_of_water + long_name = triple point temperature of water + units = K + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[rd] + standard_name = gas_constant_of_dry_air + long_name = ideal gas constant for dry air + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[cp] + standard_name = specific_heat_of_dry_air_at_constant_pressure + long_name = specific heat of dry air at constant pressure + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[eps] + standard_name = ratio_of_dry_air_to_water_vapor_gas_constants + long_name = rd/rv + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[epsm1] + standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one + long_name = (rd/rv) - 1 + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[rv] + standard_name = gas_constant_water_vapor + long_name = ideal gas constant for water vapor + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [tp1] standard_name = air_temperature_on_previous_timestep_in_xyz_dimensioned_restart_array long_name = air temperature at previous timestep diff --git a/physics/m_micro.F90 b/physics/m_micro.F90 index f9b793239..15e30b0a6 100644 --- a/physics/m_micro.F90 +++ b/physics/m_micro.F90 @@ -7,11 +7,26 @@ !> This module contains the CCPP-compliant Morrison-Gettelman microphysics (MG1, MG2 and MG3) scheme. module m_micro + use machine, only: kind_phys + implicit none public :: m_micro_init, m_micro_run, m_micro_finalize private logical :: is_initialized = .False. + real, parameter :: one = 1.0_kind_phys, & + oneb3 = one/3.0_kind_phys, & + zero = 0.0_kind_phys, & + half = 0.5_kind_phys, & + qsmall = 1.0e-14_kind_phys, & + fourb3 = 4.0_kind_phys/3.0_kind_phys, & + RL_cub = 1.0e-15_kind_phys, & + nmin = 1.0_kind_phys + + real(kind=kind_phys) :: grav, pi, rgas, cp, hvap, hfus, ttp, & + tice, eps, epsm1, VIREPS, onebcp, onebg, & + kapa, cpbg, lvbcp, lsbcp + contains !> This subroutine is the MG initialization. @@ -19,7 +34,8 @@ module m_micro !! \htmlinclude m_micro_init.html !! subroutine m_micro_init(imp_physics, imp_physics_mg, fprcp, gravit, rair, rh2o, cpair,& - eps, tmelt, latvap, latice, mg_dcs, mg_qcvar, mg_ts_auto_ice, & + eps_in, epsm1_in, tmelt, latvap, latice, pi_in, tice_in, & + VIREPS_in, mg_dcs, mg_qcvar, mg_ts_auto_ice, & mg_rhmini, microp_uniform, do_cldice, hetfrz_classnuc, & mg_precip_frac_method, mg_berg_eff_factor, sed_supersat, & do_sb_physics, mg_do_hail, mg_do_graupel, mg_nccons, & @@ -37,7 +53,8 @@ subroutine m_micro_init(imp_physics, imp_physics_mg, fprcp, gravit, rair, rh2o, sed_supersat, do_sb_physics, mg_do_hail, & mg_do_graupel, mg_nccons, mg_nicons, mg_ngcons, & mg_do_ice_gmao, mg_do_liq_liu - real(kind=kind_phys), intent(in) :: gravit, rair, rh2o, cpair, eps, tmelt, latvap, latice + real(kind=kind_phys), intent(in) :: gravit, rair, rh2o, cpair, eps_in, epsm1_in, & + tmelt, latvap, latice, pi_in, tice_in, VIREPS_in real(kind=kind_phys), intent(in) :: mg_dcs, mg_qcvar, mg_ts_auto_ice(:), mg_rhmini, & mg_berg_eff_factor, mg_ncnst, mg_ninst, mg_ngnst character(len=16), intent(in) :: mg_precip_frac_method @@ -55,6 +72,25 @@ subroutine m_micro_init(imp_physics, imp_physics_mg, fprcp, gravit, rair, rh2o, return end if + ! Assign constants + grav = gravit + pi = pi_in + rgas = rair + cp = cpair + hvap = latvap + hfus = latice + ttp = tmelt + tice = tice_in + eps = eps_in + epsm1 = epsm1_in + VIREPS = VIREPS_in + onebcp = one/cp + onebg = one/grav + kapa = rgas*onebcp + cpbg = cp/grav + lvbcp = hvap*onebcp + lsbcp = (hvap+hfus)*onebcp + if (fprcp <= 0) then call ini_micro (mg_dcs, mg_qcvar, mg_ts_auto_ice(1)) elseif (fprcp == 1) then @@ -119,24 +155,15 @@ subroutine m_micro_run( im, lm, flipv, dt_i & &, qi_o, t_io, rn_o, sr_o & &, ncpl_io, ncpi_io, fprcp, rnw_io, snw_io& &, qgl_io, ncpr_io, ncps_io, ncgl_io & - &, CLLS_io, KCBL & + &, CLLS_io, KCBL, rainmin & &, CLDREFFL, CLDREFFI, CLDREFFR, CLDREFFS & - &, CLDREFFG, aerfld_i & + &, CLDREFFG, ntrcaer, aerfld_i & &, naai_i, npccn_i, iccn & &, skip_macro & &, alf_fac, qc_min, pdfflag & &, kdt, xlat, xlon, rhc_i, & & errmsg, errflg) - use machine , only: kind_phys - use physcons, grav => con_g, pi => con_pi, & - & rgas => con_rd, cp => con_cp, & - & hvap => con_hvap, hfus => con_hfus, & - & ttp => con_ttp, tice => con_t0c, & - & eps => con_eps, epsm1 => con_epsm1, & - & VIREPS => con_fvirt, & - & latvap => con_hvap, latice => con_hfus - ! use funcphys, only: fpvs !< saturation vapor pressure for water-ice mixed ! use funcphys, only: fpvsl, fpvsi, fpvs !< saturation vapor pressure for water,ice & mixed use aer_cloud, only: AerProps, getINsubset,init_aer, & @@ -146,8 +173,6 @@ subroutine m_micro_run( im, lm, flipv, dt_i & use cldwat2m_micro,only: mmicro_pcond use micro_mg2_0, only: micro_mg_tend2_0 => micro_mg_tend, qcvar2 => qcvar use micro_mg3_0, only: micro_mg_tend3_0 => micro_mg_tend, qcvar3 => qcvar - ! DH* TODO - make this an input argument, no cross-import! - use aerclm_def, only: ntrcaer ! use wv_saturation, only: aqsat @@ -164,16 +189,10 @@ subroutine m_micro_run( im, lm, flipv, dt_i & ! input ! real, parameter :: r_air = 3.47d-3 integer, parameter :: kp = kind_phys - real, parameter :: one=1.0_kp, oneb3=one/3.0_kp, onebcp=one/cp, & - zero=0.0_kp, half=0.5_kp, onebg=one/grav, & - & kapa=rgas*onebcp, cpbg=cp/grav, & - & lvbcp=hvap*onebcp, lsbcp=(hvap+hfus)*onebcp, & - & qsmall=1.0e-14_kp, rainmin = 1.0e-13_kp, & - & fourb3=4.0_kp/3.0_kp, RL_cub=1.0e-15_kp, & - & nmin=1.0_kp - + real(kind=kind_phys), intent(in ) :: rainmin + integer, parameter :: ncolmicro = 1 - integer,intent(in) :: im, lm, kdt, fprcp, pdfflag, iccn + integer,intent(in) :: im, lm, kdt, fprcp, pdfflag, iccn, ntrcaer logical,intent(in) :: flipv, skip_macro real (kind=kind_phys), intent(in):: dt_i, alf_fac, qc_min(:) @@ -397,6 +416,7 @@ subroutine m_micro_run( im, lm, flipv, dt_i & ipr = 1 ! rhr8 = 1.0 + if(flipv) then DO K=1, LM ll = lm-k+1 diff --git a/physics/m_micro.meta b/physics/m_micro.meta index 292bfea3d..8a51a6ec6 100644 --- a/physics/m_micro.meta +++ b/physics/m_micro.meta @@ -67,7 +67,7 @@ kind = kind_phys intent = in optional = F -[eps] +[eps_in] standard_name = ratio_of_dry_air_to_water_vapor_gas_constants long_name = rd/rv units = none @@ -76,6 +76,15 @@ kind = kind_phys intent = in optional = F +[epsm1_in] + standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one + long_name = (rd/rv) - 1 + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [tmelt] standard_name = triple_point_temperature_of_water long_name = triple point temperature of water @@ -103,6 +112,33 @@ kind = kind_phys intent = in optional = F +[pi_in] + standard_name = pi + long_name = ratio of a circle's circumference to its diameter + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[tice_in] + standard_name = temperature_at_zero_celsius + long_name = temperature at 0 degree Celsius + units = K + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[VIREPS_in] + standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one + long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [mg_dcs] standard_name = autoconverion_to_snow_size_threshold long_name = autoconversion size threshold for cloud ice to snow for MG microphysics @@ -318,6 +354,15 @@ type = integer intent = in optional = F +[rainmin] + standard_name = lwe_thickness_of_minimum_rain_amount + long_name = minimum rain amount + units = m + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [flipv] standard_name = flag_flip long_name = vertical flip logical @@ -774,6 +819,14 @@ kind = kind_phys intent = out optional = F +[ntrcaer] + standard_name = number_of_aerosol_tracers_MG + long_name = number of aerosol tracers for Morrison Gettelman MP + units = count + dimensions = () + type = integer + intent = in + optional = F [aerfld_i] standard_name = mass_number_concentration_of_aerosol_from_gocart_climatology long_name = GOCART aerosol climatology number concentration diff --git a/physics/module_MYNNPBL_wrapper.F90 b/physics/module_MYNNPBL_wrapper.F90 index 532fc7b16..4b034f588 100644 --- a/physics/module_MYNNPBL_wrapper.F90 +++ b/physics/module_MYNNPBL_wrapper.F90 @@ -50,6 +50,8 @@ end subroutine mynnedmf_wrapper_finalize SUBROUTINE mynnedmf_wrapper_run( & & im,levs, & & flag_init,flag_restart, & + & cp, g, r_d, r_v, cpv, cliq,Cice,& + & rcp, XLV, XLF, EP_1, EP_2, & & lssav, ldiag3d, qdiag3d, & & lsidea, cplflx, & & delt,dtf,dx,zorl, & @@ -112,19 +114,6 @@ SUBROUTINE mynnedmf_wrapper_run( & use machine , only : kind_phys ! use funcphys, only : fpvs - use physcons, only : cp => con_cp, & - & g => con_g, & - & r_d => con_rd, & - & r_v => con_rv, & - & cpv => con_cvap, & - & cliq => con_cliq, & - & Cice => con_csol, & - & rcp => con_rocp, & - & XLV => con_hvap, & - & XLF => con_hfus, & - & EP_1 => con_fvirt, & - & EP_2 => con_eps - USE module_bl_mynn, only : mynn_bl_driver !------------------------------------------------------------------- @@ -184,13 +173,15 @@ SUBROUTINE mynnedmf_wrapper_run( & ! REAL , PARAMETER :: EP_1 = R_v/R_d-1. ! REAL , PARAMETER :: EP_2 = R_d/R_v ! + + real(kind=kind_phys), intent(in) :: cp, g, r_d, r_v, cpv, & + & cliq, Cice, rcp, XLV, XLF, EP_1, EP_2 - REAL, PARAMETER :: xlvcp=xlv/cp, xlscp=(xlv+xlf)/cp, ev=xlv, rd=r_d, & - &rk=cp/rd, svp11=svp1*1.e3, p608=ep_1, ep_3=1.-ep_2 + real(kind=kind_phys) :: xlvcp, xlscp, ev, rd, & + & rk, svp11, p608, ep_3,tv0, tv1, gtr,g_inv REAL, PARAMETER :: tref=300.0 !< reference temperature (K) REAL, PARAMETER :: TKmin=253.0 !< for total water conversion, Tripoli and Cotton (1981) - REAL, PARAMETER :: tv0=p608*tref, tv1=(1.+p608)*tref, gtr=g/tref, g_inv=1./g REAL, PARAMETER :: zero=0.0d0, one=1.0d0 REAL, PARAMETER :: huge=9.9692099683868690E36 ! NetCDF float FillValue, same as in GFS_typedefs.F90 @@ -365,6 +356,19 @@ SUBROUTINE mynnedmf_wrapper_run( & initflag=0 !print*,"in MYNN, initflag=",initflag endif + + xlvcp=xlv/cp + xlscp=(xlv+xlf)/cp + ev=xlv + rd=r_d + rk=cp/rd + svp11=svp1*1.e3 + p608=ep_1 + ep_3=1.-ep_2 + tv0=p608*tref + tv1=(1.+p608)*tref + gtr=g/tref + g_inv=1./g ! Assign variables for each microphysics scheme if (imp_physics == imp_physics_wsm6) then diff --git a/physics/module_MYNNPBL_wrapper.meta b/physics/module_MYNNPBL_wrapper.meta index d7ccee86f..e88975aff 100644 --- a/physics/module_MYNNPBL_wrapper.meta +++ b/physics/module_MYNNPBL_wrapper.meta @@ -77,6 +77,114 @@ type = logical intent = in optional = F +[cp] + standard_name = specific_heat_of_dry_air_at_constant_pressure + long_name = specific heat of dry air at constant pressure + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[g] + standard_name = gravitational_acceleration + long_name = gravitational acceleration + units = m s-2 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[r_d] + standard_name = gas_constant_of_dry_air + long_name = ideal gas constant for dry air + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[r_v] + standard_name = gas_constant_water_vapor + long_name = ideal gas constant for water vapor + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[cpv] + standard_name = specific_heat_of_water_vapor_at_constant_pressure + long_name = specific heat of water vapor at constant pressure + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[cliq] + standard_name = specific_heat_of_liquid_water_at_constant_pressure + long_name = specific heat of liquid water at constant pressure + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[Cice] + standard_name = specific_heat_of_ice_at_constant_pressure + long_name = specific heat of ice at constant pressure + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[rcp] + standard_name = ratio_of_gas_constant_dry_air_to_specific_heat_of_dry_air_at_constant_pressure + long_name = (rd/cp) + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[XLV] + standard_name = latent_heat_of_vaporization_of_water_at_0C + long_name = latent heat of evaporation/sublimation + units = J kg-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[XLF] + standard_name = latent_heat_of_fusion_of_water_at_0C + long_name = latent heat of fusion + units = J kg-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[EP_1] + standard_name = ratio_of_vapor_to_dry_air_gas_constants_minus_one + long_name = (rv/rd) - 1 (rv = ideal gas constant for water vapor) + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[EP_2] + standard_name = ratio_of_dry_air_to_water_vapor_gas_constants + long_name = rd/rv + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [lssav] standard_name = flag_for_diagnostics long_name = logical flag for storing diagnostics diff --git a/physics/module_SGSCloud_RadPre.F90 b/physics/module_SGSCloud_RadPre.F90 index bea33c2b7..20136ba00 100644 --- a/physics/module_SGSCloud_RadPre.F90 +++ b/physics/module_SGSCloud_RadPre.F90 @@ -42,6 +42,7 @@ end subroutine sgscloud_radpre_finalize subroutine sgscloud_radpre_run( & im,levs, & flag_init,flag_restart, & + con_g, con_pi, eps, epsm1, & do_mynnedmf, & qc, qi, qv, T3D, P3D, & qr, qs, qg, & @@ -59,9 +60,6 @@ subroutine sgscloud_radpre_run( & ! should be moved to inside the mynn: use machine , only : kind_phys - use physcons, only : con_g, con_pi, & - eps => con_eps, & ! Rd/Rv - epsm1 => con_epsm1 ! Rd/Rv-1 use module_radiation_clouds, only : gethml use radcons, only: qmin ! Minimum vlaues for varius calculations use funcphys, only: fpvs ! Function ot compute sat. vapor pressure over liq. @@ -69,7 +67,8 @@ subroutine sgscloud_radpre_run( & implicit none !------------------------------------------------------------------- ! Interface variables - real (kind=kind_phys), parameter :: gfac=1.0e5/con_g + real(kind=kind_phys), intent(in) :: con_g, con_pi, eps, epsm1 + real (kind=kind_phys) :: gfac integer, intent(in) :: im, levs, imfdeepcnv, imfdeepcnv_gf, & & nlay, imp_physics, imp_physics_gfdl logical, intent(in) :: flag_init, flag_restart, do_mynnedmf @@ -114,7 +113,7 @@ subroutine sgscloud_radpre_run( & !write(0,*)"==============================================" !write(0,*)"in SGSCLoud_RadPre" - + gfac=1.0e5/con_g if (flag_init .and. (.not. flag_restart)) then !write (0,*) 'Skip this flag_init = ', flag_init ! return diff --git a/physics/module_SGSCloud_RadPre.meta b/physics/module_SGSCloud_RadPre.meta index 2e5429cb7..e79e6fc61 100644 --- a/physics/module_SGSCloud_RadPre.meta +++ b/physics/module_SGSCloud_RadPre.meta @@ -39,6 +39,42 @@ type = logical intent = in optional = F +[con_g] + standard_name = gravitational_acceleration + long_name = gravitational acceleration + units = m s-2 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[con_pi] + standard_name = pi + long_name = ratio of a circle's circumference to its diameter + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[eps] + standard_name = ratio_of_dry_air_to_water_vapor_gas_constants + long_name = rd/rv + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[epsm1] + standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one + long_name = (rd/rv) - 1 + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [do_mynnedmf] standard_name = flag_for_mellor_yamada_nakanishi_niino_pbl_scheme long_name = flag to activate MYNN-EDMF diff --git a/physics/physcons.F90 b/physics/physcons.F90 index 397fee935..41d37491a 100644 --- a/physics/physcons.F90 +++ b/physics/physcons.F90 @@ -115,13 +115,15 @@ module physcons real(kind=kind_phys),parameter:: con_amch4 =16.043_kind_phys !< molecular wght of ch4 (\f$g/mol\f$) real(kind=kind_phys),parameter:: con_amn2o =44.013_kind_phys !< molecular wght of n2o (\f$g/mol\f$) real(kind=kind_phys),parameter:: con_thgni =-38.15_kind_phys !< temperature the H.G.Nuc. ice starts + real(kind=kind_phys),parameter:: karman =0.4_kind_phys !< Von Karman constant !> minimum ice concentration real(kind=kind_phys),parameter:: cimin =0.15 !< minimum ice concentration !> minimum aerosol concentration real(kind=kind_phys),parameter:: qamin = 1.e-16_kind_phys - +!> minimum rain amount + real(kind=kind_phys),parameter:: rainmin = 1.e-13_kind_phys !> \name Miscellaneous physics related constants (For WSM6; Moorthi - Jul 2014) ! integer, parameter :: max_lon=16000, max_lat=8000, min_lon=192, min_lat=94 ! integer, parameter :: max_lon=5000, max_lat=2500, min_lon=192, min_lat=94 ! current opr diff --git a/physics/precpd.f b/physics/precpd.f index 2279356b3..929d78f9c 100644 --- a/physics/precpd.f +++ b/physics/precpd.f @@ -77,6 +77,7 @@ end subroutine zhaocarr_precpd_init !! \section Zhao-Carr_precip_detailed GFS precpd Scheme Detailed Algorithm !> @{ subroutine zhaocarr_precpd_run (im,km,dt,del,prsl,q,cwm,t,rn & + &, grav, hvap, hfus, ttp, cp, eps, epsm1 & &, sr,rainp,u00k,psautco,prautco,evpco,wminco & &, wk1,lprnt,jpr,errmsg,errflg) @@ -124,14 +125,14 @@ subroutine zhaocarr_precpd_run (im,km,dt,del,prsl,q,cwm,t,rn & ! use machine , only : kind_phys use funcphys , only : fpvs - use physcons, grav => con_g, hvap => con_hvap, hfus => con_hfus - &, ttp => con_ttp, cp => con_cp - &, eps => con_eps, epsm1 => con_epsm1 + implicit none ! include 'constant.h' ! ! Interface variables integer, intent(in) :: im, km, jpr + real (kind=kind_phys), intent(in) :: grav, hvap, hfus, ttp, cp, & + & eps, epsm1 real (kind=kind_phys), intent(in) :: dt real (kind=kind_phys), intent(in) :: del(:,:), prsl(:,:) real (kind=kind_phys), intent(inout) :: q(:,:), t(:,:), & @@ -150,14 +151,13 @@ subroutine zhaocarr_precpd_run (im,km,dt,del,prsl,q,cwm,t,rn & &, elwv, eliv, row &, epsq, eliw &, rcp, rrow - parameter (g=grav, h1=1.e0, h1000=1000.0 - &, d00=0.e0 - &, elwv=hvap, eliv=hvap+hfus, row=1.e3 - &, epsq=2.e-12 - &, eliw=eliv-elwv, rcp=h1/cp, rrow=h1/row) -! - real(kind=kind_phys), parameter :: cons_0=0.0, cons_p01=0.01 - &, cons_20=20.0 + parameter ( h1=1.e0, h1000=1000.0 & + &, d00=0.e0, row=1.e3 & + &, epsq=2.e-12) +! + + real(kind=kind_phys), parameter :: cons_0=0.0, cons_p01=0.01 & + &, cons_20=20.0 & &, cons_m30=-30.0, cons_50=50.0 ! real (kind=kind_phys) rnp(im), psautco_l(im), prautco_l(im) & @@ -206,6 +206,12 @@ subroutine zhaocarr_precpd_run (im,km,dt,del,prsl,q,cwm,t,rn & ! enddo ! enddo ! + g=grav + elwv=hvap + eliv=hvap+hfus + eliw=eliv-elwv + rcp=h1/cp + rrow=h1/row rdt = h1 / dt ! ke = 2.0e-5 ! commented on 09/10/99 -- opr value ! ke = 2.0e-6 diff --git a/physics/precpd.meta b/physics/precpd.meta index 1cfda0d24..d754851c7 100644 --- a/physics/precpd.meta +++ b/physics/precpd.meta @@ -132,6 +132,69 @@ kind = kind_phys intent = out optional = F +[grav] + standard_name = gravitational_acceleration + long_name = gravitational acceleration + units = m s-2 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[hvap] + standard_name = latent_heat_of_vaporization_of_water_at_0C + long_name = latent heat of evaporation/sublimation + units = J kg-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[hfus] + standard_name = latent_heat_of_fusion_of_water_at_0C + long_name = latent heat of fusion + units = J kg-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[ttp] + standard_name = triple_point_temperature_of_water + long_name = triple point temperature of water + units = K + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[cp] + standard_name = specific_heat_of_dry_air_at_constant_pressure + long_name = specific heat of dry air at constant pressure + units = J kg-1 K-1 + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[eps] + standard_name = ratio_of_dry_air_to_water_vapor_gas_constants + long_name = rd/rv + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F +[epsm1] + standard_name = ratio_of_dry_air_to_water_vapor_gas_constants_minus_one + long_name = (rd/rv) - 1 + units = none + dimensions = () + type = real + kind = kind_phys + intent = in + optional = F [sr] standard_name = ratio_of_snowfall_to_rainfall long_name = ratio of snowfall to large-scale rainfall diff --git a/physics/radlw_main.F90 b/physics/radlw_main.F90 index 8fcaecd29..89609c283 100644 --- a/physics/radlw_main.F90 +++ b/physics/radlw_main.F90 @@ -8968,4 +8968,4 @@ end subroutine cldprmc !........................................!$ end module rrtmg_lw !$ -!========================================!$ +!========================================!$ \ No newline at end of file diff --git a/physics/radlw_main.meta b/physics/radlw_main.meta index 8cbf25ab9..ca4b96466 100644 --- a/physics/radlw_main.meta +++ b/physics/radlw_main.meta @@ -402,4 +402,4 @@ dimensions = () type = integer intent = out - optional = F + optional = F \ No newline at end of file diff --git a/physics/shinhongvdif.F90 b/physics/shinhongvdif.F90 index 7c476e0b8..74a47b54d 100644 --- a/physics/shinhongvdif.F90 +++ b/physics/shinhongvdif.F90 @@ -40,7 +40,7 @@ end subroutine shinhongvdif_finalize !! \htmlinclude shinhongvdif_run.html !! !------------------------------------------------------------------------------- - subroutine shinhongvdif_run(im,km,ux,vx,tx,qx,p2d,p2di,pi2d, & + subroutine shinhongvdif_run(im,km,ux,vx,tx,qx,p2d,p2di,pi2d,karman, & utnp,vtnp,ttnp,qtnp,ntrac,ndiff,ntcw,ntiw, & phii,phil,psfcpa, & zorl,stress,hpbl,psim,psih, & @@ -103,7 +103,7 @@ subroutine shinhongvdif_run(im,km,ux,vx,tx,qx,p2d,p2di,pi2d, & real(kind=kind_phys),parameter :: tmin=1.e-2 real(kind=kind_phys),parameter :: gamcrt = 3.,gamcrq = 2.e-3 real(kind=kind_phys),parameter :: xka = 2.4e-5 - real(kind=kind_phys),parameter :: karman = 0.4 + real(kind=kind_phys),intent(in) :: karman real(kind=kind_phys),parameter :: corf=0.000073 real(kind=kind_phys),parameter :: rcl = 1.0 integer,parameter :: imvdif = 1 diff --git a/physics/shinhongvdif.meta b/physics/shinhongvdif.meta index 641e230ae..920ddd7f1 100644 --- a/physics/shinhongvdif.meta +++ b/physics/shinhongvdif.meta @@ -116,6 +116,14 @@ kind = kind_phys intent = in optional = F +[karman] + standard_name = von_karman_constant + long_name = von karman constant + units = none + dimensions = () + type = real + intent = in + optional = F [utnp] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind diff --git a/physics/ysuvdif.F90 b/physics/ysuvdif.F90 index bed2f2a66..6c269d3b8 100644 --- a/physics/ysuvdif.F90 +++ b/physics/ysuvdif.F90 @@ -40,7 +40,7 @@ end subroutine ysuvdif_finalize !! \htmlinclude ysuvdif_run.html !! !------------------------------------------------------------------------------- - subroutine ysuvdif_run(im,km,ux,vx,tx,qx,p2d,p2di,pi2d, & + subroutine ysuvdif_run(im,km,ux,vx,tx,qx,p2d,p2di,pi2d,karman, & utnp,vtnp,ttnp,qtnp, & swh,hlw,xmu,ntrac,ndiff,ntcw,ntiw, & phii,phil,psfcpa, & @@ -71,7 +71,7 @@ subroutine ysuvdif_run(im,km,ux,vx,tx,qx,p2d,p2di,pi2d, & real(kind=kind_phys),parameter :: gamcrt = 3.,gamcrq = 2.e-3 real(kind=kind_phys),parameter :: xka = 2.4e-5 real(kind=kind_phys),parameter :: rcl = 1.0 - real(kind=kind_phys),parameter :: karman = 0.4 + real(kind=kind_phys),intent(in) :: karman integer,parameter :: imvdif = 1 integer,parameter :: ysu_topdown_pblmix = 1 ! diff --git a/physics/ysuvdif.meta b/physics/ysuvdif.meta index e7ab5831d..405b6a1e7 100644 --- a/physics/ysuvdif.meta +++ b/physics/ysuvdif.meta @@ -116,6 +116,14 @@ kind = kind_phys intent = in optional = F +[karman] + standard_name = von_karman_constant + long_name = von karman constant + units = none + dimensions = () + type = real + intent = in + optional = F [utnp] standard_name = process_split_cumulative_tendency_of_x_wind long_name = updated tendency of the x wind