source: MML/trunk/mml/at/doc_html/at/printlattice.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: 10.4 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 printlattice</title>
6  <meta name="keywords" content="printlattice">
7  <meta name="description" content="PRINTLATTICE - Simple printout of the elements of the model">
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; printlattice.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&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
19
20<h1>printlattice
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>PRINTLATTICE - Simple printout of the elements of the model</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 varargout = printlattice(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">PRINTLATTICE - Simple printout of the elements of the model
31  printlattice(THERING,[format,index,'filename'])
32
33  Reads THERING and give a simple printout of the elements to standard out
34  (screen). If INDEX is specified only those elements in the INDEX will be
35  printed out and if FILENAME is specified the output will also be printed
36  to file and not printed to standard out (screen). Nothing is returned by
37  PRINTLATTICE.
38
39  FORMAT determines how the output should look.
40    'element'  -  element by element simple output (default)
41    'input'    -  list of unique elements followed by element position
42
43  Written by Eugene Tan</pre></div>
44
45<!-- crossreference -->
46<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
47This function calls:
48<ul style="list-style-image:url(../matlabicon.gif)">
49</ul>
50This function is called by:
51<ul style="list-style-image:url(../matlabicon.gif)">
52</ul>
53<!-- crossreference -->
54
55
56<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
57<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function varargout = printlattice(varargin)</a>
580002 <span class="comment">%PRINTLATTICE - Simple printout of the elements of the model</span>
590003 <span class="comment">%  printlattice(THERING,[format,index,'filename'])</span>
600004 <span class="comment">%</span>
610005 <span class="comment">%  Reads THERING and give a simple printout of the elements to standard out</span>
620006 <span class="comment">%  (screen). If INDEX is specified only those elements in the INDEX will be</span>
630007 <span class="comment">%  printed out and if FILENAME is specified the output will also be printed</span>
640008 <span class="comment">%  to file and not printed to standard out (screen). Nothing is returned by</span>
650009 <span class="comment">%  PRINTLATTICE.</span>
660010 <span class="comment">%</span>
670011 <span class="comment">%  FORMAT determines how the output should look.</span>
680012 <span class="comment">%    'element'  -  element by element simple output (default)</span>
690013 <span class="comment">%    'input'    -  list of unique elements followed by element position</span>
700014 <span class="comment">%</span>
710015 <span class="comment">%  Written by Eugene Tan</span>
720016
730017
740018 <span class="comment">% parse headers</span>
750019 THERING = {};
760020 index = [];
770021 filename = <span class="string">''</span>;
780022 element = 1;
790023 input = 0;
800024 <span class="keyword">for</span> i=nargin:-1:1
810025     <span class="keyword">if</span> iscell(varargin{i})
820026         THERING = varargin{i};
830027     <span class="keyword">elseif</span> ischar(varargin{i})
840028         <span class="keyword">switch</span> varargin{i}
850029             <span class="keyword">case</span> <span class="string">'element'</span>
860030                 element = 1;
870031             <span class="keyword">case</span> <span class="string">'input'</span>
880032                 input = 1;
890033             <span class="keyword">otherwise</span>
900034                 filename = varargin{i};
910035         <span class="keyword">end</span>
920036     <span class="keyword">elseif</span> isnumeric(varargin{i})
930037         index = varargin{i};
940038     <span class="keyword">else</span>
950039         fprintf(<span class="string">'Input parameter number %d ignored\n'</span>,i);
960040     <span class="keyword">end</span>
970041 <span class="keyword">end</span>
980042
990043
1000044 <span class="comment">% need to specify thering to use</span>
1010045 <span class="keyword">if</span> isempty(THERING)
1020046     <span class="keyword">global</span> THERING
1030047     <span class="comment">%error('Please specity THERING to use');</span>
1040048 <span class="keyword">end</span>
1050049
1060050 <span class="comment">% if index is not specified by the user then print all the elements</span>
1070051 <span class="keyword">if</span> isempty(index)
1080052     index = 1:length(THERING);
1090053 <span class="keyword">end</span>
1100054
1110055 <span class="keyword">if</span> isempty(filename)
1120056     <span class="comment">% standard output</span>
1130057     fid = 1;
1140058 <span class="keyword">else</span>
1150059     <span class="comment">% open file and write to it</span>
1160060     fid = fopen(filename,<span class="string">'w'</span>);
1170061 <span class="keyword">end</span>
1180062
1190063
1200064 <span class="keyword">if</span> input
1210065     <span class="comment">% cycle through index and determine unique elements</span>
1220066     famnames = {};
1230067     uniqueindex = [];
1240068     elementline = {};
1250069     <span class="keyword">for</span> i=index
1260070         elementline{end+1} = THERING{i}.FamName;
1270071         <span class="keyword">if</span> isempty(strmatch(THERING{i}.FamName,strvcat(famnames)))
1280072             famnames{end+1,1} = THERING{i}.FamName;
1290073             uniqueindex(end+1) = i;
1300074         <span class="keyword">end</span>
1310075     <span class="keyword">end</span>
1320076     index = uniqueindex;
1330077 <span class="keyword">end</span>
1340078
1350079 <span class="comment">% Information header</span>
1360080 fprintf(fid,<span class="string">'=== Element Definitions ===\n\n'</span>);
1370081 fprintf(fid,<span class="string">'DRIFT      LENGTH\n'</span>);
1380082 fprintf(fid,<span class="string">'MARKER     LENGTH\n'</span>);
1390083 fprintf(fid,<span class="string">'QUAD       LENGTH  K\n'</span>);
1400084 fprintf(fid,<span class="string">'MULTIPOLE  LENGTH  NORMAL_POLY\n'</span>);
1410085 fprintf(fid,<span class="string">'BEND       LENGTH  ANGLE  ENTRANCE  EXIT  NORMAL_POLY\n'</span>);
1420086 fprintf(fid,<span class="string">'\n\n'</span>);
1430087
1440088
1450089 <span class="keyword">for</span> i=index
1460090     elstring = [sprintf(<span class="string">'%10s '</span>,THERING{i}.FamName) <span class="string">' '</span>];
1470091     <span class="keyword">switch</span> THERING{i}.PassMethod
1480092         <span class="keyword">case</span> {<span class="string">'DriftPass'</span>}
1490093             elstring = [elstring sprintf(<span class="string">'%10s %10.7f\n'</span>,<span class="string">'DRIFT'</span>,THERING{i}.Length)];
1500094         <span class="keyword">case</span> {<span class="string">'IdentityPass'</span>}
1510095             elstring = [elstring sprintf(<span class="string">'%10s %10.7f\n'</span>,<span class="string">'MARKER'</span>,THERING{i}.Length)];
1520096         <span class="keyword">case</span> {<span class="string">'QuadLinearPass'</span>}
1530097             elstring = [elstring sprintf(<span class="string">'%10s %10.7f %10.7f\n'</span>,<span class="keyword">...</span>
1540098                 <span class="string">'QUAD'</span>,THERING{i}.Length,THERING{i}.PolynomB(2))];
1550099         <span class="keyword">case</span> {<span class="string">'StrMPoleSymplectic4Pass'</span> <span class="string">'StrMPoleSymplectic4RadPass'</span>}
1560100             elstring = [elstring sprintf(<span class="string">'%10s %10.7f '</span>,<span class="string">'MULTIPOLE'</span>,THERING{i}.Length) <span class="keyword">...</span>
1570101                 sprintf(<span class="string">'%10.7f '</span>,THERING{i}.PolynomB) sprintf(<span class="string">'\n'</span>)];
1580102         <span class="keyword">case</span> {<span class="string">'BendLinearPass'</span> <span class="string">'BndMPoleSymplectic4Pass'</span>,<span class="string">'BndMPoleSymplectic4RadPass'</span>}
1590103             elstring = [elstring sprintf(<span class="string">'%10s %10.7f %10.7f %10.7f %10.7f '</span>,<span class="keyword">...</span>
1600104                 <span class="string">'BEND'</span>,THERING{i}.Length,THERING{i}.BendingAngle,THERING{i}.EntranceAngle,THERING{i}.ExitAngle) <span class="keyword">...</span>
1610105                 sprintf(<span class="string">'%10.7f '</span>,THERING{i}.PolynomB) sprintf(<span class="string">'\n'</span>)];
1620106         <span class="keyword">otherwise</span>
1630107             disp([<span class="string">'UNKNOWN ELEMENT'</span> i])
1640108     <span class="keyword">end</span>
1650109     fprintf(fid,<span class="string">'%s'</span>,elstring);
1660110 <span class="keyword">end</span>
1670111
1680112 <span class="keyword">if</span> input
1690113     fprintf(fid,<span class="string">'\n\n === Element Arrangement === \n\n'</span>);
1700114     elstring = <span class="string">''</span>;
1710115     <span class="keyword">for</span> i=1:length(elementline)
1720116         elstring = [elstring sprintf(<span class="string">'%10s '</span>,elementline{i})];
1730117         <span class="keyword">if</span> mod(i,5) == 0
1740118             fprintf(fid,<span class="string">'%s\n'</span>,elstring);
1750119             elstring = <span class="string">''</span>;
1760120         <span class="keyword">end</span>
1770121     <span class="keyword">end</span>
1780122     fprintf(fid,<span class="string">'%s\n'</span>,elstring);
1790123 <span class="keyword">end</span>
1800124
1810125 <span class="keyword">if</span> fid ~= 1
1820126     fclose(fid);
1830127 <span class="keyword">end</span></pre></div>
184<hr><address>Generated on Fri 18-May-2007 17:13:39 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
185</body>
186</html>
Note: See TracBrowser for help on using the repository browser.