function d = CARPETLoadDatasetHDF5(str,index) % % d = CARPETLoadDatasetHDF5(str,index) % % Load all the ref.level and the components of an iteration. % % EXAMPLE=: % str = CARPETListDatasetHDF5('data/hdf5','phi',0); % d = CARPETLoadDatasetHDF5(str,2); % % Author: Gian Mario Manca, manca@fis.unipr.it % http://www.fis.unipr.it/~manca % % These scripts are distributed under the GNU General Public License (GPL) % 11 October 2006 d.rl=str.rl(index); d.rlmin=str.rlmin(index); d.c =str.c(index,:); d.num2name = zeros(d.rl,max(d.c)); d.time = str.time(index); d.timeMSEC= str.timeMSEC(index); disp(['TIME (ms) = ' num2str(str.timeMSEC(index)) ' ms' ' & TIME (C.U.) = ' num2str(str.time(index)) ' C.U.']); d.xmin=0; d.ymin=0; d.zmin=0; d.xmax=0; d.ymax=0; d.zmax=0; d.vmax=0; d.vmin=0; num=1; for i=d.rlmin:d.rl for j=1:d.c(i) d.names(num)=str.names(str.num2name(index,i,j)); d.num2name(i,j)=num; %disp(d.names(num)); dtname=d.names{num}; %str.filename{str.num2file(str.num2name(index,i,j))} %dtname d.dt(num).val = hdf5read(str.filename{str.num2file(str.num2name(index,i,j))},dtname); % dataset extraction d.vmax=max([d.vmax max(max(max(d.dt(num).val)))]); d.vmin=min([d.vmin min(min(min(d.dt(num).val)))]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % If you have problems with the dimesions try to comment-uncomment this line %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% d.dt(num).val=permute(d.dt(num).val,[2 1 3]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% varsize=size(d.dt(num).val); TMP_varsize=varsize(1); varsize(1)=varsize(2); varsize(2)=TMP_varsize; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Check these lines if you have problems. % Sometimes they are attributes 9 and 10, sometimes 1 and 2, sometimes who knows... % It depends on your carpet version. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% left_bottom =str.info{str.num2name(index,i,j)}(9).Value; %d.attr(9).Value; delta =str.info{str.num2name(index,i,j)}(10).Value; %d.attr(10).Value; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% d.dt(num).Xr =left_bottom(1)+[0:1:varsize(1)-1]*delta(1); d.dt(num).Yr =left_bottom(2)+[0:1:varsize(2)-1]*delta(2); d.dt(num).Zr =left_bottom(3)+[0:1:varsize(3)-1]*delta(3); d.dt(num).size=varsize; d.info{num}=str.info{str.num2name(index,i,j)}; disp(['' dtname ' ==>' ... ' (' num2str(varsize(1)) 'x' num2str(varsize(2)) 'x' num2str(varsize(3)) ') ' ... ' (' num2str(delta(1)) 'x' num2str(delta(2)) 'x' num2str(delta(3)) ') ' ... 'X(' num2str(d.dt(num).Xr(1)) ',' num2str(d.dt(num).Xr(end)) ') ' ... 'Y(' num2str(d.dt(num).Yr(1)) ',' num2str(d.dt(num).Yr(end)) ') ' ... 'Z(' num2str(d.dt(num).Zr(1)) ',' num2str(d.dt(num).Zr(end)) ') ' ... ] ); d.xmin=min([d.xmin d.dt(num).Xr(1) d.dt(num).Xr(end)]); d.ymin=min([d.ymin d.dt(num).Yr(1) d.dt(num).Yr(end)]); d.zmin=min([d.zmin d.dt(num).Zr(1) d.dt(num).Zr(end)]); d.xmax=max([d.xmax d.dt(num).Xr(1) d.dt(num).Xr(end)]); d.ymax=max([d.ymax d.dt(num).Yr(1) d.dt(num).Yr(end)]); d.zmax=max([d.zmax d.dt(num).Zr(1) d.dt(num).Zr(end)]); num=num+1; end end % JUST A CHECK % for i=d.rlmin:d.rl % for j=1:d.c(i) % disp(d.names(d.num2name(i,j))); % end % end return