Room:「Conference Room SAD」

higher order momentum compaction

Speaker:S. Machida

(Date: 2000年 10月 27日 金曜日 4:13:00 PM)


一ヶ月ほど前にも、別の件でSADに関する質問をsubmitしましたが、なぜかconference Roomにあらわれないままどこかに消えてしまいました。今度こそ生き延びてほしいと思います。

さて、質問は,higher order momentum compactionの計算方法です。EMITのコマンドで momentum compaction
が計算されますが、offmomentumでの値はどうすればわかるのでしょうか。DP0でoffmomentumを指定しても、EMITコマンドによる momentum compactionの値は変わりません。運動量の違いによる momentum compactionまたは、いわゆるalpha_1(alpha_0をdp/pの係数と定義すれば)の計算方法を教えて下さい。


Comment by 鎌田 進
( Date: 2000年 10月 30日 月曜日 11:57:03 AM)

emitの計算にはDP0で与えたエネルギー偏差は反映しないようです。もともとemitは平衡条件から決まる電子蓄積リングのビームパラメタを計算する為のもので、平衡条件を無視したエネルギー偏差DP0についての計算は想定していないようです。
しかし実際上、高次のモメンタムコンパクションが必要な場合もあるわけです。
ここでは基本に戻って、運動量偏差があるときの軌道長を求める次のような計算でよいと思います。
例えば、運動量偏差3%時の軌道の延びdzp003は、次のように計算できます。
DP0=0.03;cal;dzp003=-Twiss["DZ","$$$"]

同様にdzp002を求めれば、運動量偏差2.5%時のモメンタムコンパクションは
(dzp003-dzp002)/(0.01*Twiss["s","$$$"])
となります。ここで0.01は相対運動量変化巾、Twiss["s","$$$"]は設計軌道長です。

これを応用して、一連の計算をする関数を定義すれば、効率を上げられるはずです。


Comment by S. Machida
( Date: 2000年 11月 8日 水曜日 12:25:59 PM)

ここ一週間ほどBBSを見ていなかったので、レスポンスが遅れてしまいました。鎌田さん、ご回答をありがとうございます。さて、ついでにもう一つ確認したいことがあります(前にも一度聞いたことがあると思いますが、最近、物覚えが悪くて皆様にご迷惑をおかけします。)

Twiss["DZ","$$$"]ですが、"DZ"の意味は正確には"Dt"ですよね(時間差)。というのも、"DZ"であれば粒子の運動量に無関係なはずですが、SADの"DZ"は、はじめに指定した運動量の関数になっています。周長を運動量の高次の項までの関数として、
 C=C0[1+a0 d (1+a1 d+a2 d^2+a3 d^3+ ...)]。
スリッページ係数をやはり高次の項まで考慮して、
 eta=eta0+eta1 d+eta2 d^2+eta3 d^3+ ...
ここで、a0、a1、はモーメンタムコンパクションファクター、dは運動量偏差としたとき、"DZ"が与えるのは、
 eta*d*T0 (T0は一周の周回時間)
であって、
 C0 a0 d( 1+a1 d+a2 d^2+a3 d^3+ ...)
ではないと理解していますが、正しいですよね。

陽子リングでは、そのあたりの差は無視できないので、申し訳ありませんが、再確認したいと思います。以前にもいいましたが、同じ理由で、MomentumCompaction/.Emittance[]も上記の書き方でいえば
 eta
であって、
 a0 d (1+a1 d+a2 d^2+a3 d^3+ ...)
ではないわけでしょう。

それから、"これを応用して、一連の計算をする関数を定義すれば、効率を上げられるはずです。"という件ですが、関数の定義の仕方とか例題があるとわかりやすいのですが。例えば鎌田さんのどこそこのディレクトリー以下は、そうした例題がいっぱいあるので、勝手に覗いてみたらというような場所はありませんか。関数の定義のみならず、誰かのファイルを覗ける場所があると、人に聞く前にかなりのことが帰納的に理解できると思います。SADのマニュアルが限られている現状では、そうした、何でもかんでも雑多に詰め込まれているディレクトリーが公開されているとユーザーにとって有益だと思いますがいかがでしょう。

または、手っ取り早く、例えばKAMADAさん、KOISOさんほかのSAD主要ユーザーが、各人のディレクトリーのなかで、特にここを見たらほかのSADユーザーにも有用な例題がありますよ、という場所を公開したら如何でしょう。特に、そのために特別なディレクトリーを作る必要はなく、普段各種の計算に使っているworkディレクトリーを指定していただけるだけでいいと思います。



Comment by K.Harada
( Date: 2000年 11月 10日 金曜日 2:00:28 PM)

