source: MML/trunk/mml/doc_html/mml/stepchro.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: 14.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 stepchro</title>
6  <meta name="keywords" content="stepchro">
7  <meta name="description" content="STEPCHRO - Incremental change in the chromaticity (Delta Tune / Delta RF)">
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">mml</a> &gt; stepchro.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 mml&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
19
20<h1>stepchro
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>STEPCHRO - Incremental change in the chromaticity (Delta Tune / Delta RF)</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  [DelSext, ActuatorFamily] = stepchro(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">STEPCHRO - Incremental change in the chromaticity (Delta Tune / Delta RF)
31  [DelSext, SextFamily] = stepchro(DeltaChromaticity, ChroResponseMatrix)
32
33  Step change in storage ring chromaticity using the default chromaticty correctors (findmemberof('Chromaticity Corrector'))
34
35  INPUTS
36  1.                     | Change in Horizontal Chromaticity |
37     DeltaChromaticity = |                                   |
38                         | Change in Vertical Chromaticity   |
39  2. ChroResponseMatrix - Chromaticity response matrix {Default: getchroresp}
40  3. ActuatorFamily -  Sextupoles to vary, ex {'S9', 'S10'} {Default: findmemberof('Chromaticity Corrector')'}
41  4. Optional override of the units:
42     'Physics'  - Use physics  units
43     'Hardware' - Use hardware units
44  5. Optional override of the mode:
45     'Online'    - Set/Get data online 
46     'Model'     - Set/Get data on the simulated accelerator using AT
47     'Simulator' - Set/Get data on the simulated accelerator using AT
48     'Manual'    - Set/Get data manually
49
50
51  OUTPUTS
52  1. DelSext
53  2. SextFamily - Families used (cell array)
54
55  ALGORITHM 
56     SVD method
57  DelSext = inv(CHROMATICITY_RESP_MATRIX) * DeltaChromaticity
58
59  NOTES
60  1. Beware of what units you are working in.  The default units for chromaticity
61     are physics units.  This is an exception to the normal middle layer convention.
62     Hardware units for &quot;chromaticity&quot; is in tune change per change in RF frequency. 
63     Since this is an unusual unit to work with, the default units for chromaticity
64     is physics units.  Note that goal chromaticity is also stored in physics units.
65  2. The actuator family comes from findmemberof('Chromaticity Corrector') or 'SF','SD' if empty
66 
67  EXAMPLES
68  1. use default families
69      stepchro([1 0.5])
70  2. use 10 families
71    Sfam = {'S1','S2','S3','S4','S5','S6','S7','S8','S9','S10'};
72    B = measchroresp('Model','Display',Sfam);
73    stepchro([1 0.5],'Model',B,Sfam)
74
75  See Also <a href="setchro.html" class="code" title="function [DelSext, ActuatorFamily] = setchro(varargin)">setchro</a></pre></div>
76
77<!-- crossreference -->
78<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
79This function calls:
80<ul style="list-style-image:url(../matlabicon.gif)">
81<li><a href="findmemberof.html" class="code" title="function  FamilyName = findmemberof(MemberString, Field)">findmemberof</a>  FINDMEMBEROF - Finds all family members</li><li><a href="getchroresp.html" class="code" title="function [ChromaticityMatrix, FileName] = getchroresp(varargin)">getchroresp</a> GETCHRORESP - Loads the chromaticity response vector (or matrix) for multiple sextupole families</li><li><a href="getsp.html" class="code" title="function [SP, tout, DataTime, ErrorFlag] = getsp(Family, varargin)">getsp</a> GETSP - Gets setpoint channels</li><li><a href="setsp.html" class="code" title="function ErrorFlag = setsp(Family, varargin)">setsp</a> SETSP - Makes an absolute setpoint change to the 'Setpoint' field</li></ul>
82This function is called by:
83<ul style="list-style-image:url(../matlabicon.gif)">
84<li><a href="setchro.html" class="code" title="function [DelSext, ActuatorFamily] = setchro(varargin)">setchro</a>      SETCHRO - Measures then sets the chromaticity</li></ul>
85<!-- crossreference -->
86
87
88<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
89<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function  [DelSext, ActuatorFamily] = stepchro(varargin)</a>
900002 <span class="comment">%STEPCHRO - Incremental change in the chromaticity (Delta Tune / Delta RF)</span>
910003 <span class="comment">%  [DelSext, SextFamily] = stepchro(DeltaChromaticity, ChroResponseMatrix)</span>
920004 <span class="comment">%</span>
930005 <span class="comment">%  Step change in storage ring chromaticity using the default chromaticty correctors (findmemberof('Chromaticity Corrector'))</span>
940006 <span class="comment">%</span>
950007 <span class="comment">%  INPUTS</span>
960008 <span class="comment">%  1.                     | Change in Horizontal Chromaticity |</span>
970009 <span class="comment">%     DeltaChromaticity = |                                   |</span>
980010 <span class="comment">%                         | Change in Vertical Chromaticity   |</span>
990011 <span class="comment">%  2. ChroResponseMatrix - Chromaticity response matrix {Default: getchroresp}</span>
1000012 <span class="comment">%  3. ActuatorFamily -  Sextupoles to vary, ex {'S9', 'S10'} {Default: findmemberof('Chromaticity Corrector')'}</span>
1010013 <span class="comment">%  4. Optional override of the units:</span>
1020014 <span class="comment">%     'Physics'  - Use physics  units</span>
1030015 <span class="comment">%     'Hardware' - Use hardware units</span>
1040016 <span class="comment">%  5. Optional override of the mode:</span>
1050017 <span class="comment">%     'Online'    - Set/Get data online</span>
1060018 <span class="comment">%     'Model'     - Set/Get data on the simulated accelerator using AT</span>
1070019 <span class="comment">%     'Simulator' - Set/Get data on the simulated accelerator using AT</span>
1080020 <span class="comment">%     'Manual'    - Set/Get data manually</span>
1090021 <span class="comment">%</span>
1100022 <span class="comment">%</span>
1110023 <span class="comment">%  OUTPUTS</span>
1120024 <span class="comment">%  1. DelSext</span>
1130025 <span class="comment">%  2. SextFamily - Families used (cell array)</span>
1140026 <span class="comment">%</span>
1150027 <span class="comment">%  ALGORITHM</span>
1160028 <span class="comment">%     SVD method</span>
1170029 <span class="comment">%  DelSext = inv(CHROMATICITY_RESP_MATRIX) * DeltaChromaticity</span>
1180030 <span class="comment">%</span>
1190031 <span class="comment">%  NOTES</span>
1200032 <span class="comment">%  1. Beware of what units you are working in.  The default units for chromaticity</span>
1210033 <span class="comment">%     are physics units.  This is an exception to the normal middle layer convention.</span>
1220034 <span class="comment">%     Hardware units for &quot;chromaticity&quot; is in tune change per change in RF frequency.</span>
1230035 <span class="comment">%     Since this is an unusual unit to work with, the default units for chromaticity</span>
1240036 <span class="comment">%     is physics units.  Note that goal chromaticity is also stored in physics units.</span>
1250037 <span class="comment">%  2. The actuator family comes from findmemberof('Chromaticity Corrector') or 'SF','SD' if empty</span>
1260038 <span class="comment">%</span>
1270039 <span class="comment">%  EXAMPLES</span>
1280040 <span class="comment">%  1. use default families</span>
1290041 <span class="comment">%      stepchro([1 0.5])</span>
1300042 <span class="comment">%  2. use 10 families</span>
1310043 <span class="comment">%    Sfam = {'S1','S2','S3','S4','S5','S6','S7','S8','S9','S10'};</span>
1320044 <span class="comment">%    B = measchroresp('Model','Display',Sfam);</span>
1330045 <span class="comment">%    stepchro([1 0.5],'Model',B,Sfam)</span>
1340046 <span class="comment">%</span>
1350047 <span class="comment">%  See Also setchro</span>
1360048
1370049 <span class="comment">%</span>
1380050 <span class="comment">%  Written by Gregory J. Portmann</span>
1390051 <span class="comment">%  Modifed by Laurent S. Nadolski</span>
1400052 <span class="comment">%  add ActuatorFamily as optional input</span>
1410053
1420054 ModeFlag = {};
1430055 UnitsFlag = {<span class="string">'Physics'</span>};
1440056
1450057 <span class="keyword">for</span> i = length(varargin):-1:1
1460058     <span class="keyword">if</span> strcmpi(varargin{i},<span class="string">'Physics'</span>)
1470059         UnitsFlag = varargin(i);
1480060         varargin(i) = [];
1490061     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Hardware'</span>)
1500062         UnitsFlag = varargin(i);
1510063         varargin(i) = [];
1520064     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Simulator'</span>) | strcmpi(varargin{i},<span class="string">'Model'</span>)
1530065         ModeFlag = varargin(i);
1540066         varargin(i) = [];
1550067     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Online'</span>)
1560068         ModeFlag = varargin(i);
1570069         varargin(i) = [];
1580070     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Manual'</span>)
1590071         ModeFlag = varargin(i);
1600072         varargin(i) = [];
1610073     <span class="keyword">end</span>       
1620074 <span class="keyword">end</span>
1630075
1640076
1650077 <span class="keyword">if</span> length(varargin) &gt;= 1
1660078     DeltaChrom = varargin{1};
1670079 <span class="keyword">else</span>
1680080     DeltaChrom = [];   
1690081 <span class="keyword">end</span>
1700082 <span class="keyword">if</span> isempty(DeltaChrom)
1710083     answer = inputdlg({<span class="string">'Change the horizontal chromaticity by'</span>, <span class="string">'Change the vertical chromaticity by'</span>},<span class="string">'STEPCHRO'</span>,1,{<span class="string">'0'</span>,<span class="string">'0'</span>});
1720084     <span class="keyword">if</span> isempty(answer)
1730085         <span class="keyword">return</span>
1740086     <span class="keyword">end</span>
1750087     DeltaChrom(1,1) = str2num(answer{1});
1760088     DeltaChrom(2,1) = str2num(answer{2});
1770089 <span class="keyword">end</span>
1780090 DeltaChrom = DeltaChrom(:);
1790091 <span class="keyword">if</span> size(DeltaChrom,1) ~= 2
1800092     error(<span class="string">'Input must be a 2x1 column vector.'</span>);
1810093 <span class="keyword">end</span>
1820094 <span class="keyword">if</span> DeltaChrom(1)==0 &amp;&amp; DeltaChrom(2)==0
1830095     <span class="keyword">return</span>
1840096 <span class="keyword">end</span>
1850097
1860098 <span class="keyword">if</span> length(varargin) &gt;= 2
1870099     ChroResponseMatrix = varargin{2};
1880100 <span class="keyword">else</span>
1890101     ChroResponseMatrix = [];   
1900102 <span class="keyword">end</span>
1910103 <span class="keyword">if</span> isempty(ChroResponseMatrix)
1920104     ChroResponseMatrix = <a href="getchroresp.html" class="code" title="function [ChromaticityMatrix, FileName] = getchroresp(varargin)">getchroresp</a>(UnitsFlag{:});
1930105 <span class="keyword">end</span>
1940106 <span class="keyword">if</span> isempty(ChroResponseMatrix)
1950107     error(<span class="string">'The chromaticity response matrix must be an input or available in one of the default response matrix files.'</span>);
1960108 <span class="keyword">end</span>
1970109
1980110 <span class="keyword">if</span> length(varargin) &gt;= 3
1990111     ActuatorFamily = varargin{3};
2000112 <span class="keyword">else</span>
2010113     ActuatorFamily = <a href="findmemberof.html" class="code" title="function  FamilyName = findmemberof(MemberString, Field)">findmemberof</a>(<span class="string">'Chromaticity Corrector'</span>)';
2020114     <span class="keyword">if</span> isempty(ActuatorFamily)
2030115         ActuatorFamily = {<span class="string">'S9'</span>,<span class="string">'S10'</span>};
2040116     <span class="keyword">end</span>
2050117 <span class="keyword">end</span>
2060118
2070119 <span class="comment">% 1. SVD Tune Correction</span>
2080120 <span class="comment">% Decompose the chromaticity response matrix:</span>
2090121 [U, S, V] = svd(ChroResponseMatrix, <span class="string">'econ'</span>);
2100122 <span class="comment">% ChroResponseMatrix = U*S*V'</span>
2110123 <span class="comment">%</span>
2120124 <span class="comment">% The V matrix columns are the singular vectors in the sextupole magnet space</span>
2130125 <span class="comment">% The U matrix columns are the singular vectors in the chromaticity space</span>
2140126 <span class="comment">% U'*U=I and V*V'=I</span>
2150127 <span class="comment">%</span>
2160128 <span class="comment">% CHROCoef is the projection onto the columns of ChroResponseMatrix*V(:,Ivec) (same space as spanned by U)</span>
2170129 <span class="comment">% Sometimes it's interesting to look at the size of these coefficients with singular value number.</span>
2180130 CHROCoef = diag(diag(S).^(-1)) * U' * DeltaChrom;
2190131 <span class="comment">%</span>
2200132 <span class="comment">% Convert the vector CHROCoef back to coefficents of ChroResponseMatrix</span>
2210133 DelSext = V * CHROCoef;
2220134
2230135
2240136 <span class="comment">% 2. Square matrix solution</span>
2250137 <span class="comment">%DelSext = inv(ChroResponseMatrix) * DeltaChrom;</span>
2260138
2270139
2280140 SP = <a href="getsp.html" class="code" title="function [SP, tout, DataTime, ErrorFlag] = getsp(Family, varargin)">getsp</a>(ActuatorFamily, UnitsFlag{:}, ModeFlag{:});
2290141
2300142 <span class="keyword">if</span> iscell(SP)
2310143     <span class="keyword">for</span> i = 1:length(SP)
2320144         SP{i} = SP{i} + DelSext(i);
2330145     <span class="keyword">end</span>
2340146 <span class="keyword">else</span>
2350147     SP = SP + DelSext;
2360148 <span class="keyword">end</span>
2370149
2380150
2390151 <a href="setsp.html" class="code" title="function ErrorFlag = setsp(Family, varargin)">setsp</a>(ActuatorFamily, SP, UnitsFlag{:}, ModeFlag{:});
2400152</pre></div>
241<hr><address>Generated on Mon 21-May-2007 15:29:18 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
242</body>
243</html>
Note: See TracBrowser for help on using the repository browser.