Proceedings of the 16th Annual Meeting of Particle Accelerator Society of Japan
July 31 - August 3, 2019, Kyoto, Japan

PASJ2019 WEOHP04

ビーム光学総合計算コード SAD∗COMPUTER PROGRAM COMPLEX SAD FOR ACCELERATOR DESIGN,SIMULATION AND COMMISSIONING
大西幸喜 †A) 、森田昭夫 A) 、杉本寛 A) 、小磯晴代 A) 、周徳民 A) 、大見和史 A) 、生出勝宣 B)
Yukiyoshi Ohnishi† A) , Akio MoritaA) , Hiroshi SugimotoA) , Haruyo KoisoA) , Demin ZhouA) ,Kazuhito OhmiA) , and Katsunobu OideB)
A)
High Energy Accelerator Research Organization (KEK)B)
European Organization for Nuclear Research (CERN)

Abstract
A computer code, SAD has been developed at KEK since 1986 in order to accomplish optics design, particle-tracking
simulations, and operations of accelerator beams with the EPICS system. SAD is applied for a number of accelerators
including TRISTAN, KEK-ATF, SLAC-FFTB, KEKB, KEK-PF, J-PARC, BEPC-II, and SuperKEKB. It has been also
used for design works of the future machines such as ILC, CEPC, FCC-ee, and muon colliders. We present a review ofcomputer code SAD with respect to a role of computer code and experiences on using SAD at various accelerator projects.
SAD がこのような発展をしてきたのは、「必要とする人が、必要な機能を実装してきた」ことに由来す
SAD [1] は、1986 年頃から KEK で開発されてき る。日本で、TRISTAN、KEKB、SuperKEKB、J-PARC、た加速器設計のための汎用計算プログラムであり、 Linear Collider といった比較的大きな加速器プロジェ
Strategic Accelerator Design の略称である。1985 年の クトが続けられたことも、SAD を発展させてきた大OHO セミナーが開催されたおり、木村嘉孝名誉教授 きな原動力であったとも言える。
さて、SAD が全てについて優れており、短所がな(当時のトリスタン計画推進部電子リング研究系主いというわけではない。スピン偏極やテーラーマッ幹) の開会あいさつで「KEK 独自の計算機コードが存在しないのが残念である。
」と述べられ SAD 開発の プは実装可能であるが、現在簡単に取り扱えるようきっかけとなったことが、第 1 回 SAD ワークショッ になっていない。幾何学的配置 (GEO) や Twiss パラ
プ講演記録集 [2] の冒頭に記述されている。SAD を メータ等の計算 (OPTICS) およびマッチングを司る
使用する前は、MAGIC(挿入部の光学設計、マッチン コード (FFS)、ビームマトリックス法 (EMIT)、粒子グ)、HARMON(色収差補正)、PATRICIA(粒子トラッ トラッキング (TRACK) が一つのパッケージとしてキング) など、別々のプログラムを目的に合わせて 組み込まれているが、基本的に別々の計算ルーチン使い分けていた。したがって、作者が異なるために、 であるため、それらの間で写像が整合しているかど使用している物理モデルや近似がそれぞれ異なると うかの確認が実は困難である。したがって、前述しいう不満があった。SAD では、こうした機能を一つ た SAD 以前のコードがひとつにまとまっていないという不満な点が、完全に解消できているわけではなにまとめた計算コードとなっている。
もともと、SAD は加速器設計のために作られた計 い。また、マニュアル、ユーザーガイド、レファレ算コードであったが、現在では、様々な機能が必要 ンスなどが貧弱である (ほとんど皆無)。使ってみたに応じて追加され、加速器の設計から加速器の制御 いと思っている人に気軽にソースを配布できるようまで多岐に渡って使用できるようになっている。実 になっていない、サポート環境が整っていないなど、際の加速器で、ステアリングを使って得られた軌道 一般ユーザーに優しいとは言えない。
しかしながら、加速器計算コードの必要性は自明の変化から応答行列を測定し、Twiss パラメータなどである。海外の加速器プロジェクトにおいても加速の物量を推定しモデルと整合するように磁石の磁場補正量を計算することが、オンラインでできる。そ 器計算コードの開発および保守には、様々な苦労がして、すぐさま補正結果を確認でき、また再帰的に あると思われる。世界で使用されている加速器計算補正が可能である。オフラインで、一週間後に答え コードを以下に挙げる。
が出ても、もはや、その結果は適用できるかどうか• Accelerator Toolbox (AT) [3]
疑わしい。オンラインで、「ビームを用いた光学系の• Bmad with PTC [4]測定」→ 「補正量の計算」→ 「実際に電磁石を設定• Elegant [5]して補正」といった全ての過程を一度に行うことが• MAD-X with PTC [6]できる SAD のようなオールインワンの加速器汎用計• PTC [7]算コードが世の中に、ほとんどないのが現実である。
• SAD• SixTrack [8]

