function [CSX nf2ff] = CreateNF2FFBox(CSX, name, start, stop, varargin) % function [CSX nf2ff] = CreateNF2FFBox(CSX, name, start, stop, varargin) % % create the dump boxes needed for the near field to far field transformation % % input: % name: name of this nf2ff box % start/stop: start/stop coordinates for the nf2ff box (this box has to % enclose all radiating structures!) % optional inputs: % 'Directions': enable/disable specific directions, e.g. % 'Directions',[1 1 0 0 1 1] % -> disable nf2ff in +/-y direction % 'Frequency': dump nf2ff in frequency domain, this will save disk-space % but is less flexible, since only this frequencies can be % used for the nf2ff calculations by CalcNF2FF % See also AddDump for more information % 'OptResolution': specify a dump resolution, this will save disk-space % See also AddDump for more information % e.g.: 'OptResolution', c0/max_freq/unit/15 % % example: % see Tutorials/Simple_Patch_Antenna.m % see Tutorials/Helical_Antenna.m % % See also CalcNF2FF % % (C) 2010 Sebastian Held % (C) 2010-2012 Thorsten Liebig if (nargin<5) directions = ones(6,1); end directions = ones(6,1); add_args = {}; dump_type = 0; dump_mode = 1; for n=1:numel(varargin)/2 if strcmp(varargin{2*n-1},'Frequency') add_args = {add_args{:}, 'Frequency', varargin{2*n}}; dump_type = 10; elseif strcmp(varargin{2*n-1},'Directions') directions=varargin{2*n}; else add_args = {add_args{:}, varargin{2*n-1}, varargin{2*n}}; end end nf2ff.name = name; nf2ff.filenames_E = {[name '_E_xn'],[name '_E_xp'],[name '_E_yn'],[name '_E_yp'],[name '_E_zn'],[name '_E_zp']}; nf2ff.filenames_H = {[name '_H_xn'],[name '_H_xp'],[name '_H_yn'],[name '_H_yp'],[name '_H_zn'],[name '_H_zp']}; nf2ff.directions = directions; if (isfield(CSX,'ATTRIBUTE')) if (isfield(CSX.ATTRIBUTE,'CoordSystem')) nf2ff.CoordSystem = CSX.ATTRIBUTE.CoordSystem; end if (isfield(CSX,'BackgroundMaterial')) if (isfield(CSX.ATTRIBUTE,'Epsilon')) nf2ff.Eps_r = CSX.ATTRIBUTE.BG_epsR; end if (isfield(CSX.ATTRIBUTE,'Mue')) nf2ff.Mue_r = CSX.ATTRIBUTE.BG_mueR; end end end for nd = 1:3 pos = 2*nd-1; if (directions(pos)) l_start = start; l_stop = stop; l_stop(nd) = start(nd); CSX = AddBox( AddDump(CSX,nf2ff.filenames_E{pos},'DumpType',dump_type,'DumpMode',dump_mode,'FileType',1,add_args{:}), nf2ff.filenames_E{pos}, 0, l_start, l_stop ); CSX = AddBox( AddDump(CSX,nf2ff.filenames_H{pos},'DumpType',dump_type+1,'DumpMode',dump_mode,'FileType',1,add_args{:}), nf2ff.filenames_H{pos}, 0, l_start, l_stop ); else nf2ff.filenames_E{pos}=''; nf2ff.filenames_H{pos}=''; end pos = 2*nd; if (directions(pos)) l_start = start; l_stop = stop; l_start(nd) = stop(nd); CSX = AddBox( AddDump(CSX,nf2ff.filenames_E{pos},'DumpType',dump_type,'DumpMode',dump_mode,'FileType',1,add_args{:}), nf2ff.filenames_E{pos}, 0, l_start, l_stop ); CSX = AddBox( AddDump(CSX,nf2ff.filenames_H{pos},'DumpType',dump_type+1,'DumpMode',dump_mode,'FileType',1,add_args{:}), nf2ff.filenames_H{pos}, 0, l_start, l_stop ); else nf2ff.filenames_E{pos}=''; nf2ff.filenames_H{pos}=''; end end