c     $Header: /fs/cgd/csm/models/CVS.REPOS/atm/ccm_crm_src/crm/Attic/netcdf.F,v 1.1.2.7 1999/09/07 19:01:34 zender Exp $

c     Purpose: Provide netCDF output for CCM Column Radiation Model (CRM)

c     This routine assumes all floating point input variables are real*8,
c     i.e., use -r8 -i4 compiler switch on Suns. 
c     The NCPREC token defined in misc.h specifies the precision of the output netCDF dataset

#include <misc.h>
#ifndef NCPREC
Error, NCPREC must be either NF_FLOAT or NF_DOUBLE, recheck misc.h
#endif /* not NCPREC */
#include <params.h>

      subroutine netcdf( 1,3
     $     clat,
     $     cld,
     $     clon,
     $     clwp,
     $     coszrs,
     $     effcld,
     $     fice,
c     
     $     flns,
     $     flnsc,
     $     flnt,
     $     flntc,
     $     flwds,
c     
     $     fsnirt,                   ! [W m-2] Near-IR flux absorbed at TOA
     $     fsnirtsq,                 ! [W m-2] Near-IR flux absorbed at TOA >= 0.7 microns
     $     fsnrtc,                   ! [W m-2] Clear sky near-IR flux absorbed at TOA
c
     $     fsns,
     $     fsnsc,
     $     fsnt,
     $     fsntc,
     $     loctim,
c     
     $     lwup,
     $     pintm1,
     $     pmidm1,
     $     ps,
     $     o3mmr,
     $     o3vmr,
c     
     $     oro,
     $     qm1,
     $     qrl,
     $     qrs,
     $     rei,
c     
     $     rel,
     $     snowh,
     $     solin,
     $     srfrad,
     $     tg,
c     
     $     tm1,
     $     ts)

      implicit none
c     Parameters
#include <prgrid.h>
c     Commons
#include <netcdf.inc>
c     Input arguments

c     Sun-Earth Geometry
      real clat                 ! Current latitude (radians)
      real clon                 ! Centered longitude (radians)
      real coszrs               ! cosine solar zenith angle
      real loctim               ! local time of solar computation
      real oro                  ! Land/ocean/sea ice flag

c     Column thermodynamic profile
      real cld(plevp)           ! fractional cloud cover
      real clwp(plev)           ! cloud liquid water path
      real effcld(plevp)        ! effective fractional cloud cover
      real o3mmr(plev)          ! Ozone mass mixing ratio
      real o3vmr(plev)          ! Ozone volume mixing ratio
      real pintm1(plevp)        ! model interface pressures
      real pmidm1(plev)         ! model level pressures
      real ps                   ! surface pressure
      real qm1(plev)            ! model level specific humidity
      real snowh                ! snow depth (liquid water equivalent)
      real tg                   ! surface (skin) temperature
      real tm1(plev)            ! model level temperatures
      real ts                   ! surface air temperature

c     Cloud microphysics
      real fice(plev)           ! fractional amount of ice
      real rei(plev)            ! ice particle size
      real rel(plev)            ! liquid effective drop size (microns)

c     Shortwave
      real fsns                 ! surface absorbed solar flux
      real fsnsc                ! clr sky surface abs solar flux
      real fsnt                 ! total column absorbed solar flux
      real fsntc                ! clr sky total column abs solar flux
      real qrs(plev)            ! solar heating rate
      real solin                ! solar incident flux
      real srfrad               ! srf radiative heat flux
      real fsnirt               ! [W m-2] Near-IR flux absorbed at toa
      real fsnrtc               ! [W m-2] Clear sky near-IR flux absorbed at toa
      real fsnirtsq             ! [W m-2] Near-IR flux absorbed at toa >= 0.7 microns

c     Longwave
      real flns                 ! srf longwave cooling (up-dwn) flux
      real flnsc                ! clr sky lw flx at srf (up-dwn)
      real flnt                 ! net outgoing lw flx at model top
      real flntc                ! clr sky lw flx at model top
      real flwds                ! Surface down longwave flux
      real lwup                 ! Surface up longwave flux from coupler
      real qrl(plev)            ! longwave cooling rate

c     Local workspace
c     Externals

c     Local variables
      character fl_out*80
      integer nc_id             ! file handle
      integer rcd               ! return success code
      integer plev_dim_id       ! dimension id for plev
      integer plevp_dim_id      ! dimension id for plevp

#ifdef CRM_SRB
#include <crmsrb.h>
      integer bnd_dim_id        ! Dimension ID for bnd
      integer dim_plevp_bnd(2)  ! Dimension IDs
      integer dim_plev_bnd(2)  ! Dimension IDs

      integer dff_drc_SW_sfc_id
      integer dff_drc_NIR_sfc_id
      integer dff_drc_vsb_sfc_id
      integer flx_SW_dwn_sfc_id
      integer flx_NIR_dwn_sfc_id
      integer flx_vsb_dwn_sfc_id
      integer flx_SW_up_sfc_id
      integer flx_NIR_up_sfc_id
      integer flx_vsb_up_sfc_id
      integer flx_SW_dwn_drc_sfc_id
      integer flx_NIR_dwn_drc_sfc_id
      integer flx_vsb_dwn_drc_sfc_id
      integer flx_SW_dwn_dff_sfc_id
      integer flx_NIR_dwn_dff_sfc_id
      integer flx_vsb_dwn_dff_sfc_id
      integer odxc_CO2_id
      integer odxc_H2O_id
      integer odxc_O2_id
      integer odxc_O3_id
      integer odxc_Ray_id
      integer odxc_aer_id
      integer odxc_ice_id
      integer odxc_lqd_id
      integer odxc_ttl_id
      integer odxl_CO2_id
      integer odxl_H2O_id
      integer odxl_O2_id
      integer odxl_O3_id
      integer odxl_Ray_id
      integer odxl_aer_id
      integer odxl_ice_id
      integer odxl_lqd_id
      integer odxl_ttl_id
      integer bnd_id            ! Coordinate ID
      integer wvl_ctr_id        
      integer wvl_max_id
      integer wvl_min_id
      integer wvl_dlt_id
      integer wvn_id        
      integer wvn_ctr_id        
      integer wvn_max_id
      integer wvn_min_id
      integer wvn_dlt_id
      integer mpc_H2O_id        ! [kg m-2] Mass path column H2O
      integer mpc_O3_id         ! [kg m-2] Mass path column O3
      integer mpc_O3_DU_id      ! [DU] Mass path column O3 in Dobson Units
      integer alb_SW_TOA_id     ! [frc] SW albedo at TOA
      integer alb_NIR_TOA_id    ! [frc] NIR albedo at TOA
      integer alb_vsb_TOA_id    ! [frc] Visible albedo at TOA
      integer alb_SW_sfc_id     ! [frc] SW albedo at surface
      integer alb_NIR_sfc_id    ! [frc] NIR albedo at surface
      integer alb_vsb_sfc_id    ! [frc] Visible albedo at surface
      integer alb_NIR_SW_TOA_id ! [frc] NIR to SW albedo ratio at TOA
      integer alb_NIR_vsb_TOA_id ! [frc] NIR to visible albedo ratio at TOA
      integer flx_SW_dwn_TOA_id ! [W m-2] SW flux downwelling at TOA
      integer flx_NIR_dwn_TOA_id ! [W m-2] NIR flux downwelling at TOA
      integer flx_vsb_dwn_TOA_id ! [W m-2] Visible flux downwelling at TOA
      integer flx_SW_up_TOA_id  ! [W m-2] SW flux upwelling at TOA
      integer flx_NIR_up_TOA_id ! [W m-2] NIR flux upwelling at TOA
      integer flx_vsb_up_TOA_id ! [W m-2] Visible flux upwelling at TOA
      integer flx_bnd_dwn_TOA_id ! [W m-2] Downwelling band flux at TOA
      integer flx_bnd_dwn_dff_sfc_id ! [W m-2] Downwelling diffuse field band flux at surface
      integer flx_bnd_dwn_drc_sfc_id ! [W m-2] Downwelling direct beam band flux at surface
      integer flx_bnd_dwn_sfc_id ! [W m-2] Downwelling band flux at surface
      integer flx_bnd_up_TOA_id ! [W m-2] Upwelling band flux at TOA
      integer flx_bnd_up_sfc_id ! [W m-2] Upwelling band flux at surface
      integer dff_drc_SW_id ! [W m-2] Diffuse/direct SW downwelling flux ratio
      integer flx_SW_dwn_id ! [W m-2] Downwelling SW flux
      integer flx_SW_dwn_dff_id ! [W m-2] Downwelling SW flux diffuse field
      integer flx_SW_dwn_drc_id ! [W m-2] Downwelling SW flux direct beam
      integer flx_SW_up_id ! [W m-2] Upwelling SW flux
      integer flx_LW_dwn_id ! [W m-2] Downwelling LW flux
      integer flx_LW_up_id ! [W m-2] Upwelling LW flux
      integer flx_bnd_dwn_dff_id ! [W m-2] Downwelling diffuse field band flux
      integer flx_bnd_dwn_drc_id ! [W m-2] Downwelling direct beam band flux
      integer flx_bnd_dwn_id ! [W m-2] Downwelling band flux
      integer flx_bnd_up_id ! [W m-2] Upwelling band flux
