I have two problems with solenoid (SOL)
Problem 1:
Beam line length of accelerating structure (CAVI) in Solenoid (SOL) becomes zero.
e.g.
!!!!!
SOL SOL1=(BOUND=1 BZ=0 GEO=1) SOL2=(BOUND=1 BZ=0);
MARK I1=() I2=();
CAVI CA1=(L=2.0 VOLT=0 FREQ=1.3e9 PHI=-1.570796);
LINE LN1=(I1 SOL1 CA1 SOL2 I2);
FFS USE=LN1;
trpt; ins; cal;
Print[LINE["S","*"]];
!!!!!
gives
"{0,0,0,0,0,0}"
(orbit length is zero)
!!!!!!!!
Problem 2:
Geometry of design orbit (given by "GEO") seems incorrect downstream of solenoid (SOL).
e.g.
!!!!!!
SOL SOL1=(BOUND=1 BZ=0 GEO=1) SOL2=(BOUND=1 BZ=0);
MARK I1=() I2=();
DRIFT L1=(L=2.0);
BEND B1=(L=0 ANGLE=1.5707963267948966);
BEND B2=(L=0 ANGLE=1.5707963267948966 ROTATE=90 DEG);
LINE LN1=(I1 B2 SOL1 L1 SOL2 B1 L1 I2);
LINE LN2=(I1 B2 L1 B1 L1 I2);
FFS USE=LN1;
trpt; ins; cal;
geo1=LINE["GEO","I2"];
USE LN2;
trpt; ins; cal;
geo2=LINE["GEO","I2"];
Print[geo1];
Print[geo2];
!!!!!!!
gives
Print[geo1];
{{-1.4142135623730947,1.4142135623730951,-2},{2.356194490192345,-6.123031769111886e-17,-1.5707963267948966}}
Print[geo2];
{{0,2,-2},{1.5707963267948968,0,-1.5707963267948966}}
!!!!!!!
Do I misunderstand something?
Is the SAD version (SAD Ver.1.0.10.5.3a10 built at 2012-01-30 16:19:56) too old?
A1. CAVI element in the solenoid region IS NOT SUPPORTED
and CAVI elements in such region IS DISCARDED.
Use MULT type element instead of CAVI.
Comment 2. My latest version(amorita branch revision 5469) makes following different results
Print[geo1];
{{1.2246467991473532e-16,2,-2},{1.5707963267948966,-6.123233995736766e-17,-1.5707963267948966}}
Print[geo2];
{{1.2246467991473532e-16,2,-2},{1.5707963267948966,-6.123233995736766e-17,-1.5707963267948966}}
Comment 2. Latest MAIN trunk(V1.0.10.10.1a / revision 6436) makes same results
Print[geo1];
{{-1.414213562373095,1.4142135623730951,-2},{2.356194490192345,-6.123233995736766e-17,-1.5707963267948966}}
Print[geo2];
{{0,2,-2},{1.5707963267948968,0,-1.5707963267948966}}
something wrong...
Comparision of DISP G between MAIN trunk VS amorita branch
MAIN trunk:
Element Gx Gy Gz s Length Value Chi1 Chi2 Chi3 #
I1 .000000 .000000 .000000 .000000 .000000 0 .000000 .000000 .000000 1
B2 .000000 .000000 .000000 .000000 .000000 1.5707963 .000000 .000000 .000000 2
SOL1 .000000 .000000 .000000 .000000 .000000 .0000000 45.000000 -90.000000 -45.000000 3
L1.1 .000000 .000000 .000000 .000000 2.000000 2.0000000 45.000000 -90.000000 -8.1554E-15 4
SOL2 1.22465E-16 1.22465E-16 -2.000000 2.000000 .000000 .0000000 45.000000 -90.000000 -8.1554E-15 5
B1 1.22465E-16 1.22465E-16 -2.000000 2.000000 .000000 1.5707963 45.000000 -90.000000 .000000 6
L1.2 1.22465E-16 1.22465E-16 -2.000000 2.000000 2.000000 2.0000000 135.000000 -3.5084E-15 -90.000000 7
I2 -1.414214 1.414214 -2.000000 4.000000 .000000 0 135.000000 -3.5084E-15 -90.000000 8
$$$ -1.414214 1.414214 -2.000000 4.000000 .000000 0 135.000000 -3.5084E-15 -90.000000 9
amorita branch:
Element Gx Gy Gz s Length Value Chi1 Chi2 Chi3 #
I1 .000000 .000000 .000000 .000000 .000000 0 .000000 .000000 .000000 1
B2 .000000 .000000 .000000 .000000 .000000 1.5707963 .000000 .000000 .000000 2
SOL1 .000000 .000000 .000000 .000000 .000000 .0000000 .000000 -90.000000 .000000 3
L1.1 .000000 .000000 .000000 .000000 2.000000 2.0000000 .000000 -90.000000 .000000 4
SOL2 1.22465E-16 .000000 -2.000000 2.000000 .000000 .0000000 .000000 -90.000000 .000000 5
B1 1.22465E-16 .000000 -2.000000 2.000000 .000000 1.5707963 .000000 -90.000000 .000000 6
L1.2 1.22465E-16 .000000 -2.000000 2.000000 2.000000 2.0000000 90.000000 -3.5084E-15 -90.000000 7
I2 1.22465E-16 2.000000 -2.000000 4.000000 .000000 0 90.000000 -3.5084E-15 -90.000000 8
$$$ 1.22465E-16 2.000000 -2.000000 4.000000 .000000 0 90.000000 -3.5084E-15 -90.000000 9
A2. NOT A BUG, Coordinate selection rule of SOL element definition
* SOL境界でローカル座標系を切替える際の座標系の選び方に「CHI3=0となる局所座標系を選ぶ」というSOL elementの仕様があるため、CHI3パラメータがリセットされSOL領域下流の主偏向ベクトルの向きがビーム軸に対して回転する
* Eular角(CHI1, CHI2, CHI3)は鉛直方向を向いた際に CHI1/CHI3にパラメータ縮退が発生(同一の直交基底に対して複数の表現が存在する)するため、演算誤差の範囲で同一の直交基底に対して異なるEular角表現が割り当てられるが、上記の接続ルールに基づきCHI3が零と成るようにビーム軸方向に回転した局所座標系が選択される結果、定義パラメータ摂動に対して局所座標系定義が不連続となっている
* ANGLE/ROTATEを 90度ちょうどから若干外す(例えば91deg)とamorita branch/k64 branch含めて再現する
Thank you. But,
私の使っているversionでは、
前の例のビームラインのVertical bend とSOL1 の間にさらに horizontal bend を入れると、丁度90度でなくても結果がおかしくなるようです。(LN1 と LN2で結果が異なる)
SOL SOL1=(BOUND=1 BZ=0 GEO=1) SOL2=(BOUND=1 BZ=0);
MARK I1=() I2=();
DRIFT L1=(L=2.0);
BEND B1=(L=0 ANGLE=1.1);
BEND B2=(L=0 ANGLE=0.9 ROTATE=91 DEG);
! LINE LN1=(I1 B2 SOL1 L1 SOL2 B1 L1 I2);
! LINE LN2=(I1 B2 L1 B1 L1 I2);
LINE LN1=(I1 B2 B1 SOL1 L1 SOL2 B1 L1 I2);
LINE LN2=(I1 B2 B1 L1 B1 L1 I2);
FFS USE=LN1;
trpt; ins; cal;
geo1=LINE["GEO","I2"];
USE LN2;
trpt; ins; cal;
geo2=LINE["GEO","I2"];
!!!!!!!!!!
Print[geo1];
{{-.8362874400122727,3.134815502025808,-1.0499162144385719},{2.377544289773975,-.1645553477677297,-.3323464010711923}}
Print[geo2];
{{-.12124348536650054,3.402704293673355,.18887159256415886},{1.9807048644907819,.47302387509385363,-.7976160872880308}}
!!!!!!!!!!!!
> Thank you. But,
> 私の使っているversionでは、
> 前の例のビームラインのVertical bend とSOL1 の間にさらに horizontal bend を入れると、丁度90度でなくても結果がおかしくなるようです。(LN1 と LN2で結果が異なる)
>
提示されている作例では、B1.1の出口のCHI3が零でないので、SOLを挟むと以降の局所座標系定義が変更され、結果としてB1.2による軌道偏向の向きが変わる為で、SOLによる局所座標定義の仕様です
BENDのANGLEによる軌道偏向は、BENDの局所座標系で定義されている(実験室系に対する向きは、CHI1, CHI2, CHI3で定義される基底に依存している)
従って、作例ではSOLの存在の有無により、局所座標基底の変更が発生し、上流のビーム軸に対するB1.2の向きは、LN2に対してLN1は約48度回転しています
まとめ
* SOLの仕様により、直感に反し、LN2とLN1はB1.2の幾何的な向きが異なる配置を記述している
* 一致する十分条件は、SOL1入り口で CHI3==0