function hdf5_to_mat_matrix(infilename, cellwise, solutionname, outfilename)
% hdf5_to_mat_matrix Convert a matrix solution from HDF5 to Matlab format.
%
% Signature:
% hdf5_to_mat_matrix(infilename, solutionname, outfilename)
%
% Parameters:
% infilename: the name of the HDF5 file containing the matrix solution
% cellwise: true for a cell-wise solution vector, false for a vertex-wise
% solutionname: the name of the solution vector inside the HDF5 file
% outfilename: the name of the output Matlab .mat-file

T = h5read(infilename, '/Block_0_t000000/Topology');
T = T' + 1
Points = h5read(infilename, '/Block_0_t000000/Geometry/Coordinates');
Points = Points([1 2], :)';
if cellwise
  P = h5read(infilename, strcat('/Block_0_t000000/Cell/', solutionname));
else
  pvertex = h5read(infilename, strcat('/Block_0_t000000/Node/', solutionname));
  P = zeros(size(T, 1), 1);
  factor = 1/size(T, 2);
  for i = 1:size(T, 2)
    P = P + factor.*pvertex(T(:, i));
  end
end

save(outfilename, 'T', 'P', 'Points');
fprintf('Wrote file %s.\n', outfilename);

return
