Reading binary data
Dear Neks, I have written a small Matlab function to read in the binary result files. Mostly I understood the structure including the header and the structure of the data. After reading in the data (in my case I only wrote x,y,z,u,v,w,p) there was still some information in the result file. See % ??? for i=1:252 rest(i)=fread(fid,1,'float'); end in the function. Can you explain me what is this?? I added the Matlab function. Best , Fred
Hi Fred, header: 132 bytes endian test tag: 4 bytes element mapping: nel* 4 bytes data: nfields*nxyz*nel* wdsizo (where wdsizo is 4 or 8 bytes) metadata (min/max values): nfields*2*nel * 4 bytes Stefan On May 6, 2010, at 10:14 AM, [email protected] wrote:
Dear Neks,
I have written a small Matlab function to read in the binary result files. Mostly I understood the structure including the header and the structure of the data. After reading in the data (in my case I only wrote x,y,z,u,v,w,p) there was still some information in the result file. See % ??? for i=1:252 rest(i)=fread(fid,1,'float'); end in the function. Can you explain me what is this?? I added the Matlab function.
Best , Fred function [x,y,z,u,v,w,p,nel1,nmax,time,step] = nek_readbin(file) % Function nek_readbin % % Open *0.f0** binary NEK5000 result file % Call: [x,y,z,u,v,w,p,ne,nmax,time,step]=nek_readbin('file') % % Author: Frederik Folke % Date: 06/05/2010
%------------------------------------------------------------------------% %clear all
% Read header of ouput-file [a,n,nx,ny,nz,nel1,nel2,time,step]=... textread(file,'%5c %d %d %d %d %d %d %f %d' ,1); %source code from prepost.f % write(hdr,1) wdsizo,nxo,nyo,nzo,nelo,nelgt,time,istep,fid0,nfileoo % $ , (rdcode1(i),i=1,10) ! 74+20=94 %1 format('#std',1x,i1,1x,i2,1x,i2,1x,i2,1x,i10,1x,i10,1x,e20.13, % $ 1x,i9,1x,i6,1x,i6,1x,10a) clear a;
%------------------------------------------------------------------------% % Open result file and skip header fid=fopen(file) for i=1:52 bin(i)=fread(fid,1,'int'); end
nmax=(nx*ny*nz);
% Initialize x,y,z,u,v,w,p x2=zeros(nmax*nel1,1); y2=zeros(nmax*nel1,1); z2=zeros(nmax*nel1,1); u2=zeros(nmax*nel1,1); v2=zeros(nmax*nel1,1); w2=zeros(nmax*nel1,1); p2=zeros(nmax*nel1,1);
% Read data (here: x,y,z,u,v,w,p) k=0; l=0; m=0; for i=1:nel1 %maybe nel2?? for j=1:nmax k=k+1; x2(k)=fread(fid,1,'float'); end for j=1:nmax l=l+1; y2(l)=fread(fid,1,'float'); end for j=1:nmax m=m+1; z2(m)=fread(fid,1,'float'); end end
k=0; l=0; m=0; n=0; for i=1:nel1 %maybe nel2?? for j=1:nmax k=k+1; u2(k)=fread(fid,1,'float'); end for j=1:nmax l=l+1; v2(l)=fread(fid,1,'float'); end for j=1:nmax m=m+1; w2(m)=fread(fid,1,'float'); end end
k=0; for i=1:nel1 %maybe nel2?? for j=1:nmax k=k+1; p2(k)=fread(fid,1,'float'); end end
% ??? for i=1:252 rest(i)=fread(fid,1,'float'); end
fclose('all');
end_______________________________________________ Nek5000-users mailing list [email protected] https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users
participants (1)
-
nek5000-users@lists.mcs.anl.gov