/[MITgcm]/MITgcm_contrib/enderton/Diagnostics/DiagUtility/nc_add.m
ViewVC logotype

Annotation of /MITgcm_contrib/enderton/Diagnostics/DiagUtility/nc_add.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Mon Jan 31 15:43:29 2005 UTC (20 years, 5 months ago) by enderton
Branch: MAIN
CVS Tags: HEAD
 o Initial check in.

1 enderton 1.1 function [] = nc_add(nc,shortName,longName,units,grid,var,varargin)
2     % nc_add(nc,shortName,longName,units,grid,var)
3     % nc_add(nc,shortName,longName,units,grid,var,record_number)
4     %
5     % Adds variables (with data) to a NETCDF file with handle "nc"
6     % nc is the netcdf file handle
7     % shortName is the name used to refer to the variable 'theta'
8     % longName is a more descriptive name e.g. 'Potential temperature'
9     % units is the units of the variable e.g. 'Degrees Celsius'
10     % grid is a collection cell array of dimensino names e.g. {'Y' 'X'}
11     % var is the scalar/vector/array of data to be written
12     % record_number is the record slot to write when there is a "recordable"
13     % dimension in the grid specification
14     %
15     % If "shortName" is identical to "grid" then the variable is written to the
16     % netcdf file as dimension data and can subsequently be used in other grid
17     % specifications. The size of the dimension is the length of the vector of
18     % data. To create a recordable dimension, supply an empty vector, [].
19     %
20     % e.g.
21     % >> nc=netcdf('test.nc','clobber');
22     %
23     % Add a dimension (use grid==shortName)
24     % >> nc_add(nc,'lon','Longitude','Degrees East','lon',xc)
25     % >> nc_add(nc,'lat','Latitude','Degrees North','lat',yc)
26     %
27     % Add a record dimension (use grid==shortName and no values)
28     % >> nc_add(nc,'time','Time','Years','time',[])
29     %
30     % Add a variable on a grid
31     % >> nc_add(nc,'H','Orography','m',{'lat' 'lon'},H)
32     %
33     % Add a variable on a grid with recordable dimension
34     % >> nc_add(nc,'time','Time','Years','time',1978,1)
35     % >> nc_add(nc,'time','Time','Years','time',1978,2)
36     % >> nc_add(nc,'theta','Pot. Temp','Degrees K',{'time' 'lat' 'lon'},theta,1)
37     % >> nc_add(nc,'theta','Pot. Temp','Degrees K',{'time' 'lat' 'lon'},theta,2)
38     %
39     % >> close(nc);
40     %
41     % Written by adcroft@mit.edu, 2004.
42     % $Header: /u/gcmpack/MITgcm/utils/matlab/nc_add.m,v 1.1 2004/06/04 15:50:52 adcroft Exp $
43    
44     if strcmp(shortName,grid{1})
45     nc(shortName) = length(var);
46     end
47    
48     nc{shortName} = grid;
49     %nc{shortName}.uniquename = longName;
50     nc{shortName}.long_name = longName;
51     nc{shortName}.units = units;
52     nc{shortName}.missing_value = ncdouble(NaN);
53    
54     nvargs=nargin-6;
55     rcn=0;
56     if nvargs==1
57     rcn=varargin{1};
58     end
59    
60     if ~isempty(var)
61     if prod(size(var))==1
62     nc{shortName}(rcn) = var;
63     else
64     if rcn ~= 0
65     nc{shortName}(rcn,:) = permute(var,ndims(var):-1:1);
66     else
67     nc{shortName}(:) = permute(var,ndims(var):-1:1);
68     end
69     end
70     end
71    

  ViewVC Help
Powered by ViewVC 1.1.22