1.

はじめに

∗ 本研究は JSPS 科研費 17K05475 の助成を受けたものです。

想定される加速器モデルと背景とする物理が、それ† yukiyoshi.onishi@kek.jp-4-Proceedings of the 16th Annual Meeting of Particle Accelerator Society of Japan
July 31 - August 3, 2019, Kyoto, Japan

PASJ2019 WEOHP04

ぞれで異なるため、使用には一長一短がある。これ
らの計算コードにおいて、何を比較すべきかは簡単ではない。

あらかじめ組み込まれている写像は、ハミルトニアンに基づいており、シンプレクティック条件を満たすようになっている。ドリフト空間のハミルトニアンは、
2 . SAD の特徴
qE(1)H = − p2 − p2x − p2y +SAD の実装は、FORTRAN 言語と C 言語である。
v0
1994 年頃に、本格的なスクリプト言語 (SADScript)インタープリターが実装され、汎用プログラミン である。SAD における px および py は、ハミルトニグ環境が整った。SADScript インタープリターは、 アンの定義により軌道の傾きではなく正準運動量でWolfram Mathematica をモデルとしている。完全互換 ある。ドリフト空間の写像を求めると、ではないが、三角関数、指数関数、Bessel 関数など
px1
px1
' x0 + Lx2 = x1 + L q(2)の数学関数や文字列操作およびリスト操作ができるp2
2p2 − px1 − py1
ように豊富な組み込み関数が用意されている。また、対話的に計算ができることは、多くの場合で便利でである（L はドリフト空間の長さ）。これから変位ある。現在では、ランタイムでの拡張や他言語でのは運動量に対して非線形であることがわかる (色収関数呼び出しもサポートしている。
差が発生する原因)。これを解ける形に近似した後グラフィクスを含むユーザー・インターフェースのドリフト空間の転送行列は、よく知られており、として、Tk widget toolkit をラップした Tkinter が用
M T JM = J を満たすシンプレクティックな行列で意されている [9]。これにより、汎用なグラフ表示ある。SAD では、ハミルトニアン力学の枠組の中でや加速器に特化したビームラインに沿った光学パラ計算が行われる。実際には、このように何らかの近メータのグラフ表示などが簡単に行えるようになっ似が必要となる場合が多い。その手法には無限のやている。
りかたがあるはずであるが、SAD では物理的に意味
File I/O および Network I/O についても、SADScriptのある、ハミルトニアンに基づく近似法を使用しての組み込み関数としてサポートされている。また、いる。
EPICS Channel Access も用意されている。実際の加速磁石の磁場は、基本的に次のように表される。
器の運転情報取得および、そのリアルタイム表示や加速器制御も EPICS システムを利用して行うことがB (n) Ls(n = 0, 1, 2, 3, · · · )(3)Kn =できる。
BρBρ ≡ p0 /e(4)2.1 加速器ビームラインのモデリング
SAD で定義される加速器ビームラインを構成する主な要素を、Table 1 に示す。磁石要素は、ROTATE というパラメータでビーム軸 (進行方向) のまわりで回転させることができ、スキューモードの磁場を表現できるようになっている。磁石の回転の向き、ROTATEの符号は、後に述べられる座標軸、e~x × e~y = −e~s で定義される。
Table 1: List of SAD Elements
elementsymbol

