54 lines
1.5 KiB
Matlab
54 lines
1.5 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();
|
|
|
|
% 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/nstat;
|
|
varargout{2} = fyp/nstat;
|
|
varargout{3} = fzp/nstat;
|
|
end
|
|
|
|
% Close file
|
|
obj.close();
|
|
end
|