diff --git a/matlab/ConvertHDF5_VTK.m b/matlab/ConvertHDF5_VTK.m index 5bd22e9..1fccadc 100644 --- a/matlab/ConvertHDF5_VTK.m +++ b/matlab/ConvertHDF5_VTK.m @@ -12,6 +12,7 @@ function ConvertHDF5_VTK(hdf_file, vtk_prefix, varargin) % 'FD_Dump': activate dump for frequency-domain data (default is on) % 'NumPhase': number of phase to dump frequency domain data animation % (default is 36 --> 10°) +% 'FieldName': field name written to vtk, e.g. 'E-Field' % % example: % % read time-domian data from hdf5, perform dft and dump as vtk @@ -27,40 +28,57 @@ do_FD_dump = 1; do_TD_dump = 0; phase_N = 36; +fieldname = 'unknown'; + for n=1:2:numel(varargin) - if (strcmp(varargin{n},'TD_Dump')==1); - do_TD_dump = varargin{n+1}; - end - if (strcmp(varargin{n},'FD_Dump')==1); - do_FD_dump = varargin{n+1}; - end - if (strcmp(varargin{n},'NumPhase')==1); - phase_N = varargin{n+1}; - end + if (strcmp(varargin{n},'TD_Dump')==1); + do_TD_dump = varargin{n+1}; + end + if (strcmp(varargin{n},'FD_Dump')==1); + do_FD_dump = varargin{n+1}; + end + if (strcmp(varargin{n},'NumPhase')==1); + phase_N = varargin{n+1}; + end + if (strcmp(varargin{n},'FieldName')==1); + fieldname = varargin{n+1}; + end end [field mesh] = ReadHDF5Dump(hdf_file, varargin{:}); +if ((do_TD_dump==0) && (do_FD_dump==0)) + warning('openEMS:ConvertHDF5_VTK','FD and TD dump disabled, nothing to be done...'); +end + if (do_FD_dump) - ph = linspace(0,360,phase_N+1); - ph = ph(1:end-1); - for n = 1:numel(field.FD.freq) - for p = ph - filename = [vtk_prefix '_' num2str(field.FD.freq(n)) '_' num2str(p,'%03d') '.vtk' ]; - Dump2VTK(filename, real(field.FD.values{n}*exp(1j*p*pi/180)), mesh); + if (~isfield(field,'FD')) + warning('openEMS:ConvertHDF5_VTK','no FD data found skipping frequency domian vtk dump...'); + else + ph = linspace(0,360,phase_N+1); + ph = ph(1:end-1); + for n = 1:numel(field.FD.freq) + for p = ph + filename = [vtk_prefix '_' num2str(field.FD.freq(n)) '_' num2str(p,'%03d') '.vtk' ]; + Dump2VTK(filename, real(field.FD.values{n}*exp(1j*p*pi/180)), mesh, fieldname, varargin{:}); + end + filename = [vtk_prefix '_' num2str(field.FD.freq(n)) '_abs.vtk' ]; + Dump2VTK(filename, abs(field.FD.values{n}), mesh, fieldname, varargin{:}); + filename = [vtk_prefix '_' num2str(field.FD.freq(n)) '_ang.vtk' ]; + Dump2VTK(filename, angle(field.FD.values{n}), mesh, fieldname, varargin{:}); end - filename = [vtk_prefix '_' num2str(field.FD.freq(n)) '_abs.vtk' ]; - Dump2VTK(filename, abs(field.FD.values{n}), mesh); - filename = [vtk_prefix '_' num2str(field.FD.freq(n)) '_ang.vtk' ]; - Dump2VTK(filename, angle(field.FD.values{n}), mesh); end end if (do_TD_dump) - disp('dumping time domain data...') - acc = ['%0' int2str(ceil(log10(numel(field.TD.time)+1))) 'd']; - for n = 1:numel(field.TD.time) - filename = [vtk_prefix '_TD_' num2str(n,acc) '.vtk' ]; - Dump2VTK(filename, abs(field.TD.values{n}), mesh); + if (~isfield(field,'TD')) + warning('openEMS:ConvertHDF5_VTK','no TD data found skipping time domian vtk dump...'); + else + disp('dumping time domain data...') + acc = ['%0' int2str(ceil(log10(numel(field.TD.time)+1))) 'd']; + for n = 1:numel(field.TD.time) + filename = [vtk_prefix '_TD_' num2str(n,acc) '.vtk' ]; + Dump2VTK(filename, abs(field.TD.values{n}), mesh, fieldname, varargin{:}); + end end end