#endif /* end CRM_SRB */

      integer clat_id   
      integer clon_id   
      integer cld_id   
      integer clwp_id
      integer coszrs_id
      integer effcld_id
      integer fice_id
      integer flns_id
      integer flnsc_id
      integer flnt_id
      integer flntc_id
      integer flwds_id
      integer fsnirt_id
      integer fsnrtc_id
      integer fsnirtsq_id
      integer fsns_id
      integer fsnsc_id
      integer fsnt_id
      integer fsntc_id
      integer oro_id
      integer loctim_id
      integer lwup_id
      integer o3mmr_id
      integer o3vmr_id
      integer pintm1_id
      integer plev_id
      integer plevp_id
      integer pmidm1_id
      integer ps_id
      integer qm1_id
      integer qrl_id
      integer qrs_id
      integer rei_id
      integer rel_id
      integer snowh_id
      integer solin_id
      integer srfrad_id
      integer tg_id
      integer tm1_id
      integer ts_id

c     Main Code
      rcd=NF_NOERR              ! NF_NOERR == 0
      fl_out='crm.nc'
      rcd=rcd+nf_create(fl_out,NF_CLOBBER,nc_id)

c     Define dimensions
      rcd=rcd+nf_def_dim(nc_id,'plev',plev,plev_dim_id)
      rcd=rcd+nf_def_dim(nc_id,'plevp',plevp,plevp_dim_id)

c     Define scalars
      rcd=rcd+nf_def_var(nc_id,'clat',NCPREC,0,0,clat_id)
      rcd=rcd+nf_def_var(nc_id,'clon',NCPREC,0,0,clon_id)
      rcd=rcd+nf_def_var(nc_id,'coszrs',NCPREC,0,0,coszrs_id)
      rcd=rcd+nf_def_var(nc_id,'flns',NCPREC,0,0,flns_id)
      rcd=rcd+nf_def_var(nc_id,'flnsc',NCPREC,0,0,flnsc_id)
      rcd=rcd+nf_def_var(nc_id,'flnt',NCPREC,0,0,flnt_id)
      rcd=rcd+nf_def_var(nc_id,'flntc',NCPREC,0,0,flntc_id)
      rcd=rcd+nf_def_var(nc_id,'flwds',NCPREC,0,0,flwds_id)
      rcd=rcd+nf_def_var(nc_id,'fsnirt',NCPREC,0,0,fsnirt_id)
      rcd=rcd+nf_def_var(nc_id,'fsnirtsq',NCPREC,0,0,fsnirtsq_id)
      rcd=rcd+nf_def_var(nc_id,'fsnrtc',NCPREC,0,0,fsnrtc_id)
      rcd=rcd+nf_def_var(nc_id,'fsns',NCPREC,0,0,fsns_id)
      rcd=rcd+nf_def_var(nc_id,'fsnsc',NCPREC,0,0,fsnsc_id)
      rcd=rcd+nf_def_var(nc_id,'fsnt',NCPREC,0,0,fsnt_id)
      rcd=rcd+nf_def_var(nc_id,'fsntc',NCPREC,0,0,fsntc_id)
      rcd=rcd+nf_def_var(nc_id,'oro',NCPREC,0,0,oro_id)
      rcd=rcd+nf_def_var(nc_id,'loctim',NCPREC,0,0,loctim_id)
      rcd=rcd+nf_def_var(nc_id,'lwup',NCPREC,0,0,lwup_id)
      rcd=rcd+nf_def_var(nc_id,'ps',NCPREC,0,0,ps_id)
      rcd=rcd+nf_def_var(nc_id,'snowh',NCPREC,0,0,snowh_id)
      rcd=rcd+nf_def_var(nc_id,'solin',NCPREC,0,0,solin_id)
      rcd=rcd+nf_def_var(nc_id,'srfrad',NCPREC,0,0,srfrad_id)
      rcd=rcd+nf_def_var(nc_id,'tg',NCPREC,0,0,tg_id)
      rcd=rcd+nf_def_var(nc_id,'ts',NCPREC,0,0,ts_id)

c     Define plev arrays
      rcd=rcd+nf_def_var(nc_id,'clwp',NCPREC,1,plev_dim_id,clwp_id)
      rcd=rcd+nf_def_var(nc_id,'fice',NCPREC,1,plev_dim_id,fice_id)
      rcd=rcd+nf_def_var(nc_id,'o3mmr',NCPREC,1,plev_dim_id,o3mmr_id)
      rcd=rcd+nf_def_var(nc_id,'o3vmr',NCPREC,1,plev_dim_id,o3vmr_id)
      rcd=rcd+nf_def_var(nc_id,'plev',NCPREC,1,plev_dim_id,plev_id)
      rcd=rcd+nf_def_var(nc_id,'pmid',NCPREC,1,plev_dim_id,pmidm1_id)
      rcd=rcd+nf_def_var(nc_id,'h2ommr',NCPREC,1,plev_dim_id,qm1_id)
      rcd=rcd+nf_def_var(nc_id,'qrl',NCPREC,1,plev_dim_id,qrl_id)
      rcd=rcd+nf_def_var(nc_id,'qrs',NCPREC,1,plev_dim_id,qrs_id)
      rcd=rcd+nf_def_var(nc_id,'rei',NCPREC,1,plev_dim_id,rei_id)
      rcd=rcd+nf_def_var(nc_id,'rel',NCPREC,1,plev_dim_id,rel_id)
      rcd=rcd+nf_def_var(nc_id,'t',NCPREC,1,plev_dim_id,tm1_id)

