source: MML/trunk/mml/at/doc_html/at/atsummary.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: 12.5 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 atsummary</title>
6  <meta name="keywords" content="atsummary">
7  <meta name="description" content="ATSUMMARY - Prints out the paramters of the current AT lattice">
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; atsummary.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>atsummary
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>ATSUMMARY - Prints out the paramters of the current AT lattice</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 sum = atsummary </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">ATSUMMARY - Prints out the paramters of the current AT lattice
31  The parameters that come after the Synchrotron Integrals are
32  parameters that depend on the Integrals themselves. The equations to
33  calculate them were taken from [1].
34
35  [1] Alexander Wu Chao and Maury Tigner, Handbook of Accelerator Physics
36  and Engineering (World Scientific, Singapore, 1998), pp. 183-187. (or
37  187-190 in ed. 2)</pre></div>
38
39<!-- crossreference -->
40<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
41This function calls:
42<ul style="list-style-image:url(../matlabicon.gif)">
43</ul>
44This function is called by:
45<ul style="list-style-image:url(../matlabicon.gif)">
46</ul>
47<!-- crossreference -->
48
49
50<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
51<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function sum = atsummary</a>
520002 <span class="comment">%ATSUMMARY - Prints out the paramters of the current AT lattice</span>
530003 <span class="comment">%  The parameters that come after the Synchrotron Integrals are</span>
540004 <span class="comment">%  parameters that depend on the Integrals themselves. The equations to</span>
550005 <span class="comment">%  calculate them were taken from [1].</span>
560006 <span class="comment">%</span>
570007 <span class="comment">%  [1] Alexander Wu Chao and Maury Tigner, Handbook of Accelerator Physics</span>
580008 <span class="comment">%  and Engineering (World Scientific, Singapore, 1998), pp. 183-187. (or</span>
590009 <span class="comment">%  187-190 in ed. 2)</span>
600010
610011 <span class="comment">%</span>
620012 <span class="comment">%  Written by Eugene Tan</span>
630013 <span class="comment">%  Revised by Laurent S. Nadolski</span>
640014
650015
660016 <span class="keyword">global</span> THERING GLOBVAL
670017
680018 <span class="comment">% if exist('sum','var')</span>
690019 <span class="comment">%     clear global sum;</span>
700020 <span class="comment">%     global sum;</span>
710021 <span class="comment">% end</span>
720022
730023 <span class="comment">% Structure to store info</span>
740024 sum.e0 = GLOBVAL.E0*1e-9;
750025 sum.circumference = findspos(THERING, length(THERING)+1);
760026 sum.revTime = sum.circumference / 2.99792458e8;
770027 sum.revFreq = 2.99792458e8 / sum.circumference;
780028 sum.gamma = sum.e0 / 0.51099906e-3;
790029 sum.beta = sqrt(1 - 1/sum.gamma);
800030 [TD sum.tunes sum.chromaticity] = twissring(THERING, 0, 1:length(THERING)+1, <span class="string">'chrom'</span>, 1e-8);
810031 sum.compactionFactor = mcf(THERING);
820032
830033 <span class="comment">% For calculating the synchrotron integrals</span>
840034 temp  = cat(2,TD.Dispersion);
850035 D_x   = temp(1,:)';
860036 D_x_  = temp(2,:)';
870037 beta  = cat(1, TD.beta);
880038 alpha = cat(1, TD.alpha);
890039 gamma = (1 + alpha.^2) ./ beta;
900040 circ  = TD(length(THERING)+1).SPos;
910041
920042 <span class="comment">% Synchrotron integral calculation</span>
930043 sum.integrals = [0.0 0.0 0.0 0.0 0.0 0.0];
940044
950045 <span class="keyword">for</span> i = 1:length(THERING),
960046     <span class="keyword">if</span> isfield(THERING{i}, <span class="string">'BendingAngle'</span>) &amp;&amp; isfield(THERING{i}, <span class="string">'EntranceAngle'</span>)
970047         rho = THERING{i}.Length/THERING{i}.BendingAngle;
980048         dispersion = 0.5*(D_x(i)+D_x(i+1));
990049         sum.integrals(1) = sum.integrals(1) + dispersion*THERING{i}.Length/rho;
1000050         sum.integrals(2) = sum.integrals(2) + THERING{i}.Length/(rho^2);
1010051         sum.integrals(3) = sum.integrals(3) + THERING{i}.Length/(rho^3);
1020052         <span class="comment">% For general wedge magnets</span>
1030053         sum.integrals(4) = sum.integrals(4) + <span class="keyword">...</span>
1040054             D_x(i)*tan(THERING{i}.EntranceAngle)/rho^2 + <span class="keyword">...</span>
1050055             (1 + 2*rho^2*THERING{i}.PolynomB(2))*(D_x(i)+D_x(i+1))*THERING{i}.Length/(2*rho^3) + <span class="keyword">...</span>
1060056             D_x(i+1)*tan(THERING{i}.ExitAngle)/rho^2;
1070057         <span class="comment">%         sum.integrals(4) = sum.integrals(4) + 2*0.5*(D_x(i)+D_x(i+1))*THERING{i}.Length/rho^3;</span>
1080058         H1 = beta(i,1)*D_x_(i)*D_x_(i)+2*alpha(i)*D_x(i)*D_x_(i)+gamma(i)*D_x(i)*D_x(i);
1090059         H0 = beta(i+1,1)*D_x_(i+1)*D_x_(i+1)+2*alpha(i+1)*D_x(i+1)*D_x_(i+1)+gamma(i+1)*D_x(i+1)*D_x(i+1);
1100060         sum.integrals(5) = sum.integrals(5) + THERING{i}.Length*(H1+H0)*0.5/(rho^3);
1110061         <span class="comment">%         if H1+H0 &lt; 0</span>
1120062         <span class="comment">%             fprintf('%f %i %s\n', H1+H0, i, THERING{i}.FamName)</span>
1130063         <span class="comment">%         end</span>
1140064         sum.integrals(6) = sum.integrals(6) + <span class="keyword">...</span>
1150065             THERING{i}.PolynomB(2)^2*dispersion^2*THERING{i}.Length;
1160066     <span class="keyword">end</span>
1170067 <span class="keyword">end</span>
1180068
1190069 <span class="comment">% Damping numbers</span>
1200070 <span class="comment">% Use Robinson's Theorem</span>
1210071 sum.damping(1) = 1 - sum.integrals(4)/sum.integrals(2);
1220072 sum.damping(2) = 1;
1230073 sum.damping(3) = 2 + sum.integrals(4)/sum.integrals(2);
1240074
1250075 sum.radiation = 8.846e-5*sum.e0.^4*sum.integrals(2)/(2*pi);
1260076 sum.naturalEnergySpread = sqrt(3.8319e-13*sum.gamma.^2*sum.integrals(3)/(2*sum.integrals(2) + sum.integrals(4)));
1270077 sum.naturalEmittance = 3.8319e-13*(sum.e0*1e3/0.510999).^2*sum.integrals(5)/(sum.damping(1)*sum.integrals(2));
1280078
1290079 <span class="comment">% Damping times</span>
1300080 sum.radiationDamping(1) = 1/(2113.1*sum.e0.^3*sum.integrals(2)*sum.damping(1)/circ);
1310081 sum.radiationDamping(2) = 1/(2113.1*sum.e0.^3*sum.integrals(2)*sum.damping(2)/circ);
1320082 sum.radiationDamping(3) = 1/(2113.1*sum.e0.^3*sum.integrals(2)*sum.damping(3)/circ);
1330083
1340084 <span class="comment">% Slip factor</span>
1350085 sum.etac = sum.gamma^(-2) - sum.compactionFactor;
1360086
1370087 cavind = findcells(THERING,<span class="string">'HarmNumber'</span>);
1380088 <span class="keyword">if</span> ~isempty(cavind)
1390089     freq = THERING{cavind}.Frequency;
1400090     v_cav = THERING{cavind}.Voltage;
1410091 <span class="keyword">else</span>
1420092     <span class="comment">% Default</span>
1430093     freq = 352.202e6;
1440094     v_cav = 3e6;
1450095 <span class="keyword">end</span>
1460096 sum.harmon = sum.circumference/(2.99792458e8/freq); <span class="comment">% Assuming 499.654MHz RF</span>
1470097 sum.overvoltage = v_cav/(sum.radiation*1e9); <span class="comment">% Assuming 3e6 volt cavities.</span>
1480098 <span class="comment">% Assuming the harmon and overvoltage above.</span>
1490099 <span class="comment">% references:  H. Winick, &quot;Synchrotron Radiation Sources: A Primer&quot;,</span>
1500100 <span class="comment">% World Scientific Publishing, Singapore, pp92-95. (1995)</span>
1510101 <span class="comment">% Wiedemann, pp290,350. Chao, pp189.</span>
1520102 sum.syncphase = pi - asin(1/sum.overvoltage);
1530103 sum.energyacceptance = sqrt(v_cav*sin(sum.syncphase)*2*(sqrt(sum.overvoltage^2-1) - acos(1/sum.overvoltage))/(pi*sum.harmon*abs(sum.etac)*sum.e0*1e9));
1540104 sum.synctune = sqrt((sum.etac*sum.harmon*v_cav*cos(sum.syncphase))/(2*pi*sum.e0*1e9));
1550105 sum.bunchlength = sum.beta*299792458*abs(sum.etac)*sum.naturalEnergySpread/(sum.synctune*sum.revFreq*2*pi);
1560106
1570107 fprintf(<span class="string">'\n'</span>);
1580108 fprintf(<span class="string">'   ******** Summary for ''%s'' ********\n'</span>, GLOBVAL.LatticeFile);
1590109 fprintf(<span class="string">'   Energy: \t\t\t%4.5f [GeV]\n'</span>, sum.e0);
1600110 fprintf(<span class="string">'   Gamma: \t\t\t%4.5f \n'</span>, sum.gamma);
1610111 fprintf(<span class="string">'   Circumference: \t\t%4.5f [m]\n'</span>, sum.circumference);
1620112 fprintf(<span class="string">'   Revolution time: \t\t%4.5f [ns] (%4.5f [MHz]) \n'</span>, sum.revTime*1e9,sum.revFreq*1e-6);
1630113 fprintf(<span class="string">'   Betatron tune H: \t\t%4.5f (%4.5f [kHz])\n'</span>, sum.tunes(1),sum.tunes(1)/sum.revTime*1e-3);
1640114 fprintf(<span class="string">'                 V: \t\t%4.5f (%4.5f [kHz])\n'</span>, sum.tunes(2),sum.tunes(2)/sum.revTime*1e-3);
1650115 fprintf(<span class="string">'   Momentum Compaction Factor: \t%4.5f\n'</span>, sum.compactionFactor);
1660116 fprintf(<span class="string">'   Chromaticity H: \t\t%+4.5f\n'</span>, sum.chromaticity(1));
1670117 fprintf(<span class="string">'                V: \t\t%+4.5f\n'</span>, sum.chromaticity(2));
1680118 fprintf(<span class="string">'   Synchrotron Integral 1: \t%4.5f [m]\n'</span>, sum.integrals(1));
1690119 fprintf(<span class="string">'                        2: \t%4.5f [m^-1]\n'</span>, sum.integrals(2));
1700120 fprintf(<span class="string">'                        3: \t%4.5f [m^-2]\n'</span>, sum.integrals(3));
1710121 fprintf(<span class="string">'                        4: \t%4.5f [m^-1]\n'</span>, sum.integrals(4));
1720122 fprintf(<span class="string">'                        5: \t%4.5f [m^-1]\n'</span>, sum.integrals(5));
1730123 fprintf(<span class="string">'                        6: \t%4.5f [m^-1]\n'</span>, sum.integrals(6));
1740124 fprintf(<span class="string">'   Damping Partition H: \t%4.5f\n'</span>, sum.damping(1));
1750125 fprintf(<span class="string">'                     V: \t%4.5f\n'</span>, sum.damping(2));
1760126 fprintf(<span class="string">'                     E: \t%4.5f\n'</span>, sum.damping(3));
1770127 fprintf(<span class="string">'   Radiation Loss: \t\t%4.5f [keV]\n'</span>, sum.radiation*1e6);
1780128 fprintf(<span class="string">'   Natural Energy Spread: \t%4.5e\n'</span>, sum.naturalEnergySpread);
1790129 fprintf(<span class="string">'   Natural Emittance: \t\t%4.5e [mrad]\n'</span>, sum.naturalEmittance);
1800130 fprintf(<span class="string">'   Radiation Damping H: \t%4.5f [ms]\n'</span>, sum.radiationDamping(1)*1e3);
1810131 fprintf(<span class="string">'                     V: \t%4.5f [ms]\n'</span>, sum.radiationDamping(2)*1e3);
1820132 fprintf(<span class="string">'                     E: \t%4.5f [ms]\n'</span>, sum.radiationDamping(3)*1e3);
1830133 fprintf(<span class="string">'   Slip factor : \t%4.5f\n'</span>, sum.etac);
1840134 fprintf(<span class="string">'\n'</span>);
1850135 fprintf(<span class="string">'   Assuming cavities Voltage: %4.5f [kV]\n'</span>, v_cav/1e3);
1860136 fprintf(<span class="string">'                   Frequency: %4.5f [MHz]\n'</span>, freq/1e6);
1870137 fprintf(<span class="string">'             Harmonic Number: %4.5f\n'</span>, sum.harmon);
1880138 fprintf(<span class="string">'   Overvoltage factor: %4.5f\n'</span>, sum.overvoltage);
1890139 fprintf(<span class="string">'   Synchronous Phase:  %4.5f [rad] (%4.5f [deg])\n'</span>, sum.syncphase, sum.syncphase*180/pi);
1900140 fprintf(<span class="string">'   Linear Energy Acceptance:  %4.5f %%\n'</span>, sum.energyacceptance*100);
1910141 fprintf(<span class="string">'   Synchrotron Tune:   %4.5f (%4.5f kHz or %4.2f turns) \n'</span>, sum.synctune, sum.synctune/sum.revTime*1e-3, 1/sum.synctune);
1920142 fprintf(<span class="string">'   Bunch Length:       %4.5f [mm]\n'</span>, sum.bunchlength*1e3);</pre></div>
193<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>
194</body>
195</html>
Note: See TracBrowser for help on using the repository browser.