source: MML/trunk/machine/SOLEIL/doc_html/machine/Soleil/common/naff/naffutils/fmap_soleilnu.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.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 fmap_soleilnu</title>
6  <meta name="keywords" content="fmap_soleilnu">
7  <meta name="description" content="function [nux,nuy]=sim_fmap_at_naff_diffu_3sb(nxmin,nxmax,nx,nymin,nymax,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_soleilnu.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_soleilnu
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]=sim_fmap_at_naff_diffu_3sb(nxmin,nxmax,nx,nymin,nymax,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]=sim_fmap_at_naff_diffu_3sb(nxmin,nxmax,nx,nymin,nymax,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]=sim_fmap_at_naff_diffu_3sb(nxmin,nxmax,nx,nymin,nymax,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 soleilnu
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">% [closeOrb] = findorbit6(THERING);</span>
950037 <span class="comment">% closeOrb</span>
960038
970039 fprintf(<span class="string">'Type any key to continue ...\n'</span>);
980040 pause;
990041
1000042 NT = 1024;
1010043
1020044 T = ringpass(THERING,[0;0;0;0;0;0],1);
1030045
1040046 <span class="keyword">for</span> i=1:nx
1050047     ampx = ax*sqrt(i/nx);
1060048     
1070049     <span class="keyword">for</span> j=1:ny
1080050         ampy = ay*sqrt(j/ny);
1090051         sampx = int2str(ampx);
1100052         sampy = int2str(ampy);
1110053         
1120054         fprintf(<span class="string">'amp_x=%g mm, amp_y=%g mm\n'</span>,ampx,ampy);
1130055         
1140056         X0=[ampx/1000 0 ampy/1000 0 0 0]';
1150057         
1160058         clear LOSSFLAG;
1170059         cpustart=cputime;
1180060         T = ringpass(THERING,X0,NT,<span class="string">'reuse'</span>);
1190061         cpustop=cputime;
1200062         fprintf(<span class="string">'track time for 1024 turns : %g s\n'</span>,cpustop-cpustart);
1210063         
1220064         
1230065         Tx = T(1,:);
1240066         Txp = T(2,:);
1250067         Ty = T(3,:);
1260068         Typ = T(4,:);
1270069         TE = T(5,:);
1280070         Tphi = T(6,:);
1290071         
1300072         <span class="keyword">if</span> (length(Ty)==1024) &amp; (all(Ty&lt;0.004)) <span class="keyword">...</span>
1310073                 &amp; (~any(isnan(Ty))) &amp; (LOSSFLAG==0)
1320074             
1330075             cpustart=cputime;
1340076             [tmpnux1]=abs(calcnaff(Tx(1:512),Txp(1:512),1)/(2*pi));
1350077             [tmpnuy1]=abs(calcnaff(Ty(1:512),Typ(1:512),1)/(2*pi));
1360078             [tmpnux2]=abs(calcnaff(Tx(513:1024),Txp(513:1024),1)/(2*pi));
1370079             [tmpnuy2]=abs(calcnaff(Ty(513:1024),Typ(513:1024),1)/(2*pi));
1380080             
1390081             cpustop=cputime;
1400082             fprintf(<span class="string">'NAFF CPU time (4*512 turns) : %g s\n'</span>,cpustop-cpustart);
1410083             
1420084             
1430085             nux(i,j)=0.0; nuy(i,j) = 0.0;
1440086             pampx(i,j)=-1;pampy(i,j)=-1;
1450087             
1460088
1470089      pampx(i,j)=ampx;
1480090      pampy(i,j)=ampy;
1490091     <span class="keyword">if</span> ((abs(tmpnuy1(1))&gt;0.001) &amp; (abs(tmpnuy1(1)-tmpnux1(1))&gt;0.001))
1500092      nuy(i,j)=tmpnuy1(1);
1510093       <span class="keyword">else</span>
1520094      nuy(i,j)=tmpnuy1(2);
1530095       <span class="keyword">end</span>         
1540096     
1550097       <span class="keyword">if</span> (abs(tmpnux1(1))&gt;0.001)
1560098      nux(i,j)=tmpnux1(1);
1570099       <span class="keyword">else</span>
1580100      nux(i,j)=tmpnux1(2);
1590101       <span class="keyword">end</span>           
1600102
1610103      <span class="keyword">if</span> ((abs(tmpnuy2(1))&gt;0.001) &amp; (abs(tmpnuy2(1)-tmpnux2(1))&gt;0.001))
1620104      nuy(i,j)=tmpnuy2(1);
1630105       <span class="keyword">else</span>
1640106      nuy(i,j)=tmpnuy2(2);
1650107       <span class="keyword">end</span>         
1660108     
1670109       <span class="keyword">if</span> (abs(tmpnux2(1))&gt;0.001)
1680110      nux(i,j)=tmpnux2(1);
1690111       <span class="keyword">else</span>
1700112      nux(i,j)=tmpnux2(2);
1710113       <span class="keyword">end</span>           
1720114             
1730115           
1740116             <span class="keyword">if</span> (length(tmpnuy2)==1) &amp; (length(tmpnux2)==1) &amp; (length(nux(i,j))==1) &amp; (length(nuy(i,j))==1)
1750117                 diffu(i,j)=log10(sqrt((tmpnuy2-nuy(i,j))^2+(tmpnux2-nux(i,j))^2)/512);
1760118             <span class="keyword">else</span>
1770119                 diffu(i,j) = -3;
1780120             <span class="keyword">end</span>
1790121             
1800122             <span class="keyword">if</span> (diffu(i,j) &lt; (-10))
1810123                 diffu(i,j) = -10;
1820124             <span class="keyword">end</span>
1830125             
1840126             taxi = ax*sqrt(i/nx);
1850127             taxii = ax*sqrt((i-1)/nx);
1860128             tayj = ay*sqrt(j/ny);
1870129             tayjj = ay*sqrt((j-1)/ny);
1880130             
1890131             <span class="keyword">if</span> (i&gt;1) &amp; (j&gt;1)
1900132                 xpos(:,(i-1)*(ny)+j) = [taxii;taxii;taxi;taxi];
1910133                 ypos(:,(i-1)*(ny)+j) = [tayjj;tayj;tayj;tayjj];
1920134             <span class="keyword">elseif</span> (i&gt;1)
1930135                 xpos(:,(i-1)*(ny)+j) = [taxii;taxii;taxi;taxi];
1940136                 ypos(:,(i-1)*(ny)+j) = [0;tayj;tayj;0];   
1950137             <span class="keyword">elseif</span> (j&gt;1)   
1960138                 xpos(:,(i-1)*(ny)+j) = [0;0;taxi;taxi];
1970139                 ypos(:,(i-1)*(ny)+j) = [tayjj;tayj;tayj;tayjj];
1980140             <span class="keyword">else</span>
1990141                 xpos(:,(i-1)*(ny)+j) = [0;0;taxi;taxi];
2000142                 ypos(:,(i-1)*(ny)+j) = [0;tayj;tayj;0];
2010143             <span class="keyword">end</span>       
2020144             
2030145             nuxpos(:,(i-1)*(ny)+j) = <span class="keyword">...</span>
2040146                 [nux(i,j)-.0001;nux(i,j)-.0001;nux(i,j)+.0001;nux(i,j)+.0001];
2050147             nuypos(:,(i-1)*(ny)+j) = <span class="keyword">...</span>
2060148                 [nuy(i,j)-.0006;nuy(i,j)+.0006;nuy(i,j)+.0006;nuy(i,j)-.0006];
2070149             
2080150             diffuvec(1:4,(i-1)*(ny)+j) = diffu(i,j);
2090151             
2100152             
2110153         <span class="keyword">else</span>
2120154             nux(i,j)=0.0; nuy(i,j)=0.0;
2130155             pampx(i,j)=-1;pampy(i,j)=-1;
2140156             xpos(:,(i-1)*(ny)+j) = [0;0;0;0];           
2150157             ypos(:,(i-1)*(ny)+j) = [0;0;0;0];           
2160158             nuxpos(:,(i-1)*(ny)+j) = [0;0;0;0];
2170159             nuypos(:,(i-1)*(ny)+j) = [0;0;0;0];
2180160             diffu(i,j)=-10;
2190161             diffuvec(1:4,(i-1)*(ny)+j) = [-10;-10;-10;-10];
2200162         <span class="keyword">end</span>
2210163         
2220164         <span class="keyword">if</span> nux(i,j) &amp; nuy(i,j)
2230165             fprintf(<span class="string">'nu_x=%g, nu_y=%g\n'</span>,14+nux(i,j),8+nuy(i,j));
2240166         <span class="keyword">else</span>
2250167             fprintf(<span class="string">'particle lost\n'</span>);
2260168         <span class="keyword">end</span>
2270169         
2280170     <span class="keyword">end</span>
2290171     
2300172     save <span class="string">'freqmap_new'</span> nux nuy diffu nuxpos nuypos xpos ypos diffuvec pampx pampy
2310173     
2320174 <span class="keyword">end</span>
2330175
2340176 f1=figure;
2350177 plot(18+nux,10+nuy,<span class="string">'b.'</span>);
2360178 axis([18.2 18.5 10.0 10.5]);
2370179 title(<span class="string">'ALS lattice, calculated frequency map (NAFF)'</span>);
2380180 xlabel(<span class="string">'\nu_x'</span>);
2390181 ylabel(<span class="string">'\nu_y'</span>);
2400182 pause(0.1);
2410183
2420184 <span class="keyword">if</span> min(size(diffu)) &gt; 1
2430185     
2440186     figure;
2450187     fill(xpos,ypos,diffuvec);
2460188     axis([0 ax 0 ay]);
2470189     caxis([-10 -3]);
2480190     hold on;
2490191     shading flat;
2500192     colormap(<span class="string">'jet'</span>);
2510193     colorbar;
2520194     title(<span class="string">'ALS lattice, calculated frequency map (NAFF), 3SB, \eta_x = 6cm, \eta_y(ID6) = 4cm'</span>);
2530195     xlabel(<span class="string">'x position [mm] (injection straight)'</span>);
2540196     ylabel(<span class="string">'y position [mm]'</span>);
2550197     hold off;
2560198     
2570199     figure;
2580200     fill(18+nuxpos,10+nuypos,diffuvec);
2590201     axis([18.2 18.5 10.0 10.5]);
2600202     caxis([-10 -3]);
2610203     hold on;
2620204     shading flat;
2630205     colormap(<span class="string">'jet'</span>);
2640206     colorbar;
2650207     title(<span class="string">'ALS lattice, calculated frequency map (NAFF)'</span>);
2660208     xlabel(<span class="string">'\nu_x'</span>);
2670209     ylabel(<span class="string">'\nu_y'</span>);
2680210     hold off;
2690211     
2700212 <span class="keyword">end</span></pre></div>
271<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>
272</body>
273</html>
Note: See TracBrowser for help on using the repository browser.