ucftools/matlab/read_procgrid_ucf.m

92 lines
2.9 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] = 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] = read_procgrid_ucf(file,varargin)
% Reads processor grids.
% Input
% file file to be read
% Optional input (key/value pair)
% verbosity verbose output? (default: no)
%
% 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
% Parse optional input arguments
par = inputParser;
addOptional(par,'verbosity',0,@isnumeric);
addOptional(par,'debug',0,@isnumeric);
parse(par,varargin{:});
% Define sets to be read
sets = {'u','v','w','p'};
nset = numel(sets);
% Open file
obj = ucf('verbosity',par.Results.verbosity,'debug',par.Results.debug);
obj.open(file);
% 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 = ibeg{iset};
iendu = iend{iset};
jbegu = jbeg{iset};
jendu = jend{iset};
kbegu = kbeg{iset};
kendu = kend{iset};
iset = find(strcmp(sets,'v'));
ibegv = ibeg{iset};
iendv = iend{iset};
jbegv = jbeg{iset};
jendv = jend{iset};
kbegv = kbeg{iset};
kendv = kend{iset};
iset = find(strcmp(sets,'w'));
ibegw = ibeg{iset};
iendw = iend{iset};
jbegw = jbeg{iset};
jendw = jend{iset};
kbegw = kbeg{iset};
kendw = kend{iset};
iset = find(strcmp(sets,'p'));
ibegp = ibeg{iset};
iendp = iend{iset};
jbegp = jbeg{iset};
jendp = jend{iset};
kbegp = kbeg{iset};
kendp = kend{iset};
end