MMP2ANTS.m
author A.M. Thurnherr <athurnherr@yahoo.com>
Wed, 18 Apr 2012 07:41:27 +0000
changeset 6 71f657b20ca0
parent 1 53bedd427ca6
child 13 82050b088a69
permissions -rw-r--r--
.

%======================================================================
%                    M M P 2 A N T S . M 
%                    doc: Tue Apr 21 17:31:52 2009
%                    dlm: Tue Oct 13 10:04:17 2009
%                    (c) 2009 A.M. Thurnherr
%                    uE-Info: 16 54 NIL 0 0 72 2 2 4 NIL ofnI
%======================================================================

% HISTORY:
%	Apr 21, 2009: - created
%	May 15, 2009: - added meta data (requires modified [mmp_pgrid_main.m])
%				  - added ancillary data (hdg, etc)
%				  - added depth calc
%	May 18, 2009: - added export of raw ACM file
%				  - BUG: hdg actually was vel_dir
%	Oct 13, 2009: - adapted to new struct2ANTS (V4.0: dependencies)

function mmp2ANTS(plist,epoch)

if nargin ~= 2											% default epoch could be dangerous
	error('Usage: mmp2ANTS(plist,epoch)');				% for year-end-spanning data sets
end

for p = plist

	%--------------------------------
	% EXPORT PRESSURE-GRIDDED PROFILE
	%--------------------------------

	okay = 1;												% attempt to load data
	eval(sprintf('load grd%04d',p),'okay = 0;');

	if okay

		disp(sprintf('exporting gridded profile %04d...',p));		% process
		
		%----------
		% META DATA
		%----------

		prof.MMP_id = MMP_id;
		prof.ACM_id = ACM_id;
		prof.experiment = experiment_name;

		prof.min_press = gmin;
		prof.max_press = gmax;
		prof.press_step = gstep;

		prof.ACM_calfile = acm_cal_filename;

		prof.vel_l_bound = vel_bounds(1) / 100;
		prof.vel_u_bound = vel_bounds(2) / 100;

		pos = sscanf(mooring_position,'[%d %f,%d %f]');
		if pos(1) >= 0, prof.lat = pos(1) + pos(2)/60;
		else, 			prof.lat = pos(1) - pos(2)/60;
		end
		if pos(3) >= 0, prof.lon = pos(3) + pos(4)/60;
		else, 			prof.lon = pos(3) - pos(4)/60;
		end

		prof.magdecl = 180 * mag_dev/pi;

		eval(sprintf('prof.start_dn%02d = %f;',epoch-2000,...	% start/stop times in ANTS dn format
			startdaytime - datenum(sprintf('1-1-%d 00:00:00',epoch)) + 1));
		eval(sprintf('prof.stop_dn%02d = %f;',epoch-2000,...
			stopdaytime - datenum(sprintf('1-1-%d 00:00:00',epoch)) + 1));

		%-----
		% DATA	
		%-----

		stimes = ctimave - datenum(sprintf('1-1-%d 00:00:00',epoch)) + 1;	% bin-averaged time in dn format
		igood = isfinite(stimes);
		eval(sprintf('prof.dn%02d = stimes(igood);',epoch-2000));
	
		prof.press = pgrid(igood);									% center of bins used for gridding
		if exist('sw_dpth','file')
			prof.depth = sw_dpth(prof.press',prof.lat);
		end
	    
		prof.binned_press = pave(igood);							% bin-averaged CTD data
		prof.temp	= tave(igood);
		prof.salin	= s_ave(igood);
		prof.theta0 = thetave(igood);
		prof.sigma0 = sigthave(igood);
		prof.cond	= cave(igood);
		prof.CTD_Nsamp = cscan2(igood) - cscan1(igood);
	    
		prof.u		= uave(igood) / 100;							% bin-averaged ACM data in [m/s]
		prof.v		= vave(igood) / 100;
		prof.w		= wave(igood) / 100;

		tmp = 180 * mvpdirave(igood)/pi;
		prof.hdg	= (270-tmp)-(fix((270-tmp)/360)*360);			% standard heading btw 0 and 360
		prof.pitchx	= aTxave(igood);
		prof.pitchy	= aTyave(igood);

		prof.dpdt	= dpdtave(igood);
		prof.ACM_Nsamp = ascan2(igood) - ascan1(igood);
	    
	    struct2ANTS(prof,sprintf('grd%04d.mat',p),sprintf('%04d.prof',p));
	    
	end % if grd file loaded

	%--------------------
	% EXPORT RAW PROFILES
	%--------------------

	okay = 1;														% attempt to load data
	eval(sprintf('load raw%04d',p),'okay = 0;');

	if okay

		disp(sprintf('exporting raw data %04d...',p));				% process
		
		ACM.Vab = Vab;
		ACM.Vcd = Vcd;
		ACM.Vef = Vef;
		ACM.Vgh = Vgh;

		ACM.aHx = aHx;
		ACM.aHy = aHy;
		ACM.aHz = aHz;
	    
		ACM.aTx = aTx;
		ACM.aTy = aTy;

	    struct2ANTS(ACM,sprintf('raw%04d.mat',p),sprintf('%04d.ACM',p));
	    
	end % if grd file loaded

end % for p