2005/04/20: The 2.0.12 release had a bug in nc_varget.m, having to do with the way 1D variables were treated. Looks like I changed the code somewhere after the 2.0.11 release and forgot to document why. Anyway, that section is now back to the 2.0.11 code. Tagged and released snctools-2_0_13. Oh, for cryin' out loud, this is stupid. Ok, since it really doesn't matter, let's delete the snctools-2_0_12 ansd snctools-2_0_13 tags and re-release at snctools-2_0_12. 2005/04/15: The tag for yesterday should have been snctools-2_0_12. Sigh. Re-released with the proper tag. 2005/04/14: Bug in nc_varget. When the datatype is char, trying to set the fill values to NaN results in warnings. And trying to use fill_value_inds = find ( values == fill_value ); does not work with character datatype anyway. The documentation already said that fill values were not being honored for character datatypes, so by eliminating this code for the character datatype, I'm only doing what I said I was doing in the first place. Tagged and released SNCTOOLS-2.0.11. 2005/04/09: Testing of nc_addhist is more systematic. Added better type checking for nc_addhist.m 2005/04/06: Test suite for nc_native_varget.m Test suite for nc_datatype_string.m Added stricter type checking for nc_datatype_string.m. Skipping scaling and fill values steps for text data in nc_native_varget.m, as trying to do this causes matlab to complain mightily. Tagged and released snctools-2.0.11 2005/04/04: Test suite for nc_varrename.m Test suite for nc_varsize.m Removed nc_varget_e.m because it really doesn't add much. 2005/04/01: Test suite for nc_isunlimitedvar.m Test suite for nc_isvar.m 2005/03/31: Test suite for nc_iscoordvar.m 2005/03/30: Test suite for nc_getvarinfo.m, nc_info.m 2005/03/28: Test suite for nc_getlast.m 2005/03/27: Test suite for nc_getdiminfo.m 2005/03/25: Test suite for nc_getbuffer.m 2005/03/22: Minor fixes to nc_getall, nc2mat. Test suite for nc_getall. 2005/03/21: Added nc_add_dimension m-file as well as tests. Added nc_dump testing. Changes to nc_dump.m... The %x specifier was misleading, as it displayed in hex. Now returns a status value. No longer prints out global attribute header if no global attributes. No longer prints out variable header if no variables. No longer prints out dimension header if no dimensions. 2005/03/17: Fixed a problem with an incorrect return status in nc_varget.m Ditto with nc_native_varget.m. These two functions need to be merged. Removed nc_write_ts_buffer_endoffset.m from the distribution. Rewrote nc_native_varget so that it uses nc_varget directly and then just undoes the scaling, fill values, and casting. Added a new test for scaling in test_nc_varput.m Tagged and released snctools-2.0.10. 2005/03/16: A long overdue fix for nc_info. The open statement wasn't handling errors correctly. A major bugfix with nc_varput.m Scaling was broken. Since nc_getvarnames went away, nc_addnewrecs needed a new way to check for variables actually present in the file. Added ability to check attributes in nc_diff with '-attributes' argument. 2005/03/14: Added nc_varget_e.m m-file. 2005/03/10: Subsumed nc_get_ts_buffer into nc_getbuffer. Removed nc_get_ts_buffer.m Removed nc_get_file_last.m because nc_getbuffer effectively does all the work. Removed nc_varnames.m because of the possibility of perfectly legal netcdf variable names being illegal under matlab. Other functions such as nc_info, nc_getvarinfo, and nc_isvar can pretty much do the same thing. Added new m-file, nc_getdiminfo. Uses code from nc_info.m. Massive rewrite to nc_iscoordvar, makes use of nc_getvarinfo now. Removed nc_istsvar.m because nc_isunlimitedvar.m does the same thing and is much more appropriately named. 2005/03/08: Crap, I managed to make nc_addvar incompatible with nc_info. Fixed nc_addvar. 2005/03/07: Changed test for nc_varput so that file creation is handled via matlab and not via shelling out to ncgen. Added test for nc_diff.m. Turned out that nc_diff.m was very much broken, so I tagged and released snctools-2.0.9. 2005/03/06: Tests for nc_archive_buffer.m Very minor fix to nc_addnewrecs.m, not sure how it even crept in. 2005/03/04: Tests for nc_attget.m. One minor fix to nc_attget.m Removed nc_rename.m nc_varrename.m: cdfid ==> ncid nc_isvar.m: cdfid ==> ncid, mistake in return logic when the answer is no. nc_addnewrecs was not checking along the right dimension for the right sizes. 2005/03/03: Rewrite of nc_add_recs.m. Got rid of record_variable name input. Added new function nc_addnewrecs.m. Basically this just cleaned up nc_archive_buffer.m and is a somewhat more descriptive name. Rewired nc_archive_buffer to do nothing but call nc_addnewrecs.m Cleaned up the status checks in nc_attget.m. Added check for unrecognized data type. Added the banner for all m-files. Surrounds the CVS info and author field. 2005/03/02: Better error messages for nc_addvar. I also added checks for required fields. Test suite now includes test of nc_addvar. nc_add_recs changed to netcdf-3 api. Cleaned up the help section in nc_istsvar.m 2005/03/01: nc_attget now returns a -2 if it cannot find the requested attribute. And it no longer prints an error message because there are cases where this is ok. nc_addhist now appends rather than prepends. nc_varput had not been handling case of character datasets. 2005/02/28: I was mixing exceptions with returning status in nc2mat.m. Now I just generate status. Test suite now includes nc2mat test. 2005/02/26: nc_varput.m: Starting unit testing. A flaw was found in the put_var1 case if both start and count were given, but only one was improper. The routine might have been failing and returning early, but the return status was sometimes not being correctly set. Now every return statement is preceeded by setting the return status to -1. The final return status (if successful) was not 0 as advertised, it was 1. Now it is correctly set back to 0. Tagged and released snctools-2_0_8. 2005/02/25: Added Name CVS tag to all routines. Replaced all remaining calls of ncmex to mexnc. Tagged and released snctools-2_0_7 2005/02/22: Previously, adding record data to a netcdf file required that the record variable and unlimited dimension have the same name. That is not the case in ROMS, so nc_add_recs.m and nc_archive_buffer.m were altered to allow for this. Removed all ncmex calls from nc_write_ts_buffer_endoffset.m. Tagged and released snctools-2_0_6 2005/02/10: Removed all ncmex calls from nc_varsize. Now it relies on results from nc_getvarinfo. 2005/01/31: Added nc_isunlimitedvar.m m-file. Updated nc_varrename.m with mexnc(netcdf-3) routines 2005/01/18: Added IsUnlimitedVariable flag to nc_getvarinfo.m Fixed bug introduced by 2005/01/05 change to nc_varget.m There is no NC_UCHAR or NC_SCHAR. And NC_CHAR variables were causing problems in relation to casting. 2005/01/05: Typo in nc_varput check for existance of add_offset and scale_factor. There was a problem with the way fill values were being handled with datatypes other than double or single. NaN just isn't supported in those datatypes. So if the output datatype is not double or single, this just can't be supported. The bug is fixed in the cases where the data is cast into double or single precision, though. 2005/01/05: More changes needed to nc_varget to weave together casting and scaling. Tagged and released snctools-2_0_2. 2005/01/04: nc_varget changed to allow optional last argument that would control whether or not the data is automatically cast to double precision. 2004/12/31: A successful nc_varget retrieval was supposed to return 0 if successful. It was returning 1 instead. Changed back to 0. 2004/12/16: Retrieval of NC_BYTE data requires either using schar or uchar as a destination datatype. I use schar. This is sort of an issue for now, it should vanish when NetCDF 4.0 comes around. 2004/12/15: Added nc_addhist.m into the mix. 2004/12/13: nc_attput, nc_varput, nc_attget, nc_varget modified to take advantage of MexNC(netcdf-3) API. 2004/11/27: nc_attput, nc_varput, nc_attget, nc_varget, nc_getvarinfo all checked for a return status of -1. We really need to check for any status less than 0. 2004/11/18: nc_varget was improperly checking for improper data extents. (!) CVS Id keywords added to the headers of all m-files. 2004/11/17: nc_info, nc_getvarinfo, nc_dump Changed nc_getvarinfo "DataSetAttribute" to just "Attribute". Also have to explicitely set Attribute to [] in the case where there are no dataset attributes. Otherwise we have possibly unequal structure definitions if other datasets do have attributes. In nc_info, change Attributes to Attribute. This way it is consistent with nc_getvarinfo. Changed nc_dump to reflect DataSetAttributes/Attributes changes. 2004/11/17: nc_info, nc_dump If mexcdf can't even open the file from nc_info, then nc_info should return []. nc_dump now checks for this. 2004/11/11: nc_info, nc_getvarinfo, nc_get_ts_buffer nc_get_ts_buffer depended upon a routine outside this distribution, so it had to be rewritten to use nc_info and thus nc_getvarinfo. It was necessary to modify these two routines to get dimid information into both the DataSet structures and the Dimension structures. 2004/11/05: nc_info Had to set the global attribute structure to [] to begin with. That handles the case of no global attributes at all. 2004/10/23 16:45:18: nc_info Added "Record_Dimension" boolean to Dimension fields. 2004/10/18: nc_getvarinfo If a variable is a singleton, then set the Dimension field to [] and the Size field to 1. Otherwise these fields don't get set at all, and nc_info trips over that. 2004/10/20: nc_getvarinfo.m function name had a "2" in it from a debugging session. 2004/10/15: nc_getvarinfo Had the function name spelled wrong. 2004/10/14 20:55:18: nc_info Removed all duplicated code. Now relies on repeated calls to nc_getvarinfo and nc_get_attribute_struct. 2004/10/14 20:55:52: nc_getvarinfo Brought into sync with nc_info.m