source: MML/trunk/at/doc_html/at/lattice/insertindrift.html @ 4

Last change on this file since 4 was 4, checked in by zhangj, 10 years ago

Initial import--MML version from SOLEIL@2013

File size: 8.3 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2                "http://www.w3.org/TR/REC-html40/loose.dtd">
3<html>
4<head>
5  <title>Description of insertindrift</title>
6  <meta name="keywords" content="insertindrift">
7  <meta name="description" content="INSERTINDRIFT inserts one or more elements into a drift element">
8  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
9  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
10  <meta name="robots" content="index, follow">
11  <link type="text/css" rel="stylesheet" href="../../m2html.css">
12</head>
13<body>
14<a name="_top"></a>
15<div><a href="../../index.html">Home</a> &gt;  <a href="../index.html">at</a> &gt; <a href="index.html">lattice</a> &gt; insertindrift.m</div>
16
17<!--<table width="100%"><tr><td align="left"><a href="../../index.html"><img alt="<" border="0" src="../../left.png">&nbsp;Master index</a></td>
18<td align="right"><a href="index.html">Index for at/lattice&nbsp;<img alt=">" border="0" src="../../right.png"></a></td></tr></table>-->
19
20<h1>insertindrift
21</h1>
22
23<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
24<div class="box"><strong>INSERTINDRIFT inserts one or more elements into a drift element</strong></div>
25
26<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
27<div class="box"><strong>function ELEMSEQ = insertindrift(DRIFT0, ELEM1, POS1, varargin) </strong></div>
28
29<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
30<div class="fragment"><pre class="comment"> INSERTINDRIFT inserts one or more elements into a drift element
31  and returns a sequence (cell array) of elements  ready to to be used
32  in AT lattice
33
34 ELEMSEQ = INSERTELEM(DRIFT0, ELEM1, POS1, ... ELEMN, POSN)
35 
36 EXAMPLE: FODO cell
37
38 --- 1. Declare elements
39
40 D  = atelem('drift','Length',4.5);
41 QF = atelem('quad','Length', 1, 'K',  1.234);
42 QD = atelem('quad','Length', 1, 'K', -2.345);
43
44 --- 2. Insert quadrupoles in the drift;
45
46 FODOCELL = insertindrift(D, QF, 0.5, QD, 2, QF, 3.5);
47 
48 See also: <a href="splitelem.html" class="code" title="function elemseq = insertelem(ELEM, varargin)">SPLITELEM</a></pre></div>
49
50<!-- crossreference -->
51<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
52This function calls:
53<ul style="list-style-image:url(../../matlabicon.gif)">
54<li><a href="atelem.html" class="code" title="function elemstruct = atelem(ELEM,varargin)">atelem</a>   ATELEM makes a new AT element structure from another element,</li><li><a href="isatelem.html" class="code" title="function [t, errorstr] = isatelem(ELEM,varargin)">isatelem</a>        ISATELEM tests if an input argument is a valid AT element.</li></ul>
55This function is called by:
56<ul style="list-style-image:url(../../matlabicon.gif)">
57</ul>
58<!-- crossreference -->
59
60
61<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../up.png"></a></h2>
62<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function ELEMSEQ = insertindrift(DRIFT0, ELEM1, POS1, varargin)</a>
630002 <span class="comment">% INSERTINDRIFT inserts one or more elements into a drift element</span>
640003 <span class="comment">%  and returns a sequence (cell array) of elements  ready to to be used</span>
650004 <span class="comment">%  in AT lattice</span>
660005 <span class="comment">%</span>
670006 <span class="comment">% ELEMSEQ = INSERTELEM(DRIFT0, ELEM1, POS1, ... ELEMN, POSN)</span>
680007 <span class="comment">%</span>
690008 <span class="comment">% EXAMPLE: FODO cell</span>
700009 <span class="comment">%</span>
710010 <span class="comment">% --- 1. Declare elements</span>
720011 <span class="comment">%</span>
730012 <span class="comment">% D  = atelem('drift','Length',4.5);</span>
740013 <span class="comment">% QF = atelem('quad','Length', 1, 'K',  1.234);</span>
750014 <span class="comment">% QD = atelem('quad','Length', 1, 'K', -2.345);</span>
760015 <span class="comment">%</span>
770016 <span class="comment">% --- 2. Insert quadrupoles in the drift;</span>
780017 <span class="comment">%</span>
790018 <span class="comment">% FODOCELL = insertindrift(D, QF, 0.5, QD, 2, QF, 3.5);</span>
800019 <span class="comment">%</span>
810020 <span class="comment">% See also: SPLITELEM</span>
820021
830022
840023 <span class="keyword">if</span> ~<a href="isatelem.html" class="code" title="function [t, errorstr] = isatelem(ELEM,varargin)">isatelem</a>(DRIFT0)
850024     error(<span class="string">'The first argument must be a valid Accelerator Toolbox drift element'</span>);
860025 <span class="keyword">end</span>
870026
880027 <span class="keyword">if</span> ~<a href="isatelem.html" class="code" title="function [t, errorstr] = isatelem(ELEM,varargin)">isatelem</a>(ELEM1)
890028     error(<span class="string">'The second argument must be a valid Accelerator Toolbox element to insert'</span>);
900029 <span class="keyword">end</span>
910030
920031 <span class="keyword">if</span> ~isnumeric(POS1)
930032     errorstr = sprintf(<span class="string">'Incorrect syntax:\n'</span>);
940033     errorstr=[errorstr,sprintf(<span class="string">'Elements to inserted must be followed by position [m]\n'</span>)];
950034     errorstr=[errorstr,sprintf(<span class="string">'in the argument list: ELEM1, pos1, ... ELEMN, POSN '</span>)];
960035     error(errorstr);
970036 <span class="keyword">end</span>
980037         
990038     
1000039 ELEMSEQ = {};
1010040 <span class="keyword">if</span> POS1&gt;0
1020041     ELEMSEQ{1} = <a href="atelem.html" class="code" title="function elemstruct = atelem(ELEM,varargin)">atelem</a>(DRIFT0,<span class="string">'Length'</span>,POS1);
1030042 <span class="keyword">elseif</span> POS1&lt;0
1040043     (<span class="string">'Inconsistent lengths and positions cause elements to overlap'</span>);
1050044 <span class="keyword">end</span>
1060045     
1070046     
1080047 ELEMSEQ{end+1} = ELEM1;
1090048 LCUM = POS1+ELEM1.Length;
1100049
1110050
1120051 k = 1;
1130052 <span class="keyword">while</span> k &lt; nargin-3 <span class="comment">% Loop to extra</span>
1140053     <span class="keyword">if</span> <a href="isatelem.html" class="code" title="function [t, errorstr] = isatelem(ELEM,varargin)">isatelem</a>(varargin{k})
1150054         <span class="keyword">if</span> ~k&lt;nargin &amp; ~isnumeric(varargin{k+1})
1160055             errorstr = sprintf(<span class="string">'Incorrect syntax:\n'</span>);
1170056             errorstr=[errorstr,sprintf(<span class="string">'Elements to inserted must be followed by position [m]\n'</span>)];
1180057             errorstr=[errorstr,sprintf(<span class="string">'in the argument list: ELEM1, pos1, ... ELEMN, POSN '</span>)];
1190058             error(errorstr);
1200059         <span class="keyword">else</span>
1210060             
1220061             <span class="keyword">if</span> (varargin{k+1}-LCUM)&gt;0
1230062                 ELEMSEQ{end+1} = <a href="atelem.html" class="code" title="function elemstruct = atelem(ELEM,varargin)">atelem</a>(DRIFT0,<span class="string">'Length'</span>, varargin{k+1} - LCUM);
1240063             <span class="keyword">elseif</span> (varargin{k+1}-LCUM)&lt;0
1250064                 error(<span class="string">'Inconsistent lengths and positions cause elements to overlap'</span>);
1260065             <span class="keyword">end</span>
1270066               
1280067             ELEMSEQ{end+1} = varargin{k};
1290068             LCUM = varargin{k+1}+varargin{k}.Length;
1300069             k = k+2;
1310070
1320071             
1330072         <span class="keyword">end</span>
1340073     <span class="keyword">else</span>
1350074         error(<span class="string">'Incorrect syntax'</span>);
1360075     <span class="keyword">end</span>   
1370076 <span class="keyword">end</span>
1380077
1390078 <span class="keyword">if</span> DRIFT0.Length-LCUM &gt; 0
1400079     ELEMSEQ{end+1} = <a href="atelem.html" class="code" title="function elemstruct = atelem(ELEM,varargin)">atelem</a>(DRIFT0,<span class="string">'Length'</span>,DRIFT0.Length - LCUM);
1410080 <span class="keyword">elseif</span> DRIFT0.Length-LCUM &lt; 0
1420081     error(<span class="string">'Inconsistent lengths and positions cause elements to overlap'</span>);
1430082 <span class="keyword">end</span></pre></div>
144<hr><address>Generated on Mon 21-May-2007 15:26:45 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
145</body>
146</html>
Note: See TracBrowser for help on using the repository browser.