/[MITgcm]/MITgcm/utils/matlab/nc_add.m
ViewVC logotype

Contents of /MITgcm/utils/matlab/nc_add.m

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


Revision 1.2 - (show annotations) (download)
Sat Feb 17 23:49:43 2007 UTC (14 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint58w_post, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint65, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint58x_post, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint59, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint58y_post, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y, HEAD
Changes since 1.1: +2 -1 lines
add $Header:  $ and $Name:  & (for CVS)

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 % $Name: $
44
45 if strcmp(shortName,grid{1})
46 nc(shortName) = length(var);
47 end
48
49 nc{shortName} = grid;
50 %nc{shortName}.uniquename = longName;
51 nc{shortName}.long_name = longName;
52 nc{shortName}.units = units;
53 nc{shortName}.missing_value = ncdouble(NaN);
54
55 nvargs=nargin-6;
56 rcn=0;
57 if nvargs==1
58 rcn=varargin{1};
59 end
60
61 if ~isempty(var)
62 if prod(size(var))==1
63 nc{shortName}(rcn) = var;
64 else
65 if rcn ~= 0
66 nc{shortName}(rcn,:) = permute(var,ndims(var):-1:1);
67 else
68 nc{shortName}(:) = permute(var,ndims(var):-1:1);
69 end
70 end
71 end
72

  ViewVC Help
Powered by ViewVC 1.1.22