1function CSX = AddProbe(CSX, name, type, varargin)
2% function CSX = AddProbe(CSX, name, type, varargin)
3%
4% Add a probe property to CSX with the given name.
5% Remember to add a geometrical primitive to any property.
6%
7% name:     name of the property and probe file
8%
9% type:     0 for voltage probing
10%           1 for current probing
11%           2 for E-field probing
12%           3 for H-field probing
13%
14%           10 for waveguide voltage mode matching
15%           11 for waveguide current mode matching
16%
17% all following parameter are optional key/value parameter:
18%
19% weight:       weighting factor (default is 1)
20% frequency:    dump in the frequency domain at the given samples (in Hz)
21% ModeFunction: A mode function (used only with type 3/4)
22% NormDir:      necessary for current probing box with dimension~=2
23% StartTime/StopTime: Define a start and/or stop time (in seconds)
24%                     for this probe to be active.
25
26% examples:
27%       CSX = AddProbe(CSX,'ut1',0); %voltate probe
28%       CSX = AddProbe(CSX,'it1',1); %current probe
29%
30% See also ReadUI in the openEMS matlab interface, AddDump,
31% AddExcitation, AddMaterial, AddExcitation, AddProbe, AddBox
32%
33% CSXCAD matlab interface
34% -----------------------
35% author: Thorsten Liebig
36
37FD_samples = [];
38ModeFunction = {};
39
40if ~ischar(name)
41    error('CSXCAD::AddProbe: name must be a string');
42end
43
44prop_args = {'Type', type};
45
46for n=1:2:numel(varargin)
47    if (strcmpi(varargin{n},'weight')==1);
48        prop_args{end+1} = 'Weight';
49        prop_args{end+1} = varargin{n+1};
50    elseif (strcmpi(varargin{n},'Frequency')==1);
51        FD_samples = varargin{n+1};
52    elseif (strcmpi(varargin{n},'ModeFunction')==1);
53        ModeFunction = varargin{n+1};
54    elseif (strcmpi(varargin{n},'NormDir')==1);
55        prop_args{end+1} = 'NormDir';
56        prop_args{end+1} = varargin{n+1};
57    elseif (strcmpi(varargin{n},'StartTime')==1);
58        prop_args{end+1} = 'StartTime';
59        prop_args{end+1} = varargin{n+1};
60    elseif (strcmpi(varargin{n},'StopTime')==1);
61        prop_args{end+1} = 'StopTime';
62        prop_args{end+1} = varargin{n+1};
63    else
64        warning('CSXCAD:AddProbe',['variable argument key: "' varargin{n+1} '" unknown']);
65    end
66end
67
68[CSX pos] = AddProperty(CSX, 'ProbeBox', name, prop_args{:});
69
70if (numel(FD_samples)>0)
71    CSX.Properties.ProbeBox{pos}.FD_Samples=FD_samples;
72end
73
74if (numel(ModeFunction)>0)
75    CSX.Properties.ProbeBox{pos}.Attributes.ATTRIBUTE.ModeFunctionX = ModeFunction{1};
76    CSX.Properties.ProbeBox{pos}.Attributes.ATTRIBUTE.ModeFunctionY = ModeFunction{2};
77    CSX.Properties.ProbeBox{pos}.Attributes.ATTRIBUTE.ModeFunctionZ = ModeFunction{3};
78end
79
80