ladcp2cdf.m
author A.M. Thurnherr <athurnherr@yahoo.com>
Mon, 23 Feb 2015 09:19:46 +0000
changeset 15 3746197831db
parent 11 d71acdec556a
child 17 f5a63c03d9c8
permissions -rw-r--r--
IX11beta for CLIVAR P16
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     1
function [] = ladcp2cdf(fname,dr_struct,da,p,ps,f,att);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     2
% function [] = ladcp2cdf(fname,dr_struct,da,p,ps,f,att);
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     3
%
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     4
% function to save LADCP data into a netcdf file for MatLab version 2012a
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     5
%
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     6
% input  :	fname		- output filename
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     7
%			dr_struct	- main inversion results (velocity profiles)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     8
%			da..att	- arbitrary metadata structures
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
     9
%
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    10
% Created By:   Diana Cardoso, Bedford Institute of Oceangraphy
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    11
%               Diana.Cardoso@dfo-mpo.gc.ca
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    12
% Description:  Based on LDEO software to Process LADCP, version IX.8,
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    13
%               script ladcp2cdf.m version 0.1	last change 08.03.2002. 
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    14
%               maintained by A.M. Thurnherr and downloaded from:
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    15
%       http://www.ldeo.columbia.edu/cgi-bin/ladcp-cgi-bin/hgwebdir.cgi
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    16
%       The function ladcp2cdf was changed to run with the the Matlab
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    17
%       version 2012, which now supports netcdf.
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    18
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    19
%======================================================================
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    20
%                    L A D C P 2 C D F . M 
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    21
%                    doc: Thu Aug 15 10:52:55 2013
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    22
%                    dlm: Wed Aug 28 12:31:16 2013
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    23
%                    (c) 2013 A.M. Thurnherr, from code contributed by D. Cardoso
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    24
%                    uE-Info: 99 0 NIL 0 0 72 0 2 8 NIL ofnI
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    25
%======================================================================
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    26
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    27
% NOTES:
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    28
%	- This version creates slightly different files than the original version
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    29
%	  created by Visbeck/Krahmann. In the original version, the contents of the
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    30
%	  dr structure end up as top-level variables and the contents of
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    31
%	  the da, p, ps, f and att structures end of as global attributes. In 
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    32
%	  the new version, the latter are saved as sub-structures, with _struct appended
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    33
%	  to the internal names to avoid conflicts.
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    34
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    35
% HISTORY:
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    36
%   Aug 15, 2013: - incorporated this code, supplied Diana Cardoso, into IX_10beta
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    37
%		  - modified doc in header
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    38
%		  - renamded struct variable to dr_struct
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    39
%		  - removed 'cd' in and out of results directory (pathnames work just fine)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    40
%		  - delete netcdfile before it is written to (old 'clobber' option)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    41
%		  - removed 'l' suffix from all dims
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    42
%		  - replaced yes/no logical vals by true/false
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    43
%		  - renamed substructures from st2..st6 to internal names (da,p,ps,f,att)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    44
%   Aug 28, 2013: - incorporated bug fix provided by Diana Cardoso to prevent lat,lon,name and 
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    45
%		    date to be stored 2cd in the nc file, which can make the code
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    46
%		    bomb if the length of any other var is 6 (or equal to the length of name?)
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    47
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    48
% check arguments
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    49
if nargin<2
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    50
  error('need two input arguments')
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    51
end
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    52
if ~isstruct(dr_struct)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    53
  error('second argument must be a dr structure')
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    54
end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    55
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    56
netcdfile = deblank(fname); %remove any blanks from string end
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    57
if exist(netcdfile,'file')
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    58
	delete(netcdfile)
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    59
end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    60
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    61
%Determine dimensions of variables
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    62
lbot = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    63
lz = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    64
ltim = 0;
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    65
lsadcp = 0;
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    66
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    67
if isfield(dr_struct,'z');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    68
  lz = length(getfield(dr_struct,'z'));
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    69
end  
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    70
if isfield(dr_struct,'tim');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    71
  ltim = length(getfield(dr_struct,'tim'));
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    72
end  
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    73
if isfield(dr_struct,'zbot');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    74
  lbot = length(getfield(dr_struct,'zbot'));
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    75
end  
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    76
if isfield(dr_struct,'z_sadcp');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    77
  lsadcp = length(getfield(dr_struct,'z_sadcp'));
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    78
end  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    79
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    80
% % define dimensions in netcdf file and standard variables
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    81
nccreate(netcdfile,'lat','Dimensions',{'lat' 1},'Datatype','single');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    82
nccreate(netcdfile,'lon','Dimensions',{'lon' 1},'Datatype','single');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    83
nccreate(netcdfile,'date','Dimensions',{'date' 6},'Datatype','int32');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    84
nccreate(netcdfile,'name','Dimensions',{'name' length(getfield(dr_struct,'name'))},'Datatype','char');
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    85
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    86
% store standard variables
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    87
ncwrite(netcdfile,'lat',dr_struct.lat);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    88
ncwrite(netcdfile,'lon',dr_struct.lon);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    89
ncwrite(netcdfile,'date',dr_struct.date);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    90
ncwrite(netcdfile,'name',dr_struct.name);
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    91
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    92
% parse fieldnames, define the proper variable and store it
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    93
fnames = fieldnames(dr_struct);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    94
nn=strncmp('name',fnames,6); nla=strncmp('lat',fnames,3); 	% find, name, lat,lon,date from fnames
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    95
nlo=strncmp('lon',fnames,3); nda=strncmp('date',fnames,4);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    96
ntot=[nn+nla+nlo+nda]; Ktot = logical(ntot);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    97
fnames(Ktot,:)=[];						% remove , name, lat,lon,date from fnames
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    98
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    99
for n=1:size(fnames,1)
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   100
  dummy = getfield(dr_struct,fnames{n});
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   101
  if length(dummy)==lz
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   102
    nccreate(netcdfile,fnames{n},'Dimensions',{fnames{n} fix(lz)},'Datatype','single');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   103
    ncwrite(netcdfile,fnames{n},dummy);
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   104
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   105
  if length(dummy)==ltim
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   106
    nccreate(netcdfile,fnames{n},'Dimensions',{fnames{n} fix(ltim)},'Datatype','single');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   107
    ncwrite(netcdfile,fnames{n},dummy);
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   108
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   109
  if length(dummy)==lbot
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   110
    nccreate(netcdfile,fnames{n},'Dimensions',{fnames{n} fix(lbot)},'Datatype','single');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   111
    ncwrite(netcdfile,fnames{n},dummy);
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   112
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   113
  if length(dummy)==lsadcp
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   114
    nccreate(netcdfile,fnames{n},'Dimensions',{fnames{n} fix(lsadcp)},'Datatype','single');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   115
    ncwrite(netcdfile,fnames{n},dummy);
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   116
  end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   117
