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 |
% e.g. |
6 |
% >> nc=netcdf('test.nc','clobber'); |
7 |
% |
8 |
% Add a dimension (use grid==shortName) |
9 |
% >> nc_add(nc,'X','Longitude','Degrees East','X',xc) |
10 |
% >> nc_add(nc,'Y','Latitude','Degrees North','Y',yc) |
11 |
% |
12 |
% Add a record dimension (use grid==shortName and no values) |
13 |
% >> nc_add(nc,'T','Time','Years','T',[]) |
14 |
% |
15 |
% Add a variable on a grid |
16 |
% >> nc_add(nc,'H','Orography','m',{'Y' 'X'},H) |
17 |
% |
18 |
% Add a variable on a grid with recordable dimension |
19 |
% >> nc_add(nc,'time','Time','Years','T',1978,1) |
20 |
% >> nc_add(nc,'theta','Pot. Temp','Degrees K',{'T' 'Y' 'X'},theta,1) |
21 |
% >> nc_add(nc,'time','Time','Years','T',1978,2) |
22 |
% >> nc_add(nc,'theta','Pot. Temp','Degrees K',{'T' 'Y' 'X'},theta,2) |
23 |
% |
24 |
% >> close(nc); |
25 |
% |
26 |
% $Header: /u/gcmpack/MITgcm_contrib/mitgcm_tools/nc_add.m,v 1.2 2004/06/02 19:45:46 jmc Exp $ |
27 |
|
28 |
if strcmp(shortName,grid{1}) |
29 |
nc(shortName) = length(var); |
30 |
end |
31 |
|
32 |
nc{shortName} = grid; |
33 |
%nc{shortName}.uniquename = longName; |
34 |
nc{shortName}.long_name = longName; |
35 |
nc{shortName}.units = units; |
36 |
nc{shortName}.missing_value = ncdouble(NaN); |
37 |
|
38 |
nvargs=nargin-6; |
39 |
rcn=0; |
40 |
if nvargs==1 |
41 |
rcn=varargin{1}; |
42 |
end |
43 |
|
44 |
if ~isempty(var) |
45 |
if prod(size(var))==1 |
46 |
nc{shortName}(rcn) = var; |
47 |
else |
48 |
if rcn ~= 0 |
49 |
nc{shortName}(rcn,:) = permute(var,ndims(var):-1:1); |
50 |
else |
51 |
nc{shortName}(:) = permute(var,ndims(var):-1:1); |
52 |
end |
53 |
end |
54 |
end |
55 |
|