関数の定義の仕方
 
  お世話になっております。東大物性研の原田です。
  大変お恥ずかしいのですが、私がいつも使っているモジュールです。定義の
仕方は、OHOの時に小磯さんに教わりました。

キーボードから入力を求める関数
GetA[] :=( a = Read[5,Real];)
  (ACSAD上では6、LINUX上では5)

グラフを書く関数
WriteGraphs[]:=(
FFS["draw bx & by & ex q*",12];
FFS["draw nx & ny & epx q*",13];
FFS["draw geo",14];
);
  (tdr fort.12 で ベータのグラフ)

線形近似した挿入光源の強さを決める関数
IDturnON[NAME_,rho_]:=(
pole1 = "B"//NAME//"1";
pole2 = "B"//NAME//"2";
pole3 = "B"//NAME//"I";
pole4 = "B"//NAME//"F";
peri=LINE["L",pole1];
LINE["ANGLE",pole1]= peri /rho /Sqrt[2];
LINE["ANGLE",pole2]=-peri /rho /Sqrt[2];
LINE["ANGLE",pole3]=-peri /rho /Sqrt[2]/2;
LINE["ANGLE",pole4]=-peri /rho /Sqrt[2]/2;
);
(例えば、U46LというIDの磁石を、BU46L1,BU46L2..と言う名前にして、
rhoU46L=5.920283;
IDturnON["U46L",rhoU46L];
の様にして使う。)
 
  失礼いたしました。


Comment by S. Machida
( Date: 2000年 11月 10日 金曜日 8:19:33 PM)

原田様。実はそうしたことが、私には大変役に立ちます。ありがとうございます。誰に聞けばよいかわからないし、今更聞くのも多少気が引けるしといった問題が多数あります。それで、SADをよく使う人のディレクトリーの一部を積極的に公開したらどうかという提案をしました。原田さんのディレクトリーは公開していますか。きっと有用な例題の宝庫だと思うのだけれど。


Comment by 鎌田 進
( Date: 2000年 11月 14日 火曜日 8:51:25 PM)

町田様

Comment by S. Machida( Date: 2000年 11月 8日 水曜日 12:25:59 PM)に示された質問に対する、僕の理解している範囲からの答えです。

(質問)「Twiss["DZ","$$$"]ですが、"DZ"の意味は正確には"Dt"ですよね(時間差)。」

(回答)”"DZ"の意味”は参照運動量粒子と運動量偏差のある粒子が加速器を通過した時の距離差です。ここには走った軌道の長さの違いと、走る粒子の速度の違いが反映されます。時間差に直すには粒子速度(光速度とは限らない)で割ります。またここで、"DZ"が正の時先に到着する、と言う定義になっています。

(質問)「というのも、"DZ"であれば粒子の運動量に無関係なはずですが、SADの"DZ"は、はじめに指定した運動量の関数になっています。周長を運動量の高次の項までの関数として、
 C=C0[1+a0 d (1+a1 d+a2 d^2+a3 d^3+ ...)]。
スリッページ係数をやはり高次の項まで考慮して、
 eta=eta0+eta1 d+eta2 d^2+eta3 d^3+ ...
ここで、a0、a1、はモーメンタムコンパクションファクター、dは運動量偏差としたとき、"DZ"が与えるのは、
 eta*d*T0 (T0は一周の周回時間)
であって、
 C0 a0 d( 1+a1 d+a2 d^2+a3 d^3+ ...)
ではないと理解していますが、正しいですよね。」

(回答)先に述べたように、”"DZ"が与えるのは”、当該運動量粒子と参照運動量粒子における、円形加速器を一周する時に生じる距離差です。a1....anといった運動量偏差依存の各次数毎の係数を決めるには、いくつかの必要なだけの運動量偏差について"DZ"を求め、それらをフィットする級数展開の係数を求めることになります。この時純粋に周長について抽出するには、運動量差による速度差からの寄与を差し引いてやる必要があります。

(質問)「陽子リングでは、そのあたりの差は無視できないので、申し訳ありませんが、再確認したいと思います。以前にもいいましたが、同じ理由で、
MomentumCompaction/.Emittance[]も上記の書き方でいえば
 eta
であって、
 a0 d (1+a1 d+a2 d^2+a3 d^3+ ...)
ではないわけでしょう。」

(回答)生出さんにも確認しましたが、SADで使っているモメンタムコンパクションファクターは、ハドロンマシンでよく使う”eta”の意味です、即ちモメンタムコンパクション係数α - (1/ビームの相対論係数γ)^2です。蛇足ですが、SADの中では”eta”と言うギリシャ文字は、Sandsの教科書に習って、運動量分散関数を表すために使われていますのでご注意下さい。