[gradsusr] reading NCAR .nc files
Alan Robock
robock at envsci.rutgers.edu
Thu Oct 20 18:22:53 EDT 2011
Dear Chuck,
It worked. Thanks very much. My ddf file was simply:
dset ^mycase.5.cam2.h1.1902-01-01-00000.nc
options 365_day_calendar
tdef time 365 linear 00z1jan1902 1dy
Alan
[On sabbatical for current academic year, and currently at NCAR.
The best way to contact me is by email, robock at envsci.rutgers.edu, or
at 732-881-1610 (cell) or 303-497-1399 (work).]
Alan Robock, Professor II (Distinguished Professor)
Editor, Reviews of Geophysics
Director, Meteorology Undergraduate Program
Associate Director, Center for Environmental Prediction
Department of Environmental Sciences Phone: +1-732-932-9800 x6222
Rutgers University Fax: +1-732-932-8644
14 College Farm Road E-mail: robock at envsci.rutgers.edu
New Brunswick, NJ 08901-8551 USA http://envsci.rutgers.edu/~robock
On 10/20/2011 3:26 PM, Charles Seman wrote:
> Alan,
>
> In experience with GFDL NOLEAP calendar model output files, it was found
> that a simple data descriptor file for use with "xdfopen" worked. To
> start, you could try a data descriptor file with a name like
> mycase.5.cam2.h1.1902-01-01-00000.xdf with the following 3 lines in it:
> ---
> dset ^mycase.5.cam2.h1.1902-01-01-00000.nc
> options 365_day_calendar
> tdef time "nt" linear "t0" "dt"
> ---
> where here nt=365 (taken from the ncdump output below), "t0" would be a
> GrADS format date corresponding to t=1, and "dt" would be the time
> increment between time-steps. Finding "t0" is the most difficult part
> (using the "days since ..." attribute). For a one-time calculation, you
> could dump out the values of the time variable and do a conversion by
> hand. (We have a set of C-Shell scripts to automate the construction of
> the XDF data descriptor file. Please let me know if you would be
> interested in getting these scripts.)
>
> Then in GrADS:
> xdfopen mycase.5.cam2.h1.1902-01-01-00000.xdf
>
> Please let me know if this does not work (there are a number of
> different coordinate systems in your file, so you may not be able to
> view all variables at all levels with the simple xdfopen data descriptor
> file shown above).
>
> Hope this helps,
> Chuck
>
> Alan Robock wrote:
>> Dear All,
>>
>> I have run an NCAR GCM, and want to read the output with GrADS. When I
>> tried, I got:
>>
>> Config: v2.0.a9 little-endian readline printim grib2 netcdf hdf4-sds
>> hdf5 opendap-grids,stn geotiff shapefile
>> Issue 'q config' command for more detailed configuration information
>> Landscape mode? ('n' for portrait):
>> GX Package Initialization: Size = 11 8.5
>> ga-> sdfopen mycase.5.cam2.h1.1902-01-01-00000.nc
>> Scanning self-describing file: mycase.5.cam2.h1.1902-01-01-00000.nc
>> SDF Error: 365 day calendars are no longer supported by sdfopen.
>> To open this file with GrADS, use a descriptor file with
>> a complete TDEF entry and OPTIONS 365_day_calendar.
>> Documentation is at http://iges.org/grads/gadoc/SDFdescriptorfile.html
>>
>> I can try to figure out how detailed a data descriptor file to write on
>> my own, but if someone has already done this, could you send it to me?
>> I want to find out if I need only TDEF and OPTIONS, or do I need to make
>> it complete with all the dimensions and variables.
>>
>> Also, once I create the .ddf file, do I use sdfopen, xdfopen, or open?
>>
>> Thanks.
>>
>> ncdump gives me:
>>
>> /ptmp/robock/archive/mycase.5/atm/hist|32> ncdump
>> mycase.5.cam2.h1.1902-01-01-00000.nc
>> netcdf mycase.5.cam2.h1.1902-01-01-00000 { // format variant: 64bit
>> dimensions:
>> lat = 192 ;
>> lon = 288 ;
>> slat = 191 ;
>> slon = 288 ;
>> lev = 26 ;
>> ilev = 27 ;
>> isccp_prs = 7 ;
>> isccp_tau = 7 ;
>> isccp_prstau = 49 ;
>> time = UNLIMITED ; // (365 currently)
>> tbnd = 2 ;
>> chars = 8 ;
>> variables:
>> double P0 ;
>> P0:long_name = "reference pressure" ;
>> P0:units = "Pa" ;
>> double lat(lat) ;
>> lat:long_name = "latitude" ;
>> lat:units = "degrees_north" ;
>> double lon(lon) ;
>> lon:long_name = "longitude" ;
>> lon:units = "degrees_east" ;
>> double slat(slat) ;
>> slat:long_name = "staggered latitude" ;
>> slat:units = "degrees_north" ;
>> double slon(slon) ;
>> slon:long_name = "staggered longitude" ;
>> slon:units = "degrees_east" ;
>> double w_stag(slat) ;
>> w_stag:long_name = "staggered latitude weights" ;
>> double lev(lev) ;
>> lev:long_name = "hybrid level at midpoints (1000*(A+B))" ;
>> lev:units = "level" ;
>> lev:positive = "down" ;
>> lev:standard_name =
>> "atmosphere_hybrid_sigma_pressure_coordinate" ;
>> lev:formula_terms = "a: hyam b: hybm p0: P0 ps: PS" ;
>> double ilev(ilev) ;
>> ilev:long_name = "hybrid level at interfaces
>> (1000*(A+B))" ;
>> ilev:units = "level" ;
>> ilev:positive = "down" ;
>> ilev:standard_name =
>> "atmosphere_hybrid_sigma_pressure_coordinate" ;
>> ilev:formula_terms = "a: hyai b: hybi p0: P0 ps: PS" ;
>> double isccp_prs(isccp_prs) ;
>> isccp_prs:long_name = "Mean ISCCP pressure" ;
>> isccp_prs:units = "mb" ;
>> isccp_prs:isccp_prs_bnds = 0., 180., 310., 440., 560.,
>> 680., 800., 1000. ;
>> double isccp_tau(isccp_tau) ;
>> isccp_tau:long_name = "Mean ISCCP optical depth" ;
>> isccp_tau:units = "unitless" ;
>> isccp_tau:isccp_tau_bnds = 0., 0.3, 1.3, 3.6, 9.4, 23.,
>> 60., 379. ;
>> double isccp_prstau(isccp_prstau) ;
>> isccp_prstau:long_name = "Mean pressure (mb).mean
>> optical depth (unitless)/1000" ;
>> isccp_prstau:units = "mixed" ;
>> double time(time) ;
>> time:long_name = "time" ;
>> time:units = "days since 1900-01-01 00:00:00" ;
>> time:calendar = "noleap" ;
>> time:bounds = "time_bnds" ;
>> double time_bnds(time, tbnd) ;
>> time_bnds:long_name = "time interval endpoints" ;
>> char date_written(time, chars) ;
>> char time_written(time, chars) ;
>> int ntrm ;
>> ntrm:long_name = "spectral truncation parameter M" ;
>> int ntrn ;
>> ntrn:long_name = "spectral truncation parameter N" ;
>> int ntrk ;
>> ntrk:long_name = "spectral truncation parameter K" ;
>> int ndbase ;
>> ndbase:long_name = "base day" ;
>> int nsbase ;
>> nsbase:long_name = "seconds of base day" ;
>> int nbdate ;
>> nbdate:long_name = "base date (YYYYMMDD)" ;
>> int nbsec ;
>> nbsec:long_name = "seconds of base date" ;
>> int mdt ;
>> mdt:long_name = "timestep" ;
>> mdt:units = "s" ;
>> int nlon(lat) ;
>> nlon:long_name = "number of longitudes" ;
>> int wnummax(lat) ;
>> wnummax:long_name = "cutoff Fourier wavenumber" ;
>> double hyai(ilev) ;
>> hyai:long_name = "hybrid A coefficient at layer
>> interfaces" ;
>> double hybi(ilev) ;
>> hybi:long_name = "hybrid B coefficient at layer
>> interfaces" ;
>> double hyam(lev) ;
>> hyam:long_name = "hybrid A coefficient at layer
>> midpoints" ;
>> double hybm(lev) ;
>> hybm:long_name = "hybrid B coefficient at layer
>> midpoints" ;
>> double gw(lat) ;
>> gw:long_name = "gauss weights" ;
>> int ndcur(time) ;
>> ndcur:long_name = "current day (from base day)" ;
>> int nscur(time) ;
>> nscur:long_name = "current seconds of current day" ;
>> int date(time) ;
>> date:long_name = "current date (YYYYMMDD)" ;
>> double co2vmr(time) ;
>> co2vmr:long_name = "co2 volume mixing ratio" ;
>> double ch4vmr(time) ;
>> ch4vmr:long_name = "ch4 volume mixing ratio" ;
>> double n2ovmr(time) ;
>> n2ovmr:long_name = "n2o volume mixing ratio" ;
>> double f11vmr(time) ;
>> f11vmr:long_name = "f11 volume mixing ratio" ;
>> double f12vmr(time) ;
>> f12vmr:long_name = "f12 volume mixing ratio" ;
>> double sol_tsi(time) ;
>> sol_tsi:long_name = "total solar irradiance" ;
>> sol_tsi:units = "W/m2" ;
>> int datesec(time) ;
>> datesec:long_name = "current seconds of current date" ;
>> int nsteph(time) ;
>> nsteph:long_name = "current timestep" ;
>> float MSKtem(time, lat, lon) ;
>> MSKtem:units = "unitless" ;
>> MSKtem:long_name = "TEM mask" ;
>> MSKtem:cell_methods = "time: mean" ;
>> float PRECC(time, lat, lon) ;
>> PRECC:units = "m/s" ;
>> PRECC:long_name = "Convective precipitation rate (liq +
>> ice)" ;
>> PRECC:cell_methods = "time: mean" ;
>> float PRECL(time, lat, lon) ;
>> PRECL:units = "m/s" ;
>> PRECL:long_name = "Large-scale (stable) precipitation
>> rate (liq + ice)" ;
>> PRECL:cell_methods = "time: mean" ;
>> float PSL(time, lat, lon) ;
>> PSL:units = "Pa" ;
>> PSL:long_name = "Sea level pressure" ;
>> PSL:cell_methods = "time: mean" ;
>> float TREFHT(time, lat, lon) ;
>> TREFHT:units = "K" ;
>> TREFHT:long_name = "Reference height temperature" ;
>> TREFHT:cell_methods = "time: mean" ;
>> float TREFHTMN(time, lat, lon) ;
>> TREFHTMN:units = "K" ;
>> TREFHTMN:long_name = "Minimum reference height
>> temperature over output period" ;
>> TREFHTMN:cell_methods = "time: minimum" ;
>> float TREFHTMX(time, lat, lon) ;
>> TREFHTMX:units = "K" ;
>> TREFHTMX:long_name = "Maximum reference height
>> temperature over output period" ;
>> TREFHTMX:cell_methods = "time: maximum" ;
>> float UV2d(time, lat, lon) ;
>> UV2d:units = "M2/S2" ;
>> UV2d:long_name = "Meridional Flux of Zonal Momentum: 2D
>> prj of zon. mean" ;
>> UV2d:cell_methods = "time: mean" ;
>> float UW2d(time, lat, lon) ;
>> UW2d:units = "M2/S2" ;
>> UW2d:long_name = "Vertical Flux of Zonal Momentum; 2D
>> prj of zon. mean" ;
>> UW2d:cell_methods = "time: mean" ;
>> float VTH2d(time, lat, lon) ;
>> VTH2d:units = "MK/S" ;
>> VTH2d:long_name = "Meridional Heat Flux: 2D prj of zon.
>> mean" ;
>> VTH2d:cell_methods = "time: mean" ;
>> float WTH2d(time, lat, lon) ;
>> WTH2d:units = "MK/S" ;
>> WTH2d:long_name = "Vertical Heat Flux: 2D prj of zon.
>> mean" ;
>> WTH2d:cell_methods = "time: mean" ;
>>
>> // global attributes:
>> :Conventions = "CF-1.0" ;
>> :source = "CAM" ;
>> :case = "mycase.5" ;
>> :title = "UNSET" ;
>> :logname = "robock" ;
>> :host = "be0501en.ucar.ed" ;
>> :Version = "$Name$" ;
>> :revision_Id = "$Id$" ;
>> :initial_file =
>> "b40.lgm21ka.1deg.003.cam2.i.1900-01-01-00000.nc" ;
>> :topography_file =
>> "/glade/home/robock/mycase.5/SourceMods/src.cam/topo_lgm21ka_remap_09x25.mod.110106.nc"
>> ;
>> data:
>> ...
>>
>>
More information about the gradsusr
mailing list