c     Define plevp arrays
      rcd=rcd+nf_def_var(nc_id,'cld',NCPREC,1,plevp_dim_id,cld_id)
      rcd=rcd+nf_def_var(nc_id,'effcld',NCPREC,1,plevp_dim_id,effcld_id)
      rcd=rcd+nf_def_var(nc_id,'pint',NCPREC,1,plevp_dim_id,pintm1_id)
      rcd=rcd+nf_def_var(nc_id,'plevp',NCPREC,1,plevp_dim_id,plevp_id)

c     Add units
      rcd=rcd+nf_put_att_text(nc_id,clat_id,'units',6,'radian')
      rcd=rcd+nf_put_att_text(nc_id,clon_id,'units',6,'radian')
      rcd=rcd+nf_put_att_text(nc_id,cld_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,clwp_id,'units',12,'gram meter-2')
      rcd=rcd+nf_put_att_text(nc_id,coszrs_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,effcld_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,fice_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,flns_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flnsc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flnt_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flntc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flwds_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,fsnirt_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,fsnirtsq_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,fsnrtc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,fsns_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,fsnsc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,fsnt_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,fsntc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,oro_id,'units',5,'index')
      rcd=rcd+nf_put_att_text(nc_id,loctim_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,lwup_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,o3mmr_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,o3vmr_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,pintm1_id,'units',6,'pascal')
      rcd=rcd+nf_put_att_text(nc_id,plev_id,'units',6,'pascal')
      rcd=rcd+nf_put_att_text(nc_id,plevp_id,'units',6,'pascal')
      rcd=rcd+nf_put_att_text(nc_id,pmidm1_id,'units',6,'pascal')
      rcd=rcd+nf_put_att_text(nc_id,ps_id,'units',6,'pascal')
      rcd=rcd+nf_put_att_text(nc_id,qm1_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,qrl_id,'units',15,'kelvin second-1')
      rcd=rcd+nf_put_att_text(nc_id,qrs_id,'units',15,'kelvin second-1')
      rcd=rcd+nf_put_att_text(nc_id,rei_id,'units',6,'micron')
      rcd=rcd+nf_put_att_text(nc_id,rel_id,'units',6,'micron')
      rcd=rcd+nf_put_att_text(nc_id,snowh_id,'units',5,'meter')
      rcd=rcd+nf_put_att_text(nc_id,solin_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,srfrad_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,tg_id,'units',6,'kelvin')
      rcd=rcd+nf_put_att_text(nc_id,tm1_id,'units',6,'kelvin')
      rcd=rcd+nf_put_att_text(nc_id,ts_id,'units',6,'kelvin')

