ucftools/matlab/read_statistics_channel_ucf.m

54 lines
1.4 KiB
Matlab

function [tbeg,tend,nstat,um,uu,vv,ww,uv,uub,uvb,varargout] = read_statistics_channel_ucf(file,varargin)
% Parse optional input arguments
par = inputParser;
addParamValue(par,'verbosity',0,@isnumeric);
addParamValue(par,'debug',0,@isnumeric);
parse(par,varargin{:});
% Define sets to be read
sets = {'um','uu','vv','ww','uv','uub','uvb'};
nset = numel(sets);
% Open UCF file and read
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
obj.open(file);
tend = obj.getSimulationTime(1);
% Read first dataset
[um,params] = obj.readSet(1,1);
% Parse parameters
tbeg = typecast(params(1),'double');
nstat = cast(params(2),'double');
nset1 = cast(params(4),'double'); % channel stats
nset2 = cast(params(5),'double'); % force eulerian
if nset1~=7
error('Invalid file.');
end
um = um/nstat;
uu = obj.readSet(1,2)/nstat;
vv = obj.readSet(1,3)/nstat;
ww = obj.readSet(1,4)/nstat;
uv = obj.readSet(1,5)/nstat;
uub = obj.readSet(1,6)/nstat;
uvb = obj.readSet(1,7)/nstat;
% If eulerian force data, read that too
if nset2==3
if par.Results.verbosity
fprintf('Eulerian force data found.\n');
end
fxp = obj.readSet(1,8);
fyp = obj.readSet(1,9);
fzp = obj.readSet(1,10);
varargout{1} = fxp;
varargout{2} = fyp;
varargout{3} = fzp;
end
% Close file
obj.close();
end