end
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   118
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   119
add_struct(netcdfile,'da_struct',da)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   120
add_struct(netcdfile,'p_struct',p)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   121
add_struct(netcdfile,'ps_struct',ps)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   122
add_struct(netcdfile,'f_struct',f)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   123
add_struct(netcdfile,'att_struct',att)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   124
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   125
end % function
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   126
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   127
%----------------------------------------------------------------------
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   128
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   129
function [] = add_struct(ncf,snm,a)
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   130
  
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   131
   fnames = fieldnames(a);
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   132
   if isstruct(a)
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   133
      if ~isstruct(eval(['a.' fnames{1}])) % No SubStructure
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   134
	nccreate(ncf,snm,'Datatype','char');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   135
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   136
	for n = 1:size(fnames,1)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   137
		dummy = getfield(a,fnames{n});
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   138
	    	if size(dummy,1)==1
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   139
	       		if isstr(dummy)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   140
                		ncwriteatt(ncf,snm,fnames{n},dummy);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   141
	       		elseif islogical(dummy)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   142
		        	if dummy, dummy='true';
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   143
		               	else, 	  dummy='false';
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   144
		               	end
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   145
				ncwriteatt(ncf,snm,fnames{n},dummy);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   146
			else
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   147
		                ncwriteatt(ncf,snm,fnames{n},dummy(:));
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   148
			end    
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   149
		end
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   150
	end % for n
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   151
      else % SubStructures -> Variable Attributes
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   152
	for n = 1:size(fnames,1)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   153
		atts = eval(['fieldnames(a.' fnames{n} ');']);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   154
	        finfo = ncinfo(ncf);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   155
        	FieldNames = {finfo. Variables.Name};
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   156
	        existField=strmatch(fnames{n}, FieldNames);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   157
        	if isempty(existField)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   158
			nccreate(ncf,fnames{n},'Datatype','char');
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   159
	        end
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   160
		for j = 1:size(atts,1)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   161
			dummy = eval(['a.' fnames{n} '.' atts{j} ';']);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   162
			if size(dummy,1) == 1
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   163
				if ischar(dummy)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   164
		                    ncwriteatt(ncf,fnames{n},atts{j},dummy);
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   165
                		else
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   166
		                    ncwriteatt(ncf,fnames{n},atts{j},dummy(:));
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   167
                		end
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   168
			end
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   169
		end	       
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   170
	 end % for n
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   171
      end % else (substructures or not)
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   172
   else % if issstruct(a)
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   173
      disp(' not structure')
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   174
   end
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   175
end % function
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   176