c     Add English text descriptions
      rcd=rcd+nf_put_att_text(nc_id,clat_id,'long_name',8,'Latitude')
      rcd=rcd+nf_put_att_text(nc_id,clon_id,'long_name',8,'Longitude')
      rcd=rcd+nf_put_att_text(nc_id,cld_id,'long_name',14,'Cloud fraction')
      rcd=rcd+nf_put_att_text(nc_id,clwp_id,'long_name',24,'In-cloud condensate path')
      rcd=rcd+nf_put_att_text(nc_id,coszrs_id,'long_name',25,'Cosine solar zenith angle')
      rcd=rcd+nf_put_att_text(nc_id,effcld_id,'long_name',52,'Effective cloud amount (emissivity x cloud fraction)')
      rcd=rcd+nf_put_att_text(nc_id,fice_id,'long_name',12,'Ice fraction')
      rcd=rcd+nf_put_att_text(nc_id,flns_id,'long_name',37,'Net longwave flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,flnsc_id,'long_name',40,'Net longwave flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,flnt_id,'long_name',33,'Net longwave flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,flntc_id,'long_name',35,'Net longwave flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,flwds_id,'long_name',36,'Longwave downwelling flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,fsnirt_id,'long_name',28,'Near-IR flux absorbed at TOA')
      rcd=rcd+nf_put_att_text(nc_id,fsnirtsq_id,'long_name',43,'Near-IR flux absorbed at TOA >= 0.7 microns')
      rcd=rcd+nf_put_att_text(nc_id,fsnrtc_id,'long_name',38,'Clear sky near-IR flux absorbed at TOA')
      rcd=rcd+nf_put_att_text(nc_id,fsns_id,'long_name',38,'Net shortwave flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,fsnsc_id,'long_name',40,'Net shortwave flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,fsnt_id,'long_name',34,'Net shortwave flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,fsntc_id,'long_name',30,'Net shortwave flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,oro_id,'long_name',14,'Orography flag')
      rcd=rcd+nf_put_att_text(nc_id,loctim_id,'long_name',10,'Local time')
      rcd=rcd+nf_put_att_text(nc_id,lwup_id,'long_name',38,'Longwave up flux from coupler (if any)')
      rcd=rcd+nf_put_att_text(nc_id,o3mmr_id,'long_name',27,'Ozone dry mass-mixing ratio')
      rcd=rcd+nf_put_att_text(nc_id,o3vmr_id,'long_name',29,'Ozone dry volume-mixing ratio')
      rcd=rcd+nf_put_att_text(nc_id,pintm1_id,'long_name',28,'Pressure at layer interfaces')
      rcd=rcd+nf_put_att_text(nc_id,plev_id,'long_name',16,'Number of levels')
      rcd=rcd+nf_put_att_text(nc_id,plevp_id,'long_name',26,'Number of level interfaces')
      rcd=rcd+nf_put_att_text(nc_id,pmidm1_id,'long_name',27,'Pressure at layer midpoints')
      rcd=rcd+nf_put_att_text(nc_id,ps_id,'long_name',16,'Surface pressure')
      rcd=rcd+nf_put_att_text(nc_id,qm1_id,'long_name',33,'Water vapor dry mass-mixing ratio')
      rcd=rcd+nf_put_att_text(nc_id,qrl_id,'long_name',21,'Longwave heating rate')
      rcd=rcd+nf_put_att_text(nc_id,qrs_id,'long_name',22,'Shortwave heating rate')
      rcd=rcd+nf_put_att_text(nc_id,rei_id,'long_name',32,'Effective radius of ice crystals')
      rcd=rcd+nf_put_att_text(nc_id,rel_id,'long_name',35,'Effective radius of liquid droplets')
      rcd=rcd+nf_put_att_text(nc_id,snowh_id,'long_name',10,'Snow depth')
      rcd=rcd+nf_put_att_text(nc_id,solin_id,'long_name',33,'Downwelling shortwave flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,srfrad_id,'long_name',33,'Total radiative flux into surface')
      rcd=rcd+nf_put_att_text(nc_id,tg_id,'long_name',18,'Ground temperature')
      rcd=rcd+nf_put_att_text(nc_id,tm1_id,'long_name',11,'Temperature')
      rcd=rcd+nf_put_att_text(nc_id,ts_id,'long_name',16,'Skin temperature')

c     End define mode
      rcd=rcd+nf_enddef(nc_id)

c     Write data
      rcd=rcd+nf_put_var_double(nc_id,clat_id,clat)
      rcd=rcd+nf_put_var_double(nc_id,clon_id,clon)
      rcd=rcd+nf_put_var_double(nc_id,cld_id,cld)
      rcd=rcd+nf_put_var_double(nc_id,clwp_id,clwp)
      rcd=rcd+nf_put_var_double(nc_id,coszrs_id,coszrs)
      rcd=rcd+nf_put_var_double(nc_id,effcld_id,effcld)
      rcd=rcd+nf_put_var_double(nc_id,fice_id,fice)
      rcd=rcd+nf_put_var_double(nc_id,flns_id,flns)
      rcd=rcd+nf_put_var_double(nc_id,flnsc_id,flnsc)
      rcd=rcd+nf_put_var_double(nc_id,flnt_id,flnt)
      rcd=rcd+nf_put_var_double(nc_id,flntc_id,flntc)
      rcd=rcd+nf_put_var_double(nc_id,flwds_id,flwds)
      rcd=rcd+nf_put_var_double(nc_id,fsnirt_id,fsnirt)
      rcd=rcd+nf_put_var_double(nc_id,fsnirtsq_id,fsnirtsq)
      rcd=rcd+nf_put_var_double(nc_id,fsnrtc_id,fsnrtc)
      rcd=rcd+nf_put_var_double(nc_id,fsns_id,fsns)
      rcd=rcd+nf_put_var_double(nc_id,fsnsc_id,fsnsc)
      rcd=rcd+nf_put_var_double(nc_id,fsnt_id,fsnt)
      rcd=rcd+nf_put_var_double(nc_id,fsntc_id,fsntc)
      rcd=rcd+nf_put_var_double(nc_id,loctim_id,loctim)
      rcd=rcd+nf_put_var_double(nc_id,lwup_id,lwup)
      rcd=rcd+nf_put_var_double(nc_id,o3mmr_id,o3mmr)
      rcd=rcd+nf_put_var_double(nc_id,o3vmr_id,o3vmr)
      rcd=rcd+nf_put_var_double(nc_id,oro_id,oro)
      rcd=rcd+nf_put_var_double(nc_id,pintm1_id,pintm1)
      rcd=rcd+nf_put_var_double(nc_id,plev_id,pmidm1)
      rcd=rcd+nf_put_var_double(nc_id,plevp_id,pintm1)
      rcd=rcd+nf_put_var_double(nc_id,pmidm1_id,pmidm1)
      rcd=rcd+nf_put_var_double(nc_id,ps_id,ps)
      rcd=rcd+nf_put_var_double(nc_id,qm1_id,qm1)
      rcd=rcd+nf_put_var_double(nc_id,qrl_id,qrl)
      rcd=rcd+nf_put_var_double(nc_id,qrs_id,qrs)
      rcd=rcd+nf_put_var_double(nc_id,rei_id,rei)
      rcd=rcd+nf_put_var_double(nc_id,rel_id,rel)
      rcd=rcd+nf_put_var_double(nc_id,snowh_id,snowh)
      rcd=rcd+nf_put_var_double(nc_id,solin_id,solin)
      rcd=rcd+nf_put_var_double(nc_id,srfrad_id,srfrad)
      rcd=rcd+nf_put_var_double(nc_id,tg_id,tg)
      rcd=rcd+nf_put_var_double(nc_id,tm1_id,tm1)
      rcd=rcd+nf_put_var_double(nc_id,ts_id,ts)

      rcd=rcd+nf_close(nc_id)
      write(6,'(2a)') 'Wrote results to ',fl_out

#ifdef CRM_SRB
      rcd=rcd+nf_open(fl_out,NF_WRITE,nc_id)
      if (rcd.ne.NF_NOERR) call nc_err_exit(rcd,fl_out)

c     Put output file in define mode 
      rcd=rcd+nf_redef(nc_id)
      if (rcd.ne.NF_NOERR) call nc_err_exit(rcd,fl_out)

c     Define dimension IDs
      rcd=rcd+nf_def_dim(nc_id,'bnd',bnd_nbr_SW,bnd_dim_id)
      if (rcd.ne.NF_NOERR) call nc_err_exit(rcd,fl_out)

c     Assemble each multidimensional combination of dimension IDs
      dim_plevp_bnd=(/plevp_dim_id,bnd_dim_id/)
      dim_plev_bnd=(/plev_dim_id,bnd_dim_id/)

c     Define scalars
      rcd=rcd+nf_def_var(nc_id,'alb_SW_sfc',NCPREC,0,0,alb_SW_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'alb_vsb_sfc',NCPREC,0,0,alb_vsb_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'alb_NIR_sfc',NCPREC,0,0,alb_NIR_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'alb_NIR_SW_TOA',NCPREC,0,0,alb_NIR_SW_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'alb_NIR_TOA',NCPREC,0,0,alb_NIR_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'alb_NIR_vsb_TOA',NCPREC,0,0,alb_NIR_vsb_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'alb_SW_TOA',NCPREC,0,0,alb_SW_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'alb_vsb_TOA',NCPREC,0,0,alb_vsb_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'dff_drc_NIR_sfc',NCPREC,0,0,dff_drc_NIR_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'dff_drc_SW_sfc',NCPREC,0,0,dff_drc_SW_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'dff_drc_vsb_sfc',NCPREC,0,0,dff_drc_vsb_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_NIR_dwn_TOA',NCPREC,0,0,flx_NIR_dwn_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'flx_NIR_dwn_dff_sfc',NCPREC,0,0,flx_NIR_dwn_dff_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_NIR_dwn_drc_sfc',NCPREC,0,0,flx_NIR_dwn_drc_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_NIR_dwn_sfc',NCPREC,0,0,flx_NIR_dwn_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_NIR_up_TOA',NCPREC,0,0,flx_NIR_up_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'flx_SW_dwn_TOA',NCPREC,0,0,flx_SW_dwn_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'flx_SW_dwn_dff_sfc',NCPREC,0,0,flx_SW_dwn_dff_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_SW_dwn_drc_sfc',NCPREC,0,0,flx_SW_dwn_drc_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_SW_dwn_sfc',NCPREC,0,0,flx_SW_dwn_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_SW_up_sfc',NCPREC,0,0,flx_SW_up_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_NIR_up_sfc',NCPREC,0,0,flx_NIR_up_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_vsb_up_sfc',NCPREC,0,0,flx_vsb_up_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_SW_up_TOA',NCPREC,0,0,flx_SW_up_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'flx_vsb_dwn_TOA',NCPREC,0,0,flx_vsb_dwn_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'flx_vsb_dwn_dff_sfc',NCPREC,0,0,flx_vsb_dwn_dff_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_vsb_dwn_drc_sfc',NCPREC,0,0,flx_vsb_dwn_drc_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_vsb_dwn_sfc',NCPREC,0,0,flx_vsb_dwn_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_vsb_up_TOA',NCPREC,0,0,flx_vsb_up_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'mpc_H2O',NCPREC,0,0,mpc_H2O_id)
      rcd=rcd+nf_def_var(nc_id,'mpc_O3',NCPREC,0,0,mpc_O3_id)
      rcd=rcd+nf_def_var(nc_id,'mpc_O3_DU',NCPREC,0,0,mpc_O3_DU_id)
c     Define plevp arrays
      rcd=rcd+nf_def_var(nc_id,'dff_drc_SW',NCPREC,1,plevp_dim_id,dff_drc_SW_id)
      rcd=rcd+nf_def_var(nc_id,'flx_SW_dwn',NCPREC,1,plevp_dim_id,flx_SW_dwn_id)
      rcd=rcd+nf_def_var(nc_id,'flx_SW_dwn_dff',NCPREC,1,plevp_dim_id,flx_SW_dwn_dff_id)
      rcd=rcd+nf_def_var(nc_id,'flx_SW_dwn_drc',NCPREC,1,plevp_dim_id,flx_SW_dwn_drc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_SW_up',NCPREC,1,plevp_dim_id,flx_SW_up_id)
      rcd=rcd+nf_def_var(nc_id,'flx_LW_dwn',NCPREC,1,plevp_dim_id,flx_LW_dwn_id)
      rcd=rcd+nf_def_var(nc_id,'flx_LW_up',NCPREC,1,plevp_dim_id,flx_LW_up_id)

c     Define bnd arrays
      rcd=rcd+nf_def_var(nc_id,'bnd',NCPREC,1,bnd_dim_id,bnd_id)
      rcd=rcd+nf_def_var(nc_id,'flx_bnd_dwn_TOA',NCPREC,1,bnd_dim_id,flx_bnd_dwn_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'flx_bnd_dwn_dff_sfc',NCPREC,1,bnd_dim_id,flx_bnd_dwn_dff_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_bnd_dwn_drc_sfc',NCPREC,1,bnd_dim_id,flx_bnd_dwn_drc_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_bnd_dwn_sfc',NCPREC,1,bnd_dim_id,flx_bnd_dwn_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_bnd_up_TOA',NCPREC,1,bnd_dim_id,flx_bnd_up_TOA_id)
      rcd=rcd+nf_def_var(nc_id,'flx_bnd_up_sfc',NCPREC,1,bnd_dim_id,flx_bnd_up_sfc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_bnd_dwn_dff',NCPREC,2,dim_plevp_bnd,flx_bnd_dwn_dff_id)
      rcd=rcd+nf_def_var(nc_id,'flx_bnd_dwn_drc',NCPREC,2,dim_plevp_bnd,flx_bnd_dwn_drc_id)
      rcd=rcd+nf_def_var(nc_id,'flx_bnd_dwn',NCPREC,2,dim_plevp_bnd,flx_bnd_dwn_id)
      rcd=rcd+nf_def_var(nc_id,'flx_bnd_up',NCPREC,2,dim_plevp_bnd,flx_bnd_up_id)
      rcd=rcd+nf_def_var(nc_id,'odxc_CO2',NCPREC,1,bnd_dim_id,odxc_CO2_id)
      rcd=rcd+nf_def_var(nc_id,'odxc_H2O',NCPREC,1,bnd_dim_id,odxc_H2O_id)
      rcd=rcd+nf_def_var(nc_id,'odxc_O2',NCPREC,1,bnd_dim_id,odxc_O2_id)
      rcd=rcd+nf_def_var(nc_id,'odxc_O3',NCPREC,1,bnd_dim_id,odxc_O3_id)
      rcd=rcd+nf_def_var(nc_id,'odxc_Ray',NCPREC,1,bnd_dim_id,odxc_Ray_id)
      rcd=rcd+nf_def_var(nc_id,'odxc_aer',NCPREC,1,bnd_dim_id,odxc_aer_id)
      rcd=rcd+nf_def_var(nc_id,'odxc_ice',NCPREC,1,bnd_dim_id,odxc_ice_id)
      rcd=rcd+nf_def_var(nc_id,'odxc_lqd',NCPREC,1,bnd_dim_id,odxc_lqd_id)
      rcd=rcd+nf_def_var(nc_id,'odxc_ttl',NCPREC,1,bnd_dim_id,odxc_ttl_id)
      rcd=rcd+nf_def_var(nc_id,'odxl_CO2',NCPREC,2,dim_plev_bnd,odxl_CO2_id)
      rcd=rcd+nf_def_var(nc_id,'odxl_H2O',NCPREC,2,dim_plev_bnd,odxl_H2O_id)
      rcd=rcd+nf_def_var(nc_id,'odxl_O2',NCPREC,2,dim_plev_bnd,odxl_O2_id)
      rcd=rcd+nf_def_var(nc_id,'odxl_O3',NCPREC,2,dim_plev_bnd,odxl_O3_id)
      rcd=rcd+nf_def_var(nc_id,'odxl_Ray',NCPREC,2,dim_plev_bnd,odxl_Ray_id)
      rcd=rcd+nf_def_var(nc_id,'odxl_aer',NCPREC,2,dim_plev_bnd,odxl_aer_id)
      rcd=rcd+nf_def_var(nc_id,'odxl_ice',NCPREC,2,dim_plev_bnd,odxl_ice_id)
      rcd=rcd+nf_def_var(nc_id,'odxl_lqd',NCPREC,2,dim_plev_bnd,odxl_lqd_id)
      rcd=rcd+nf_def_var(nc_id,'odxl_ttl',NCPREC,2,dim_plev_bnd,odxl_ttl_id)
      rcd=rcd+nf_def_var(nc_id,'wvl_ctr',NCPREC,1,bnd_dim_id,wvl_ctr_id)
      rcd=rcd+nf_def_var(nc_id,'wvl_dlt',NCPREC,1,bnd_dim_id,wvl_dlt_id)
      rcd=rcd+nf_def_var(nc_id,'wvl_max',NCPREC,1,bnd_dim_id,wvl_max_id)
      rcd=rcd+nf_def_var(nc_id,'wvl_min',NCPREC,1,bnd_dim_id,wvl_min_id)
      rcd=rcd+nf_def_var(nc_id,'wvn',NCPREC,1,bnd_dim_id,wvn_id)
      rcd=rcd+nf_def_var(nc_id,'wvn_ctr',NCPREC,1,bnd_dim_id,wvn_ctr_id)
      rcd=rcd+nf_def_var(nc_id,'wvn_dlt',NCPREC,1,bnd_dim_id,wvn_dlt_id)
      rcd=rcd+nf_def_var(nc_id,'wvn_max',NCPREC,1,bnd_dim_id,wvn_max_id)
      rcd=rcd+nf_def_var(nc_id,'wvn_min',NCPREC,1,bnd_dim_id,wvn_min_id)

c     Add units

      rcd=rcd+nf_put_att_text(nc_id,alb_NIR_SW_TOA_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,alb_NIR_TOA_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,alb_NIR_sfc_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,alb_NIR_vsb_TOA_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,alb_SW_TOA_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,alb_SW_sfc_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,alb_vsb_TOA_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,alb_vsb_sfc_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,bnd_id,'units',5,'meter')
      rcd=rcd+nf_put_att_text(nc_id,dff_drc_NIR_sfc_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,dff_drc_SW_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,dff_drc_SW_sfc_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,dff_drc_vsb_sfc_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,flx_LW_dwn_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_LW_up_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_dwn_TOA_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_dwn_dff_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_dwn_drc_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_dwn_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_up_TOA_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_TOA_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_dff_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_dff_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_drc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_drc_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_up_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_up_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_up_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_up_TOA_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_up_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_TOA_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_dff_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_dff_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_drc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_drc_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_up_TOA_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_up_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_up_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_dwn_TOA_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_dwn_dff_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_dwn_drc_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_dwn_sfc_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_up_TOA_id,'units',12,'watt meter-2')
      rcd=rcd+nf_put_att_text(nc_id,mpc_H2O_id,'units',16,'kilogram meter-2')
      rcd=rcd+nf_put_att_text(nc_id,mpc_O3_DU_id,'units',6,'Dobson')
      rcd=rcd+nf_put_att_text(nc_id,mpc_O3_id,'units',16,'kilogram meter-2')
      rcd=rcd+nf_put_att_text(nc_id,odxc_CO2_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxc_H2O_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxc_O2_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxc_O3_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxc_Ray_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxc_aer_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxc_ice_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxc_lqd_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxc_ttl_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxl_CO2_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxl_H2O_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxl_O2_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxl_O3_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxl_Ray_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxl_aer_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxl_ice_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxl_lqd_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,odxl_ttl_id,'units',8,'fraction')
      rcd=rcd+nf_put_att_text(nc_id,wvl_ctr_id,'units',5,'meter')
      rcd=rcd+nf_put_att_text(nc_id,wvl_ctr_id,'units',5,'meter')
      rcd=rcd+nf_put_att_text(nc_id,wvl_dlt_id,'units',5,'meter')
      rcd=rcd+nf_put_att_text(nc_id,wvl_max_id,'units',5,'meter')
      rcd=rcd+nf_put_att_text(nc_id,wvl_min_id,'units',5,'meter')
      rcd=rcd+nf_put_att_text(nc_id,wvn_ctr_id,'units',12,'centimeter-1')
      rcd=rcd+nf_put_att_text(nc_id,wvn_dlt_id,'units',12,'centimeter-1')
      rcd=rcd+nf_put_att_text(nc_id,wvn_id,'units',12,'centimeter-1')
      rcd=rcd+nf_put_att_text(nc_id,wvn_max_id,'units',12,'centimeter-1')
      rcd=rcd+nf_put_att_text(nc_id,wvn_min_id,'units',12,'centimeter-1')

c     Add English text descriptions
      rcd=rcd+nf_put_att_text(nc_id,alb_NIR_SW_TOA_id,'long_name',29,'Ratio of NIR to SW TOA albedo')
      rcd=rcd+nf_put_att_text(nc_id,alb_NIR_TOA_id,'long_name',14,'NIR TOA albedo')
      rcd=rcd+nf_put_att_text(nc_id,alb_NIR_sfc_id,'long_name',18,'NIR surface albedo')
      rcd=rcd+nf_put_att_text(nc_id,alb_NIR_vsb_TOA_id,'long_name',34,'Ratio of NIR to visible TOA albedo')
      rcd=rcd+nf_put_att_text(nc_id,alb_SW_TOA_id,'long_name',20,'Shortwave TOA albedo')
      rcd=rcd+nf_put_att_text(nc_id,alb_SW_sfc_id,'long_name',24,'Shortwave surface albedo')
      rcd=rcd+nf_put_att_text(nc_id,alb_vsb_TOA_id,'long_name',18,'Visible TOA albedo')
      rcd=rcd+nf_put_att_text(nc_id,alb_vsb_sfc_id,'long_name',22,'Visible surface albedo')
      rcd=rcd+nf_put_att_text(nc_id,bnd_id,'long_name',22,'Band nominal wavelength')
      rcd=rcd+nf_put_att_text(nc_id,dff_drc_NIR_sfc_id,'long_name',52,'Diffuse/direct NIR downwelling flux ratio at surface')
      rcd=rcd+nf_put_att_text(nc_id,dff_drc_SW_id,'long_name',40,'Diffuse/direct SW downwelling flux ratio')
      rcd=rcd+nf_put_att_text(nc_id,dff_drc_SW_sfc_id,'long_name',51,'Diffuse/direct SW downwelling flux ratio at surface')
      rcd=rcd+nf_put_att_text(nc_id,dff_drc_vsb_sfc_id,'long_name',56,'Diffuse/direct visible downwelling flux ratio at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_LW_dwn_id,'long_name',19,'Downwelling LW flux')
      rcd=rcd+nf_put_att_text(nc_id,flx_LW_up_id,'long_name',16,'Upwelling LW flux')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_dwn_TOA_id,'long_name',27,'Downwelling NIR flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_dwn_dff_sfc_id,'long_name',47,'NIR flux downwelling at surface in diffuse beam')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_dwn_drc_sfc_id,'long_name',46,'NIR flux downwelling at surface in direct beam')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_dwn_sfc_id,'long_name',31,'NIR flux downwelling at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_up_TOA_id,'long_name',25,'Upwelling NIR flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_TOA_id,'long_name',26,'Downwelling SW flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_dff_id,'long_name',32,'Downwelling SW flux diffuse field')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_dff_sfc_id,'long_name',46,'SW flux downwelling at surface in diffuse beam')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_drc_id,'long_name',31,'Downwelling SW flux direct beam')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_drc_sfc_id,'long_name',45,'SW flux downwelling at surface in direct beam')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_id,'long_name',19,'Downwelling SW flux')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_dwn_sfc_id,'long_name',30,'SW flux downwelling at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_up_sfc_id,'long_name',27,'Upwelling SW flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_NIR_up_sfc_id,'long_name',28,'Upwelling NIR flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_up_sfc_id,'long_name',32,'Upwelling visible flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_up_TOA_id,'long_name',24,'Upwelling SW flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,flx_SW_up_id,'long_name',16,'Upwelling SW flux')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_TOA_id,'long_name',23,'Downwelling flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_dff_id,'long_name',35,'Downwelling diffuse field band flux')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_dff_sfc_id,'long_name',39,'Downwelling diffuse field flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_drc_id,'long_name',33,'Downwelling direct beam band flux')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_drc_sfc_id,'long_name',39,'Downwelling direct beam flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_id,'long_name',21,'Downwelling band flux')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_dwn_sfc_id,'long_name',27,'Downwelling flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_up_TOA_id,'long_name',21,'Upwelling flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_up_id,'long_name',19,'Upwelling band flux')
      rcd=rcd+nf_put_att_text(nc_id,flx_bnd_up_sfc_id,'long_name',25,'Upwelling flux at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_dwn_TOA_id,'long_name',31,'Downwelling visible flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_dwn_dff_sfc_id,'long_name',51,'Visible flux downwelling at surface in diffuse beam')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_dwn_drc_sfc_id,'long_name',50,'Visible flux downwelling at surface in direct beam')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_dwn_sfc_id,'long_name',35,'Visible flux downwelling at surface')
      rcd=rcd+nf_put_att_text(nc_id,flx_vsb_up_TOA_id,'long_name',29,'Upwelling visible flux at TOA')
      rcd=rcd+nf_put_att_text(nc_id,mpc_H2O_id,'long_name',26,'Mass path of H2O in column')
      rcd=rcd+nf_put_att_text(nc_id,mpc_O3_DU_id,'long_name',25,'Mass path of O3 in column')
      rcd=rcd+nf_put_att_text(nc_id,mpc_O3_id,'long_name',25,'Mass path of O3 in column')
      rcd=rcd+nf_put_att_text(nc_id,odxc_CO2_id,'long_name',38,'Column extinction optical depth of CO2')
      rcd=rcd+nf_put_att_text(nc_id,odxc_H2O_id,'long_name',46,'Column extinction optical depth of gaseous H2O')
      rcd=rcd+nf_put_att_text(nc_id,odxc_O2_id,'long_name',37,'Column extinction optical depth of O2')
      rcd=rcd+nf_put_att_text(nc_id,odxc_O3_id,'long_name',37,'Column extinction optical depth of O3')
      rcd=rcd+nf_put_att_text(nc_id,odxc_Ray_id,'long_name',58,'Column extinction optical depth due to Rayleigh scattering')
      rcd=rcd+nf_put_att_text(nc_id,odxc_aer_id,'long_name',42,'Column extinction optical depth of aerosol')
      rcd=rcd+nf_put_att_text(nc_id,odxc_ice_id,'long_name',44,'Column extinction optical depth of solid H2O')
      rcd=rcd+nf_put_att_text(nc_id,odxc_lqd_id,'long_name',45,'Column extinction optical depth of liquid H2O')
      rcd=rcd+nf_put_att_text(nc_id,odxc_ttl_id,'long_name',37,'Total column extinction optical depth')
      rcd=rcd+nf_put_att_text(nc_id,odxl_CO2_id,'long_name',38,'Layer extinction optical depth of CO2')
      rcd=rcd+nf_put_att_text(nc_id,odxl_H2O_id,'long_name',46,'Layer extinction optical depth of gaseous H2O')
      rcd=rcd+nf_put_att_text(nc_id,odxl_O2_id,'long_name',37,'Layer extinction optical depth of O2')
      rcd=rcd+nf_put_att_text(nc_id,odxl_O3_id,'long_name',37,'Layer extinction optical depth of O3')
      rcd=rcd+nf_put_att_text(nc_id,odxl_Ray_id,'long_name',58,'Layer extinction optical depth due to Rayleigh scattering')
      rcd=rcd+nf_put_att_text(nc_id,odxl_aer_id,'long_name',42,'Layer extinction optical depth of aerosol')
      rcd=rcd+nf_put_att_text(nc_id,odxl_ice_id,'long_name',44,'Layer extinction optical depth of solid H2O')
      rcd=rcd+nf_put_att_text(nc_id,odxl_lqd_id,'long_name',45,'Layer extinction optical depth of liquid H2O')
      rcd=rcd+nf_put_att_text(nc_id,odxl_ttl_id,'long_name',37,'Total layer extinction optical depth')
      rcd=rcd+nf_put_att_text(nc_id,wvl_ctr_id,'long_name',22,'Band center wavelength')
      rcd=rcd+nf_put_att_text(nc_id,wvl_dlt_id,'long_name',9,'Bandwidth')
      rcd=rcd+nf_put_att_text(nc_id,wvl_max_id,'long_name',23,'Band maximum wavelength')
      rcd=rcd+nf_put_att_text(nc_id,wvl_min_id,'long_name',23,'Band minimum wavelength')
      rcd=rcd+nf_put_att_text(nc_id,wvn_ctr_id,'long_name',22,'Band center wavenumber')
      rcd=rcd+nf_put_att_text(nc_id,wvn_dlt_id,'long_name',9,'Bandwidth')
      rcd=rcd+nf_put_att_text(nc_id,wvn_id,'long_name',23,'Band nominal wavenumber')
      rcd=rcd+nf_put_att_text(nc_id,wvn_max_id,'long_name',23,'Band maximum wavenumber')
      rcd=rcd+nf_put_att_text(nc_id,wvn_min_id,'long_name',23,'Band minimum wavenumber')

