include file: crmsrb.h 4
c     $Header: /fs/cgd/csm/models/CVS.REPOS/atm/ccm_crm_src/crm/Attic/crmsrb.h,v 1.1.2.5 1999/09/07 05:12:17 zender Exp $ -*-fortran-*- 

c     Purpose: Common block crmsrb stores surface radiation budget fields for output

c     Usage: crmsrb.h should be declared after params.h
c     The values of the variables in these common blocks are set with routine radcsw()
c     which is called by radctl() which is called by crm().

c     CCM does not declare nspint in prgrid.h (as it probably should) so redefine it here 
      integer bnd_nbr_SW           ! Number of spectral intervals
      parameter(bnd_nbr_SW=19)     ! Number of spectral intervals
      integer bnd_idx_vsb       ! Index of diagnostic visible band
      parameter(bnd_idx_vsb=8)  ! Index of diagnostic visible band
      integer lvl_idx_TOA       ! Index of interface level for TOA energy (0 or 1)
      parameter(lvl_idx_TOA=0)  ! Index of interface level for TOA energy (0 or 1)
      real wvl_vsb_NIR_bnd      ! Wavelength of the visible NIR boundary
      parameter(wvl_vsb_NIR_bnd=0.7e-6) ! Wavelength of the visible NIR boundary
c     Use 0.64 rather than 0.7 microns to mimic Nimbus 7 visible/NIR partitioning
c      parameter(wvl_vsb_NIR_bnd=0.64e-6) ! Wavelength of the visible NIR boundary

c     Physical constants (from /home/zender/f/parameter.com)
      real gas_cst_universal    ! [J mol-1 K-1] Universal gas constant
      real mmw_O3               ! [kg mol-1] mmw = mean molecular weight
      real prs_STP              ! [Pa] Ref. pres. for index of refraction
      real tpt_STP              ! [K] Ref. temp. for index of refraction
      parameter(
     $     gas_cst_universal=8.31441, ! [J mol-1 K-1] Universal gas constant
     $     mmw_O3=4.7997832e-02, ! [kg mol-1] Mean molecular weight of O3
     $     prs_STP=101325.0,    ! [Pa] Ref. pres. for index of refraction
     $     tpt_STP=273.16)      ! [K] Ref. temp. for index of refraction
c     Derived constants
      real gas_cst_O3           ! (173.2) [J kg-1 K-1] Mean molecular weight of O3
      parameter(
     $     gas_cst_O3=gas_cst_universal/mmw_O3) ! (173.2) [J kg-1 K-1] (a guess, because mmw(O3) is always changing)

c     Diagnostic column abundances
      real pdelm1(plond,plev)   ! [Pa] Layer pressure thickness
      real mpc_H2O(plond)       ! [kg m-2] Mass path column H2O
      real mpc_O3(plond)        ! [kg m-2] Mass path column O3
      real mpc_O3_DU(plond)     ! [DU] Mass path column O3 in Dobson Units
      common / crmmpc /         ! crmmpc is initialized in crm()
     $     pdelm1,              ! [Pa] Layer pressure thickness
     $     mpc_H2O,             ! [kg m-2] Mass path column H2O
     $     mpc_O3,              ! [kg m-2] Mass path column O3
     $     mpc_O3_DU            ! [DU] Mass path column O3 in Dobson Units

c     TOA radiation budget
      real alb_SW_TOA(plond)    ! [frc] SW albedo at TOA
      real alb_NIR_TOA(plond)   ! [frc] NIR albedo at TOA
      real alb_vsb_TOA(plond)   ! [frc] Visible albedo at TOA
      real alb_NIR_SW_TOA(plond) ! [frc] NIR to SW albedo ratio at TOA
      real alb_NIR_vsb_TOA(plond) ! [frc] NIR to visible albedo ratio at TOA
      real flx_SW_dwn_TOA(plond) ! [W m-2] SW flux downwelling at TOA
      real flx_NIR_dwn_TOA(plond) ! [W m-2] NIR flux downwelling at TOA
      real flx_vsb_dwn_TOA(plond) ! [W m-2] Visible flux downwelling at TOA
      real flx_SW_up_TOA(plond) ! [W m-2] SW flux upwelling at TOA
      real flx_NIR_up_TOA(plond) ! [W m-2] NIR flux upwelling at TOA
      real flx_vsb_up_TOA(plond) ! [W m-2] Visible flux upwelling at TOA
      common / crmtoa /         ! crmtoa is initialized in radcsw()
     $     alb_SW_TOA,          ! [frc] SW albedo at TOA
     $     alb_NIR_TOA,         ! [frc] NIR albedo at TOA
     $     alb_vsb_TOA,         ! [frc] Visible albedo at TOA
     $     alb_NIR_SW_TOA,      ! [frc] NIR to SW albedo ratio at TOA
     $     alb_NIR_vsb_TOA,     ! [frc] NIR to visible albedo ratio at TOA
     $     flx_SW_dwn_TOA,      ! [W m-2] SW flux downwelling at TOA
     $     flx_NIR_dwn_TOA,     ! [W m-2] NIR flux downwelling at TOA
     $     flx_vsb_dwn_TOA,     ! [W m-2] Visible flux downwelling at TOA
     $     flx_SW_up_TOA,       ! [W m-2] SW flux upwelling at TOA
     $     flx_NIR_up_TOA,      ! [W m-2] NIR flux upwelling at TOA
     $     flx_vsb_up_TOA       ! [W m-2] Visible flux upwelling at TOA
      
