エレメント値をFFS内で設定すると、バージョンによって計算結果が変わってしまう
スクリプトは下記
ON LOG;
ON RAD FLUC COD RFSW RADCOD;
MOMENTUM = 3GEV;
DRIFT DLL =(L =2.72 ) D1 =(L =.15 ) D2 =(L =.27 ) D3 =(L =.53 ) D4 =(L =.62 ) D5 =(L =.3 )
D6 =(L =.36 ) DLS =(L =.82 )
;
BEND B1 =(L =1.13 ANGLE =.078539816 E1 =.5 E2 =.5 K1 =-.7397103017678205 )
;
QUAD Q1 =(L =.2 K1 =.6907053661641553 )
Q2 =(L =.2 K1 =-.13268256667848843 )
Q3 =(L =.2 K1 =1.0493587672181628 )
Q4 =(L =.2 K1 =-.029729675023830338 )
Q5 =(L =.2 K1 =.8610612588334975 )
;
SEXT S1 =(L =.2 K2 =29.29577177704089 )
S2 =(L =.2 K2 =-37.64034057583332 )
S3 =(L =.2 K2 =-17.795907545412305 )
S4 =(L =.2 K2 =27.198775560658618 )
S5 =(L =.2 K2 =-27.6230634892771 )
;
CAVI RFC =(VOLT =3600000 HARM =592 )
;
MARK
MRST = () MNCS = ()
MC = () MNCE = ()
MRED = () MKNS = ()
MKNSA = ()
;
LINE
NCELLH = (MNCS
DLL S1 D1 Q1 D1 S2 D1 Q2 D2
B1
D2 S3 D3 Q3 D1 S4 D1 Q4 D4 S5 D5
B1
D6 Q5 DLS
MC)
NCELL = (MKNS NCELLH -NCELLH MNCE)
RING = (MRST
10*NCELL RFC 10*NCELL
MRED)
;
FFS;
NPARA = 12;
$FORM = "15.10";
PageWidth = 1999;
USE RING;
cell calc emit;
kb1 = -.7690148127;
kq1 = .6220350825;
kq2 = -.0525161074;
kq3 = .9269523815;
kq4 = .1635423185;
kq5 = .8072458773;
ks1 = 30.9145683926;
ks2 = -45.1076331171;
ks3 = -16.5916811851;
ks4 = 26.7666811507;
ks5 = -28.0790433114;
LINE["K1","B1"] = kb1;
LINE["K1","Q1"] = kq1;
LINE["K1","Q2"] = kq2;
LINE["K1","Q3"] = kq3;
LINE["K1","Q4"] = kq4;
LINE["K1","Q5"] = kq5;
LINE["K2","S1"] = ks1;
LINE["K2","S2"] = ks2;
LINE["K2","S3"] = ks3;
LINE["K2","S4"] = ks4;
LINE["K2","S5"] = ks5;
cell calc emit;
disp $$$;
stop;
stop;
こうなってほしい結果
(実は、下記のチューンのマッチング出力をスクリプト内で読み込ませているつもり。PF計算以上の生出さんSADでは下記の通りの出力になる。)
Welcome to SAD Ver.1.1.9.0.5k64 built at 2020-09-09 16:04:26 +0900
disp $$$;
AX BX NX EX EPX Element Length Value s(m) AY BY NY EY EPY DetR #
-3.E-13 13.0000 32.5500 -5.3E-9 -1.E-15 $$$ .0 0 436.000000 -2.E-12 3.00000 10.5600 1.3E-25 1.4E-31 1.E-33 1124
(水平チューン 32.55、垂直チューン 10.56)
PF計算機、KEKB計算機のふつうのSADだと、おかしい結果になる。どこか何か、読み込めていないよう。
Welcome to SAD Ver.1.0.10.10.1a built at 2021-10-06 13:54:01 +0900
AX BX NX EX EPX Element Length Value s(m) AY BY NY EY EPY DetR #
-4.2E-6 12.7561 32.7085 7.91E-4 -9.5E-6 $$$ .00000 0 436.000000 .12726 5.38111 7.15661 .00000 .00000 .0000 1124
(水平チューン 32.7085、垂直チューン 7.15661)
これでBQSをtypeすると、
BEND B1 =(L =1.13 ANGLE =.078539816 E1 =.5 E2 =.5 K1 =-.7690148127 )
;
QUAD Q1 =(L =.2 K1 =.6220350825 )
Q2 =(L =.2 K1 =-.0525161074 )
Q3 =(L =.2 K1 =.9269523815 )
Q4 =(L =.2 K1 =.1635423185 )
Q5 =(L =.2 K1 =.8072458773 )
;
SEXT S1 =(L =.2 K2 =30.9145683926 )
S2 =(L =.2 K2 =-45.1076331171 )
S3 =(L =.2 K2 =-16.5916811851 )
S4 =(L =.2 K2 =26.7666811507 )
S5 =(L =.2 K2 =-28.0790433114 )
;
となり、ラティス最後にこれを付け加えてただcell calc計算すると、正しいと思っている値になる。何が間違っているんだろう……
通常のSADの場合、BENDのK1がLINEコマンドでは反映されないよう。見かけ上、入ったように見えて、typeでも新しい値になるが、内部では反映されていないように考えられる。
LINE["K1","B1"] = kb1;
を
SetElement["B1","BEND",{"K1"->kb1}];
に書き換えることで、通常のSADでも正しい結果になった。
FFS["B1 K1 kb1"] も使えると思います。