ドリフト空間DRIFT偏向磁石

BEND

4 極磁石

QUAD

6 極磁石

SEXT

8 極磁石

OCT

加速空洞

CAVI, TCAVI

磁石、加速空洞の複合体

MULT

ソレノイド磁場の境界

SOL

ビームビーム相互作用

BEAMBEAM

汎用の写像

MAP

物理口径

APERT

ビーム光学系の基準点

MARK

要素の並び

LINE

Kn は磁石の積分磁場であり、Ls は、磁石の有効長(直線) である。正の Kn は水平方向に収束能力を持つことを意味する。このような K 値の表現を用いている理由は、厚みのある磁石を取り扱うことに意味があるという思想が SAD にあるからである。
4 極磁石の K1 を考えた場合、転送行列 (K1 > 0)は近似的に、q√√
LssinKL
cos K1 Ls
1 sK1
M = q√√K1
cos K1 Ls− Ls sin K1 Lsとなる。大抵の場合、厚み Ls は焦点距離 1/K1 よりも非常に小さく、
10M'(5)−K1 1
−1/2 1/K+ (K1 Ls ) K /6 −1/21+ ···1のように近似できる。このように、M の最低次を K1のみで表現できることは微分形である B 0 /Bρ と比較して有意義である。
SAD では、MOMENTUM、MASS、CHARGE などといった大域的なパラメータが用意されている。MASSのデフォールト設定は、電子質量 (eV)、CHARGE は+1 である。SAD で用いられる単位系は MKS である。

-5-

Proceedings of the 16th Annual Meeting of Particle Accelerator Society of Japan
July 31 - August 3, 2019, Kyoto, Japan

PASJ2019 WEOHP04

2.2

座標系

大局的な座標上に加速器ビームラインの構成要
素が配置されるが、基本的にドリフト空間と偏向磁石によって基準軌道は決定される。大局的座標は、(GX , GY , GZ , χ1 , χ2 , χ3 ) という６個のパラメータで記述される。ビームラインの先頭と後述する局
所的座標の関係は、初期設定では、(GX , GY , GZ ) =(s, −x, −y) となっている。また、局所的座標の回転は、(χ1 , χ2 , χ3 ) の 3 つの角度で表現される。偏向磁石のエレメント (BEND) は、ANGLE と呼ばれるパラメータを指定することによって局所的座標を回転させる (Fig. 1)。ANGLE は、
AN GLE =BLaBρ(7)と表せる。ただし、x 軸および y 軸は「加速器ハンドブック」に記述されているように決める [10]。この決め方では、基準座標のある１点で x 軸と y 軸を決めると、全ての点で x 軸と y 軸が決まる。注意すべき点は、各点での主法線の向きを x 軸とする Frenet-Seret
座標を使って x 軸と y 軸を決めていない点である。

Flag

Antonym

Default

EffectCELL

INSINS

Periodic condition

RING

TRPT

RING

Momentum is constant.

一般的に、転送行列や Twiss パラメータは、磁石の磁場の強さや有効長の非線形な関数となっている。
転送行列の要素や Twiss パラメータを希望の値に合わせる場合、磁石の磁場や有効長を解析的に求めることはできない。これらの問題を解く場合、非線形連立方程式の解として与えられ、数値解として求めるしかない。このように転送行列の要素や Twiss パラメータなどを希望する値に合わせる計算手法をマッチングと呼ぶ。
非線形連立方程式の数値解を求める場合、SAD では多次元ニュートン＝ラフソン法と最急降下法を併用している。多次元ニュートン法の解法においては、特異値分解 (SVD) を使用している。ニュートン法
は、古典的であるが単純であり強力である。SAD のFFS に組み込まれているマッチングのアルゴリズム
を Fig. 2 に示す。

