ladcp2cdf.m
author A.M. Thurnherr <athurnherr@yahoo.com>
Wed, 17 Jan 2018 12:19:54 -0500
changeset 20 61b92f8fb463
parent 18 6e7c8d592f7f
permissions -rw-r--r--
Version IX_13
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
     1
function [] = ladcp2cdf(fname,dr_struct,da,p,ps,f,att);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
     2
% function [] = ladcp2cdf(fname,dr_struct,da,p,ps,f,att);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
     3
%
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
     4
% function to save LADCP data into a netcdf file for MatLab version 2012a
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
     5
%
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
     6
% input  :	fname		- output filename
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
     7
%			dr_struct	- main inversion results (velocity profiles)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
     8
%			da,p,ps,f,att - arbitrary metadata structures
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
     9
%
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    10
% Subroutine :  add_struct
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    11
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    12
% Created By:   Diana Cardoso, Bedford Institute of Oceangraphy
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    13
%               Diana.Cardoso@dfo-mpo.gc.ca
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    14
% Description:  Based on LDEO software to Process LADCP, version IX.8,
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    15
%               script ladcp2cdf.m version 0.1	last change 08.03.2002. 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    16
%               maintained by A.M. Thurnherr and downloaded from:
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    17
%       http://www.ldeo.columbia.edu/cgi-bin/ladcp-cgi-bin/hgwebdir.cgi
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    18
%       The function ladcp2cdf was changed to run with the the Matlab
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    19
%       version 2012, which now supports netcdf.
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    20
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    21
%======================================================================
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    22
%                    L A D C P 2 C D F . M 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    23
%                    doc: Thu Aug 15 10:52:55 2013
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    24
%                    dlm: Thu Nov 26 22:01:32 2015
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    25
%                    (c) 2013 A.M. Thurnherr, from code contributed by D. Cardoso
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    26
%                    uE-Info: 183 0 NIL 0 0 72 0 2 8 NIL ofnI
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    27
%======================================================================
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    28
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    29
% NOTES:
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    30
%	- This version creates slightly different files than the original version
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    31
%	  created by Visbeck/Krahmann. In the original version, the contents of the
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    32
%	  dr structure end up as top-level variables and the contents of
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    33
%	  the da, p, ps, f and att structures end of as global attributes. In 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    34
%	  the new version, the latter are saved as sub-structures, with _struct appended
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    35
%	  to the internal names to avoid conflicts.
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    36
17
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    37
% HISTORY:
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    38
%   Aug 15, 2013: - incorporated this code, supplied Diana Cardoso, into IX_10beta
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    39
%		  - modified doc in header
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    40
%		  - renamded struct variable to dr_struct
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    41
%		  - removed 'cd' in and out of results directory (pathnames work just fine)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    42
%		  - delete netcdfile before it is written to (old 'clobber' option)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    43
%		  - removed 'l' suffix from all dims
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    44
%		  - replaced yes/no logical vals by true/false
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    45
%		  - renamed substructures from st2..st6 to internal names (da,p,ps,f,att)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    46
%   Aug 28, 2013: - incorporated bug fix provided by Diana Cardoso to prevent lat,lon,name and 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    47
%		    date to be stored 2cd in the nc file, which can make the code
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    48
%		    bomb if the length of any other var is 6 (or equal to the length of name?)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    49
%   Nov     2015: - new coded provided by Diana Cardoso (with support from Eric Firing)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    50
%   Nov 26, 2015: - BUG: code did not work when bottom-track data were missing
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    51
%--------------------------------------------------------------------------
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    52
% check arguments and remove existing NetCDF file with fname(output filename)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    53
%--------------------------------------------------------------------------
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    54
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    55
if nargin<2
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    56
  error('need two input arguments')
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    57
end
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    58
if ~isstruct(dr_struct)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    59
  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
    60
end
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
    61
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    62
netcdfile = deblank(fname); %remove any blanks from string end
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    63
if exist(netcdfile,'file')
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    64
	delete(netcdfile)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    65
