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