東京大学高輝度光源計画
加速器の概要

挿入光源の影響と補正

円偏光アンジュレーターのための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施設加速器部門


目次へ

軌道放射物性研究施設へ