Figure 2: Matching procedure of SAD/FFS. FitValue andFitFunction are also shown.

Figure 1: Definition of ANGLE.

2.3

Table 2: Flags in FFS(6)と表され、La は磁石の有効長 (弧) であり ANGLE に依存する。
基準軌道は、基準粒子の軌道であるが、実際に粒子が通る軌道でなくてもかまわない。世界点を(x, y, z, t) としたときに、直行座標系では、時刻 t をパラメータとして物理座標を (x, y, z) と選ぶのが普通であるが、加速器の場合、基準軌道上に沿った位置を示す s をパラメータとして (x, y, t) を物理座標とする方が大抵の場合便利である。z は相対的な位置を示すが、z = s − vt = −v(t − t0 ) なので時間と捉えるべきものである (早く到達した粒子は +、遅く到達した粒子は −)。ここで使用する局所的座標系は、右手系である。基準軌道の狭い周辺領域を通過する粒子の座標は、基準軌道上の各点 ~r(s) を使って~u(s) = ~r(s) + xe~x (s) + y e~y (s)

縮小された転送行列が用いられる (k64 バージョン
では 6 次元もサポートしている)。ビームラインの最初の要素は、軌道や Twiss パラメータの初期値を格納する MARK 要素でなければならない。計算方法を指定するフラッグを、Table 2 に示す。周期条件を満たすように解く CELL や、加速要素があってもビームラインの始点と終点で設計運動量を一定に保つ RING がある (加速位相は自動調整される)。TRPTを指定した場合、ビームラインはリナックもしくはビーム輸走路として取り扱われ、加速によって設計運動量は変化する。

FFS におけるマッチング

FFS では、軌道と写像の計算のために 6 次元のシンプレクティックなトラッキングが使われるが、光学関数を求める場合は、4 行 ×5 列 (4 次元と分散) にマッチングの対象となる組み込まれている光学関数を Table 3 に示す。物理座標における分散には、
physical と示されている。これらは、基準座標 (非結合) と物理座標を関係づける X-Y 結合行列 (r1 ∼r4 の要素を持つ 4×4 行列) によって関係づけられる。

-6-

Proceedings of the 16th Annual Meeting of Particle Accelerator Society of Japan
July 31 - August 3, 2019, Kyoto, Japan

PASJ2019 WEOHP04

Table 3: Optical Functions for Matching
Variable

SymbolAX, AY

αx , αy

Table 4: Flags in Emittance Calculation

UnitFlag

Default

Effect

CODCOD

Calculate COD

BX, BYβx , βym

RFSWRFSW

Acceleration by CAVII

NX, NYψx , ψy1/2π

RADCODNORADCOD

Synchro. rad. energy lossmINTRANOINTRA

Intra-beam scattering

EX, EYηx , ηy

EPX, EPYηpx , ηpy

R1, R4r1 , r4

R2r2m

R3r31/m

ηx , ηy (physical)

m2.5

粒子トラッキング