c     Surface radiation budget
      real alb_SW_sfc(plond)    ! [frc] SW albedo at surface
      real alb_NIR_sfc(plond)   ! [frc] NIR albedo at surface
      real alb_vsb_sfc(plond)   ! [frc] Visible albedo at surface
      real dff_drc_SW_sfc(plond) ! [frc] Diffuse/direct SW downwelling flux ratio at surface
      real dff_drc_vsb_sfc(plond) ! [frc] Diffuse/direct visible downwelling flux ratio at surface
      real dff_drc_NIR_sfc(plond) ! [frc] Diffuse/direct NIR downwelling flux ratio at surface
      real flx_SW_dwn_sfc(plond) ! [W m-2] SW flux downwelling at surface
      real flx_NIR_dwn_sfc(plond) ! [W m-2] NIR flux downwelling at surface
      real flx_vsb_dwn_sfc(plond) ! [W m-2] Visible flux downwelling at surface
      real flx_SW_up_sfc(plond) ! [W m-2] SW flux upwelling at surface
      real flx_NIR_up_sfc(plond) ! [W m-2] NIR flux upwelling at surface
      real flx_vsb_up_sfc(plond) ! [W m-2] Visible flux upwelling at surface
      real flx_SW_dwn_drc_sfc(plond) ! [W m-2] SW flux downwelling at surface in direct beam
      real flx_NIR_dwn_drc_sfc(plond) ! [W m-2] NIR flux downwelling at surface in direct beam
      real flx_vsb_dwn_drc_sfc(plond) ! [W m-2] Visible flux downwelling at surface in direct beam
      real flx_SW_dwn_dff_sfc(plond) ! [W m-2] SW flux downwelling at surface in diffuse beam
      real flx_NIR_dwn_dff_sfc(plond) ! [W m-2] NIR flux downwelling at surface in diffuse beam
      real flx_vsb_dwn_dff_sfc(plond) ! [W m-2] Visible flux downwelling at surface in diffuse beam
      common / crmsrb /         ! crmsrb is initialized in radcsw()
     $     alb_SW_sfc,          ! [frc] SW albedo at surface
     $     alb_NIR_sfc,         ! [frc] NIR albedo at surface
     $     alb_vsb_sfc,         ! [frc] Visible albedo at surface
     $     dff_drc_SW_sfc,      ! [frc] Diffuse/direct SW downwelling flux ratio at surface
     $     dff_drc_vsb_sfc,     ! [frc] Diffuse/direct visible downwelling flux ratio at surface
     $     dff_drc_NIR_sfc,     ! [frc] Diffuse/direct NIR downwelling flux ratio at surface
     $     flx_SW_dwn_sfc,      ! [W m-2] SW flux downwelling at surface
     $     flx_NIR_dwn_sfc,     ! [W m-2] NIR flux downwelling at surface
     $     flx_vsb_dwn_sfc,     ! [W m-2] Visible flux downwelling at surface
     $     flx_SW_up_sfc,       ! [W m-2] SW flux upwelling at surface
     $     flx_NIR_up_sfc,      ! [W m-2] NIR flux upwelling at surface
     $     flx_vsb_up_sfc,      ! [W m-2] Visible flux upwelling at surface
     $     flx_SW_dwn_drc_sfc,  ! [W m-2] SW flux downwelling at surface in direct beam
     $     flx_NIR_dwn_drc_sfc, ! [W m-2] NIR flux downwelling at surface in direct beam
     $     flx_vsb_dwn_drc_sfc, ! [W m-2] Visible flux downwelling at surface in direct beam
     $     flx_SW_dwn_dff_sfc,  ! [W m-2] SW flux downwelling at surface in diffuse beam
     $     flx_NIR_dwn_dff_sfc, ! [W m-2] NIR flux downwelling at surface in diffuse beam
     $     flx_vsb_dwn_dff_sfc  ! [W m-2] Visible flux downwelling at surface in diffuse beam

