unified ustar/multifile interface
This commit is contained in:
parent
ed8a3835f0
commit
d8a650884a
|
|
@ -0,0 +1,163 @@
|
||||||
|
classdef ucfmulti < handle
|
||||||
|
% High-level class to treat a directory with UCF files similarly to UCFtar files
|
||||||
|
properties (Access = public)
|
||||||
|
Directory % directory name
|
||||||
|
Seq % sequence number
|
||||||
|
IOMode % file opened in read-only or read-write mode?
|
||||||
|
NumberOfSubfiles % number of subfiles
|
||||||
|
end
|
||||||
|
properties (Access = private)
|
||||||
|
% File info
|
||||||
|
fileID
|
||||||
|
ioflag
|
||||||
|
subFile
|
||||||
|
subFileAlias
|
||||||
|
subFileSize
|
||||||
|
scanBuffSize = 2^17; % buffer size of scanner (max. number of files in tar)
|
||||||
|
end
|
||||||
|
%% ------------------------------------------------------------------------%%
|
||||||
|
%% CONSTRUCORS/DESTRUCTORS %%
|
||||||
|
%% ------------------------------------------------------------------------%%
|
||||||
|
methods(Access=public)
|
||||||
|
function obj = ucfmulti()
|
||||||
|
% obj = ucf()
|
||||||
|
% Default contructor
|
||||||
|
obj.resetPublicProperties();
|
||||||
|
obj.resetPrivateProperties();
|
||||||
|
end
|
||||||
|
function delete(obj)
|
||||||
|
% obj.delete()
|
||||||
|
% Default destructor
|
||||||
|
obj.close();
|
||||||
|
end
|
||||||
|
end
|
||||||
|
%% ------------------------------------------------------------------------%%
|
||||||
|
%% INITIALIZATION METHODS %%
|
||||||
|
%% ------------------------------------------------------------------------%%
|
||||||
|
methods(Access=public)
|
||||||
|
function open(obj,directory,iseq)
|
||||||
|
% obj.open(file)
|
||||||
|
% Opens a file in read-only mode
|
||||||
|
tmp = what(directory); % get absoulte path
|
||||||
|
obj.Directory = tmp.path;
|
||||||
|
obj.Seq = iseq;
|
||||||
|
obj.IOMode = 'read';
|
||||||
|
obj.ioflag = 'r';
|
||||||
|
if ~exist(directory,'dir')
|
||||||
|
error('Unable to open directory: %s',obj.Directory);
|
||||||
|
end
|
||||||
|
obj.scanDirectory();
|
||||||
|
end
|
||||||
|
end
|
||||||
|
%% ------------------------------------------------------------------------%%
|
||||||
|
%% PUBLIC METHODS %%
|
||||||
|
%% ------------------------------------------------------------------------%%
|
||||||
|
methods(Access=public)
|
||||||
|
function close(obj)
|
||||||
|
% obj.close()
|
||||||
|
% Closes a file
|
||||||
|
if obj.fileID<0
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
status = fclose(obj.fileID);
|
||||||
|
if status<0
|
||||||
|
warning('Unable to close file (exit code: %d)',status);
|
||||||
|
return;
|
||||||
|
end
|
||||||
|
obj.resetPublicProperties();
|
||||||
|
obj.resetPrivateProperties();
|
||||||
|
obj.fileID = -1;
|
||||||
|
end
|
||||||
|
function [ptr] = pointer(obj,fname)
|
||||||
|
% [ptr] = obj.pointer(fname)
|
||||||
|
% Returns a 'pointer' to the requested file within the tar-ball
|
||||||
|
% which can be used to read the data without extracting.
|
||||||
|
% Input
|
||||||
|
% fname file name of subfile within tar-ball
|
||||||
|
% Output
|
||||||
|
% ptr pointer: [fid,first byte,number of bytes]
|
||||||
|
if obj.fileID>=0
|
||||||
|
fclose(obj.fileID);
|
||||||
|
end
|
||||||
|
idx = obj.findSubfile(fname);
|
||||||
|
filepath = sprintf('%s/%s',obj.Directory,obj.subFile{idx});
|
||||||
|
obj.fileID = fopen(filepath,obj.ioflag);
|
||||||
|
ptr = [obj.fileID,0,obj.subFileSize(idx)];
|
||||||
|
end
|
||||||
|
function [fname,fsize] = list(obj)
|
||||||
|
% [fname,fsize] = obj.list()
|
||||||
|
% Returns a list of name/size of all subfiles within the tar-ball
|
||||||
|
% Output
|
||||||
|
% fname cell array with filenames
|
||||||
|
% fsize array with file sizes in bytes
|
||||||
|
fname = obj.subFileAlias;
|
||||||
|
fsize = obj.subFileSize;
|
||||||
|
end
|
||||||
|
function [flag] = isSubfile(obj,fname)
|
||||||
|
% [flag] = obj.isSubfile(fname)
|
||||||
|
% Checks if a subfile exists within tar-ball.
|
||||||
|
% Input
|
||||||
|
% fname name of subfile
|
||||||
|
flag = any(ismember(obj.subFileAlias,fname));
|
||||||
|
end
|
||||||
|
end
|
||||||
|
%% ------------------------------------------------------------------------%%
|
||||||
|
%% PRIVATE METHODS %%
|
||||||
|
%% ------------------------------------------------------------------------%%
|
||||||
|
methods(Access=private)
|
||||||
|
function scanDirectory(obj)
|
||||||
|
% obj.scanArchive()
|
||||||
|
% Scans the directory for subfiles and stores meta-data in class variables.
|
||||||
|
obj.subFile = cell(obj.scanBuffSize,1);
|
||||||
|
obj.subFileSize = zeros(obj.scanBuffSize,1);
|
||||||
|
|
||||||
|
tmp = dir(obj.Directory);
|
||||||
|
strseq = sprintf('_%04d.',obj.Seq);
|
||||||
|
ii = 0;
|
||||||
|
for itmp=1:numel(tmp)
|
||||||
|
if tmp(itmp).isdir || isempty(strfind(tmp(itmp).name,strseq))
|
||||||
|
continue;
|
||||||
|
end
|
||||||
|
ii = ii+1;
|
||||||
|
obj.subFile{ii} = tmp(itmp).name;
|
||||||
|
obj.subFileSize(ii) = tmp(itmp).bytes;
|
||||||
|
obj.subFileAlias{ii} = strrep(tmp(itmp).name,strseq,'.');
|
||||||
|
end
|
||||||
|
% Truncate preallocated arrays
|
||||||
|
obj.NumberOfSubfiles = ii;
|
||||||
|
obj.subFile = obj.subFile(1:ii);
|
||||||
|
obj.subFileAlias= obj.subFileAlias(1:ii);
|
||||||
|
obj.subFileSize = obj.subFileSize(1:ii);
|
||||||
|
if obj.NumberOfSubfiles>obj.scanBuffSize
|
||||||
|
warning('Number of subfiles exceeds scanBuffSize.');
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function [idx] = findSubfile(obj,fname)
|
||||||
|
% [idx] = obj.findSubfile(fname)
|
||||||
|
% Get index of requested subfile
|
||||||
|
% Input
|
||||||
|
% fname name of subfile
|
||||||
|
% Output
|
||||||
|
% idx index of subfile
|
||||||
|
isReqFile = ismember(obj.subFileAlias,fname);
|
||||||
|
switch sum(isReqFile)
|
||||||
|
case 0; error('File not found: %s',fname);
|
||||||
|
case 1;
|
||||||
|
otherwise; warning('More than one matching file found.');
|
||||||
|
end
|
||||||
|
idx = find(isReqFile);
|
||||||
|
end
|
||||||
|
function resetPublicProperties(obj)
|
||||||
|
obj.Directory = [];
|
||||||
|
obj.Seq = [];
|
||||||
|
obj.IOMode = [];
|
||||||
|
obj.NumberOfSubfiles = [];
|
||||||
|
end
|
||||||
|
function resetPrivateProperties(obj)
|
||||||
|
obj.ioflag = [];
|
||||||
|
obj.subFile = [];
|
||||||
|
obj.subFileAlias= [];
|
||||||
|
obj.subFileSize = [];
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -24,7 +24,7 @@ function [data,ib,jb,kb,nxl,nyl,nzl,ighost] = read_field_chunk_ucf(file,field,va
|
||||||
addParamValue(par,'ghost',1,@isnumeric);
|
addParamValue(par,'ghost',1,@isnumeric);
|
||||||
addParamValue(par,'verbosity',0,@isnumeric);
|
addParamValue(par,'verbosity',0,@isnumeric);
|
||||||
addParamValue(par,'debug',0,@isnumeric);
|
addParamValue(par,'debug',0,@isnumeric);
|
||||||
addParamValue(par,'tarmode',0,@isnumeric);
|
addParamValue(par,'tarmode',0,@isnumeric); % deprecated
|
||||||
addParamValue(par,'rank',0,@isnumeric);
|
addParamValue(par,'rank',0,@isnumeric);
|
||||||
parse(par,varargin{:});
|
parse(par,varargin{:});
|
||||||
istep = par.Results.step;
|
istep = par.Results.step;
|
||||||
|
|
@ -50,11 +50,14 @@ function [data,ib,jb,kb,nxl,nyl,nzl,ighost] = read_field_chunk_ucf(file,field,va
|
||||||
|
|
||||||
% Open file
|
% Open file
|
||||||
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
|
case 'char'
|
||||||
|
obj.open(file);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
subfile = sprintf('%s.%05d',fbase,par.Results.rank);
|
subfile = sprintf('%s.%05d',fbase,par.Results.rank);
|
||||||
obj.opentar(file.pointer(subfile));
|
obj.opentar(file.pointer(subfile));
|
||||||
else
|
otherwise
|
||||||
obj.open(file);
|
error('Input file type not supported: %s',class(file));
|
||||||
end
|
end
|
||||||
|
|
||||||
% Read raw data
|
% Read raw data
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
function [xu,yu,zu,xv,yv,zv,xw,yw,zw,xp,yp,zp] = read_grid_ucf(file,varargin)
|
function [xu,yu,zu,xv,yv,zv,xw,yw,zw,xp,yp,zp,...
|
||||||
|
nxu,nyu,nzu,nxv,nyv,nzv,nxw,nyw,nzw,nxp,nyp,nzp] = read_grid_ucf(file,varargin)
|
||||||
% [xu,yu,zu,xv,yv,zv,xw,yw,zw,xp,yp,zp] = read_grid_ucf(file,varargin)
|
% [xu,yu,zu,xv,yv,zv,xw,yw,zw,xp,yp,zp] = read_grid_ucf(file,varargin)
|
||||||
% Reads staggered grid from ucf file.
|
% Reads staggered grid from ucf file.
|
||||||
% Input
|
% Input
|
||||||
|
|
@ -39,12 +40,12 @@ function [xu,yu,zu,xv,yv,zv,xw,yw,zw,xp,yp,zp] = read_grid_ucf(file,varargin)
|
||||||
for iset=1:nset
|
for iset=1:nset
|
||||||
[data,params] = obj.readSet(1,iset);
|
[data,params] = obj.readSet(1,iset);
|
||||||
params = cast(params,'double');
|
params = cast(params,'double');
|
||||||
nx = params(1);
|
nx{iset} = params(1);
|
||||||
ny = params(2);
|
ny{iset} = params(2);
|
||||||
nz = params(3);
|
nz{iset} = params(3);
|
||||||
x{iset} = data(1:nx);
|
x{iset} = data(1:nx{iset});
|
||||||
y{iset} = data(nx+1:nx+ny);
|
y{iset} = data(nx{iset}+1:nx{iset}+ny{iset});
|
||||||
z{iset} = data(nx+ny+1:nx+ny+nz);
|
z{iset} = data(nx{iset}+ny{iset}+1:nx{iset}+ny{iset}+nz{iset});
|
||||||
end
|
end
|
||||||
|
|
||||||
% Close UCF file
|
% Close UCF file
|
||||||
|
|
@ -55,19 +56,31 @@ function [xu,yu,zu,xv,yv,zv,xw,yw,zw,xp,yp,zp] = read_grid_ucf(file,varargin)
|
||||||
xu = x{iset};
|
xu = x{iset};
|
||||||
yu = y{iset};
|
yu = y{iset};
|
||||||
zu = z{iset};
|
zu = z{iset};
|
||||||
|
nxu = nx{iset};
|
||||||
|
nyu = ny{iset};
|
||||||
|
nzu = nz{iset};
|
||||||
|
|
||||||
iset = find(strcmp(sets,'v'));
|
iset = find(strcmp(sets,'v'));
|
||||||
xv = x{iset};
|
xv = x{iset};
|
||||||
yv = y{iset};
|
yv = y{iset};
|
||||||
zv = z{iset};
|
zv = z{iset};
|
||||||
|
nxv = nx{iset};
|
||||||
|
nyv = ny{iset};
|
||||||
|
nzv = nz{iset};
|
||||||
|
|
||||||
iset = find(strcmp(sets,'w'));
|
iset = find(strcmp(sets,'w'));
|
||||||
xw = x{iset};
|
xw = x{iset};
|
||||||
yw = y{iset};
|
yw = y{iset};
|
||||||
zw = z{iset};
|
zw = z{iset};
|
||||||
|
nxw = nx{iset};
|
||||||
|
nyw = ny{iset};
|
||||||
|
nzw = nz{iset};
|
||||||
|
|
||||||
iset = find(strcmp(sets,'p'));
|
iset = find(strcmp(sets,'p'));
|
||||||
xp = x{iset};
|
xp = x{iset};
|
||||||
yp = y{iset};
|
yp = y{iset};
|
||||||
zp = z{iset};
|
zp = z{iset};
|
||||||
|
nxp = nx{iset};
|
||||||
|
nyp = ny{iset};
|
||||||
|
nzp = nz{iset};
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -12,16 +12,19 @@ function [params] = read_parameters_ucf(file,varargin)
|
||||||
% Parse optional input arguments
|
% Parse optional input arguments
|
||||||
par = inputParser;
|
par = inputParser;
|
||||||
addParamValue(par,'verbosity',0,@isnumeric);
|
addParamValue(par,'verbosity',0,@isnumeric);
|
||||||
addParamValue(par,'tarmode',0,@isnumeric);
|
addParamValue(par,'tarmode',0,@isnumeric); % deprecated
|
||||||
parse(par,varargin{:});
|
parse(par,varargin{:});
|
||||||
% Open file
|
% Open file
|
||||||
obj = ini('verbosity',par.Results.verbosity);
|
obj = ini('verbosity',par.Results.verbosity);
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
ptr = file.pointer('parameters.asc');
|
case 'char'
|
||||||
obj.opentar(ptr);
|
obj.open(file);
|
||||||
else
|
case {'ustar','ucfmulti'}
|
||||||
obj.open(file);
|
ptr = file.pointer('parameters.asc');
|
||||||
end
|
obj.opentar(ptr);
|
||||||
|
otherwise
|
||||||
|
error('Input file type not supported: %s',class(file));
|
||||||
|
end
|
||||||
% Get parsed content
|
% Get parsed content
|
||||||
params = obj.getContent();
|
params = obj.getContent();
|
||||||
% Close file
|
% Close file
|
||||||
|
|
|
||||||
|
|
@ -23,19 +23,23 @@ function [pp,col,stime] = read_particles_ucf(file,varargin)
|
||||||
addParamValue(par,'format','array',@ischar);
|
addParamValue(par,'format','array',@ischar);
|
||||||
addParamValue(par,'verbosity',0,@isnumeric);
|
addParamValue(par,'verbosity',0,@isnumeric);
|
||||||
addParamValue(par,'debug',0,@isnumeric);
|
addParamValue(par,'debug',0,@isnumeric);
|
||||||
addParamValue(par,'tarmode',0,@isnumeric);
|
addParamValue(par,'tarmode',0,@isnumeric); % deprecated (automatically checked now)
|
||||||
parse(par,varargin{:});
|
parse(par,varargin{:});
|
||||||
istep = par.Results.step;
|
istep = par.Results.step;
|
||||||
mlformat = par.Results.format;
|
mlformat = par.Results.format;
|
||||||
|
|
||||||
% Open file
|
% Open file
|
||||||
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
|
case 'char'
|
||||||
|
obj.open(file);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
ptr = file.pointer('particles.bin');
|
ptr = file.pointer('particles.bin');
|
||||||
obj.opentar(ptr);
|
obj.opentar(ptr);
|
||||||
else
|
otherwise
|
||||||
obj.open(file);
|
error('Input file type not supported: %s',class(file));
|
||||||
end
|
end
|
||||||
|
|
||||||
if ~obj.validateType('particle')
|
if ~obj.validateType('particle')
|
||||||
error('read error: no particle data.');
|
error('read error: no particle data.');
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
function [ibegu,iendu,jbegu,jendu,kbegu,kendu,...
|
function [ibegu,iendu,jbegu,jendu,kbegu,kendu,...
|
||||||
ibegv,iendv,jbegv,jendv,kbegv,kendv,...
|
ibegv,iendv,jbegv,jendv,kbegv,kendv,...
|
||||||
ibegw,iendw,jbegw,jendw,kbegw,kendw,...
|
ibegw,iendw,jbegw,jendw,kbegw,kendw,...
|
||||||
ibegp,iendp,jbegp,jendp,kbegp,kendp] = read_procgrid_ucf(file,varargin)
|
ibegp,iendp,jbegp,jendp,kbegp,kendp,...
|
||||||
|
nxprocs,nyprocs,nzprocs] = read_procgrid_ucf(file,varargin)
|
||||||
% [ibegu,iendu,jbegu,jendu,kbegu,kendu,...
|
% [ibegu,iendu,jbegu,jendu,kbegu,kendu,...
|
||||||
% ibegv,iendv,jbegv,jendv,kbegv,kendv,...
|
% ibegv,iendv,jbegv,jendv,kbegv,kendv,...
|
||||||
% ibegw,iendw,jbegw,jendw,kbegw,kendw,...
|
% ibegw,iendw,jbegw,jendw,kbegw,kendw,...
|
||||||
% ibegp,iendp,jbegp,jendp,kbegp,kendp] = read_procgrid_ucf(file,varargin)
|
% ibegp,iendp,jbegp,jendp,kbegp,kendp,...
|
||||||
|
% nxprocs,nyprocs,nzprocs] = read_procgrid_ucf(file,varargin)
|
||||||
% Reads processor grids.
|
% Reads processor grids.
|
||||||
% Input
|
% Input
|
||||||
% file file name (if tar-mode: ustar handle)
|
% file file name (if tar-mode: ustar handle)
|
||||||
|
|
@ -16,6 +18,7 @@ function [ibegu,iendu,jbegu,jendu,kbegu,kendu,...
|
||||||
% ibegv,iendv,jbegv,jendv,kbegv,kendv processor grid v
|
% ibegv,iendv,jbegv,jendv,kbegv,kendv processor grid v
|
||||||
% ibegw,iendw,jbegw,jendw,kbegw,kendw processor grid w
|
% ibegw,iendw,jbegw,jendw,kbegw,kendw processor grid w
|
||||||
% ibegp,iendp,jbegp,jendp,kbegp,kendp processor grid p
|
% ibegp,iendp,jbegp,jendp,kbegp,kendp processor grid p
|
||||||
|
% nxprocs,nyprocs,nzprocs number of processors
|
||||||
|
|
||||||
% Parse optional input arguments
|
% Parse optional input arguments
|
||||||
par = inputParser;
|
par = inputParser;
|
||||||
|
|
@ -30,11 +33,14 @@ function [ibegu,iendu,jbegu,jendu,kbegu,kendu,...
|
||||||
|
|
||||||
% Open file
|
% Open file
|
||||||
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
|
case 'char'
|
||||||
|
obj.open(file);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
ptr = file.pointer('proc.bin');
|
ptr = file.pointer('proc.bin');
|
||||||
obj.opentar(ptr);
|
obj.opentar(ptr);
|
||||||
else
|
otherwise
|
||||||
obj.open(file);
|
error('Input file type not supported: %s',class(file));
|
||||||
end
|
end
|
||||||
|
|
||||||
% Read raw data
|
% Read raw data
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ function [s,ib,jb,kb,nxl,nyl,nzl,ighost] = read_scal_chunk_ucf(file,varargin)
|
||||||
addParamValue(par,'ghost',1,@isnumeric);
|
addParamValue(par,'ghost',1,@isnumeric);
|
||||||
addParamValue(par,'verbosity',0,@isnumeric);
|
addParamValue(par,'verbosity',0,@isnumeric);
|
||||||
addParamValue(par,'debug',0,@isnumeric);
|
addParamValue(par,'debug',0,@isnumeric);
|
||||||
addParamValue(par,'tarmode',0,@isnumeric);
|
addParamValue(par,'tarmode',0,@isnumeric); % deprecated
|
||||||
addParamValue(par,'rank',0,@isnumeric);
|
addParamValue(par,'rank',0,@isnumeric);
|
||||||
parse(par,varargin{:});
|
parse(par,varargin{:});
|
||||||
istep = par.Results.step;
|
istep = par.Results.step;
|
||||||
|
|
@ -29,11 +29,14 @@ function [s,ib,jb,kb,nxl,nyl,nzl,ighost] = read_scal_chunk_ucf(file,varargin)
|
||||||
|
|
||||||
% Open file
|
% Open file
|
||||||
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
|
case 'char'
|
||||||
|
obj.open(file);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
subfile = sprintf('scal.%05d',par.Results.rank);
|
subfile = sprintf('scal.%05d',par.Results.rank);
|
||||||
obj.opentar(file.pointer(subfile));
|
obj.opentar(file.pointer(subfile));
|
||||||
else
|
otherwise
|
||||||
obj.open(file);
|
error('Input file type not supported: %s',class(file));
|
||||||
end
|
end
|
||||||
|
|
||||||
if ~obj.validateType('field')
|
if ~obj.validateType('field')
|
||||||
|
|
|
||||||
|
|
@ -15,19 +15,22 @@ function [s] = read_scal_complete_ucf(file,varargin)
|
||||||
addParamValue(par,'step',1,@isnumeric);
|
addParamValue(par,'step',1,@isnumeric);
|
||||||
addParamValue(par,'verbosity',0,@isnumeric);
|
addParamValue(par,'verbosity',0,@isnumeric);
|
||||||
addParamValue(par,'debug',0,@isnumeric);
|
addParamValue(par,'debug',0,@isnumeric);
|
||||||
addParamValue(par,'tarmode',0,@isnumeric);
|
addParamValue(par,'tarmode',0,@isnumeric); % deprecated
|
||||||
parse(par,varargin{:});
|
parse(par,varargin{:});
|
||||||
istep = par.Results.step;
|
istep = par.Results.step;
|
||||||
|
|
||||||
% Open first file
|
% Open first file
|
||||||
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
fname = sprintf('scal.%05d',0);
|
case 'char'
|
||||||
obj.opentar(file.pointer(fname));
|
|
||||||
else
|
|
||||||
[fdir,fbase,fext] = fileparts(file);
|
[fdir,fbase,fext] = fileparts(file);
|
||||||
fname = sprintf('%s/%s.%05d',fdir,fbase,0);
|
fname = sprintf('%s/%s.%05d',fdir,fbase,0);
|
||||||
obj.open(fname);
|
obj.open(fname);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
|
fname = sprintf('scal.%05d',0);
|
||||||
|
obj.opentar(file.pointer(fname));
|
||||||
|
otherwise
|
||||||
|
error('Input file type not supported: %s',class(file));
|
||||||
end
|
end
|
||||||
|
|
||||||
if ~obj.validateType('field')
|
if ~obj.validateType('field')
|
||||||
|
|
@ -67,20 +70,23 @@ function [s] = read_scal_complete_ucf(file,varargin)
|
||||||
|
|
||||||
% Now loop consecutively through files
|
% Now loop consecutively through files
|
||||||
ifile = 1;
|
ifile = 1;
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
loopCondition = @(x) file.isSubfile(x);
|
case 'char'
|
||||||
fname = sprintf('scal.%05d',ifile);
|
|
||||||
else
|
|
||||||
loopCondition = @(x) exist(x,'file');
|
loopCondition = @(x) exist(x,'file');
|
||||||
fname = sprintf('%s/%s.%05d',fdir,fbase,ifile);
|
fname = sprintf('%s/%s.%05d',fdir,fbase,ifile);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
|
loopCondition = @(x) file.isSubfile(x);
|
||||||
|
fname = sprintf('scal.%05d',ifile);
|
||||||
end
|
end
|
||||||
|
|
||||||
while loopCondition(fname)
|
while loopCondition(fname)
|
||||||
% Open file
|
% Open file
|
||||||
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
obj.opentar(file.pointer(fname));
|
case 'char'
|
||||||
else
|
|
||||||
obj.open(fname);
|
obj.open(fname);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
|
obj.opentar(file.pointer(fname));
|
||||||
end
|
end
|
||||||
|
|
||||||
if ~obj.validateType('field')
|
if ~obj.validateType('field')
|
||||||
|
|
@ -115,9 +121,10 @@ function [s] = read_scal_complete_ucf(file,varargin)
|
||||||
|
|
||||||
% Move on to next file
|
% Move on to next file
|
||||||
ifile = ifile+1;
|
ifile = ifile+1;
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
|
case 'char'
|
||||||
fname = sprintf('scal.%05d',ifile);
|
fname = sprintf('scal.%05d',ifile);
|
||||||
else
|
case {'ustar','ucfmulti'}
|
||||||
fname = sprintf('%s/%s.%05d',fdir,fbase,ifile);
|
fname = sprintf('%s/%s.%05d',fdir,fbase,ifile);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ function [u,ibu,jbu,kbu,nxul,nyul,nzul,...
|
||||||
nxprocs,nyprocs,nzprocs] = read_procgrid_legacy(fproc);
|
nxprocs,nyprocs,nzprocs] = read_procgrid_legacy(fproc);
|
||||||
|
|
||||||
% Determine processor rank from filename
|
% Determine processor rank from filename
|
||||||
[idxbeg,idxend] = regexp(fuvwp,'[\d+]$');
|
[idxbeg,idxend] = regexp(fuvwp,'[\d]+$');
|
||||||
if isempty(idxbeg)
|
if isempty(idxbeg)
|
||||||
error('Invalid file: does not contain rank. %s',fuvwp);
|
error('Invalid file: does not contain rank. %s',fuvwp);
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ function [u,ibu,jbu,kbu,nxul,nyul,nzul,...
|
||||||
addParamValue(par,'ghost',1,@isnumeric);
|
addParamValue(par,'ghost',1,@isnumeric);
|
||||||
addParamValue(par,'verbosity',0,@isnumeric);
|
addParamValue(par,'verbosity',0,@isnumeric);
|
||||||
addParamValue(par,'debug',0,@isnumeric);
|
addParamValue(par,'debug',0,@isnumeric);
|
||||||
addParamValue(par,'tarmode',0,@isnumeric);
|
addParamValue(par,'tarmode',0,@isnumeric); % deprecated
|
||||||
addParamValue(par,'rank',0,@isnumeric);
|
addParamValue(par,'rank',0,@isnumeric);
|
||||||
parse(par,varargin{:});
|
parse(par,varargin{:});
|
||||||
istep = par.Results.step;
|
istep = par.Results.step;
|
||||||
|
|
@ -39,11 +39,14 @@ function [u,ibu,jbu,kbu,nxul,nyul,nzul,...
|
||||||
|
|
||||||
% Open file
|
% Open file
|
||||||
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
|
case 'char'
|
||||||
|
obj.open(file);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
subfile = sprintf('uvwp.%05d',par.Results.rank);
|
subfile = sprintf('uvwp.%05d',par.Results.rank);
|
||||||
obj.opentar(file.pointer(subfile));
|
obj.opentar(file.pointer(subfile));
|
||||||
else
|
otherwise
|
||||||
obj.open(file);
|
error('Input file type not supported: %s',class(file));
|
||||||
end
|
end
|
||||||
|
|
||||||
% Read raw data
|
% Read raw data
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ function [u,v,w,p] = read_uvwp_complete_ucf(file,varargin)
|
||||||
addParamValue(par,'step',1,@isnumeric);
|
addParamValue(par,'step',1,@isnumeric);
|
||||||
addParamValue(par,'verbosity',0,@isnumeric);
|
addParamValue(par,'verbosity',0,@isnumeric);
|
||||||
addParamValue(par,'debug',0,@isnumeric);
|
addParamValue(par,'debug',0,@isnumeric);
|
||||||
addParamValue(par,'tarmode',0,@isnumeric);
|
addParamValue(par,'tarmode',0,@isnumeric); % deprecated
|
||||||
parse(par,varargin{:});
|
parse(par,varargin{:});
|
||||||
istep = par.Results.timestep;
|
istep = par.Results.step;
|
||||||
|
|
||||||
% Define sets to be read
|
% Define sets to be read
|
||||||
sets = {'u','v','w','p'};
|
sets = {'u','v','w','p'};
|
||||||
|
|
@ -25,13 +25,16 @@ function [u,v,w,p] = read_uvwp_complete_ucf(file,varargin)
|
||||||
|
|
||||||
% Open first file
|
% Open first file
|
||||||
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
fname = sprintf('uvwp.%05d',0);
|
case 'char'
|
||||||
obj.opentar(file.pointer(fname));
|
|
||||||
else
|
|
||||||
[fdir,fbase,fext] = fileparts(file);
|
[fdir,fbase,fext] = fileparts(file);
|
||||||
fname = sprintf('%s/%s.%05d',fdir,fbase,0);
|
fname = sprintf('%s/%s.%05d',fdir,fbase,0);
|
||||||
obj.open(fname);
|
obj.open(fname);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
|
fname = sprintf('uvwp.%05d',0);
|
||||||
|
obj.opentar(file.pointer(fname));
|
||||||
|
otherwise
|
||||||
|
error('Input file type not supported: %s',class(file));
|
||||||
end
|
end
|
||||||
|
|
||||||
if ~obj.validateType('field')
|
if ~obj.validateType('field')
|
||||||
|
|
@ -98,20 +101,22 @@ function [u,v,w,p] = read_uvwp_complete_ucf(file,varargin)
|
||||||
|
|
||||||
% Now loop consecutively through files
|
% Now loop consecutively through files
|
||||||
ifile = 1;
|
ifile = 1;
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
loopCondition = @(x) file.isSubfile(x);
|
case 'char'
|
||||||
fname = sprintf('uvwp.%05d',ifile);
|
|
||||||
else
|
|
||||||
loopCondition = @(x) exist(x,'file');
|
loopCondition = @(x) exist(x,'file');
|
||||||
fname = sprintf('%s/%s.%05d',fdir,fbase,ifile);
|
fname = sprintf('%s/%s.%05d',fdir,fbase,ifile);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
|
loopCondition = @(x) file.isSubfile(x);
|
||||||
|
fname = sprintf('uvwp.%05d',ifile);
|
||||||
end
|
end
|
||||||
while loopCondition(fname)
|
while loopCondition(fname)
|
||||||
% Open file
|
% Open file
|
||||||
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
obj.opentar(file.pointer(fname));
|
case 'char'
|
||||||
else
|
|
||||||
obj.open(fname);
|
obj.open(fname);
|
||||||
|
case {'ustar','ucfmulti'}
|
||||||
|
obj.opentar(file.pointer(fname));
|
||||||
end
|
end
|
||||||
|
|
||||||
if ~obj.validateType('field')
|
if ~obj.validateType('field')
|
||||||
|
|
@ -168,9 +173,10 @@ function [u,v,w,p] = read_uvwp_complete_ucf(file,varargin)
|
||||||
|
|
||||||
% Move on to next file
|
% Move on to next file
|
||||||
ifile = ifile+1;
|
ifile = ifile+1;
|
||||||
if par.Results.tarmode
|
switch class(file)
|
||||||
|
case 'char'
|
||||||
fname = sprintf('uvwp.%05d',ifile);
|
fname = sprintf('uvwp.%05d',ifile);
|
||||||
else
|
case {'ustar','ucfmulti'}
|
||||||
fname = sprintf('%s/%s.%05d',fdir,fbase,ifile);
|
fname = sprintf('%s/%s.%05d',fdir,fbase,ifile);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue