Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update thompson mp 20210213 (#567) for gsl/develop #80

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
d8f4ffb
update Thompson more similar to WRF-v4.3
gthompsnWRF Feb 13, 2021
68113c9
simplify initialization a bit and add convert_dry_rho flag
gthompsnWRF Feb 13, 2021
b204497
fix bug to include rho(air) in nwfa
gthompsnWRF Feb 17, 2021
cae708d
fix for one more consistency check of ice number
gthompsnWRF Feb 24, 2021
f6d5fc1
small compile-time bug fixes
gthompsnWRF Feb 25, 2021
a13ef16
adopt moist air density in place of dry air density
gthompsnWRF Feb 26, 2021
e4cceef
Merge branch 'update_thompsonMP_20210213' of https://github.com/gthom…
climbfuji Feb 26, 2021
c6f1cab
Fix bug due to merge in physics/mp_thompson.F90
climbfuji Mar 1, 2021
2a2d750
finalze the correct min,max aerosol numbers with regard to air density
gthompsnWRF Mar 1, 2021
ca5ea32
Merge branch 'update_thompsonMP_20210213' of https://github.com/gthom…
climbfuji Mar 1, 2021
3f2c4e5
Make convert_dry_rho an input argument, fix a bug in the non-aerosol-…
climbfuji Mar 4, 2021
15f1aa7
More bugfixes for Thompson MP: set is_aerosol_aware in mp_thompson_in…
climbfuji Mar 5, 2021
4d8f7f4
Bugfix of my own bugfix in physics/module_mp_thompson.F90: always ini…
climbfuji Mar 6, 2021
f573390
physics/radlw_main.F90: apply local bounds for cloud effective radii …
climbfuji Mar 12, 2021
c579871
Bugfix for uninitialized variable in physics/module_bl_mynn.F90
climbfuji Mar 12, 2021
b23f06a
Bugfix in physics/module_sf_noahmplsm.f90 for uninitialized variable …
climbfuji Mar 15, 2021
b67acad
Bugfixes in UGWP v1 for uninitialized variable azmeti(jk-1)
climbfuji Mar 15, 2021
10f532c
Bugfix in physics/cires_ugwpv1_module.F90
climbfuji Mar 15, 2021
62df7ba
Adjust two tuning parameters for RUC LSM in physics/module_sf_ruclsm.…
climbfuji Mar 15, 2021
bbec192
Optimize initializing intent(out) variables in physics/module_sf_noah…
climbfuji Mar 15, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions physics/GFS_rrtmg_pre.F90
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,13 @@ subroutine GFS_rrtmg_pre_run (im, levs, lm, lmk, lmp, n_var_lndp, &
use surface_perturbation, only: cdfnor

! For Thompson MP
use module_mp_thompson, only: calc_effectRad, Nt_c
use module_mp_thompson_make_number_concentrations, only: &
make_IceNumber, &
make_DropletNumber, &
use module_mp_thompson, only: calc_effectRad, Nt_c, &
re_qc_min, re_qc_max, &
re_qi_min, re_qi_max, &
re_qs_min, re_qs_max
use module_mp_thompson_make_number_concentrations, only: &
make_IceNumber, &
make_DropletNumber, &
make_RainNumber

implicit none
Expand Down Expand Up @@ -779,6 +782,11 @@ subroutine GFS_rrtmg_pre_run (im, levs, lm, lmk, lmp, n_var_lndp, &
call calc_effectRad (tlyr(i,:), plyr(i,:)*100., qv_mp(i,:), qc_mp(i,:), &
nc_mp(i,:), qi_mp(i,:), ni_mp(i,:), qs_mp(i,:), &
re_cloud(i,:), re_ice(i,:), re_snow(i,:), 1, lm )
do k=1,lm
re_cloud(i,k) = MAX(re_qc_min, MIN(re_cloud(i,k), re_qc_max))
re_ice(i,k) = MAX(re_qi_min, MIN(re_ice(i,k), re_qi_max))
re_snow(i,k) = MAX(re_qs_min, MIN(re_snow(i,k), re_qs_max))
end do
end do
! Scale Thompson's effective radii from meter to micron
do k=1,lm
Expand Down
11 changes: 9 additions & 2 deletions physics/GFS_rrtmgp_thompsonmp_pre.F90
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ module GFS_rrtmgp_thompsonmp_pre
use rrtmgp_aux, only: &
check_error_msg
use module_mp_thompson, only: &
calc_effectRad, &
Nt_c
calc_effectRad, Nt_c, &
re_qc_min, re_qc_max, &
re_qi_min, re_qi_max, &
re_qs_min, re_qs_max
use module_mp_thompson_make_number_concentrations, only: &
make_IceNumber, &
make_DropletNumber, &
Expand Down Expand Up @@ -179,6 +181,11 @@ subroutine GFS_rrtmgp_thompsonmp_pre_run(nCol, nLev, nTracers, ncnd, doSWrad, do
call calc_effectRad (t_lay(iCol,:), p_lay(iCol,:), qv_mp(iCol,:), qc_mp(iCol,:), &
nc_mp(iCol,:), qi_mp(iCol,:), ni_mp(iCol,:), qs_mp(iCol,:), &
re_cloud(iCol,:), re_ice(iCol,:), re_snow(iCol,:), 1, nLev )
do iLay = 1, nLev
re_cloud(iCol,iLay) = MAX(re_qc_min, MIN(re_cloud(iCol,iLay), re_qc_max))
re_ice(iCol,iLay) = MAX(re_qi_min, MIN(re_ice(iCol,iLay), re_qi_max))
re_snow(iCol,iLay) = MAX(re_qs_min, MIN(re_snow(iCol,iLay), re_qs_max))
end do
enddo

! Scale Thompson's effective radii from meter to micron
Expand Down
25 changes: 14 additions & 11 deletions physics/cires_ugwpv1_module.F90
Original file line number Diff line number Diff line change
Expand Up @@ -191,16 +191,19 @@ subroutine cires_ugwpv1_init (me, master, nlunit, logunit, jdat_gfs, con_pi, &
integer :: k
integer :: ddd_ugwp, curday_ugwp
! integer :: version


! Initialize CCPP error handling variables
errmsg = ''
errflg = 0

!
if (me == master) print *, trim (fn_nml), ' GW-namelist file '
inquire (file =trim (fn_nml) , exist = exists)
!
if (.not. exists) then
if (me == master) &
write (6, *) 'separate ugwp :: namelist file: ', trim (fn_nml), ' does not exist'
write(errmsg,'(3a)') 'cires_ugwpv1_init: namelist file: ', trim (fn_nml), ' does not exist'
errflg = 1
return
else
open (unit = nlunit, file = trim(fn_nml), action = 'read', status = 'old', iostat = ios)
endif
Expand All @@ -209,11 +212,6 @@ subroutine cires_ugwpv1_init (me, master, nlunit, logunit, jdat_gfs, con_pi, &
close (nlunit)
!

! Initialize CCPP error handling variables
errmsg = ''
errflg = 0


strsolver= knob_ugwp_orosolv

curday_ugwp = jdat_gfs(1)*10000 + jdat_gfs(2)*100 +jdat_gfs(3)
Expand Down Expand Up @@ -248,7 +246,7 @@ subroutine cires_ugwpv1_init (me, master, nlunit, logunit, jdat_gfs, con_pi, &
! allocate(fcor(latr), fcor2(latr) )
!
allocate( kvg(levs+1), ktg(levs+1) )
allocate( krad(levs+1), kion(levs+1) )
allocate( krad(levs+1), kion(levs+1) )
allocate( zkm(levs), pmb(levs) )

!
Expand All @@ -263,7 +261,12 @@ subroutine cires_ugwpv1_init (me, master, nlunit, logunit, jdat_gfs, con_pi, &
!
! find ilaunch
!

if (knob_ugwp_palaunch > 900.e2) then
write(errmsg,'(a,e16.7)') 'cires_ugwpv1_init: unrealistic value of knob_ugwp_palaunch', knob_ugwp_palaunch
errflg = 1
return
endif

do k=levs, 1, -1
if (pmb(k) .gt. knob_ugwp_palaunch ) exit
enddo
Expand Down
19 changes: 9 additions & 10 deletions physics/cires_ugwpv1_solv2.F90
Original file line number Diff line number Diff line change
Expand Up @@ -267,15 +267,14 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, &

!=====ksrc

aum(km2:levs) = um(jl,km2:levs)
avm(km2:levs) = vm(jl,km2:levs)
atm(km2:levs) = tm(jl,km2:levs)
aqm(km2:levs) = qm(jl,km2:levs)
azmet(km2:levs) = zmet(jl,km2:levs)
aprsi(km2:levs+1) = prsi(jl,km2:levs+1)
azmeti(km2:levs+1) = zmeti(jl,km2:levs+1)
aum(1:levs) = um(jl,1:levs)
avm(1:levs) = vm(jl,1:levs)
atm(1:levs) = tm(jl,1:levs)
aqm(1:levs) = qm(jl,1:levs)
azmet(1:levs) = zmet(jl,1:levs)
aprsi(1:levs+1) = prsi(jl,1:levs+1)
azmeti(1:levs+1) = zmeti(jl,1:levs+1)


rho_src = aprsl(ksrc)*rdi/atm(ksrc)
taub_ch = max(tau_ngw(jl), tau_min)
taub_src = taub_ch
Expand All @@ -288,8 +287,8 @@ subroutine cires_ugwpv1_ngw_solv2(mpi_id, master, im, levs, kdt, dtp, &
!
do jk = km2, levs
dz_meti(jk) = azmeti(jk+1)-azmeti(jk)
dz_met(jk) = azmet(jk)-azmeti(jk-1)
enddo
dz_met(jk) = azmet(jk)-azmeti(jk-1)
enddo
! ---------------------------------------------
! interface mean flow parameters launch -> levs+1
! ---------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions physics/module_bl_mynn.F90
Original file line number Diff line number Diff line change
Expand Up @@ -2947,6 +2947,7 @@ SUBROUTINE mynn_tendencies(kts,kte, &
khdz(k) = rhoz(k)*dfh(k)
kmdz(k) = rhoz(k)*dfm(k)
ENDDO
rhoz(kte+1)=rhoz(kte)
khdz(kte+1)=rhoz(kte+1)*dfh(kte)
kmdz(kte+1)=rhoz(kte+1)*dfm(kte)

Expand Down
Loading