c     Wavelength grid
      real bnd(bnd_nbr_SW)         ! [m] Nominal coordinate
      real wvl(bnd_nbr_SW)         ! [m] Nominal wavelength coordinate
      real wvl_ctr(bnd_nbr_SW)     ! [m] Center of band in wavelength space
      real wvl_min(bnd_nbr_SW)     ! [m] Minimum wavelength in band
      real wvl_max(bnd_nbr_SW)     ! [m] Maximum wavelength in band
      real wvl_dlt(bnd_nbr_SW)     ! [m] Bandwidth
      real wvn(bnd_nbr_SW)         ! [cm-1] Nominal wavenumber coordinate
      real wvn_ctr(bnd_nbr_SW)     ! [cm-1] Center of band in wavenumber space
      real wvn_min(bnd_nbr_SW)     ! [cm-1] Minimum wavenumber in band
      real wvn_max(bnd_nbr_SW)     ! [cm-1] Maximum wavenumber in band
      real wvn_dlt(bnd_nbr_SW)     ! [cm-1] Bandwidth
      common / crmspc /         ! crmspc is initialized in radcsw()
     $     bnd,                 ! [m] Nominal coordinate
     $     wvl,                 ! [m] Nominal wavelength coordinate
     $     wvl_ctr,             ! [m] Center of band in wavelength space
     $     wvl_min,             ! [m] Minimum wavelength in band
     $     wvl_max,             ! [m] Maximum wavelength in band
     $     wvl_dlt,             ! [m] Bandwidth
     $     wvn,                 ! [cm-1] Nominal wavenumber coordinate
     $     wvn_ctr,             ! [cm-1] Center of band in wavenumber space
     $     wvn_min,             ! [cm-1] Minimum wavenumber in band
     $     wvn_max,             ! [cm-1] Maximum wavenumber in band
     $     wvn_dlt              ! [cm-1] Bandwidth

c     Surface and TOA band fluxes
      real flx_bnd_dwn_TOA(plond,bnd_nbr_SW) ! [W m-2] Downwelling flux at TOA
      real flx_bnd_dwn_dff_sfc(plond,bnd_nbr_SW) ! [W m-2] Downwelling diffuse field flux at surface
      real flx_bnd_dwn_drc_sfc(plond,bnd_nbr_SW) ! [W m-2] Downwelling direct beam flux at surface
      real flx_bnd_dwn_sfc(plond,bnd_nbr_SW) ! [W m-2] Downwelling flux at surface
      real flx_bnd_up_TOA(plond,bnd_nbr_SW) ! [W m-2] Upwelling flux at TOA
      real flx_bnd_up_sfc(plond,bnd_nbr_SW) ! [W m-2] Upwelling flux at surface
      common / crmflxspc /      ! crmflxspc is initialized in radcsw()
     $     flx_bnd_dwn_TOA,     ! [W m-2] Downwelling flux at TOA
     $     flx_bnd_dwn_dff_sfc, ! [W m-2] Downwelling diffuse field flux at surface
     $     flx_bnd_dwn_drc_sfc, ! [W m-2] Downwelling direct beam flux at surface
     $     flx_bnd_dwn_sfc,     ! [W m-2] Downwelling flux at surface
     $     flx_bnd_up_TOA,      ! [W m-2] Upwelling flux at TOA
     $     flx_bnd_up_sfc       ! [W m-2] Upwelling flux at surface

c     Vertical profiles of SW broadband fluxes
      real dff_drc_SW(plond,plevp) ! [frc] Diffuse/direct SW downwelling flux ratio
      real flx_SW_dwn(plond,plevp) ! [W m-2] Downwelling SW flux
      real flx_SW_dwn_dff(plond,plevp) ! [W m-2] Downwelling SW flux diffuse field
      real flx_SW_dwn_drc(plond,plevp) ! [W m-2] Downwelling SW flux direct beam
      real flx_SW_up(plond,plevp) ! [W m-2] Upwelling SW flux
      common / crmflxbbvrtSW /  ! crmflxbbvrtSW is initialized in radcsw()
     $     dff_drc_SW,          ! [frc] Diffuse/direct SW downwelling flux ratio
     $     flx_SW_dwn,          ! [W m-2] Downwelling SW flux
     $     flx_SW_dwn_dff,      ! [W m-2] Downwelling SW flux diffuse field
     $     flx_SW_dwn_drc,      ! [W m-2] Downwelling SW flux direct beam
     $     flx_SW_up            ! [W m-2] Upwelling SW flux
      