力学口径を求める場合、解析的に計算することは困難である。したがって、力学口径を求めるために
PEPX, PEPY ηpx , ηpy (physical)
は、粒子トラッキングに頼らざるを得ない。また、多DX, DY∆x, ∆ym粒子系の複雑な相互作用がある場合においても、粒DPX, DPY∆px , ∆py
子トラッキングの手法は使われる。
SAD では、6 次元座標 (x, px , y, py , z, δ) を粒子トラッキングで用いる。これらは、全て正準変数であ4 極磁石の K1 による Twiss パラメータ、分散、X-Y る。組み込みで用意されている要素の写像には、厚結合などの変化は微分による解析的に解が求まるも みを考慮して考えられる物理が盛り込まれている。
粒子トラッキングを計算するための関数、Trackのがある (ただし、4 極磁石に軌道オフセットがない場合)。SAD では、可能ならば解析的な解を用いて、 Particles[] が用意されている。トラッキングを行う
それ以外は数値微分を用いている。解析解を用いる ビームラインの始点と終点を指定し、始点におけることが可能な場合でも、ユーザーが選択的に数値微 粒子分布と生存フラッグを用意すると、終点におけ分を用いることができる。光学関数だけでなく、GX 、 る粒子分布と生存フラッグが返り値として計算されGY 、GZ 、χ1 、χ2 、χ3 などの幾何関数もマッチング可 る。なお、粒子分布は、それぞれの座標についてリ能である。しかも、FitValue や FitFunction を介して、 ストであり、生存フラッグは 1 もしくは 0 のリスト
目標関数の区間拘束やエミッタンスといった任意の である。Table 5 に、粒子トラッキングで用いられるフラッグを示す。
目標関数をマッチングに追加することができる。
PEX, PEY

2.4

ビームマトリックス

Table 5: Flags in Particle-tracking

EMIT コマンドは、平衡ビームマトリックスを計算する。計算するビームラインは、陽電子のリングとなる。平衡状態におけるビームマトリックス Σ は、6×6 行列でFlag

Σ = M ΣM T + Λ(8)Σ ≡ < qi qj >, qi = (x, px , y, py , z, δ ≡ ∆p/p0 )を解くことによって得られる。ここで、M は放射減衰を含むリング 1 周の転送行列であり、Λ はシンク
ロトロン放射とイントラビーム散乱による拡散行列である。M が 3 つ (x,y ,z ) の自由度間結合を含んでいる場合においても、ビームマトリックス法は適用可能である。平衡エミッタンスは、JΣ の固有値の絶対値として各自由度ごとに得られる。ここで、J は第 2.1 章で記述されているシンプレクティック行列である。同じ結果を返す関数、Emittance[] も用意されている。こちらは、オプションを指定することによって、より多くの情報をリスト形式で得られる。
EMIT によって正しく計算するためには、FSHIFT、PBUNCH、MINCOUP などが適切に設定されている必要がある1 。計算方法を指定するフラッグを、Table
4 に示す。
1 INTRA を指定した場合、PBUNCH と MINCOUP が必要。

Antonym

EffectRING

TRPT

Momentum constantRFSW

NORFSW

Acceleration by CAVI

RAD

NORAD

Synchrotron rad. energy loss

FLUC

NOFLUC

Diffusion due to synchrotron rad.

3.

SAD の実例

SAD を対話的に起動する場合、以下のように（パスが/SAD/bin/の場合) するとプロンプトが返ってくる。
$ /SAD/bin/gs FFS~ 省略 ~
In [1]:=

gs は、”go sad” の略称であり、”ghostscript” と混同しないように注意が必要である。また、SADScript で書かれた実行スクリプト（台本と呼ばれる）を実行させる場合、$ /SAD/bin/gs fodo.sadとする。fodo.sad のソースコードを以下に示す。
OFF CTIME; ON ECHO;;DRIFT
L1 =(L =0.2 )-7-

L2 =(L =1.5 )Proceedings of the 16th Annual Meeting of Particle Accelerator Society of Japan
July 31 - August 3, 2019, Kyoto, Japan

PASJ2019 WEOHP04

;
BEND
;
QUAD;
SEXT;
MARK

L3 =(L =2.0 )Q の要素すべてを意味する。GO はマッチングを開始するコマンドである。マッチングによって、4 極磁石の磁場を合わせた後の光学関数について、グラフィック表示したものを Fig. 3 に示す。また、希望する色収差となるように 6 極磁石の磁場をマッチングすることも可能である。その場合、運動量の幅 DPとチューンの運動量のずれに対するフィット点数をFITP によって指定する。フィッティングのライブラ
リとして FitValue[] 関数が用意されており、DP=0 での傾きも基本的に合わせることができる。
EMIT コマンドを使えば、FODO セルのエミッタンスが求まり、この場合 εx = 0.35 nm となる。

