legacy read functions, similar interface to ucf versions
This commit is contained in:
parent
1419fc7fac
commit
4ddded4daa
|
|
@ -0,0 +1,16 @@
|
||||||
|
function [a,b,c,d,e,f] = read_domain_legacy(file)
|
||||||
|
% [a,b,c,d,e,f] = read_domain_legacy(file)
|
||||||
|
% Reads domain boundaries from 'current_domain.tmp'
|
||||||
|
% Input
|
||||||
|
% file path to 'current_domain.tmp'
|
||||||
|
% Output
|
||||||
|
% a,b,c,d,e,f domain boundaries
|
||||||
|
|
||||||
|
border=load(file);
|
||||||
|
a=border(1);
|
||||||
|
b=border(2);
|
||||||
|
c=border(3);
|
||||||
|
d=border(4);
|
||||||
|
e=border(5);
|
||||||
|
f=border(6);
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
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_legacy(file,a,b,c,d,e,f,x_periodic,y_periodic,z_periodic)
|
||||||
|
% [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_legacy(file,a,b,c,d,e,f,x_periodic,y_periodic,z_periodic)
|
||||||
|
% Reconstructs grid from 'current_points.tmp'.
|
||||||
|
% Input
|
||||||
|
% file path to 'current_points.tmp'
|
||||||
|
% a,b,c,d,e,f domain boundaries
|
||||||
|
% x/y/z_periodic periodicity
|
||||||
|
% Output
|
||||||
|
% xu,yu,zu,... grid vectors
|
||||||
|
% nxu,nyu,nzu,... number of points
|
||||||
|
|
||||||
|
nn=load(file);
|
||||||
|
nxp=nn(1);
|
||||||
|
nyp=nn(2);
|
||||||
|
nzp=nn(3);
|
||||||
|
[nxu,nyu,nzu,nxv,nyv,nzv,nxw,nyw,nzw,...
|
||||||
|
xu,yu,zu,xv,yv,zv,xw,yw,zw,xp,yp,zp]=...
|
||||||
|
generate_grid(a,b,c,d,e,f,nxp,nyp,nzp,x_periodic,y_periodic,z_periodic);
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
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,...
|
||||||
|
nxprocs,nyprocs,nzprocs] = read_procgrid_legacy(file)
|
||||||
|
% [ibegu,iendu,jbegu,jendu,kbegu,kendu,...
|
||||||
|
% ibegv,iendv,jbegv,jendv,kbegv,kendv,...
|
||||||
|
% ibegw,iendw,jbegw,jendw,kbegw,kendw,...
|
||||||
|
% ibegp,iendp,jbegp,jendp,kbegp,kendp,...
|
||||||
|
% nxprocs,nyprocs,nzprocs] = read_procgrid_legacy(file)
|
||||||
|
% Reads processor grids from 'current_proc_grid.tmp'.
|
||||||
|
% Input
|
||||||
|
% file path to 'current_proc_grid.tmp'
|
||||||
|
% 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
|
||||||
|
% nxprocs,nyprocs,nzprocs number of processors
|
||||||
|
|
||||||
|
proc_grid=load(file);
|
||||||
|
nxprocs = proc_grid(1,1);
|
||||||
|
nyprocs = proc_grid(1,2);
|
||||||
|
nzprocs = proc_grid(1,3);
|
||||||
|
|
||||||
|
ibegu = zeros(nxprocs,1);
|
||||||
|
iendu = zeros(nxprocs,1);
|
||||||
|
ibegv = zeros(nxprocs,1);
|
||||||
|
iendv = zeros(nxprocs,1);
|
||||||
|
ibegw = zeros(nxprocs,1);
|
||||||
|
iendw = zeros(nxprocs,1);
|
||||||
|
ibegp = zeros(nxprocs,1);
|
||||||
|
iendp = zeros(nxprocs,1);
|
||||||
|
|
||||||
|
jbegu = zeros(nyprocs,1);
|
||||||
|
jendu = zeros(nyprocs,1);
|
||||||
|
jbegv = zeros(nyprocs,1);
|
||||||
|
jendv = zeros(nyprocs,1);
|
||||||
|
jbegw = zeros(nyprocs,1);
|
||||||
|
jendw = zeros(nyprocs,1);
|
||||||
|
jbegp = zeros(nyprocs,1);
|
||||||
|
jendp = zeros(nyprocs,1);
|
||||||
|
|
||||||
|
kbegu = zeros(nzprocs,1);
|
||||||
|
kendu = zeros(nzprocs,1);
|
||||||
|
kbegv = zeros(nzprocs,1);
|
||||||
|
kendv = zeros(nzprocs,1);
|
||||||
|
kbegw = zeros(nzprocs,1);
|
||||||
|
kendw = zeros(nzprocs,1);
|
||||||
|
kbegp = zeros(nzprocs,1);
|
||||||
|
kendp = zeros(nzprocs,1);
|
||||||
|
|
||||||
|
for ii=1:nxprocs
|
||||||
|
ibegu(ii)=proc_grid(1+ii,1);
|
||||||
|
iendu(ii)=proc_grid(1+ii,2);
|
||||||
|
ibegv(ii)=proc_grid(1+ii,3);
|
||||||
|
iendv(ii)=proc_grid(1+ii,4);
|
||||||
|
ibegw(ii)=proc_grid(1+ii,5);
|
||||||
|
iendw(ii)=proc_grid(1+ii,6);
|
||||||
|
ibegp(ii)=proc_grid(1+ii,7);
|
||||||
|
iendp(ii)=proc_grid(1+ii,8);
|
||||||
|
end
|
||||||
|
for ii=1:nyprocs
|
||||||
|
jbegu(ii)=proc_grid(1+nxprocs+ii,1);
|
||||||
|
jendu(ii)=proc_grid(1+nxprocs+ii,2);
|
||||||
|
jbegv(ii)=proc_grid(1+nxprocs+ii,3);
|
||||||
|
jendv(ii)=proc_grid(1+nxprocs+ii,4);
|
||||||
|
jbegw(ii)=proc_grid(1+nxprocs+ii,5);
|
||||||
|
jendw(ii)=proc_grid(1+nxprocs+ii,6);
|
||||||
|
jbegp(ii)=proc_grid(1+nxprocs+ii,7);
|
||||||
|
jendp(ii)=proc_grid(1+nxprocs+ii,8);
|
||||||
|
end
|
||||||
|
for ii=1:nzprocs
|
||||||
|
kbegu(ii)=proc_grid(1+nxprocs+nyprocs+ii,1);
|
||||||
|
kendu(ii)=proc_grid(1+nxprocs+nyprocs+ii,2);
|
||||||
|
kbegv(ii)=proc_grid(1+nxprocs+nyprocs+ii,3);
|
||||||
|
kendv(ii)=proc_grid(1+nxprocs+nyprocs+ii,4);
|
||||||
|
kbegw(ii)=proc_grid(1+nxprocs+nyprocs+ii,5);
|
||||||
|
kendw(ii)=proc_grid(1+nxprocs+nyprocs+ii,6);
|
||||||
|
kbegp(ii)=proc_grid(1+nxprocs+nyprocs+ii,7);
|
||||||
|
kendp(ii)=proc_grid(1+nxprocs+nyprocs+ii,8);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,149 @@
|
||||||
|
function [u,ibu,jbu,kbu,nxul,nyul,nzul,...
|
||||||
|
v,ibv,jbv,kbv,nxvl,nyvl,nzvl,...
|
||||||
|
w,ibw,jbw,kbw,nxwl,nywl,nzwl,...
|
||||||
|
p,ibp,jbp,kbp,nxpl,nypl,nzpl,ighost] = read_uvwp_chunk_legacy(fuvwp,fproc,ighost,varargin)
|
||||||
|
% [u,ibu,jbu,kbu,nxul,nyul,nzul,...
|
||||||
|
% v,ibv,jbv,kbv,nxvl,nyvl,nzvl,...
|
||||||
|
% w,ibw,jbw,kbw,nxwl,nywl,nzwl,...
|
||||||
|
% p,ibp,jbp,kbp,nxpl,nypl,nzpl,ighost] = read_uvwp_chunk_legacy(fuvwp,fproc,ighost,varargin)
|
||||||
|
% Reads u,v,w,p from one processor chunk.
|
||||||
|
% Input
|
||||||
|
% fuvwp path to uvwp chunk
|
||||||
|
% fproc path to 'current_proc_grid.tmp'
|
||||||
|
% ighost data written with ghost cells?
|
||||||
|
% ? ghost keep ghost cells? (default: 1)
|
||||||
|
% ? verbosity verbose output? (default: 0)
|
||||||
|
% ? nparam number of parameters in header (default: 10)
|
||||||
|
% ? precision precision of data (default: 'float64')
|
||||||
|
% 'float32'
|
||||||
|
% 'float64'
|
||||||
|
% ? endian endianess of file (default: 'a')
|
||||||
|
% ? reclen FORTRAN record length in bytes (default: 4)
|
||||||
|
% Output
|
||||||
|
% u,v,w,p partial fields with dim(nxl,nyl,nzl)+2*ighost
|
||||||
|
% ibu,jbu,kbu,... global index of first grid point of the partial field w/o ghost cells
|
||||||
|
% nxul,nyul,nzul,... local field size w/o ghost cells
|
||||||
|
% ighost ghost cell flag
|
||||||
|
|
||||||
|
% Parse optional input arguments
|
||||||
|
par = inputParser;
|
||||||
|
addParamValue(par,'ghost',1,@isnumeric);
|
||||||
|
addParamValue(par,'verbosity',0,@isnumeric);
|
||||||
|
addParamValue(par,'nparam',10,@isnumeric);
|
||||||
|
addParamValue(par,'precision','float64',@ischar);
|
||||||
|
addParamValue(par,'endian','a',@ischar);
|
||||||
|
addParamValue(par,'reclen',4,@isnumeric);
|
||||||
|
parse(par,varargin{:});
|
||||||
|
keepghost = par.Results.ghost;
|
||||||
|
verbosity = par.Results.verbosity;
|
||||||
|
nparam = par.Results.nparam;
|
||||||
|
precision = par.Results.precision;
|
||||||
|
endian = par.Results.endian;
|
||||||
|
reclen = par.Results.reclen;
|
||||||
|
|
||||||
|
% First read processor grid from tmp file
|
||||||
|
[ibegu,iendu,jbegu,jendu,kbegu,kendu,...
|
||||||
|
ibegv,iendv,jbegv,jendv,kbegv,kendv,...
|
||||||
|
ibegw,iendw,jbegw,jendw,kbegw,kendw,...
|
||||||
|
ibegp,iendp,jbegp,jendp,kbegp,kendp,...
|
||||||
|
nxprocs,nyprocs,nzprocs] = read_procgrid_legacy(fproc);
|
||||||
|
|
||||||
|
% Determine processor rank from filename
|
||||||
|
[idxbeg,idxend] = regexp(fuvwp,'[\d+]$');
|
||||||
|
if isempty(idxbeg)
|
||||||
|
error('Invalid file: does not contain rank. %s',fuvwp);
|
||||||
|
end
|
||||||
|
iproc = str2double(fuvwp(idxbeg:idxend));
|
||||||
|
|
||||||
|
% Determine local array sizes
|
||||||
|
ixproc = floor(iproc/(nyprocs*nzprocs));
|
||||||
|
iyproc = mod(floor(iproc/nzprocs),nyprocs);
|
||||||
|
izproc = mod(iproc,nzprocs);
|
||||||
|
|
||||||
|
ibu = ibegu(ixproc+1);
|
||||||
|
jbu = jbegu(iyproc+1);
|
||||||
|
kbu = kbegu(izproc+1);
|
||||||
|
nxul = iendu(ixproc+1)-ibu+1;
|
||||||
|
nyul = jendu(iyproc+1)-jbu+1;
|
||||||
|
nzul = kendu(izproc+1)-kbu+1;
|
||||||
|
|
||||||
|
ibv = ibegv(ixproc+1);
|
||||||
|
jbv = jbegv(iyproc+1);
|
||||||
|
kbv = kbegv(izproc+1);
|
||||||
|
nxvl = iendv(ixproc+1)-ibv+1;
|
||||||
|
nyvl = jendv(iyproc+1)-jbv+1;
|
||||||
|
nzvl = kendv(izproc+1)-kbv+1;
|
||||||
|
|
||||||
|
ibw = ibegw(ixproc+1);
|
||||||
|
jbw = jbegw(iyproc+1);
|
||||||
|
kbw = kbegw(izproc+1);
|
||||||
|
nxwl = iendw(ixproc+1)-ibw+1;
|
||||||
|
nywl = jendw(iyproc+1)-jbw+1;
|
||||||
|
nzwl = kendw(izproc+1)-kbw+1;
|
||||||
|
|
||||||
|
ibp = ibegp(ixproc+1);
|
||||||
|
jbp = jbegp(iyproc+1);
|
||||||
|
kbp = kbegp(izproc+1);
|
||||||
|
nxpl = iendp(ixproc+1)-ibp+1;
|
||||||
|
nypl = jendp(iyproc+1)-jbp+1;
|
||||||
|
nzpl = kendp(izproc+1)-kbp+1;
|
||||||
|
|
||||||
|
% Convert 'precision' into bytes
|
||||||
|
switch precision
|
||||||
|
case 'float32'; nprecision = 4;
|
||||||
|
case 'float64'; nprecision = 8;
|
||||||
|
otherwise; error('Invalid precision: %s',precision)
|
||||||
|
end
|
||||||
|
|
||||||
|
% Open uvwp file
|
||||||
|
fid = fopen(fuvwp,'r',endian);
|
||||||
|
if fid<0
|
||||||
|
error('File not found: %s',fuvwp);
|
||||||
|
end
|
||||||
|
|
||||||
|
% Skip headers and read fields
|
||||||
|
nheader = 4*reclen+(4+nparam)*nprecision;
|
||||||
|
fseek(fid,nheader+reclen,'bof');
|
||||||
|
nx = (nxul+2*ighost);
|
||||||
|
ny = (nyul+2*ighost);
|
||||||
|
nz = (nzul+2*ighost);
|
||||||
|
u = fread(fid,nx*ny*nz,precision);
|
||||||
|
u = reshape(u,nx,ny,nz);
|
||||||
|
fseek(fid,nheader+2*reclen,'cof');
|
||||||
|
nx = (nxvl+2*ighost);
|
||||||
|
ny = (nyvl+2*ighost);
|
||||||
|
nz = (nzvl+2*ighost);
|
||||||
|
v = fread(fid,nx*ny*nz,precision);
|
||||||
|
v = reshape(v,nx,ny,nz);
|
||||||
|
fseek(fid,nheader+2*reclen,'cof');
|
||||||
|
nx = (nxwl+2*ighost);
|
||||||
|
ny = (nywl+2*ighost);
|
||||||
|
nz = (nzwl+2*ighost);
|
||||||
|
w = fread(fid,nx*ny*nz,precision);
|
||||||
|
w = reshape(w,nx,ny,nz);
|
||||||
|
fseek(fid,nheader+2*reclen,'cof');
|
||||||
|
nx = (nxpl+2*ighost);
|
||||||
|
ny = (nypl+2*ighost);
|
||||||
|
nz = (nzpl+2*ighost);
|
||||||
|
p = fread(fid,nx*ny*nz,precision);
|
||||||
|
p = reshape(p,nx,ny,nz);
|
||||||
|
fseek(fid,reclen,'cof');
|
||||||
|
|
||||||
|
% Test for eof
|
||||||
|
fread(fid,1,'char');
|
||||||
|
if ~feof(fid)
|
||||||
|
warning('End-of-file not reached: data might be corrupt.');
|
||||||
|
end
|
||||||
|
|
||||||
|
% Close file
|
||||||
|
fclose(fid);
|
||||||
|
|
||||||
|
% Remove ghosts if necessary
|
||||||
|
if ighost && ~keepghost
|
||||||
|
u = u(2:end-1,2:end-1,2:end-1);
|
||||||
|
v = v(2:end-1,2:end-1,2:end-1);
|
||||||
|
w = w(2:end-1,2:end-1,2:end-1);
|
||||||
|
p = p(2:end-1,2:end-1,2:end-1);
|
||||||
|
ighost = 0;
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in New Issue