def _compute_heating_rates(self):
(ncol, nlay, icld, iaer, permuteseed, irng,<EOL>play, plev, tlay, tlev, tsfc,<EOL>h2ovmr, o3vmr, co2vmr, ch4vmr, n2ovmr, o2vmr,<EOL>aldif, aldir, asdif, asdir, coszen, adjes, dyofyr, scon, isolvar,<EOL>indsolvar, bndsolvar, solcycfrac,<EOL>inflgsw, iceflgsw, liqflgsw,<EOL>cldfrac, ciwp, clwp, reic, relq, tauc, ssac, asmc, fsfc,<EOL>tauaer, ssaaer, asmaer, ecaer,) = self._prepare_sw_arguments()<EOL>if icld == <NUM_LIT:0>:  <EOL><INDENT>cldfmcl = np.zeros((ngptsw,ncol,nlay))<EOL>ciwpmcl = np.zeros((ngptsw,ncol,nlay))<EOL>clwpmcl = np.zeros((ngptsw,ncol,nlay))<EOL>reicmcl = np.zeros((ncol,nlay))<EOL>relqmcl = np.zeros((ncol,nlay))<EOL>taucmcl = np.zeros((ngptsw,ncol,nlay))<EOL>ssacmcl = np.zeros((ngptsw,ncol,nlay))<EOL>asmcmcl = np.zeros((ngptsw,ncol,nlay))<EOL>fsfcmcl = np.zeros((ngptsw,ncol,nlay))<EOL><DEDENT>else:<EOL><INDENT>(cldfmcl, ciwpmcl, clwpmcl, reicmcl, relqmcl, taucmcl,<EOL>ssacmcl, asmcmcl, fsfcmcl) = _rrtmg_sw.climlab_mcica_subcol_sw(<EOL>ncol, nlay, icld, permuteseed, irng, play,<EOL>cldfrac, ciwp, clwp, reic, relq, tauc, ssac, asmc, fsfc)<EOL><DEDENT>(swuflx, swdflx, swhr, swuflxc, swdflxc, swhrc) =_rrtmg_sw.climlab_rrtmg_sw(ncol, nlay, icld, iaer,<EOL>play, plev, tlay, tlev, tsfc,<EOL>h2ovmr, o3vmr, co2vmr, ch4vmr, n2ovmr, o2vmr,<EOL>asdir, asdif, aldir, aldif,<EOL>coszen, adjes, dyofyr, scon, isolvar,<EOL>inflgsw, iceflgsw, liqflgsw, cldfmcl,<EOL>taucmcl, ssacmcl, asmcmcl, fsfcmcl,<EOL>ciwpmcl, clwpmcl, reicmcl, relqmcl,<EOL>tauaer, ssaaer, asmaer, ecaer,<EOL>bndsolvar, indsolvar, solcycfrac)<EOL>self.SW_flux_up = _rrtm_to_climlab(swuflx) + <NUM_LIT:0.>*self.SW_flux_up<EOL>self.SW_flux_down = _rrtm_to_climlab(swdflx) + <NUM_LIT:0.>*self.SW_flux_down<EOL>self.SW_flux_up_clr = _rrtm_to_climlab(swuflxc) + <NUM_LIT:0.>*self.SW_flux_up_clr<EOL>self.SW_flux_down_clr = _rrtm_to_climlab(swdflxc) + <NUM_LIT:0.>*self.SW_flux_down_clr<EOL>self._compute_SW_flux_diagnostics()<EOL>SWheating_Wm2 = np.array(-np.diff(self.SW_flux_net, axis=-<NUM_LIT:1>)) + <NUM_LIT:0.>*self.Tatm<EOL>SWheating_clr_Wm2 = np.array(-np.diff(self.SW_flux_net_clr, axis=-<NUM_LIT:1>)) + <NUM_LIT:0.>*self.Tatm<EOL>self.heating_rate['<STR_LIT>'] = np.array(self.SW_flux_net[..., -<NUM_LIT:1>, np.newaxis]) + <NUM_LIT:0.>*self.Ts<EOL>self.heating_rate['<STR_LIT>'] = SWheating_Wm2<EOL>Catm = self.Tatm.domain.heat_capacity<EOL>self.TdotSW = SWheating_Wm2 / Catm * const.seconds_per_day<EOL>self.TdotSW_clr = SWheating_clr_Wm2 / Catm * const.seconds_per_day<EOL>
Prepare arguments and call the RRTGM_SW driver to calculate
        radiative fluxes and heating rates