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()