125 lines
4.2 KiB
Matlab
125 lines
4.2 KiB
Matlab
function [ibegu,iendu,jbegu,jendu,kbegu,kendu,...
|
|
ibegv,iendv,jbegv,jendv,kbegv,kendv,...
|
|
ibegw,iendw,jbegw,jendw,kbegw,kendw,...
|
|
ibegp,iendp,jbegp,jendp,kbegp,kendp,...
|
|
ibegs,iends,jbegs,jends,kbegs,kends] = read_procgrid_ucf(file,varargin)
|
|
% [ibegu,iendu,jbegu,jendu,kbegu,kendu,...
|
|
% ibegv,iendv,jbegv,jendv,kbegv,kendv,...
|
|
% ibegw,iendw,jbegw,jendw,kbegw,kendw,...
|
|
% ibegp,iendp,jbegp,jendp,kbegp,kendp,...
|
|
% ibegs,iends,jbegs,jends,kbegs,kends] = read_procgrid_ucf(file,varargin)
|
|
% Reads processor grids.
|
|
% Input
|
|
% file file name (if tar-mode: ustar handle)
|
|
% ? verbosity verbose output? (default: 0)
|
|
% ? tarmode read from tar-file? (default: 0)
|
|
% Output
|
|
% ibegu,iendu,jbegu,jendu,kbegu,kendu processor grid u
|
|
% ibegv,iendv,jbegv,jendv,kbegv,kendv processor grid v
|
|
% ibegw,iendw,jbegw,jendw,kbegw,kendw processor grid w
|
|
% ibegp,iendp,jbegp,jendp,kbegp,kendp processor grid p
|
|
% ibegs,iends,jbegs,jends,kbegs,kends processor grid s
|
|
|
|
% Parse optional input arguments
|
|
par = inputParser;
|
|
addParamValue(par,'verbosity',0,@isnumeric);
|
|
addParamValue(par,'debug',0,@isnumeric);
|
|
addParamValue(par,'tarmode',0,@isnumeric);
|
|
parse(par,varargin{:});
|
|
|
|
% Open file
|
|
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
|
|
switch class(file)
|
|
case 'char'
|
|
obj.open(file);
|
|
case {'ustar','ucfmulti'}
|
|
ptr = file.pointer('proc.bin');
|
|
obj.opentar(ptr);
|
|
otherwise
|
|
error('Input file type not supported: %s',class(file));
|
|
end
|
|
|
|
% Define sets to be read
|
|
isDualMesh=(obj.UCFVersion>=2);
|
|
if isDualMesh
|
|
sets = {'u','v','w','p','s'};
|
|
else
|
|
sets = {'u','v','w','p'};
|
|
end
|
|
nset = numel(sets);
|
|
|
|
% Read raw data
|
|
ibeg = cell(1,nset);
|
|
iend = cell(1,nset);
|
|
jbeg = cell(1,nset);
|
|
jend = cell(1,nset);
|
|
kbeg = cell(1,nset);
|
|
kend = cell(1,nset);
|
|
for iset=1:nset
|
|
[data,params] = obj.readSet(1,iset);
|
|
params = cast(params,'double');
|
|
nxprocs = params(1);
|
|
nyprocs = params(2);
|
|
nzprocs = params(3);
|
|
ibeg{iset} = data(1:nxprocs);
|
|
iend{iset} = data(nxprocs+1:2*nxprocs);
|
|
jbeg{iset} = data(2*nxprocs+1:2*nxprocs+nyprocs);
|
|
jend{iset} = data(2*nxprocs+nyprocs+1:2*nxprocs+2*nyprocs);
|
|
kbeg{iset} = data(2*nxprocs+2*nyprocs+1:2*nxprocs+2*nyprocs+nzprocs);
|
|
kend{iset} = data(2*nxprocs+2*nyprocs+nzprocs+1:2*nxprocs+2*nyprocs+2*nzprocs);
|
|
end
|
|
|
|
% Close UCF file
|
|
obj.close();
|
|
|
|
% Reassign content from loop
|
|
iset = find(strcmp(sets,'u'));
|
|
ibegu = cast(ibeg{iset},'double');
|
|
iendu = cast(iend{iset},'double');
|
|
jbegu = cast(jbeg{iset},'double');
|
|
jendu = cast(jend{iset},'double');
|
|
kbegu = cast(kbeg{iset},'double');
|
|
kendu = cast(kend{iset},'double');
|
|
|
|
iset = find(strcmp(sets,'v'));
|
|
ibegv = cast(ibeg{iset},'double');
|
|
iendv = cast(iend{iset},'double');
|
|
jbegv = cast(jbeg{iset},'double');
|
|
jendv = cast(jend{iset},'double');
|
|
kbegv = cast(kbeg{iset},'double');
|
|
kendv = cast(kend{iset},'double');
|
|
|
|
iset = find(strcmp(sets,'w'));
|
|
ibegw = cast(ibeg{iset},'double');
|
|
iendw = cast(iend{iset},'double');
|
|
jbegw = cast(jbeg{iset},'double');
|
|
jendw = cast(jend{iset},'double');
|
|
kbegw = cast(kbeg{iset},'double');
|
|
kendw = cast(kend{iset},'double');
|
|
|
|
iset = find(strcmp(sets,'p'));
|
|
ibegp = cast(ibeg{iset},'double');
|
|
iendp = cast(iend{iset},'double');
|
|
jbegp = cast(jbeg{iset},'double');
|
|
jendp = cast(jend{iset},'double');
|
|
kbegp = cast(kbeg{iset},'double');
|
|
kendp = cast(kend{iset},'double');
|
|
|
|
if isDualMesh
|
|
iset = find(strcmp(sets,'s'));
|
|
ibegs = cast(ibeg{iset},'double');
|
|
iends = cast(iend{iset},'double');
|
|
jbegs = cast(jbeg{iset},'double');
|
|
jends = cast(jend{iset},'double');
|
|
kbegs = cast(kbeg{iset},'double');
|
|
kends = cast(kend{iset},'double');
|
|
else
|
|
ibegs = ibegp;
|
|
iends = iendp;
|
|
jbegs = jbegp;
|
|
jends = jendp;
|
|
kbegs = kbegp;
|
|
kends = kendp;
|
|
end
|
|
end
|