Changeset 4489 for LMDZ6/trunk/libf/phylmd/ecrad/radiation_interface.F90
- Timestamp:
- Mar 31, 2023, 8:42:57 PM (17 months ago)
- Location:
- LMDZ6/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk
- Property svn:mergeinfo changed
/LMDZ6/branches/LMDZ_ECRad (added) merged: 4175,4177-4183,4188,4192,4200-4203,4355,4366,4387-4388,4390,4444,4482,4486,4488
- Property svn:mergeinfo changed
-
LMDZ6/trunk/libf/phylmd/ecrad/radiation_interface.F90
r3908 r4489 40 40 use yomhook, only : lhook, dr_hook 41 41 use radiation_config, only : config_type, ISolverMcICA, & 42 & IGasModelMonochromatic, IGasModelIFSRRTMG 42 & IGasModelMonochromatic, IGasModelIFSRRTMG, IGasModelECCKD 43 use radiation_spectral_definition, only & 44 & : SolarReferenceTemperature, TerrestrialReferenceTemperature 43 45 44 46 ! Currently there are two gas absorption models: RRTMG (default) … … 48 50 & setup_cloud_optics_mono => setup_cloud_optics, & 49 51 & setup_aerosol_optics_mono => setup_aerosol_optics 50 use radiation_ifs_rrtm, only : setup_gas_optics 52 use radiation_ifs_rrtm, only : setup_gas_optics_rrtmg => setup_gas_optics 53 use radiation_ecckd_interface,only : setup_gas_optics_ecckd => setup_gas_optics 51 54 use radiation_cloud_optics, only : setup_cloud_optics 55 use radiation_general_cloud_optics, only : setup_general_cloud_optics 52 56 use radiation_aerosol_optics, only : setup_aerosol_optics 53 57 … … 66 70 call setup_gas_optics_mono(config, trim(config%directory_name)) 67 71 else if (config%i_gas_model == IGasModelIFSRRTMG) then 68 call setup_gas_optics(config, trim(config%directory_name)) 72 call setup_gas_optics_rrtmg(config, trim(config%directory_name)) 73 else if (config%i_gas_model == IGasModelECCKD) then 74 call setup_gas_optics_ecckd(config) 69 75 end if 70 76 … … 100 106 ! Consolidate the albedo/emissivity intervals with the shortwave 101 107 ! and longwave spectral bands 102 call config%consolidate_intervals(.true., & 103 & config%do_nearest_spectral_sw_albedo, & 104 & config%sw_albedo_wavelength_bound, config%i_sw_albedo_index, & 105 & config%wavenumber1_sw, config%wavenumber2_sw, & 106 & config%i_albedo_from_band_sw, config%sw_albedo_weights) 107 call config%consolidate_intervals(.false., & 108 & config%do_nearest_spectral_lw_emiss, & 109 & config%lw_emiss_wavelength_bound, config%i_lw_emiss_index, & 110 & config%wavenumber1_lw, config%wavenumber2_lw, & 111 & config%i_emiss_from_band_lw, config%lw_emiss_weights) 108 if (config%do_sw) then 109 call config%consolidate_sw_albedo_intervals 110 end if 111 if (config%do_lw) then 112 call config%consolidate_lw_emiss_intervals 113 end if 112 114 113 115 if (config%do_clouds) then 114 116 if (config%i_gas_model == IGasModelMonochromatic) then 115 117 ! call setup_cloud_optics_mono(config) 118 elseif (config%use_general_cloud_optics) then 119 call setup_general_cloud_optics(config) 116 120 else 117 121 call setup_cloud_optics(config) … … 147 151 148 152 use radiation_config 149 use radiation_gas, only : gas_type 150 use radiation_monochromatic, only : set_gas_units_mono => set_gas_units 151 use radiation_ifs_rrtm, only : set_gas_units_ifs => set_gas_units 153 use radiation_gas, only : gas_type 154 use radiation_monochromatic, only : set_gas_units_mono => set_gas_units 155 use radiation_ifs_rrtm, only : set_gas_units_ifs => set_gas_units 156 use radiation_ecckd_interface, only : set_gas_units_ecckd => set_gas_units 152 157 153 158 type(config_type), intent(in) :: config … … 156 161 if (config%i_gas_model == IGasModelMonochromatic) then 157 162 call set_gas_units_mono(gas) 163 elseif (config%i_gas_model == IGasModelECCKD) then 164 call set_gas_units_ecckd(gas) 158 165 else 159 166 call set_gas_units_ifs(gas) … … 207 214 & cloud_optics_mono => cloud_optics, & 208 215 & add_aerosol_optics_mono => add_aerosol_optics 209 use radiation_ifs_rrtm, only : gas_optics 216 use radiation_ifs_rrtm, only : gas_optics_rrtmg => gas_optics 217 use radiation_ecckd_interface,only : gas_optics_ecckd => gas_optics 210 218 use radiation_cloud_optics, only : cloud_optics 219 use radiation_general_cloud_optics, only : general_cloud_optics 211 220 use radiation_aerosol_optics, only : add_aerosol_optics 212 221 … … 309 318 & od_lw, od_sw, ssa_sw, & 310 319 & planck_hl, lw_emission, incoming_sw) 320 else if (config%i_gas_model == IGasModelIFSRRTMG) then 321 call gas_optics_rrtmg(ncol,nlev,istartcol,iendcol, config, & 322 & single_level, thermodynamics, gas, & 323 & od_lw, od_sw, ssa_sw, lw_albedo=lw_albedo, & 324 & planck_hl=planck_hl, lw_emission=lw_emission, & 325 & incoming_sw=incoming_sw) 311 326 else 312 call gas_optics (ncol,nlev,istartcol,iendcol, config, &327 call gas_optics_ecckd(ncol,nlev,istartcol,iendcol, config, & 313 328 & single_level, thermodynamics, gas, & 314 329 & od_lw, od_sw, ssa_sw, lw_albedo=lw_albedo, & … … 330 345 call cloud_optics_mono(nlev, istartcol, iendcol, & 331 346 & config, thermodynamics, cloud, & 347 & od_lw_cloud, ssa_lw_cloud, g_lw_cloud, & 348 & od_sw_cloud, ssa_sw_cloud, g_sw_cloud) 349 elseif (config%use_general_cloud_optics) then 350 call general_cloud_optics(nlev, istartcol, iendcol, & 351 & config, thermodynamics, cloud, & 332 352 & od_lw_cloud, ssa_lw_cloud, g_lw_cloud, & 333 353 & od_sw_cloud, ssa_sw_cloud, g_sw_cloud) … … 351 371 end if 352 372 else 353 g_sw = 0.0_jprb373 g_sw(:,:,istartcol:iendcol) = 0.0_jprb 354 374 if (config%do_lw_aerosol_scattering) then 355 ssa_lw = 0.0_jprb356 g_lw = 0.0_jprb375 ssa_lw(:,:,istartcol:iendcol) = 0.0_jprb 376 g_lw(:,:,istartcol:iendcol) = 0.0_jprb 357 377 end if 358 378 end if
Note: See TracChangeset
for help on using the changeset viewer.