c     Vertical profiles of LW broadband fluxes
      real flx_LW_dwn(plond,plevp) ! [W m-2] Downwelling LW flux
      real flx_LW_up(plond,plevp) ! [W m-2] Upwelling LW flux
      common / crmflxbbvrtLW /  ! crmflxvrt is initialized in radclw()
     $     flx_LW_dwn,          ! [W m-2] Downwelling LW flux
     $     flx_LW_up            ! [W m-2] Upwelling LW flux

c     Vertical profiles of band fluxes
      real flx_bnd_dwn(plond,plevp,bnd_nbr_SW) ! [W m-2] Downwelling SW flux
      real flx_bnd_dwn_dff(plond,plevp,bnd_nbr_SW) ! [W m-2] Downwelling SW flux diffuse field
      real flx_bnd_dwn_drc(plond,plevp,bnd_nbr_SW) ! [W m-2] Downwelling SW flux direct beam
      real flx_bnd_up(plond,plevp,bnd_nbr_SW) ! [W m-2] Upwelling SW flux
      common / crmflxbndvrtSW / ! crmflxbndvrtSW is initialized in radcsw()
     $     flx_bnd_dwn,          ! [W m-2] Downwelling SW flux
     $     flx_bnd_dwn_dff,      ! [W m-2] Downwelling SW flux diffuse field
     $     flx_bnd_dwn_drc,      ! [W m-2] Downwelling SW flux direct beam
     $     flx_bnd_up            ! [W m-2] Upwelling SW flux
      
c     Spectral column optical depths
      real odxc_CO2(plond,bnd_nbr_SW) ! [frc] CO2 absorption
      real odxc_H2O(plond,bnd_nbr_SW) ! [frc] H2O absorption
      real odxc_O2(plond,bnd_nbr_SW) ! [frc] O2 absorption
      real odxc_O3(plond,bnd_nbr_SW) ! [frc] O3 absorption
      real odxc_Ray(plond,bnd_nbr_SW) ! [frc] Rayleigh scattering
      real odxc_aer(plond,bnd_nbr_SW) ! [frc] Aerosol extinction
      real odxc_ice(plond,bnd_nbr_SW) ! [frc] Ice cloud extinction
      real odxc_lqd(plond,bnd_nbr_SW) ! [frc] Liquid cloud extinction
      real odxc_ttl(plond,bnd_nbr_SW) ! [frc] Optical depth extinction column total
      common / crmodxc /        ! crmodxc is initialized in radcsw()
     $     odxc_CO2,            ! [frc] CO2 absorption
     $     odxc_H2O,            ! [frc] H2O absorption
     $     odxc_O2,             ! [frc] O2 absorption
     $     odxc_O3,             ! [frc] O3 absorption
     $     odxc_Ray,            ! [frc] Rayleigh scattering
     $     odxc_aer,            ! [frc] Aerosol extinction
     $     odxc_ice,            ! [frc] Ice cloud extinction
     $     odxc_lqd,            ! [frc] Liquid cloud extinction
     $     odxc_ttl             ! [frc] Optical depth extinction column total

c     Spectral layer optical depths
      real odxl_CO2(plond,plev,bnd_nbr_SW) ! [frc] CO2 absorption
      real odxl_H2O(plond,plev,bnd_nbr_SW) ! [frc] H2O absorption
      real odxl_O2(plond,plev,bnd_nbr_SW) ! [frc] O2 absorption
      real odxl_O3(plond,plev,bnd_nbr_SW) ! [frc] O3 absorption
      real odxl_Ray(plond,plev,bnd_nbr_SW) ! [frc] Rayleigh scattering
      real odxl_aer(plond,plev,bnd_nbr_SW) ! [frc] Aerosol extinction
      real odxl_ice(plond,plev,bnd_nbr_SW) ! [frc] Ice cloud extinction
      real odxl_lqd(plond,plev,bnd_nbr_SW) ! [frc] Liquid cloud extinction
      real odxl_ttl(plond,plev,bnd_nbr_SW) ! [frc] Optical depth extinction column total
      common / crmodxl /        ! crmodxl is initialized in radcsw()
     $     odxl_CO2,            ! [frc] CO2 absorption
     $     odxl_H2O,            ! [frc] H2O absorption
     $     odxl_O2,             ! [frc] O2 absorption
     $     odxl_O3,             ! [frc] O3 absorption
     $     odxl_Ray,            ! [frc] Rayleigh scattering
     $     odxl_aer,            ! [frc] Aerosol extinction
     $     odxl_ice,            ! [frc] Ice cloud extinction
     $     odxl_lqd,            ! [frc] Liquid cloud extinction
     $     odxl_ttl             ! [frc] Optical depth extinction column total