Conference Room SAD
[thread display] [new arrival display] [word search] [past log] [管理用]

Subject その3
Date: 2006/01/30(Mon) 20:01:25
ContributorKentaro Harada < >

  その3:リング基礎パラメータの計算(色収差の計算)
 
  とりあえず6極ゼロなので、線形&非線形の色収差を求めてみます。
  
ON LOG;
ON RAD FLUC COD RFSW RADCOD;
FFS;
$FORM = "15.10";
PageWidth = 1999;
USE RING;
cell calc emit;
disp $$$;
tunex = Table[{0,0},{41}];
tuney = Table[{0,0},{41}];
   (リストの定義。-2% から +2% まで、0.1% 区切りでベータトロンチューンを
  計算してみます。点の数は 41 点です。Table[] はリストを作る為のコマンドです。
  これで{{0,0},{0,0},{0,0}.....,{0.0}}という多重のリストが作れます。多重で
  なければ、定義は必要なしでいきなり代入して使えます。(色々そうです。この
  曖昧さは好みの分かれるところです。))
Do[
DP0 = (i - 21) * 0.001;
      (DP0 はビームの重心の運動量を変えます。FFS の「変数」です。必ず
     大文字です。同じく DP というのもありますが、こちらはフィッティングする
     際のエネルギーの幅を表します。小文字の dp は勝手に定義して使って大丈夫
     ですが、大文字の DP や DP0 は予約変数なので使ってはまずいです。)
FFS["cell calc"];
      (Do[] の中なので FFS[]で囲う必要があります。FFS["cell calc",6]と
     すると、いちいち Matched..... と計算結果を出します。)
tunex[i] = {DP0,Twiss["NX","$$$"]/2/Pi};
tuney[i] = {DP0,Twiss["NY","$$$"]/2/Pi};
      (リストに値を代入します。リスト名[n] はそのリストのn番目の要素を
     指します。なお、disp や オプティクスのマッチングで使う NX、NY は2πで
     割ったチューンですが、Twiss[]の出力は割ってありません。)
Print[i,DP0,tunex[i,2],tuney[i,2]];
      (リスト名[n,m]は、多重のリストにおいて、n番目リストのm番目要素を
     表します。)
,{i,1,41,1}];

Print[PolynomialFit[tunex,3]];
Print[PolynomialFit[tuney,3]];

 (PolynomialFit[リスト、次数] で、リストを多項式フィットします。
結果は y = C0 + C1 x + C2 x2 + C3 x3... で、{{C0,C1,C2,C3..},{残差}}です。
今回の場合、
水平
{{ 9.1435987631, -22.3461488358, 116.3539887101, -861.430745192},{(Resi...)}}
 horizontal tune = 9.1435 - 22.3461 DP/P + 116.3540 (DP/P)2 ......
垂直
{{ 6.2021978838, -16.5611445238, 47.7018126339, -430.677007587},{(Resi...)}}
 vertical tune = 6.2022 - 16.5611 DP/P + 47.7018 (DP/P)2 ......
なので、水平線形色収差は -22、垂直は -16 となります。(このフィットの結果では
必ずしも DP/P=0 で近似曲線と実際のチューンが重なりません。))

 (この後で計算を続ける様な場合、DP0 = 0; と戻し忘れて悩むことがあります。)

stop;
stop;
 


- 関連一覧ツリー (Click ▼ to display all articles in a thread.)