fixes in the read_uvwp_complete_legacy

This commit is contained in:
Tiago Pestana 2020-09-25 22:13:27 +02:00
parent 9fa7fedcda
commit b74f4f0c05
1 changed files with 52 additions and 56 deletions

View File

@ -1,76 +1,72 @@
function [u,v,w,p] = read_uvwp_complete_legacy(wkdir,fileid,nmyid,...
x_periodic,y_periodic,z_periodic,ghost)
function [u,v,w,p] = read_uvwp_complete_legacy(wkdir,ifield,nmyid,...
x_periodic,y_periodic,z_periodic,...
ighost,varargin)
% '_' if no ghost cells
% 'g' if there are ghost cells but u dont want to read them
% 'G' if there are ghost cells and u want to read them
% some default properties --> this can be added to a parser later
nparam = 10;
precision = 'float64';
endian = 'a';
resdir = [wkdir '/result'];
par = inputParser;
addParameter(par,'resdir',[wkdir 'result/']);
% load the domain
fcurrent_domain = [wkdir 'current_domain.tmp'];
[a,b,c,d,e,f] = read_domain_legacy(fcurrent_domain);
parse(par,varargin{:});
keepghost = 0; % see ToDo
resdir = par.Results.resdir;
% tmp files with simulation parameters
fdomain = [wkdir 'current_domain.tmp'];
fproc = [wkdir 'current_proc_grid.tmp'];
fpoints = [wkdir 'current_points.tmp'];
% read domain
[a,b,c,d,e,f] = read_domain_legacy(fdomain);
% load the grid
fcurrent_points = [wkdir 'current_points.tmp'];
[ 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(fcurrent_domain,a,b,c,d,e,f,...
nyp,nzp] = read_grid_legacy(fpoints,a,b,c,d,e,f,...
x_periodic,y_periodic,z_periodic);
% load the proc-grid data:
fcurrent_proc_grid =[wkdir 'current_proc_grid.tmp'];
[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(fcurrent_proc_grid);
% initialize zero arrays
u = zeros(nxu,nyu,nzu);
v = zeros(nxv,nyv,nzv);
w = zeros(nxw,nyw,nzw);
p = zeros(nxp,nyp,nzp);
for ifile=1:length(fileid)
ifield = fileid(ifile);
for myid = 0:nmyid-1
% initialize zero arrays
u = zeros(nxu,nyu,nzu);
v = zeros(nxv,nyv,nzv);
w = zeros(nxw,nyw,nzw);
p = zeros(nxp,nyp,nzp);
fuvwp=[resdir 'uvwp_' sprintf('%04d',ifield) '.' sprintf('%05d',myid)];
for myid = 0:nmyid-1
file=[resdir 'uvwp_' sprintf('%04d',ifield) '.' sprintf('%04d',myid)];
[~,~,~,~,param]=read3dp4_partial(file,nparam,precision,endian,...
1,1,1,1,1,1,1,1,1,1,1,1,'i',ghost);
mycol_vec = floor(param(3));
myrow_vec = floor(param(4));
mypln_vec = floor(param(5));
time=param(1);
[utmp,ibu,jbu,kbu,nxul,nyul,nzul,...
vtmp,ibv,jbv,kbv,nxvl,nyvl,nzvl,...
wtmp,ibw,jbw,kbw,nxwl,nywl,nzwl,...
ptmp,ibp,jbp,kbp,nxpl,nypl,nzpl,~] = ...
read_uvwp_chunk_legacy(fuvwp,fproc,ighost,'ghost',keepghost);
% the local array sizes for processor "myid,my_col,my_row,my_pln":
[ibu,ieu,jbu,jeu,kbu,keu,ibv,iev,jbv,jev,kbv,kev,...
ibw,iew,jbw,jew,kbw,kew,ibp,iep,jbp,jep,kbp,kep,...
nxlu,nylu,nzlu,nxlv,nylv,nzlv,nxlw,nylw,nzlw,...
nxlp,nylp,nzlp]=my_array_size(...
ibegu,iendu,jbegu,jendu,kbegu,kendu,...
ibegv,iendv,jbegv,jendv,kbegv,kendv,...
ibegw,iendw,jbegw,jendw,kbegw,kendw,...
ibegp,iendp,jbegp,jendp,kbegp,kendp,...
mycol_vec,myrow_vec,mypln_vec);
ieu = ibu+nxul-1; iev = ibv+nxvl-1; iew = ibw+nxwl-1; iep = ibp+nxpl-1;
jeu = jbu+nyul-1; jev = jbv+nyvl-1; jew = jbw+nywl-1; jep = jbp+nypl-1;
keu = kbu+nzul-1; kev = kbv+nzvl-1; kew = kbw+nzwl-1; kep = kbp+nzpl-1;
[utmp,vtmp,wtmp,ptmp,param]=read3dp4_partial(...
file,nparam,precision,endian,nxlu,nylu,nzlu,...
nxlv,nylv,nzlv,nxlw,nylw,nzlw,nxlp,nylp,nzlp,'_',ghost);
u(ibu:ieu,jbu:jeu,kbu:keu) = utmp;
v(ibv:iev,jbv:jev,kbv:kev) = vtmp;
w(ibw:iew,jbw:jew,kbw:kew) = wtmp;
p(ibp:iep,jbp:jep,kbp:kep) = ptmp;
u(ibu:ieu,jbu:jeu,kbu:keu) = utmp;
v(ibv:iev,jbv:jev,kbv:kev) = vtmp;
w(ibw:iew,jbw:jew,kbw:kew) = wtmp;
p(ibp:iep,jbp:jep,kbp:kep) = ptmp;
clear utmp vtmp wtmp ptmp;
end
end
end
%-------------------------------------------------------------------------------
% ToDo!
%-------------------------------------------------------------------------------
% addParameter(par,'nparam',10);
% addParameter(par,'precision','float64');
% addParameter(par,'endian','a');
% addParameter(par,'reclen',4);
% nparam = par.Results.nparam;
% precision = par.Results.precision;
% endian = par.Results.endian;
% reclen = par.Results.reclen;
% addParameter(par,'keepghost',0); % for now we can only read the full field
% no ghosts..
% keepghost = par.Results.keepghost;