B2 =(L =2 ANGLE =.0314 E1 =0.5 E2 =0.5 )QF =(L =.5QD =(L =.5K1 =.223 )K1 = -.223)

SF =(L =0.3 K2 =0 )SD =(L =0.3 K2 =0 )PSTART =(AX = -2.396 BX =21.36
AY =.5035
BY =3.968
EX =.5435
EPX =.0612 DP =.01
EMITX =2.77e-09 EMITY =1e-12 )
PEND
=();
LINE FODO =( PSTARTL1 SD L2 B2 L3;
MOMENTUM = 1 GEV;

QF L1
PEND)

SF

L2

B2

L3 QD

4.

FFS;
USE FODO;
CELL;
CALC;

この例では、FODO ラティスのビームラインを作る台本を示している。ビームラインの名前は、FODO である。USE によって使うビームラインを指定し、周期条件 (CELL) の下で CALC コマンドによって、要素の幾何学的配置と光学関数を計算している。DISPコマンドで、各要素先頭での光学関数や幾何学的配置を見ることができる。

まとめ

本稿では、SAD のごく一部のことしか紹介できて い な い。 組 み 込 み 要 素、 コ マ ン ド、 フ ラ ッ グ
な ど の 説 明 は、http://acc-physics.kek.jp/SAD/
SADHelp.html を参照されたい。また、これと同等の記述を見ることができる Help コマンドが用意されている。
SAD が威力を発揮するのは、Twiss パラメータだけでなく、X-Y 結合や分散など多くのパラメータを希望の値に合わせることができるマッチングにある。
また、力学口径の最適化などにおける非線形な多変数探索を Downhill simplex 法と粒子トラッキングを組み合わせて最適解を見つける場合においても威力を発揮する。組み込みの要素によって、ビームラインを記述できれば、すぐさま光学関数や粒子トラッキングを用いた検討が素早く行えることも利点である。たとえ、組み込みの要素がなくても、汎用な写像を組み込むことがきるので、大抵の場合、加速器モデルを作ることが可能である。
SAD には現在、trunk と k64 と呼ばれる２つのバージョンが存在する。trunk は SuperKEKB 加速器運転環境向けに維持されており、k64 は、将来の加速器プロジェクトの要求に応じて多くの新しい機能が追加される開発版という位置づけである。SAD の発展とサポート環境を、どのようにバランスを取って進めていくのかが、今後の大きな課題である。

参考文献

Figure 3: FODO lattice.
さて、水平方向と垂直方向の位相の進みを 90 度に合わせたい場合、薄レンズ近似で簡単に計算することはできないのでマッチングを行う。
FIT $$$ NX
FIT $$$ NY
FREE Q*;GO;~ 省略 ~VAR;!Variable
QF
K1
QD
K1.25
.25

1 ! * 6.283185307
1 ! * 6.283185307

KeywordNow.223313964747-.222915821316!
!
!

Previous.2200000-.220000[1] http://www-sad.kek.jp[2] 第 1 回 SAD ワークショップ講演記録集、1998 年 7 月、AccLab-99-15.
[3] http://atcollab.sourceforge.net/.
[4] https://www.classe.cornell.edu/bmad/.
[5] https://www.aps.anl.gov/
Accelerator-Operations-Physics/Software#elegant.
[6] http://mad.web.cern.ch/mad/.
[7] E. Forest, et al., CERN-SL-2002-044, KEK Report 2002-3.
[8] http://sixtrack.web.cern.ch/SixTrack/.
[9] http://acc-physics.kek.jp/SAD/SADTkinter.ps.
[10] 加速器ハンドブック、丸善出版、ISBN 978-4-621-089019.

$$$はビームライン終点を意味し、Q*は先頭文字が-8-