end
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    66
%--------------------------------------------------------------------------
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    67
%Create a classic format NetCDF file with 8 dimension definitions.
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    68
%--------------------------------------------------------------------------
17
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    69
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    70
mySchema.Name   = '/'; % indicating the full file as opposed to a group
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    71
mySchema.Format = 'classic'; %The format of the NetCDF file
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    72
%Create Dimensions
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    73
mySchema.Dimensions(1).Name   = 'name';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    74
mySchema.Dimensions(1).Length = length(getfield(dr_struct,'name'));
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    75
mySchema.Dimensions(2).Name   = 'date';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    76
mySchema.Dimensions(2).Length = 6;
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    77
mySchema.Dimensions(3).Name   = 'lat';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    78
mySchema.Dimensions(3).Length = 1;
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    79
mySchema.Dimensions(4).Name   = 'lon';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    80
mySchema.Dimensions(4).Length = 1;
17
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
    81
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    82
if isfield(dr_struct,'z');
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    83
  lz = length(getfield(dr_struct,'z'));
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    84
else
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    85
  lz = 0;
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    86
end  
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    87
mySchema.Dimensions(5).Name   = 'z';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    88
mySchema.Dimensions(5).Length = lz;
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    89
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    90
if isfield(dr_struct,'tim');
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    91
  ltim = length(getfield(dr_struct,'tim'));
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    92
else
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    93
  ltim = 0;
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    94
end  
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    95
mySchema.Dimensions(6).Name   = 'tim';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    96
mySchema.Dimensions(6).Length = ltim;
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    97
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    98
if isfield(dr_struct,'zbot');
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
    99
  lbot = length(getfield(dr_struct,'zbot'));
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   100
else
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   101
  lbot = 0;
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   102
end
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   103
mySchema.Dimensions(7).Name   = 'zbot';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   104
mySchema.Dimensions(7).Length = lbot;
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   105
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   106
if isfield(dr_struct,'z_sadcp');
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   107
  lsadcp = length(getfield(dr_struct,'z_sadcp'));
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   108
else
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   109
  lsadcp = 0;
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   110
end
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   111
mySchema.Dimensions(8).Name   = 'z_sadcp';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   112
mySchema.Dimensions(8).Length = lsadcp;
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   113
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   114
%--------------------------------------------------------------------------
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   115
%Add first 4 variables definitions(name, date, lat, lon) to Variable field
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   116
%--------------------------------------------------------------------------
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   117
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   118
mySchema.Variables(1).Name = 'name';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   119
mySchema.Variables(1).Dimensions(1) = mySchema.Dimensions(1);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   120
mySchema.Variables(1).Datatype = 'char';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   121
mySchema.Variables(2).Name = 'date';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   122
mySchema.Variables(2).Dimensions(1) = mySchema.Dimensions(2);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   123
mySchema.Variables(2).Datatype = 'int32';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   124
mySchema.Variables(3).Name = 'lat';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   125
mySchema.Variables(3).Dimensions(1) = mySchema.Dimensions(3);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   126
mySchema.Variables(3).Datatype = 'single';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   127
mySchema.Variables(4).Name = 'lon';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   128
mySchema.Variables(4).Dimensions(1) = mySchema.Dimensions(4);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   129
mySchema.Variables(4).Datatype = 'single';
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   130
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   131
dr_struct = orderfields(dr_struct) ; %sort dr_struct by fieldnames
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   132
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   133
fnames = fieldnames(dr_struct);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   134
% find name, date, lat, lon in fnames that have already been added to the 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   135
% NetCDF file and remove from fnames
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   136
nn=strncmp('name',fnames,6);   
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   137
nda=strncmp('date',fnames,4);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   138
nla=strncmp('lat',fnames,3); 	
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   139
nlo=strncmp('lon',fnames,3);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   140
ntot=[nn+nda+nla+nlo]; Ktot = logical(ntot);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   141
fnames(Ktot,:)=[];	
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   142
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   143
%--------------------------------------------------------------------------
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   144
%Add the remaining variables definitions from dr_struct to Variable field
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   145
%--------------------------------------------------------------------------
0
0a450563f904 VIX_6: first version for Mercurial release
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
diff changeset
   146
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   147
for n=1:size(fnames,1)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   148
    dummy = getfield(dr_struct,fnames{n});
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   149
    mySchema.Variables(4+n).Name = fnames{n};
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   150
    if ~isempty(strfind(fnames{n},'bot'))
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   151
        mySchema.Variables(4+n).Dimensions(1) = mySchema.Dimensions(7);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   152
    elseif ~isempty(strfind(fnames{n},'sadcp'))
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   153
        mySchema.Variables(4+n).Dimensions(1) = mySchema.Dimensions(8);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   154
    elseif ~isempty(strfind(fnames{n},'tim')) ||  ~isempty(strfind(fnames{n},'ship')) ...
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   155
        || ~isempty(strfind(fnames{n},'ctd')) && isempty(strmatch('ctd_t',fnames{n},'exact')) ...
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   156
        && isempty(strmatch('ctd_s',fnames{n}))
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   157
        mySchema.Variables(4+n).Dimensions(1) = mySchema.Dimensions(6);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   158
    elseif ~isempty(strfind(fnames{n},'vel')) ||  ~isempty(strfind(fnames{n},'shear')) ...
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   159
        || ~isempty(strfind(fnames{n},'ctd_')) || ~isempty(strfind(fnames{n},'uerr')) ...
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   160
        ||  ~isempty(strfind(fnames{n},'range'))  || ~isempty(strfind(fnames{n},'ts')) ...
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   161
        || ~isempty(strmatch('p',fnames{n},'exact')) || ~isempty(strmatch('u',fnames{n},'exact')) ...
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   162
        || ~isempty(strmatch('v',fnames{n},'exact'))|| ~isempty(strmatch('z',fnames{n},'exact')) ...
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   163
        || ~isempty(strfind(fnames{n},'u_')) || ~isempty(strfind(fnames{n},'v_'));
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   164
        mySchema.Variables(4+n).Dimensions(1) = mySchema.Dimensions(5);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   165
    else
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   166
        mySchema.Variables(4+n).Dimensions.Name = fnames{n};
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   167
        mySchema.Variables(4+n).Dimensions.Length = length(dummy);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   168
    end 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   169
    if strncmp(fnames{n},'tim',4)==1 ||  ~isempty(strfind(fnames{n},'vbar')) ||  ~isempty(strfind(fnames{n},'ubar'))
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   170
        mySchema.Variables(4+n).Datatype = 'double';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   171
    elseif strncmp(fnames{n},'nvel',4)==1 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   172
        mySchema.Variables(4+n).Datatype = 'int16';
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   173
    else
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   174
        mySchema.Variables(4+n).Datatype = 'single'; 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   175
    end   
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   176
%    disp(sprintf('%d: %s %d',n,mySchema.Variables(4+n).Dimensions.Name,mySchema.Variables(4+n).Dimensions.Length));
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   177
end
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   178
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   179
%--------------------------------------------------------------------------
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   180
%Add the attributes definitions from dr_struct to the Variable field
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   181
%--------------------------------------------------------------------------
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   182
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   183
ncwriteschema(fname, mySchema);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   184
ncwriteatt(fname,'name','long_name',att.name.long_name);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   185
ncwriteatt(fname,'date','long_name',att.date.long_name);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   186
ncwriteatt(fname,'date','units',att.date.units);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   187
ncwriteatt(fname,'lat','long_name',att.lat.long_name);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   188
ncwriteatt(fname,'lat','units',att.lat.units);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   189
ncwriteatt(fname,'lon','long_name',att.lon.long_name);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   190
ncwriteatt(fname,'lon','units',att.lon.units);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   191
ncwrite(fname,'name',dr_struct.name);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   192
ncwrite(fname,'date',dr_struct.date);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   193
ncwrite(fname,'lat',dr_struct.lat);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   194
ncwrite(fname,'lon',dr_struct.lon);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   195
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   196
for n=1:size(fnames,1)
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   197
  dummy = getfield(dr_struct,fnames{n});
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   198
    ncwrite(fname,fnames{n},dummy);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   199
    if isfield(att,fnames{n});
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   200
        ncwriteatt(fname,fnames{n},'long_name',att.(fnames{n}).long_name);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   201
        if isfield(att.(fnames{n}),'units');
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   202
             ncwriteatt(fname,fnames{n},'units',att.(fnames{n}).units);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   203
        end
