Skip to content

Commit 248d9a6

Browse files
author
Courtney Peverley
committed
use updated atmospheric physics; update interfaces
1 parent 74d31a7 commit 248d9a6

3 files changed

Lines changed: 37 additions & 27 deletions

File tree

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
[submodule "atmos_phys"]
3030
path = src/atmos_phys
3131
url = https://github.com/peverwhee/atmospheric_physics
32-
fxtag = 720978729c246b087085a8e26f6fb33487838869
32+
fxtag = 884cc263074bf38b10d2240052c7ace7655a1c48
3333
fxrequired = AlwaysRequired
3434
fxDONOTUSEurl = https://github.com/ESCOMP/atmospheric_physics
3535

src/physics/rrtmgp/radiation.F90

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,17 @@ end subroutine radiation_readnl
353353
!================================================================================================
354354

355355
subroutine radiation_register
356+
use rrtmgp_pre, only: rrtmgp_pre_register
357+
use rrtmgp_lw_gas_optics, only: rrtmgp_lw_gas_optics_register
358+
use rrtmgp_sw_gas_optics, only: rrtmgp_sw_gas_optics_register
359+
use rrtmgp_inputs_setup, only: rrtmgp_inputs_setup_register
360+
! names of gases that are available in the model
361+
! -- needed for the kdist initialization routines
362+
type(ty_gas_concs_ccpp) :: available_gases
363+
character(len=512) :: errmsg
364+
integer :: errflg
365+
character(len=*), parameter :: sub = 'radiation_register'
366+
356367

357368
! Register radiation fields in the physics buffer
358369

@@ -378,6 +389,26 @@ subroutine radiation_register
378389
! Register fields for offline radiation driver.
379390
call rad_data_register()
380391

392+
! Initialize available_gases object
393+
call rrtmgp_pre_register(nradgas, available_gases, gaslist, gaslist_lc, errmsg, errflg)
394+
if (errflg /= 0) then
395+
call endrun(sub//': '//errmsg)
396+
end if
397+
398+
! Read RRTMGP coefficients files and initialize kdist objects.
399+
call rrtmgp_lw_gas_optics_register(coefs_lw_file, available_gases, kdist_lw, errmsg, errflg)
400+
if (errflg /= 0) then
401+
call endrun(sub//': lw '//errmsg)
402+
end if
403+
call rrtmgp_sw_gas_optics_register(coefs_sw_file, available_gases, kdist_sw, errmsg, errflg)
404+
if (errflg /= 0) then
405+
call endrun(sub//': sw '//errmsg)
406+
end if
407+
408+
call rrtmgp_inputs_setup_register(kdist_sw, kdist_lw, nswbands, nlwbands, nswgpts, nlwgpts, &
409+
sw_low_bounds, sw_high_bounds, idx_sw_diag, idx_nir_diag, idx_uv_diag, idx_sw_cloudsim, &
410+
idx_lw_diag, idx_lw_cloudsim, band2gpt_sw, changeseed, errmsg, errflg)
411+
381412
end subroutine radiation_register
382413

383414
!================================================================================================
@@ -411,16 +442,13 @@ end function radiation_do
411442
!================================================================================================
412443

413444
subroutine radiation_init(pbuf2d)
414-
use rrtmgp_pre, only: rrtmgp_pre_init
415445
use rrtmgp_inputs_setup, only: rrtmgp_inputs_setup_init
416446
use rrtmgp_inputs_cam, only: rrtmgp_inputs_cam_init
417447
use rrtmgp_cloud_optics_setup, only: rrtmgp_cloud_optics_setup_init
418448
use rrtmgp_sw_solar_var_setup, only: rrtmgp_sw_solar_var_setup_init
419449
use solar_irrad_data, only: do_spctrl_scaling, has_spectrum
420450
use cloud_rad_props, only: cloud_rad_props_init
421451
use rad_constituents, only: iceopticsfile, liqopticsfile
422-
use rrtmgp_lw_gas_optics, only: rrtmgp_lw_gas_optics_init
423-
use rrtmgp_sw_gas_optics, only: rrtmgp_sw_gas_optics_init
424452
use radheat, only: p_top_for_equil_rad
425453

426454
! Initialize the radiation and cloud optics.
@@ -454,32 +482,14 @@ subroutine radiation_init(pbuf2d)
454482
character(len=*), parameter :: sub = 'radiation_init'
455483
!-----------------------------------------------------------------------
456484

457-
! Initialize available_gases object
458-
call rrtmgp_pre_init(nradgas, available_gases, gaslist, gaslist_lc, errmsg, errflg)
459-
if (errflg /= 0) then
460-
call endrun(sub//': '//errmsg)
461-
end if
462-
463-
! Read RRTMGP coefficients files and initialize kdist objects.
464-
call rrtmgp_lw_gas_optics_init(coefs_lw_file, available_gases, kdist_lw, errmsg, errflg)
465-
if (errflg /= 0) then
466-
call endrun(sub//': lw '//errmsg)
467-
end if
468-
call rrtmgp_sw_gas_optics_init(coefs_sw_file, available_gases, kdist_sw, errmsg, errflg)
469-
if (errflg /= 0) then
470-
call endrun(sub//': sw '//errmsg)
471-
end if
472-
473485
dtime = get_step_size()
474486
dtime_r8 = real(dtime, r8)
475487

476488
! Set up inputs to RRTMGP
477-
call rrtmgp_inputs_setup_init(nswbands, nlwbands, pref_edge, pver, pverp, kdist_sw, kdist_lw, qrl_unused, &
478-
is_first_step(), use_rad_dt_cosz, dtime_r8, get_nstep(), iradsw, dt_avg, irad_always, &
479-
is_first_restart_step(), p_top_for_equil_rad, nradgas, gasnamelength, get_curr_calday(), &
480-
ktopcam, ktoprad, nlaycam, sw_low_bounds, sw_high_bounds, idx_sw_diag, idx_nir_diag, &
481-
idx_uv_diag, idx_sw_cloudsim, idx_lw_diag, idx_lw_cloudsim, nswgpts, nlwgpts, changeseed, &
482-
nlay, nlayp, nextsw_cday, band2gpt_sw, irad_always_modified, errmsg, errflg)
489+
call rrtmgp_inputs_setup_init(pref_edge, pver, pverp, qrl_unused, is_first_step(), use_rad_dt_cosz, dtime_r8, &
490+
get_nstep(), iradsw, dt_avg, irad_always, is_first_restart_step(), p_top_for_equil_rad, &
491+
nradgas, gasnamelength, get_curr_calday(), ktopcam, ktoprad, nlaycam, nlay, nlayp, &
492+
nextsw_cday, irad_always_modified, errmsg, errflg)
483493
if (errflg /= 0) then
484494
call endrun(sub//': '//errmsg)
485495
end if

0 commit comments

Comments
 (0)