Method "gom" HOW IT IS SETUP =============== Each object, "salinity" for example, can span many netcdf files. And since any given netcdf file has no knowledge of what's going on in any other netcdf file, some other bit of information must be present in order to construct an object. We do this by having the level 0 information for each object come out of a header file that's unique for each object. For our salinity object, it looks like # g_start_date = YYMMDD Gregorian start date # g_stop_date = YYMMDD Gregorian stop date # # j_start_date = start time in decimal days since Jan 1, 1900 00:00 GMT # j_stop_date = stop time in decimal days since Jan 1, 1900 00:00 GMT # File G_Start_Date G_Stop_Date J_Start_Date J_Stop_Date Mooring Lat Lon Depth 3391ats-a1h.cdf 891205 900327 32845.791667 32957.416667 3391 42.376835 -70.782669 5.000000 3392ats-a1h.cdf 891205 900327 32845.791667 32957.416667 3392 42.376835 -70.783165 22.000000 3401-a1h.cdf 900328 900517 32958.875000 33008.000000 3401 42.376835 -70.783836 33.000000 3411sc-a1h.cdf 900328 900710 32958.540370 33062.498704 3411 42.376835 -70.782669 5.000000 . . . [etc.] This allows us to define as jgofs variables certain quantities that are not netcdf variables, such as "mooring", which is present in each netcdf file, but only as a global attribute. When we do a level 0 read, we read in not only the level 0 variables defined in the header file, but grab the name of the netcdf file to be used for the level 1 read. Since the data that we have is time series data, the level 1 variables are "time", and then whatever variables we are concerned with, whether it is "salinity", "temperature", or whatever. This is determined by the ".objects" file. For salinity, the particular entry looks like: salinity=gom(/usr/local/home/users/jgofs/data/gom_moor/hourly-salinity.hdr,g_start_date,g_stop_date,j_start_date,j_stop_date,mooring,lat,lon,depth,time,salinity) OPTIONSERVER=//sakhalin.er.usgs.gov/jg/matopt In our particular netcdf files, time actually consists of two variables, "time" and "time2". "time" is julian days, while "time2" is milliseconds from the start of the day. The *jgofs* variable "time" is the combination of the two. We wanted to use MATLAB to serve up our plots, hence the "OPTIONSERVER" addition at the end of the entry for each object.