diff --git a/matlab/InitFDTD.m b/matlab/InitFDTD.m index a775d31..8051446 100644 --- a/matlab/InitFDTD.m +++ b/matlab/InitFDTD.m @@ -1,15 +1,13 @@ -function FDTD = InitFDTD(NrTS, endCrit, varargin) -% function FDTD = InitFDTD(NrTS, endCrit, varargin) +function FDTD = InitFDTD(varargin) +% function FDTD = InitFDTD(varargin) % % Inititalize the FDTD data-structure. % -% optional arguments: -% NrTS: max. number of timesteps to simulate (e.g. default=1e9) -% endCrit: end criteria, e.g. 1e-5, simulations stops if energy has -% decayed by this value (<1e-4 is recommended, default=1e-5) -% MaxTime: max. real time in seconds to simulate -% % optional field arguments for usage with openEMS: +% NrTS: max. number of timesteps to simulate (e.g. default=1e9) +% EndCriteria: end criteria, e.g. 1e-5, simulations stops if energy has +% decayed by this value (<1e-4 is recommended, default=1e-5) +% MaxTime: max. real time in seconds to simulate % OverSampling: nyquist oversampling of time domain dumps % CoordSystem: choose coordinate system (0 Cartesian, 1 Cylindrical) % TimeStep: force to use a given timestep (dangerous!) @@ -20,33 +18,42 @@ function FDTD = InitFDTD(NrTS, endCrit, varargin) % FDTD = InitFDTD(); % % %init with 1e6 max. timesteps and -60dB end-criteria -% FDTD = InitFDTD(1e6, 1e-6); +% FDTD = InitFDTD('NrTS', 1e6, 'EndCriteria', 1e-6); % % %cylindrical FDTD simulation -% FDTD = InitFDTD(1e6, 1e-6, 'CoordSystem', 1); +% FDTD = InitFDTD('CoordSystem', 1); % % See also InitCSX % % openEMS matlab interface % ----------------------- -% author: Thorsten Liebig (c) 2010-2012 +% author: Thorsten Liebig (c) 2010-2013 -if (nargin<1) - FDTD.ATTRIBUTE.NumberOfTimesteps=1e9; -else - FDTD.ATTRIBUTE.NumberOfTimesteps=NrTS; -end -if (nargin<2) - FDTD.ATTRIBUTE.endCriteria = 1e-5; -else - FDTD.ATTRIBUTE.endCriteria=endCrit; +% default values +NrTS = 1e9; +endCrit = 1e-5; + +% legacy support +if ((nargin==1) && (isnumeric(varargin{1}))) + NrTS = varargin{1}; + warning('openEMS:InitFDTD',['Syntax for InitFDTD has changed, use: "InitFDTD(''NrTS'', ' num2str(NrTS) ')" instead! Legacy support enabled.']); +elseif ((nargin==2) && (isnumeric(varargin{1})) && (isnumeric(varargin{2}))) + NrTS = varargin{1}; + endCrit = varargin{2}; + warning('openEMS:InitFDTD',['Syntax for InitFDTD has changed, use: "InitFDTD(''NrTS'', ' num2str(NrTS) ', ''EndCriteria'', ' num2str(endCrit) ')" instead! Legacy support enabled.']); end for n=1:numel(varargin)/2 - if strcmp(varargin{2*n-1},'CoordSystem')==1 + if strcmpi(varargin{2*n-1},'CoordSystem')==1 FDTD.ATTRIBUTE.CylinderCoords=varargin{2*n}==1; + elseif strcmpi(varargin{2*n-1},'NrTS')==1 + NrTS=varargin{2*n}; + elseif strcmpi(varargin{2*n-1},'EndCriteria')==1 + endCrit=varargin{2*n}; else FDTD.ATTRIBUTE.(varargin{2*n-1})=varargin{2*n}; end end +FDTD.ATTRIBUTE.NumberOfTimesteps=NrTS; +FDTD.ATTRIBUTE.endCriteria=endCrit;