c     End define mode
      rcd=rcd+nf_enddef(nc_id)

c     Write data
      rcd=rcd+nf_put_var_double(nc_id,alb_NIR_SW_TOA_id,alb_NIR_SW_TOA)
      rcd=rcd+nf_put_var_double(nc_id,alb_NIR_TOA_id,alb_NIR_TOA)
      rcd=rcd+nf_put_var_double(nc_id,alb_NIR_sfc_id,alb_NIR_sfc)
      rcd=rcd+nf_put_var_double(nc_id,alb_NIR_vsb_TOA_id,alb_NIR_vsb_TOA)
      rcd=rcd+nf_put_var_double(nc_id,alb_SW_TOA_id,alb_SW_TOA)
      rcd=rcd+nf_put_var_double(nc_id,alb_SW_sfc_id,alb_SW_sfc)
      rcd=rcd+nf_put_var_double(nc_id,alb_vsb_TOA_id,alb_vsb_TOA)
      rcd=rcd+nf_put_var_double(nc_id,alb_vsb_sfc_id,alb_vsb_sfc)
      rcd=rcd+nf_put_var_double(nc_id,bnd_id,wvl)
      rcd=rcd+nf_put_var_double(nc_id,dff_drc_NIR_sfc_id,dff_drc_NIR_sfc)
      rcd=rcd+nf_put_var_double(nc_id,dff_drc_SW_id,dff_drc_SW)
      rcd=rcd+nf_put_var_double(nc_id,dff_drc_SW_sfc_id,dff_drc_SW_sfc)
      rcd=rcd+nf_put_var_double(nc_id,dff_drc_vsb_sfc_id,dff_drc_vsb_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_LW_dwn_id,flx_LW_dwn)
      rcd=rcd+nf_put_var_double(nc_id,flx_LW_up_id,flx_LW_up)
      rcd=rcd+nf_put_var_double(nc_id,flx_NIR_dwn_TOA_id,flx_NIR_dwn_TOA)
      rcd=rcd+nf_put_var_double(nc_id,flx_NIR_dwn_dff_sfc_id,flx_NIR_dwn_dff_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_NIR_dwn_drc_sfc_id,flx_NIR_dwn_drc_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_NIR_dwn_sfc_id,flx_NIR_dwn_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_NIR_up_TOA_id,flx_NIR_up_TOA)
      rcd=rcd+nf_put_var_double(nc_id,flx_SW_dwn_TOA_id,flx_SW_dwn_TOA)
      rcd=rcd+nf_put_var_double(nc_id,flx_SW_dwn_dff_id,flx_SW_dwn_dff)
      rcd=rcd+nf_put_var_double(nc_id,flx_SW_dwn_dff_sfc_id,flx_SW_dwn_dff_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_SW_dwn_drc_id,flx_SW_dwn_drc)
      rcd=rcd+nf_put_var_double(nc_id,flx_SW_dwn_drc_sfc_id,flx_SW_dwn_drc_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_SW_dwn_id,flx_SW_dwn)
      rcd=rcd+nf_put_var_double(nc_id,flx_SW_dwn_sfc_id,flx_SW_dwn_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_SW_up_sfc_id,flx_SW_up_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_NIR_up_sfc_id,flx_NIR_up_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_vsb_up_sfc_id,flx_vsb_up_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_SW_up_TOA_id,flx_SW_up_TOA)
      rcd=rcd+nf_put_var_double(nc_id,flx_SW_up_id,flx_SW_up)
      rcd=rcd+nf_put_var_double(nc_id,flx_bnd_dwn_TOA_id,flx_bnd_dwn_TOA)
      rcd=rcd+nf_put_var_double(nc_id,flx_bnd_dwn_dff_id,flx_bnd_dwn_dff)
      rcd=rcd+nf_put_var_double(nc_id,flx_bnd_dwn_dff_sfc_id,flx_bnd_dwn_dff_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_bnd_dwn_drc_id,flx_bnd_dwn_drc)
      rcd=rcd+nf_put_var_double(nc_id,flx_bnd_dwn_drc_sfc_id,flx_bnd_dwn_drc_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_bnd_dwn_id,flx_bnd_dwn)
      rcd=rcd+nf_put_var_double(nc_id,flx_bnd_dwn_sfc_id,flx_bnd_dwn_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_bnd_up_TOA_id,flx_bnd_up_TOA)
      rcd=rcd+nf_put_var_double(nc_id,flx_bnd_up_id,flx_bnd_up)
      rcd=rcd+nf_put_var_double(nc_id,flx_bnd_up_sfc_id,flx_bnd_up_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_vsb_dwn_TOA_id,flx_vsb_dwn_TOA)
      rcd=rcd+nf_put_var_double(nc_id,flx_vsb_dwn_dff_sfc_id,flx_vsb_dwn_dff_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_vsb_dwn_drc_sfc_id,flx_vsb_dwn_drc_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_vsb_dwn_sfc_id,flx_vsb_dwn_sfc)
      rcd=rcd+nf_put_var_double(nc_id,flx_vsb_up_TOA_id,flx_vsb_up_TOA)
      rcd=rcd+nf_put_var_double(nc_id,mpc_H2O_id,mpc_H2O)
      rcd=rcd+nf_put_var_double(nc_id,mpc_O3_DU_id,mpc_O3_DU)
      rcd=rcd+nf_put_var_double(nc_id,mpc_O3_id,mpc_O3)
      rcd=rcd+nf_put_var_double(nc_id,odxc_CO2_id,odxc_CO2)
      rcd=rcd+nf_put_var_double(nc_id,odxc_H2O_id,odxc_H2O)
      rcd=rcd+nf_put_var_double(nc_id,odxc_O2_id,odxc_O2)
      rcd=rcd+nf_put_var_double(nc_id,odxc_O3_id,odxc_O3)
      rcd=rcd+nf_put_var_double(nc_id,odxc_Ray_id,odxc_Ray)
      rcd=rcd+nf_put_var_double(nc_id,odxc_aer_id,odxc_aer)
      rcd=rcd+nf_put_var_double(nc_id,odxc_ice_id,odxc_ice)
      rcd=rcd+nf_put_var_double(nc_id,odxc_lqd_id,odxc_lqd)
      rcd=rcd+nf_put_var_double(nc_id,odxc_ttl_id,odxc_ttl)
      rcd=rcd+nf_put_var_double(nc_id,odxl_CO2_id,odxl_CO2)
      rcd=rcd+nf_put_var_double(nc_id,odxl_H2O_id,odxl_H2O)
      rcd=rcd+nf_put_var_double(nc_id,odxl_O2_id,odxl_O2)
      rcd=rcd+nf_put_var_double(nc_id,odxl_O3_id,odxl_O3)
      rcd=rcd+nf_put_var_double(nc_id,odxl_Ray_id,odxl_Ray)
      rcd=rcd+nf_put_var_double(nc_id,odxl_aer_id,odxl_aer)
      rcd=rcd+nf_put_var_double(nc_id,odxl_ice_id,odxl_ice)
      rcd=rcd+nf_put_var_double(nc_id,odxl_lqd_id,odxl_lqd)
      rcd=rcd+nf_put_var_double(nc_id,odxl_ttl_id,odxl_ttl)
      rcd=rcd+nf_put_var_double(nc_id,wvl_ctr_id,wvl_ctr)
      rcd=rcd+nf_put_var_double(nc_id,wvl_dlt_id,wvl_dlt)
      rcd=rcd+nf_put_var_double(nc_id,wvl_max_id,wvl_max)
      rcd=rcd+nf_put_var_double(nc_id,wvl_min_id,wvl_min)
      rcd=rcd+nf_put_var_double(nc_id,wvn_ctr_id,wvn_ctr)
      rcd=rcd+nf_put_var_double(nc_id,wvn_dlt_id,wvn_dlt)
      rcd=rcd+nf_put_var_double(nc_id,wvn_id,wvn)
      rcd=rcd+nf_put_var_double(nc_id,wvn_max_id,wvn_max)
      rcd=rcd+nf_put_var_double(nc_id,wvn_min_id,wvn_min)

      rcd=rcd+nf_close(nc_id)
      write(6,'(2a)') 'Added SRB results to ',fl_out
      if (rcd.ne.NF_NOERR) write (6,'(a,a,i4,a)') 'netcdf()',': ERROR rcd = ',rcd,' on exit'
#endif /* not CRM_SRB */

      return
      end                       ! end netcdf()


      subroutine nc_err_exit(rcd,err_msg_sng) 3
c     Routine to print netCDF error message, routine name, and exit
      implicit none
c     Commons
#include <netcdf.inc>
c     Local Workspace
      character*(*) err_msg_sng ! Message to print before exiting
      integer rcd               ! Return code
      integer err_msg_sng_len   ! Length of custom message

c     Main Code
      err_msg_sng_len=len(err_msg_sng)
      write (6,'(a,a2,a)') err_msg_sng(1:err_msg_sng_len),', ',nf_strerror(rcd)
      stop 
      end                       ! end nc_err_exit()