source: MML/trunk/at/doc_html/at/atphysics/fittune2.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: 9.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 fittune2</title>
6  <meta name="keywords" content="fittune2">
7  <meta name="description" content="FITTUNE2 fits linear tunes of THERING using 2 quadrupole families">
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">atphysics</a> &gt; fittune2.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/atphysics&nbsp;<img alt=">" border="0" src="../../right.png"></a></td></tr></table>-->
19
20<h1>fittune2
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>FITTUNE2 fits linear tunes of THERING using 2 quadrupole families</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 =  fittune2(newtunes, quadfam1, quadfam2, 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">FITTUNE2 fits linear tunes of THERING using 2 quadrupole families
31 FITTUNE2(NEWTUNES,QUADFAMILY1,QUADFAMILY2)
32  INPUTS
33  1. newtunes - 2D tune vector to fit to
34  2. quadfam1 - Family name for the first quadrupole family
35  3. quadfam1 - Family name for the second quadrupole family
36  4. delta    - Kvariation for computing Jacobian matrix
37  5. Display  - Displays fitting results {default}
38     NoDisplay- Do not displays fitting results
39
40  EXAMPLES
41  1. fittune2([0.2 0.3],'Q7','Q9')
42
43  See Also <a href="fitchrom2.html" class="code" title="function varargout =  fitchrom2(newchrom, sextfam1, sextfam2, varargin)">fitchrom2</a></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<li><a href="linopt.html" class="code" title="function [LinData, varargout] = linopt(RING,DP,varargin);">linopt</a>     LINOPT performs linear analysis of the COUPLED lattices</li><li><a href="tunechrom.html" class="code" title="function [tune, varargout] = tunechrom(RING,DP,varargin)">tunechrom</a>    TUNECHROM computes linear tunes and chromaticities for COUPLED or UNCOUPLED lattice</li></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 =  fittune2(newtunes, quadfam1, quadfam2, varargin);</a>
580002 <span class="comment">%FITTUNE2 fits linear tunes of THERING using 2 quadrupole families</span>
590003 <span class="comment">% FITTUNE2(NEWTUNES,QUADFAMILY1,QUADFAMILY2)</span>
600004 <span class="comment">%  INPUTS</span>
610005 <span class="comment">%  1. newtunes - 2D tune vector to fit to</span>
620006 <span class="comment">%  2. quadfam1 - Family name for the first quadrupole family</span>
630007 <span class="comment">%  3. quadfam1 - Family name for the second quadrupole family</span>
640008 <span class="comment">%  4. delta    - Kvariation for computing Jacobian matrix</span>
650009 <span class="comment">%  5. Display  - Displays fitting results {default}</span>
660010 <span class="comment">%     NoDisplay- Do not displays fitting results</span>
670011 <span class="comment">%</span>
680012 <span class="comment">%  EXAMPLES</span>
690013 <span class="comment">%  1. fittune2([0.2 0.3],'Q7','Q9')</span>
700014 <span class="comment">%</span>
710015 <span class="comment">%  See Also fitchrom2</span>
720016
730017 <span class="comment">%</span>
740018 <span class="comment">%  Written by Andrei Terebilo</span>
750019 <span class="comment">%  Modified by Laurent S. Nadolski</span>
760020 <span class="comment">%  MARCH 25, 2005 - Take into account thin sextupoles</span>
770021 <span class="comment">%                 - Display Flag</span>
780022
790023 DisplayFlag = 1;
800024
810025 <span class="comment">%% Optional Input data parser</span>
820026 <span class="keyword">for</span> i = length(varargin):-1:1
830027     <span class="keyword">if</span> strcmpi(varargin{i},<span class="string">'Display'</span>)
840028         DisplayFlag = 1;
850029         varargin(i) = [];
860030     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'NoDisplay'</span>)
870031         DisplayFlag = 0;
880032         varargin(i) = [];
890033     <span class="keyword">end</span>
900034 <span class="keyword">end</span>
910035
920036 <span class="comment">% Must declare THERING as global in order for the function to modify quadrupole values</span>
930037 <span class="keyword">global</span> THERING
940038 <span class="keyword">if</span> length(varargin) &gt; 3 <span class="comment">% use externally supplied step size for quadrupole K-values</span>
950039     delta = varargin{1}
960040 <span class="keyword">else</span>
970041     delta = 1e-6; <span class="comment">% default step size for quadrupole K-values</span>
980042 <span class="keyword">end</span>
990043 <span class="comment">% find indexes of the 2 quadrupole families use for fitting</span>
1000044 Q1I = findcells(THERING,<span class="string">'FamName'</span>,quadfam1);
1010045 Q2I = findcells(THERING,<span class="string">'FamName'</span>,quadfam2);
1020046
1030047 InitialK1 = getcellstruct(THERING,<span class="string">'K'</span>,Q1I);
1040048 InitialK2 = getcellstruct(THERING,<span class="string">'K'</span>,Q2I);
1050049 InitialPolB1 = getcellstruct(THERING,<span class="string">'PolynomB'</span>,Q1I,2);
1060050 InitialPolB2 = getcellstruct(THERING,<span class="string">'PolynomB'</span>,Q2I,2);
1070051
1080052 <span class="comment">%% Compute initial tunes before fitting</span>
1090053 [ LD, InitialTunes] = <a href="linopt.html" class="code" title="function [LinData, varargout] = linopt(RING,DP,varargin);">linopt</a>(THERING,0);
1100054
1110055 TempTunes = InitialTunes;
1120056 TempK1 = InitialK1;
1130057 TempK2 = InitialK2;
1140058 TempPolB1 = InitialPolB1;
1150059 TempPolB2 = InitialPolB2;
1160060
1170061 <span class="comment">%% Take Derivative</span>
1180062 THERING = setcellstruct(THERING,<span class="string">'K'</span>,Q1I,TempK1+delta);
1190063 THERING = setcellstruct(THERING,<span class="string">'PolynomB'</span>,Q1I,TempPolB1+delta,2);
1200064 [LD , Tunes_dK1 ] = <a href="linopt.html" class="code" title="function [LinData, varargout] = linopt(RING,DP,varargin);">linopt</a>(THERING,0);
1210065 THERING = setcellstruct(THERING,<span class="string">'K'</span>,Q1I,TempK1);
1220066 THERING = setcellstruct(THERING,<span class="string">'PolynomB'</span>,Q1I,TempPolB1,2);
1230067 THERING = setcellstruct(THERING,<span class="string">'K'</span>,Q2I,TempK2+delta);
1240068 THERING = setcellstruct(THERING,<span class="string">'PolynomB'</span>,Q2I,TempPolB2+delta,2);
1250069 [LD , Tunes_dK2 ] = <a href="linopt.html" class="code" title="function [LinData, varargout] = linopt(RING,DP,varargin);">linopt</a>(THERING,0);
1260070 THERING = setcellstruct(THERING,<span class="string">'K'</span>,Q2I,TempK2);
1270071 THERING = setcellstruct(THERING,<span class="string">'PolynomB'</span>,Q2I,TempPolB2,2);
1280072
1290073 <span class="comment">%% Construct the Jacobian</span>
1300074 J = ([Tunes_dK1(:) Tunes_dK2(:)] - [TempTunes(:) TempTunes(:)])/delta;
1310075 Jinv = inv(J);
1320076
1330077 dnu = (newtunes(:) - TempTunes(:));
1340078 dK = Jinv*dnu;
1350079
1360080 TempK1 = TempK1+dK(1);
1370081 TempK2 = TempK2+dK(2);
1380082 TempPolB1 = TempPolB1 + dK(1);
1390083 TempPolB2 = TempPolB2 + dK(2);
1400084
1410085 THERING = setcellstruct(THERING,<span class="string">'K'</span>,Q1I,TempK1);
1420086 THERING = setcellstruct(THERING,<span class="string">'PolynomB'</span>,Q1I,TempPolB1,2);
1430087 THERING = setcellstruct(THERING,<span class="string">'K'</span>,Q2I,TempK2);
1440088 THERING = setcellstruct(THERING,<span class="string">'PolynomB'</span>,Q2I,TempPolB2,2);
1450089
1460090 [LD,TempTunes] = <a href="linopt.html" class="code" title="function [LinData, varargout] = linopt(RING,DP,varargin);">linopt</a>(THERING,0);
1470091
1480092 <span class="comment">%InitialK1 - TempK1;</span>
1490093 <span class="comment">%InitialK2 - TempK2;</span>
1500094 <span class="comment">%TempTunes</span>
1510095
1520096 <span class="comment">%% Display how good is the fit</span>
1530097 <span class="keyword">if</span> DisplayFlag
1540098     fprintf(<span class="string">'Desired tunes nux=%f nuz=%f\n'</span>,newtunes);
1550099     [tune xi] = <a href="tunechrom.html" class="code" title="function [tune, varargout] = tunechrom(RING,DP,varargin)">tunechrom</a>(THERING,0,<span class="string">'chrom'</span>);
1560100     fprintf(<span class="string">'Reached tunes nux=%f nuz=%f\n'</span>,TempTunes);
1570101 <span class="keyword">end</span></pre></div>
158<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>
159</body>
160</html>
Note: See TracBrowser for help on using the repository browser.