@@ -353,6 +353,17 @@ end subroutine radiation_readnl
353353! ================================================================================================
354354
355355subroutine 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+
381412end subroutine radiation_register
382413
383414! ================================================================================================
@@ -411,16 +442,13 @@ end function radiation_do
411442! ================================================================================================
412443
413444subroutine 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