1 | function varargout = cavityon(varargin) |
---|
2 | %CAVITYON turns Cavities ON |
---|
3 | % |
---|
4 | % CAVITYON looks for elements that have field Frequency |
---|
5 | % and sets PassMethod for them to ThinCavityPass |
---|
6 | % CAVITYON(ENERGY) |
---|
7 | % In addition sets the E0 field of the global variable GLOBVAL |
---|
8 | % to energy - design energy [eV] |
---|
9 | % If GLOBVAL does not exist CAVITYON creates it |
---|
10 | % |
---|
11 | % See also CAVITYOFF, RADIATIONON, RADIATIONOFF |
---|
12 | |
---|
13 | if ~evalin('base','exist(''THERING'')') | evalin('base','isempty(whos(''global'',''THERING''))'); |
---|
14 | error('Global variable THERING could not be found'); |
---|
15 | end |
---|
16 | |
---|
17 | global THERING |
---|
18 | |
---|
19 | if ~evalin('base','exist(''GLOBVAL'')') | evalin('base','isempty(whos(''global'',''GLOBVAL''))'); |
---|
20 | if nargin==0 |
---|
21 | error('global variable GLOBVAL does not exist. To create it, use CAVITYON(ENERGY)') |
---|
22 | else |
---|
23 | evalin('base','global GLOBVAL'); |
---|
24 | GLOBVAL.E0 = varargin{1}; |
---|
25 | disp('Global variable GLOBVAL was created'); |
---|
26 | end |
---|
27 | else |
---|
28 | if nargin==1 |
---|
29 | GLOBVAL.E0 = varargin{1}; |
---|
30 | end |
---|
31 | |
---|
32 | end |
---|
33 | |
---|
34 | localcavindex = findcells(THERING,'Frequency'); |
---|
35 | |
---|
36 | if isempty(localcavindex) |
---|
37 | error('No cavities were found in the lattice'); |
---|
38 | end |
---|
39 | |
---|
40 | THERING = setcellstruct(THERING,'PassMethod',localcavindex, 'CavityPass'); |
---|
41 | |
---|
42 | disp(strcat('Cavities located at index [',num2str(localcavindex), '] were turned ON')) |
---|
43 | if nargout |
---|
44 | varargout{1}=localcavindex; |
---|
45 | end |
---|