挿入光源の影響と補正
円偏光アンジュレーターのためのSAD変更箇所
<変数定義、要素定義部分>
oldsad/obj/Makefile
OBJAUTO= abbrev.o
cputix.o csinit.o \
……………
qkund.o tkund.o
tkunde.o
コンパイルするサブルーチン名を書き加える
oldsad/src/inc/MACCODE.inc
integer icKUND
parameter (icKUND=15)
要素番号の確保
oldsad/src/inc/MACKW.inc (無変更)
integer kwRHO,kwKX
parameter (kwKx=kwR11+21)
parameter (kwRHO0=kwBMAX+1)
使いたい変数の追加。もともと rho も kx も存在していたため、無変更
oldsad/src/initb1.f
kytbl(kwKx ,0)=sethtb('KX
',icKWRD,kwKx )
kytbl(kwRHO ,0)=sethtb('RHO
',icKWRD,kwRHO)
ラティスファイルなど、SADのスクリプトからどういう名前で指定するか。
c for VSX Undulator KUND
idummy
=sethtb('kund ',icDEF,icKUND)
kytbl(0,icKUND)=sethtb('KUND
',icDEF,icKUND)
kytbl(kwL
,icKUND)=1
kytbl(kwRHO
,icKUND)=2
kytbl(kwKx
,icKUND)=3
kytbl(kwDX
,icKUND)=4
kytbl(kwDY
,icKUND)=5
kytbl(kwRAD
,icKUND)=6
kytbl(kwCHRO ,icKUND)=7
kytbl(kwEPS
,icKUND)=8
kytbl(kwCOUPLE ,icKUND)=9
kytbl(kwMAX
,icKUND)=10
要素 kund の追加、及び、kund に関わる変数を関連づけ。
<各種サブルーチンとそれを呼び出す元のルーチン>
<Linear optics の計算、Matching>
oldsad/src/qtwiss.f
go to (
$
1100,1200,1010,1400,1010,1600,1010,1600,1010,1600,
1
1010,1600,1010,1010,1500,1550,1010,1010,1010,2000,
1
2100,2200,1010,1010,1010,1010,1010,1010,1010,1010,
1
3100,1010,3300,3400,3500,1010,1010,1010,1010,1010,
$
4100),
1 ltyp
要素の種別がNo.15 “kund” だったら、1500行に飛ぶ。Q、S、B等各要素に応じて各サブルーチンを呼び出す。
1500 continue
call qkund(trans,cod,al,
$
rlist(lp+2),rlist(lp+3),rlist(lp+8),coup)
c write(*,*)'qkund!'
go to 20
呼び出し部分。rlist(lp+2) は、initb1.f で関連づけた keyword
の No.2。
trans 6*6 の転送行列(返値はその要素だけの転送行列)、cod (closed
orbit distortion)、al 長さ、rho IDの最大曲率半径、kx IDの磁極の波数、eps0
未使用、coup 未使用
qkund.f は別記。
<Tracking>
oldsad/src/tturn.f
go to (1100,1200,1010,1400,1010,1600,1010,1600,1010,1600,
1
1010,1600,1010,1010,1500,1550,1010,1800,1900,2000,
……………
1
4100,1010,4300),lele
1500 continue
al=rlist(lp+1)
c write(*,*) 'tkund called',rlist(lp+2)
call tkund(np,x,px,y,py,z,g,dv,pz,al,
1
rlist(lp+2),rlist(lp+3),rlist(lp+8), .true.)
go to 1020
np まわす粒子数、x X座標、px X運動量、Y、Zも同様。Pz はそれほど意味がない。運動量のずれ dP/P は g の中にg(i) = sqrt(dp(i)/p0 + 1) ? 1 で入っている。dv 不明(キャビティの何かであろう)、以降は同じ。
tkund.f は別記。
<Emittance、Beam Size、3D
matching>
oldsad/tturne.f
go to (1100,1200,1010,1400,1010,1600,1010,1600,1010,1600,
$
1010,1600,1010,1010,1500,1550,1010,1010,1010,3000,
$
3100,3200,1010,1010,1010,1010,1010,1010,1010,1010,
$
4100,4200,4300,4400,4500),lele
1500 continue
call tkunde(trans,cod,beam,al,
$
rlist(lp+2),rlist(lp+3),rlist(lp+8))
go to 1009
trans 6*12 後半の6*6 成分は、減衰を表す行列。具体的に何かは、不明。返値:リング入り口からその要素出口までの転送行列。QやBなど、qtwiss と tturne で同じさブルーチンを呼び出すものがあるが、その際は irad = 6 だと qtwiss、irad = 12 だと tturne からになる。(irad で分岐させ、転送行列の返値を変える。) beam ビームサイズの行列。前記のようにテンソルの様な形で転送行列によって転送される。
tkunde.f は別記。
Updated on Wednesday,18,Jan.,2001
SOR施設加速器部門