42 lines
1.1 KiB
Matlab
42 lines
1.1 KiB
Matlab
function export_fields(Ex, Ey, Ez, normE, outDir)
|
|
%EXPORT_FIELDS Write Ex/Ey/Ez/normE in OpticsFEM 3D scatter post format.
|
|
|
|
if nargin < 5 || isempty(outDir)
|
|
outDir = fullfile(fileparts(mfilename('fullpath')), 'OutFile');
|
|
end
|
|
if ~exist(outDir, 'dir')
|
|
mkdir(outDir);
|
|
end
|
|
|
|
Ex = Ex(:);
|
|
Ey = Ey(:);
|
|
Ez = Ez(:);
|
|
normE = normE(:);
|
|
|
|
fidEx = fopen(fullfile(outDir, 'Ex'), 'w');
|
|
fidEy = fopen(fullfile(outDir, 'Ey'), 'w');
|
|
fidEz = fopen(fullfile(outDir, 'Ez'), 'w');
|
|
fidNe = fopen(fullfile(outDir, 'normE'), 'w');
|
|
cleanup = onCleanup(@() closeOpenFiles({fidEx, fidEy, fidEz, fidNe}));
|
|
|
|
fprintf(fidEx, '//\n');
|
|
fprintf(fidEy, '//\n');
|
|
fprintf(fidEz, '//\n');
|
|
fprintf(fidNe, '//\n');
|
|
fprintf(fidEx, '%.12g %.12g\n', [real(Ex), imag(Ex)].');
|
|
fprintf(fidEy, '%.12g %.12g\n', [real(Ey), imag(Ey)].');
|
|
fprintf(fidEz, '%.12g %.12g\n', [real(Ez), imag(Ez)].');
|
|
fprintf(fidNe, '%.12g\n', normE);
|
|
|
|
fprintf('Exported fields to %s (NbrVertex=%d)\n', outDir, numel(normE));
|
|
fprintf(' max(normE)=%.12g\n', max(normE));
|
|
end
|
|
|
|
function closeOpenFiles(fids)
|
|
for k = 1:numel(fids)
|
|
if fids{k} > 0
|
|
fclose(fids{k});
|
|
end
|
|
end
|
|
end
|