17
f5a63c03d9c8 DoMORE-2
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 11
diff changeset
   204
    end
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   205
end
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   206
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   207
%--------------------------------------------------------------------------
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   208
%Add the attributes definitions from da, p, f, ps mat structures to
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   209
%Attributes field using subroutine add_struct
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   210
%--------------------------------------------------------------------------
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   211
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   212
% remove duplicate fields from mat structures
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   213
ps = rmfield(ps,'outlier');
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   214
p = rmfield(p,'checkpoints');
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   215
f = rmfield(f,'ctd_time_base');
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   216
f = rmfield(f,'nav_time_base');
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   217
18
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   218
% combine all mat structures and sort fieldnames
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   219
names = [fieldnames(da); fieldnames(p)];
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   220
struct1 = cell2struct([struct2cell(da); struct2cell(p)], names, 1);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   221
names = [fieldnames(struct1); fieldnames(ps)];
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   222
struct2 = cell2struct([struct2cell(struct1); struct2cell(ps)], names, 1);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   223
names = [fieldnames(struct2); fieldnames(f)];
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   224
struct3 = cell2struct([struct2cell(struct2); struct2cell(f)], names, 1);
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   225
structsorted = orderfields(struct3) ;
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   226
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   227
% add attributes to netcdf from the p, ps, da and f structures
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   228
% the slash indicates a global variable, if you change it the value in the 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   229
% structures will be placed in the Variables field of the netcdf 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   230
add_struct(fname,'/',structsorted); 
6e7c8d592f7f Version IX_11
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 17
diff changeset
   231
11
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   232
end % function
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   233
d71acdec556a 10beta to be emailed to Eric Firing on Sep 18
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
   234
%----------------------------------------------------------------------