source: MML/trunk/machine/SOLEIL/doc_html/machine/Soleil/common/naff/naffutils/fmap_solamor2.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.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 fmap_solamor2</title>
6  <meta name="keywords" content="fmap_solamor2">
7  <meta name="description" content="function [nux,nuy]=fmap_soleilnu(nx,ny,ax,ay)">
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="#">machine</a> &gt; <a href="#">Soleil</a> &gt; <a href="../../index.html">common</a> &gt; <a href="#">naff</a> &gt; <a href="index.html">naffutils</a> &gt; fmap_solamor2.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 machine/Soleil/common/naff/naffutils&nbsp;<img alt=">" border="0" src="../../../../../right.png"></a></td></tr></table>-->
19
20<h1>fmap_solamor2
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>function [nux,nuy]=fmap_soleilnu(nx,ny,ax,ay)</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 [nux,nuy,diffu]=fmap_soleilnu(nx,ny,ax,ay) </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"> function [nux,nuy]=fmap_soleilnu(nx,ny,ax,ay)
31
32 simulates a frequency map using the tracking
33 routine's out of Andrei Terebilos ATtoolbox and
34 Jacques Laskars NAFF algorithm
35 (calcnaff.mex or calcnaff.dll)
36
37 nux, nuy         are the returned betatron tune values
38 diffu            is the returned diffusion rate
39
40 nx        number of horizontal amplitudes
41 ny        number of vertical amplitudes
42 ax        maximum horizontal amplitude [mm]
43 ay        maximum vertical amplitude [mm]
44
45 Laurent Nadolski, ALS 09/01/02</pre></div>
46
47<!-- crossreference -->
48<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../../../../up.png"></a></h2>
49This function calls:
50<ul style="list-style-image:url(../../../../../matlabicon.gif)">
51</ul>
52This function is called by:
53<ul style="list-style-image:url(../../../../../matlabicon.gif)">
54</ul>
55<!-- crossreference -->
56
57
58<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../../../../up.png"></a></h2>
59<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function [nux,nuy,diffu]=fmap_soleilnu(nx,ny,ax,ay)</a>
600002 <span class="comment">% function [nux,nuy]=fmap_soleilnu(nx,ny,ax,ay)</span>
610003 <span class="comment">%</span>
620004 <span class="comment">% simulates a frequency map using the tracking</span>
630005 <span class="comment">% routine's out of Andrei Terebilos ATtoolbox and</span>
640006 <span class="comment">% Jacques Laskars NAFF algorithm</span>
650007 <span class="comment">% (calcnaff.mex or calcnaff.dll)</span>
660008 <span class="comment">%</span>
670009 <span class="comment">% nux, nuy         are the returned betatron tune values</span>
680010 <span class="comment">% diffu            is the returned diffusion rate</span>
690011 <span class="comment">%</span>
700012 <span class="comment">% nx        number of horizontal amplitudes</span>
710013 <span class="comment">% ny        number of vertical amplitudes</span>
720014 <span class="comment">% ax        maximum horizontal amplitude [mm]</span>
730015 <span class="comment">% ay        maximum vertical amplitude [mm]</span>
740016 <span class="comment">%</span>
750017 <span class="comment">% Laurent Nadolski, ALS 09/01/02</span>
760018
770019 pathold = path;
780020
790021 <span class="keyword">if</span> (~findstr(pathold,<span class="string">'matlab\at\accelerator\simulator\element'</span>))
800022     atinit;
810023 <span class="keyword">end</span>
820024
830025 solamor2
840026 radiationoff;
850027 cavityoff;
860028
870029
880030 <span class="comment">%FitTune2([.25,.2],'QF','QD');</span>
890031 <span class="comment">%FitChrom2([0.4,1.4],'SF','SD');</span>
900032 <span class="comment">%FitTune2([.25,.2],'QF','QD');</span>
910033
920034 plotbeta;
930035
940036 <span class="comment">% Has to be in 6D tracking mode</span>
950037 <span class="comment">% [closeOrb] = findorbit6(THERING);</span>
960038 <span class="comment">% closeOrb</span>
970039
980040 fprintf(<span class="string">'Type any key to continue ...\n'</span>);
990041 pause;
1000042
1010043 NT = 1024;
1020044
1030045 T = ringpass(THERING,[0;0;0;0;0;0],1);
1040046
1050047 <span class="keyword">for</span> i=1:nx
1060048     ampx = ax*sqrt(i/nx);
1070049     
1080050     <span class="keyword">for</span> j=1:ny
1090051         ampy = ay*sqrt(j/ny);
1100052         sampx = int2str(ampx);
1110053         sampy = int2str(ampy);
1120054         
1130055         fprintf(<span class="string">'amp_x=%g mm, amp_y=%g mm\n'</span>,ampx,ampy);
1140056         
1150057         X0=[ampx/1000 0 ampy/1000 0 0 0]';
1160058         
1170059         clear LOSSFLAG
1180060         cpustart=cputime;
1190061         T = ringpass(THERING,X0,NT,<span class="string">'reuse'</span>);
1200062         cpustop=cputime;
1210063         fprintf(<span class="string">'track time for 1024 turns : %g s\n'</span>,cpustop-cpustart);
1220064         
1230065         
1240066         Tx = T(1,:);
1250067         Txp = T(2,:);
1260068         Ty = T(3,:);
1270069         Typ = T(4,:);
1280070         TE = T(5,:);
1290071         Tphi = T(6,:);
1300072         
1310073         <span class="keyword">if</span> (length(Ty)==1024) &amp; (all(Ty&lt;0.04)) <span class="keyword">...</span>
1320074                 &amp; (~any(isnan(Ty))) &amp; (LOSSFLAG==0)
1330075             
1340076             cpustart=cputime;
1350077             [tmpnux1]=abs(calcnaff(Tx(1:512),Txp(1:512),1)/(2*pi));
1360078             [tmpnuy1]=abs(calcnaff(Ty(1:512),Typ(1:512),1)/(2*pi));
1370079             [tmpnux2]=abs(calcnaff(Tx(513:1024),Txp(513:1024),1)/(2*pi));
1380080             [tmpnuy2]=abs(calcnaff(Ty(513:1024),Typ(513:1024),1)/(2*pi));
1390081             
1400082             cpustop=cputime;
1410083             fprintf(<span class="string">'NAFF CPU time (4*512 turns) : %g s\n'</span>,cpustop-cpustart);
1420084             
1430085             
1440086             nux(i,j)=0.0; nuy(i,j) = 0.0;
1450087             pampx(i,j)=-1;pampy(i,j)=-1;
1460088             
1470089             
1480090             pampx(i,j)=ampx;
1490091             pampy(i,j)=ampy;
1500092             <span class="keyword">if</span> ((abs(tmpnuy1(1))&gt;0.001) &amp; (abs(tmpnuy1(1)-tmpnux1(1))&gt;0.001))
1510093                 nuy(i,j)=tmpnuy1(1);
1520094             <span class="keyword">else</span>
1530095                 nuy(i,j)=tmpnuy1(2);
1540096             <span class="keyword">end</span>         
1550097             
1560098             <span class="keyword">if</span> (abs(tmpnux1(1))&gt;0.001)
1570099                 nux(i,j)=tmpnux1(1);
1580100             <span class="keyword">else</span>
1590101                 nux(i,j)=tmpnux1(2);
1600102             <span class="keyword">end</span>           
1610103             
1620104             <span class="keyword">if</span> ((abs(tmpnuy2(1))&gt;0.001) &amp; (abs(tmpnuy2(1)-tmpnux2(1))&gt;0.001))
1630105                 nuy2=tmpnuy2(1);
1640106             <span class="keyword">else</span>
1650107                 nuy2=tmpnuy2(2);
1660108             <span class="keyword">end</span>         
1670109             
1680110             <span class="keyword">if</span> (abs(tmpnux2(1))&gt;0.001)
1690111                 nux2=tmpnux2(1);
1700112             <span class="keyword">else</span>
1710113                 nux2=tmpnux2(2);
1720114             <span class="keyword">end</span>           
1730115             
1740116             
1750117             <span class="keyword">if</span> (length(nuy2)==1) &amp; (length(nux2)==1) &amp; (length(nux(i,j))==1) &amp; (length(nuy(i,j))==1)
1760118                 diffu(i,j)=log10(sqrt((tmpnuy2-nuy(i,j))^2+(tmpnux2-nux(i,j))^2)/512);
1770119             <span class="keyword">else</span>
1780120                 diffu(i,j) = -3;
1790121             <span class="keyword">end</span>
1800122             
1810123             <span class="keyword">if</span> (diffu(i,j) &lt; (-10))
1820124                 diffu(i,j) = -10;
1830125             <span class="keyword">end</span>
1840126             
1850127             taxi = ax*sqrt(i/nx);
1860128             taxii = ax*sqrt((i-1)/nx);
1870129             tayj = ay*sqrt(j/ny);
1880130             tayjj = ay*sqrt((j-1)/ny);
1890131             
1900132             <span class="keyword">if</span> (i&gt;1) &amp; (j&gt;1)
1910133                 xpos(:,(i-1)*(ny)+j) = [taxii;taxii;taxi;taxi];
1920134                 ypos(:,(i-1)*(ny)+j) = [tayjj;tayj;tayj;tayjj];
1930135             <span class="keyword">elseif</span> (i&gt;1)
1940136                 xpos(:,(i-1)*(ny)+j) = [taxii;taxii;taxi;taxi];
1950137                 ypos(:,(i-1)*(ny)+j) = [0;tayj;tayj;0];   
1960138             <span class="keyword">elseif</span> (j&gt;1)   
1970139                 xpos(:,(i-1)*(ny)+j) = [0;0;taxi;taxi];
1980140                 ypos(:,(i-1)*(ny)+j) = [tayjj;tayj;tayj;tayjj];
1990141             <span class="keyword">else</span>
2000142                 xpos(:,(i-1)*(ny)+j) = [0;0;taxi;taxi];
2010143                 ypos(:,(i-1)*(ny)+j) = [0;tayj;tayj;0];
2020144             <span class="keyword">end</span>       
2030145             
2040146             nuxpos(:,(i-1)*(ny)+j) = <span class="keyword">...</span>
2050147                 [nux(i,j)-.0001;nux(i,j)-.0001;nux(i,j)+.0001;nux(i,j)+.0001];
2060148             nuypos(:,(i-1)*(ny)+j) = <span class="keyword">...</span>
2070149                 [nuy(i,j)-.0006;nuy(i,j)+.0006;nuy(i,j)+.0006;nuy(i,j)-.0006];
2080150             
2090151             diffuvec(1:4,(i-1)*(ny)+j) = diffu(i,j);
2100152             
2110153             
2120154         <span class="keyword">else</span>
2130155             nux(i,j)=0.0; nuy(i,j)=0.0;
2140156             pampx(i,j)=-1;pampy(i,j)=-1;
2150157             xpos(:,(i-1)*(ny)+j) = [0;0;0;0];           
2160158             ypos(:,(i-1)*(ny)+j) = [0;0;0;0];           
2170159             nuxpos(:,(i-1)*(ny)+j) = [0;0;0;0];
2180160             nuypos(:,(i-1)*(ny)+j) = [0;0;0;0];
2190161             diffu(i,j)=-10;
2200162             diffuvec(1:4,(i-1)*(ny)+j) = [-10;-10;-10;-10];
2210163         <span class="keyword">end</span>
2220164         
2230165         <span class="keyword">if</span> nux(i,j) &amp; nuy(i,j)
2240166             fprintf(<span class="string">'nu_x=%g, nu_y=%g\n'</span>,14+nux(i,j),8+nuy(i,j));
2250167         <span class="keyword">else</span>
2260168             fprintf(<span class="string">'particle lost\n'</span>);
2270169         <span class="keyword">end</span>
2280170         
2290171     <span class="keyword">end</span>
2300172     
2310173     save <span class="string">'freqmap_new'</span> nux nuy diffu nuxpos nuypos xpos ypos diffuvec pampx pampy
2320174     
2330175 <span class="keyword">end</span>
2340176
2350177 f1=figure;
2360178 plot(18+nux,10+nuy,<span class="string">'b.'</span>);
2370179 axis([18.2 18.5 10.0 10.5]);
2380180 title(<span class="string">'SOLEIL lattice, calculated frequency map (NAFF)'</span>);
2390181 xlabel(<span class="string">'\nu_x'</span>);
2400182 ylabel(<span class="string">'\nu_y'</span>);
2410183 pause(0.1);
2420184
2430185 <span class="keyword">if</span> min(size(diffu)) &gt; 1
2440186     
2450187     figure;
2460188     fill(xpos,ypos,diffuvec);
2470189     axis([0 ax 0 ay]);
2480190     caxis([-10 -3]);
2490191     hold on;
2500192     shading flat;
2510193     colormap(<span class="string">'jet'</span>);
2520194     colorbar;
2530195     title(<span class="string">'SOLEIL lattice, calculated frequency map (NAFF)'</span>);
2540196     xlabel(<span class="string">'x position [mm] (injection straight)'</span>);
2550197     ylabel(<span class="string">'y position [mm]'</span>);
2560198     hold off;
2570199     
2580200     figure;
2590201     fill(18+nuxpos,10+nuypos,diffuvec);
2600202     axis([18.2 18.5 10.0 10.5]);
2610203     caxis([-10 -3]);
2620204     hold on;
2630205     shading flat;
2640206     colormap(<span class="string">'jet'</span>);
2650207     colorbar;
2660208     title(<span class="string">'SOLEIL lattice, calculated frequency map (NAFF)'</span>);
2670209     xlabel(<span class="string">'\nu_x'</span>);
2680210     ylabel(<span class="string">'\nu_y'</span>);
2690211     hold off;
2700212     
2710213 <span class="keyword">end</span></pre></div>
272<hr><address>Generated on Mon 21-May-2007 15:35:27 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
273</body>
274</html>
Note: See TracBrowser for help on using the repository browser.