[Back]
New Arrival display

SADwebページ停止のお知らせ Name:E. Nakamura Date:2018/06/05(Tue) 10:41:13 No.829

サーバ設置居室の空調機更新工事に伴い、こちらのSAD webページ(掲示板含む)の閲覧・使用を停止致します。

閲覧停止(予定)期間: 6月11日(月) 17:00 - 6月15日(金) 9:00
※工事の進捗によって日程が前後する場合があります。

ご不便をお掛け致しますが、宜しくお願い致します。

SAD Update V1.1.1.4k64 Operator form of functions, closed orbit finding Name:K. Oide Date:2018/04/27(Fri) 19:27:26 No.745

Changes:

1. Now "operator form" is implemented in the following functions:

Map, Apply, Append, Prepend, Extract, Insert, Delete, Position, Cases, Select, SwitchCases, SelectCases, ReplacePart.

It works as Mathematica's.

Examples:

a=-Range[10];
Map[Abs][a]
Out[1]:= {1,2,3,4,5,6,7,8,9,10}
Apply[Max][a]
Out[2]:= -1
Append[1][a]
Out[3]:= {-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,1}
Prepend[1][a]
Out[4]:= {1,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10}
Extract[{1}][a]
Out[5]:= -1
Insert[3,4][a]
Out[6]:= {-1,-2,-3,3,-4,-5,-6,-7,-8,-9,-10}
Delete[5][a]
Out[7]:= {-1,-2,-3,-4,-6,-7,-8,-9,-10}
Cases[-3][a]
Out[8]:= {-3}
Position[-3][a]
Out[9]:= {{3}}
Position[-3|-2|-5][a,1,1]
Out[10]:= {{2}}
Select[#<-5&][a]
Out[11]:= {-6,-7,-8,-9,-10}
SelectCases[{#<-5&}][a]
Out[12]:= {{-6,-7,-8,-9,-10}}
SwitchCases[{-1,-2}][a]
Out[13]:= {{-1},{-2}}
ReplacePart[1->{2}][a]
Out[14]:= {{2},-2,-3,-4,-5,-6,-7,-8,-9,-10}

2. ReplacePart can be called by 2 arguments, with the rule or list of rules as the second argument. This is same as Mathematica's and more convenient and efficient than before. Calling with 3 arguments as before is still OK.

Examples:
ReplacePart[a,{{5},{7}}->{1}]
Out[17]:= {-1,-2,-3,-4,{1},-6,{1},-8,-9,-10}
ReplacePart[a,{5->{1},7->{2}}]
Out[18]:= {-1,-2,-3,-4,{1},-6,{2},-8,-9,-10}
ReplacePart[a,{{5}->{1},{7}->{2}}]
Out[19]:= {-1,-2,-3,-4,{1},-6,{2},-8,-9,-10}
ReplacePart[a,{5,7}->{1}]
???General::toomany: Too many indices in ReplacePart[{-1,-2,-3,-4,-5,-6,-7,-8,-9,-10},{5,7}->{1}]
ReplacePart[a,{}]
Out[20]:= {-1,-2,-3,-4,-5,-6,-7,-8,-9,-10}
ReplacePart[a,{1},5]
Out[21]:= {-1,-2,-3,-4,{1},-6,-7,-8,-9,-10}
ReplacePart[a,{1},{{5},{7}}]
Out[22]:= {-1,-2,-3,-4,{1},-6,{1},-8,-9,-10}

3. The closed orbit finding in Emittance and CALC6D is modified in the case of RFSW+NORADCOD+NORADTAPER. Now it tries NORFSW first to guess the equilibrium DZ.

SAD Update: V1.1.1.3.4k64 pgsolvcond.f Name:K. Oide Date:2018/04/06(Fri) 15:53:18 No.739

Fixes:

1. An issue was found and fixed in pgsolvcond.f for MICAOD correction.

SAD Update: V1.1.1.3.3k64 Bug in ktfsequenceq. Name:K. Oide Date:2018/04/05(Thu) 11:58:51 No.737

1. A bug in a module procedure ktfsequenceq has been found. It caused
seg faults in various routines including Delete and Insert.

SAD Update: V1.1.1.3.2k64 ExtractBeamLine Name:K. Oide Date:2018/04/02(Mon) 12:04:13 No.735

Fixes:

1. ExtractBeamLine for an unexpanded beam line was wrong to cause a
segmentation fault.

SAD Update V1.1.1.3.1k64 Name:K. Oide Date:2018/03/29(Thu) 15:18:03 No.733

Fixes:
1. The SYNCHROBETA command has been restored.
2. Fixed an issue ExternalMap with CALC6D, when it is not defined.

Changes:
1. The default sized of Canvas is now set smaller than the screen size.

Re^2: 放射積分 Name:K.Harada Date:2018/03/28(Wed) 11:41:53 No.732

 どうもありがとうございます!

Re: 放射積分 Name:Akio Morita Date:2018/03/28(Wed) 10:47:21 No.731

RADINTのコード解析まとめ


バグ
* BODYをステップ評価する際に2回目以降、TCAL内部でR0/R0Iの未初期化参照が発生する
** 暗黙のSAVE属性を与える Fortranコンパイラでは動いてしまう
* UINTM4のREAL(8)型の第2引数にREAL(4)型のリテラルを渡している
* SEXTUがTMATRコモンブロックを参照していない
* SEXTU呼び出し前に必要なコモン変数(DL/DKL2)を初期化していない
** SEXTに関しては、1995年のCVSによる管理開始時から動かなかったものと思われる


放射積分評価と対象パラメータ
* BEND(L, ANGLE, E1, E2)
** BODYは、シンプソン積分
** EDGEは、thin lens評価

* QUAD(L, K1)
** BODYは、シンプソン積分
** EDGE無し

* SEXT(L, K2)
** BODYは、中点評価
** EDGE無し

* CAVI(VOLT,HARM,FREQ)
** 電圧の積算
** HARM/FREQは、最終値を控えるのみ


"すぐに分かる"制限事項
* 反転設置の非対称BENDの評価が正しくない
* K0/AE1/AE2を持ったBENDの評価は正しくない
* エレメントのDX/DYオフセットは評価されない
* SEXT内の軌道による転送行列の摂動は評価されない
* "LINEAR CHROMATICITY"に ROTATEが反映されない
** 例えば、90° ROTATEかつ K1反転した QUADを並べると"LINEAR CHROMATICITY"が反転する


表示について
* "LINEAR CHROMATICITY"は、無次元化された(2πで割った) natural linear chromaticity

Re: 放射積分 Name:Akio Morita Date:2018/03/28(Wed) 00:55:04 No.730

>  放射積分の値を表示する方法はありませんでしょうか?
> RADINT というコマンドはありますが、まともに動作している
> 感じがしません。
>  どうぞよろしくお願い申しあげます。
>
6極の計算まわりがバグバグしてる
* src/SEXTU.fで正しくCOMMONブロックが参照されていない
* src/INTGRL.fでSEXTU呼び出し前にCOMMONブロックの変数を正しく初期化していない
* UNITM4の第二引数がREAL(8)型なのに、単精度のリテラルが積んである

その辺直して、script/design_example.sadを計算すると
tune/emittance/compaction等はEMITと概ね一致する

Re: 放射積分 Name:Akio Morita Date:2018/03/27(Tue) 14:57:04 No.729

>  放射積分の値を表示する方法はありませんでしょうか?
> RADINT というコマンドはありますが、まともに動作している
> 感じがしません。
>  どうぞよろしくお願い申しあげます。
>
"DETERMINANT=0 MATRIX-INV NOT FOUND"で落ちるのは、src/TCAL.fの R0, R0I配列の未初期化参照バグ

もっとも、BEND/QUAD/SEXT/CAVIしか数えてないので、MULTによる衝突点モデルやSOL+MULTによる変更電磁石モデルなどはまともに計算出来ないと思われる

SAD Update: V1.1.1.3k64 ExternalMap for CALC6D Name:K. Oide Date:2018/03/26(Mon) 16:29:09 No.728

Fixes:

1. ExternalMap(OPTICS) now works with CALC6D. The usage is same as
CALC4D and fully accepts 6 by 6 transfer matrix.

Re: 放射積分 Name:K.Harada Date:2018/03/26(Mon) 13:01:44 No.727

放射積分計算のスクリプト

(そのまま実行できる条件)
 ・B は水平ベンドのみ。
 ・名前は B* で、それ以外なく、B* すべては蹴り角がゼロではない。
 ・B の角度は ANGLE で入っている。
 ・逆ベンドはあっても大丈夫にしたつもり。
 ・最後の resemit の単位は nmrad です。

(そのまま実行できないとき)
 ・垂直ベンドあり → 大幅な?スクリプト書き換え。
 ・蹴り角ゼロのベンドがある → ANGLE = 1e-15 とか、超微小の蹴り角を入れればいい。


ON LOG RAD FLUC COD RFSW RADCOD;
FFS;

!NPARA = 4;

$FORM = "15.10";
PageWidth = 1999;

USE RING;

cell calc emit;

bposi = LINE["POSITION","B*"];

GetIntegralCH[num_]:=(
IH = 0;
! Print["Middle Parameters of ",LINE["NAME",num]];
bex = Twiss["BX",num+0.5];
alx = Twiss["AX",num+0.5];
gax = (1+alx*alx)/bex;
etx = Twiss["EX",num+0.5];
epx = Twiss["EPX",num+0.5];
L = LINE["L",num]/2;
tha = LINE["ANGLE",num]/2;
rho = L/tha;
k1 = -1*LINE["K1",num];
k = k1/L/2;
kef2= k - 1/rho/rho;
! Print[LINE["NAME",num]];
! Print["BX = ", bex," AX = ",alx," GX = ", gax];
! Print["EX = ", etx," EPX= ",epx];
! Print["rho= ", rho," L = ",L, " tha = ",tha ];
! Pring["k1 = ", k1, " k = ", k];
! Print["kef= ", kef2];
! FFS["Abort;"];
If[kef2>0,
kef = Sqrt[kef2];
aaa = 2*(-8*kef^2*rho*epx*Sinh[kef*L]+8*kef^3*(kef^2*etx*rho+1)*rho*epx*L)/4/kef^5/rho^2;
bbb = 2*(kef^2*Sinh[2*kef*L]+4*kef^5*rho^2*epx^2*L-2*kef^3*L)/4/kef^5/rho^2;
ccc = 2*(-8*(1+kef^2*rho*etx)*Sinh[kef*L]+6*kef*L+4*kef^5*rho^2*etx^2*L+Sinh[2*kef*L]+8*kef^3*rho*etx*L)/4/kef^5/rho^2;
! Print["abc = ",aaa,bbb,ccc];
IH = IH + aaa * alx + bbb * bex + ccc * gax;
,
kef = Sqrt[-kef2];
aaa = 2*(8*kef^2*rho*epx*Sin[kef*L]+8*kef^3*(kef^2*etx*rho-1)*rho*epx*L)/4/kef^5/rho^2;
bbb = 2*(-kef^2*Sin[2*kef*L]+4*kef^5*rho^2*epx^2*L+2*kef^3*L)/4/kef^5/rho^2;
ccc = 2*(-8*(1-kef^2*rho*etx)*Sin[kef*L]+6*kef*L+4*kef^5*rho^2*etx^2*L+Sin[2*kef*L]-8*kef^3*rho*etx*L)/4/kef^5/rho^2;
! Print["abc = ",aaa,bbb,ccc];
IH = IH + aaa * alx + bbb * bex + ccc * gax;
! Print[IH];
];
IH = IH /rho/rho/Abs[rho];
IH
);

GetIntegralEX[num_]:=(
IE = 0;
! Print["Middle Parameters of ",LINE["NAME",num]];
etx = Twiss["EX",num+0.5];
epx = Twiss["EPX",num+0.5];
L = LINE["L",num]/2;
tha = LINE["ANGLE",num]/2;
rho = L/tha;
k1 = -1*LINE["K1",num];
k = k1/L/2;
kef2= k - 1/rho/rho;
! Print[LINE["NAME",num]];
! Print["BX = ", bex," AX = ",alx," GX = ", gax];
! Print["EX = ", etx," EPX= ",epx];
! Print["rho= ", rho," L = ",L, " tha = ",tha ];
! Pring["k1 = ", k1, " k = ", k];
! Print["kef= ", kef2];
! FFS["Abort;"];
If[kef2>0,
kef = Sqrt[kef2];
IE = ((etx*kef^2*rho+1)*Sinh[kef*L]+epx*kef*rho*Cosh[kef*L]-kef*L-kef*rho*epx)/kef^3/rho;
etx = Twiss["EX",num+0.5];
epx = -1*Twiss["EPX",num+0.5];
IE = IE + ((etx*kef^2*rho+1)*Sinh[kef*L]+epx*kef*rho*Cosh[kef*L]-kef*L-kef*rho*epx)/kef^3/rho;
,
kef = Sqrt[-kef2];
IE = ((etx*kef^2*rho-1)*Sin[kef*L]-epx*kef*rho*Cos[kef*L]+kef*L+kef*rho*epx)/kef^3/rho;
etx = Twiss["EX",num+0.5];
epx = -1*Twiss["EPX",num+0.5];
IE = IE + ((etx*kef^2*rho-1)*Sin[kef*L]-epx*kef*rho*Cos[kef*L]+kef*L+kef*rho*epx)/kef^3/rho;
! Print[IE];
];
IE
);
Jx = 0;
Jy = 0;
Jz = 0;
DFac = 0;
RadIntI1 = 0;
RadIntI2 = 0;
RadIntI3 = 0;
RadIntI4 = 0;
RadIntI5 = 0;

Do[
! Print[i," ",LINE["NAME",bposi[i]]," ",LINE["K1",bposi[i]]==0];
IH = GetIntegralCH[bposi[i]];
RadIntI5 = RadIntI5 + IH;
! Print[bposi[i]," ",LINE["NAME",bposi[i]]," ",IH,aaa,bbb,ccc,alx,bex,gax,L/tha];
,{i,Length[bposi]}];


Do[
IE = GetIntegralEX[bposi[i]];
L = LINE["L",bposi[i]];
tha = LINE["ANGLE",bposi[i]];
rho = L/tha;
k1 = -LINE["K1",bposi[i]]/L;
RadIntI1 = RadIntI1 + IE / rho;
RadIntI2 = RadIntI2 + tha*tha/L;
RadIntI3 = RadIntI3 + L / rho / rho / Abs[rho];
RadIntI4 = RadIntI4 + IE*(1/rho^3-2*k1/rho);
! Print[bposi[i], IE];
,{i,Length[bposi]}];

Print[RadIntI1,RadIntI2,RadIntI3,RadIntI4,RadIntI5];
DFac = RadIntI4 / RadIntI2;

sademit = Emittance[];

Jx = 1 - DFac;
Jy = 1; !!!!!!! only varid for the case without vertical bendings.
Jz = 2 + DFac;
Print[Jx,Jy,Jz];

cq = 3.832/10000;
gamma = MOMENTUM / 1000000/0.51099906;
resemit = cq * gamma * gamma * RadIntI5 / RadIntI2 / Jx;
Print[resemit];
Print[(Emittances/.sademit)[1]];
stop;
stop;

放射積分 Name:K.Harada Date:2018/03/23(Fri) 16:14:47 No.726

 放射積分の値を表示する方法はありませんでしょうか?
RADINT というコマンドはありますが、まともに動作している
感じがしません。
 どうぞよろしくお願い申しあげます。

Re: 位相空間プロット Name:Akio Morita Date:2018/03/20(Tue) 22:59:55 No.725

(省略)
> という位相空間プロットですが、古いSADでは動くのですが、新しいSADでは動きません。
> (1周目に全てロス、と言われてしまいます。) 仕様か、スクリプトのミスか、機能の削除か、
> 可能でしたらアドバイスを頂けないでしょうか?
>
MAINレベルコマンドの仕様書を読んだことが無いので、どのような
動作が正しいか分からない(出力結果の読み方が分からないので判断しかねる)ので助言のみ

MAIN trunkは、Subversionで管理されているので、comit単位でrevision番号が割り当てられています

従って、正常と思われる過去のrevision番号と不具合があると思われる現在のrevision番号から2分法で問題となるcommitと特定しbackoutすれば良いのでは?

少なくとも、挙動を変えたコードの変更を特定できるはずです

過去のコードを現行環境でコンパイルして挙動が変わる場合、
コードの記述が言語仕様の未定義領域に抵触しており、動作が
コンパイラ依存になっている可能性があります
この場合は、言語仕様の範囲内で正しい動作を記述するコードに
書き直す必要あり

注)
C/Fortranの言語仕様は、文法的には合法だが、意味論が未定義
(コンパイラ実装者は、どのように実装しても良いという意味)な
記述が存在するので、それに抵触する場合、コンパイラの種類や
バージョンで挙動が変わり得ます

位相空間プロット Name:K.Harada Date:2018/03/20(Tue) 14:51:45 No.724

MOMENTUM= 0.58 GEV;
MARK MKS =()
MKE =();
MONI PM =();
CAVI CAVI=(VOLT= 50000 FREQ = 104950000);
BEND PV = ( L = 0 K0 = 0 ROTATE =-90 DEG )
PH = ( L = 0 K0 = 0 );
QUAD QF3 = ( L =0.1800 K1 =5.939500*0.1800 )
QF2 = ( L =0.1800 K1 =6.070000*0.1800 );
SEXT SD =(L =.15 K2 =-11.729486011842393 )
SF =(L =.075 K2 =8.681418961367605 ) ;
BEND BH = (L = 0.8500 ANGLE = 0.523599 K1 = -1.678200*0.8500 E1=0 E2=0);
DRIFT
D14837 = (L = 1.4837 )
D0100 = (L = 0.1000 )
D0180 = (L = 0.1800 )
D0190 = (L = 0.1900 )
D0120 = (L = 0.1200 )
;
LINE
HV = (PH PV)

CELL
=(MKS
D14837 PM D0100 QF3 D0180 HV D0180
BH
D0190 SD D0120 QF2 D0120 SF
PM
SF D0120 QF2 D0120 SD D0190
BH D0180 HV D0180 QF3 D0100 PM D14837
MKE)

RING = (3*CELL CAVI 3*CELL)
;

ON LOG RAD COD RADCOD FLUC RFSW;

EMIT USE = RING;

PHSPLOTS = 10;
TRACK USE = RING NPART = 21 TURNS = 5000
NX=(1,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200)
NY=(1) NZ=(1);

PHSPLOTS = 11;
TRACK USE = RING NPART = 21 TURNS = 5000
NY=(1,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200) )
NX=(1) NZ=(1);

PHSPLOTS=9;
TRACK USE = RING NPART = 17 TURNS = 5000
NZ=(-46.23,-40.45,-34.67,-28.89,-23.12,-17.34,-11.56,-5.78,0,5.78,11.56,17.34,23.12,28.89,34.67,40.45,46.23)
NX=(1) NY=(1);
stop;
stop;

という位相空間プロットですが、古いSADでは動くのですが、新しいSADでは動きません。
(1周目に全てロス、と言われてしまいます。) 仕様か、スクリプトのミスか、機能の削除か、
可能でしたらアドバイスを頂けないでしょうか?

SAD Update V1.1.1.2k64. SR spectrum, etc. Name:K. Oide Date:2018/01/19(Fri) 16:02:15 No.704

Changes:

1. The synchrotron radiation in tracking with RING, RAD and FLUC, now
take the real spectrum of photons. Historically, The real spectrum has
been included for TRPT, not for RING. It is changed. Now the real
spectrum considering the probability of photon emission are all taken
into account. However, unlike TRPT, for RING, the stochasticity of the
emission point along the orbit is not yet simulated. The result will
converge to the real value when EPS become sufficiently small.

2. Now synchrotron radiation in MULT with higher multipoles as well as
fringe field of all magnets contribute to the synchrotron radiation.
They are calculated via kinematics, not from the fields.

3. The settings of OpticsProlog and OpticsEpilog are reset for USE and
VISIT. For VISIT, they are restored by BYE.

4. A new variable NFAMP is defined to specify the phase angle of
particles for MatchingAmplitude. The defalut is 3, which gives the same
setting as before. Any positive number should work. The particles are distributed
with 2Pi/NPAMP phase separation each. If it is zero, MatchingAmplitude is turned off.

Bug fixes:

1. Matching with CALC6D/TRPT/INS have not been working properly, due to
miscalculation of the phase advances in the middle of matching.

2. A local symbol s1 in NIntegrate was not well defined.

Re^6: SAD Ver.1.0.10.9a1 のCaMonitor/CaGet (解決しました) Name:Akio Morita Date:2017/12/27(Wed) 11:56:58 No.694

>  結局,gccを4.9.2から5.3.0に変更してmakeしたところ,正常に動作するようになりました.お騒がせいたしました.
>
だとすると、gfrotran側でのISO Fortran2003/2008の未実装領域 or 実装バグを踏んでいたかなぁ・・・

GCCの開発的には、GCC 5系列は 2017/10/10の GCC 5.5のリリースでサポート終了したようなので、
現時点の推奨はGCC 6.4 or GCC 7.2となります
(afsad*系のSADは、gfortran 6.4 + LLVM/clang 5.0.0)

Re^5: SAD Ver.1.0.10.9a1 のCaMonitor/CaGet (解決しました) Name:M. Satoh Date:2017/12/27(Wed) 11:38:48 No.693

> > > > > お世話になっております.
> > > > > Ver.1.0.10.9a1 において,CaMonitor/CaGetで STRING typeのPVを指定すると,三文字までしかデータが取れません.
> > > > >
> > > > > e.g.)
> > > > > PVnameの内容が,
> > > > > SP_AT_0
> > > > > である場合,
> > > > >
> > > > > data=CaMonitor["PVname"];
> > > > > Print[data@Value[]]
> > > > > をsadで実行すると,最初の三文字である,
> > > > > SP_
> > > > > が取得される.
> > > > >
> > > > コード的には、ca_element_countが 1なPVと転送要素数 1でのアクセスは等価なので、
> > > > DBF_STRINGなwaveformに対する読み出しで再現を試みましたが、afsad*cでは再現できませんでした
> > > >
> > > > ca = CaMonitor["LIiBM:BPM_SYNC:NAMELIST", DefaultCount->1];
> > > > ca@WaitValue[];
> > > > Print[ca@Value[]];
> > > > SP_AT_0
> > > >
> > > > In[1]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->2]
> > > > Out[1]:= {{"SP_AT_0","SP_AT_1"},17,3,0}
> > > > In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->1]
> > > > Out[2]:= {"SP_AT_0",17,3,0}
> > >
> > >
> > > ありがとうございます.取り急ぎ,CaReadでは正常に表示されるようです.他も,ためしてみます.
> > >
> > > In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->5]
> > > Out[2]:= {{"SP_AT_0","SP_AT_1","SP_AT_2","SP_A1_G","SP_A1_0"},17,3,0}
> > >
> > DBF_STRINGなPV読み出しで、CaReadが正常、CaMonitor@Value[]でデータが腐るという症状のバグが、
> > V1.0.10.9aからV1.0.10.9a1の途中に存在しています
> > 当該バグは、Revisionev.6304で修正され patch levelが a1へバンプされています
> >
> > r6304の修正対象は、要素数 2以上のDBF_STRING PVからのValue callback時にて受信データからSAD上のString Listオブジェクトを構築する際に設定するStringオブジェクトの寿命スコープに誤りがあり、GCによりList内のStringオブジェクトの領域が破棄されるといバグです
> >
> > BFA[5148]: Fix CaMonitor crash by DBF_STRING waveform
> > -Fix character pointer handling for Fix DBR_TIME_STRING ValueCB
> > -Fix String object scope for DBR_TIME_STRING waveform(n > 1)
>
> tfEPICSCA.c において
> static int bDebug = 10;
> に変更してためしてみました.
> (gcc 4.9.2, CentOS 4.9, EPICS base R3.14.12 および R3.16.1)
>
> <17-12-26(Tue) 17:30:40><-tcsh-></usr/users/masanori/work/sad/><masanori@pistachio>sadmope test5.sad
> *** Welcome to SAD Ver.1.0.10.9a1 built at 2017-12-26 17:24:12 +0900 ***
> *** Today: 17:30:44 Tuesday 12/26/2017 ***
> cpu time= 5.6003E-02(sec) dt= 56.003(msec) free area:: 1793
> OFF LOG ECHO;READ 77 ; 23
> cpu time= 5.6003E-02(sec) dt= 56.003(msec) free area:: 1793
> cpu time= 5.6003E-02(sec) dt= 56.003(msec) free area:: 1792
> *** SADScript Initialization: /usr/new/pkg/operation/SAD_mt/share/Packages/init.n ***
> *** Runtime Environment: /usr/new/pkg/operation/SAD_mt/share/Packages/init.local.n ***
> RFSW RADCOD RAD FLUC INTRA POL COD DAPER EMIOU CMPLO FOURI SMEAR
> F F F T F F T F F F F T
> Design orbit length = 1.0000000000000000
>
> BpmName=CaMonitor["LIiBM:BPM_SYNC:NAMELIST"];
> eca_init
> eca_chid_new: extend table size from 0 to 1024
> eca_chid_new: allocate slot[1] for chid[0x9ed9cc8]
> eca_fd_register: fd[5] open (nil)
> CaOpen[LIiBM:BPM_SYNC:NAMELIST]
> eca_chid_cas: Update slot[1] chid from 0x9ed9cc8 to 0xa1183b8
> TkSense[1];
> eca_fd_callback: >>> enter
> eca_constatcb[LIiBM:BPM_SYNC:NAMELIST]: id=1 up conn=2
> eca_evid_new: extend table size from 0 to 1024
> eca_evid_new: allocate slot[1] for evid[0xb4dab02c]
> eca_evid_cas: Update slot[1] evid from 0xb4dab02c to 0xa273890
> eca_chid_inc: increment slot[1] reference count to 1
> eca_fd_callback: exit <<<<
> eca_fd_callback: >>> enter
> eca_fd_callback: exit <<<<
> eca_fd_callback: >>> enter
> eca_valuecb[LIiBM:BPM_SYNC:NAMELIST]: id=1 conn=2 stat=1 DBR_TIME_STRING[99] {"SP_AT_0", "SP_AT_1", "SP_AT_2", "SP_A1_G", "SP_A1_0", "SP_A1_1", "SP_A1_M", "SP_AS_1", "SP_AS_2", "SP_AS_3", "SP_A2_1", "SP_A2_3", "SP_A2_4", "SP_A3_2", "SP_A3_4", "SP_A4_2", "SP_A4_4", "SP_B1_4", "SP_B2_4", "SP_B3_4", "SP_B4_4", "SP_B5_4", "SP_B6_4", "SP_B7_4", "SP_R0_01", "SP_R0_02", "SP_R0_14", "SP_R0_22", "SP_R0_32", "SP_R0_42", "SP_R0_51", "SP_R0_62", "SP_R0_63", "SP_C1_4", "SP_C2_4", "SP_C3_4", "SP_C4_4", "SP_C5_4", "SP_C6_4", "SP_C7_4", "SP_C8_4", "SP_11_4", "SP_12_4", "SP_13_5", "SP_15_T", "SP_16_5", "SP_17_2", "SP_17_44", "SP_18_2", "SP_18_49", "SP_21_2", "SP_21_4", "SP_22_2", "SP_22_4", "SP_23_2", "SP_23_4", "SP_24_1", "SP_24_2", "SP_24_3", "SP_24_4", "SP_26_1", "SP_26_2", "SP_26_3", "SP_26_4", "SP_27_2", "SP_27_4", "SP_28_2", "SP_28_4", "SP_DC_2", "S8_DN_01U", "SP_DN_12", "SP_DN_21", "SP_DN_31", "S8_DN_42U", "SP_DC_4", "SP_32_4", "SP_34_4", "SP_36_4", "SP_38_4", "SP_42_4", "SP_44_4", "SP_46_4", "SP_48_4", "SP_52_4", "SP_54_4", "SP_56_4", "SP_58_0", "SP_58_4", "SP_61_3", "SP_61_6", "SP_61_8", "SP_61_D1", "SP_61_D2", "SP_61_H1", "SP_61_A1", "SP_61_A3", "SP_61_F1", "SP_61_F4", "SP_61_F5"}
> Segmentation fault


 結局,gccを4.9.2から5.3.0に変更してmakeしたところ,正常に動作するようになりました.お騒がせいたしました.

Re^4: SAD Ver.1.0.10.9a1 のCaMonitor/CaGet Name:M. Satoh Date:2017/12/26(Tue) 18:02:01 No.691

> > > > お世話になっております.
> > > > Ver.1.0.10.9a1 において,CaMonitor/CaGetで STRING typeのPVを指定すると,三文字までしかデータが取れません.
> > > >
> > > > e.g.)
> > > > PVnameの内容が,
> > > > SP_AT_0
> > > > である場合,
> > > >
> > > > data=CaMonitor["PVname"];
> > > > Print[data@Value[]]
> > > > をsadで実行すると,最初の三文字である,
> > > > SP_
> > > > が取得される.
> > > >
> > > コード的には、ca_element_countが 1なPVと転送要素数 1でのアクセスは等価なので、
> > > DBF_STRINGなwaveformに対する読み出しで再現を試みましたが、afsad*cでは再現できませんでした
> > >
> > > ca = CaMonitor["LIiBM:BPM_SYNC:NAMELIST", DefaultCount->1];
> > > ca@WaitValue[];
> > > Print[ca@Value[]];
> > > SP_AT_0
> > >
> > > In[1]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->2]
> > > Out[1]:= {{"SP_AT_0","SP_AT_1"},17,3,0}
> > > In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->1]
> > > Out[2]:= {"SP_AT_0",17,3,0}
> >
> >
> > ありがとうございます.取り急ぎ,CaReadでは正常に表示されるようです.他も,ためしてみます.
> >
> > In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->5]
> > Out[2]:= {{"SP_AT_0","SP_AT_1","SP_AT_2","SP_A1_G","SP_A1_0"},17,3,0}
> >
> DBF_STRINGなPV読み出しで、CaReadが正常、CaMonitor@Value[]でデータが腐るという症状のバグが、
> V1.0.10.9aからV1.0.10.9a1の途中に存在しています
> 当該バグは、Revisionev.6304で修正され patch levelが a1へバンプされています
>
> r6304の修正対象は、要素数 2以上のDBF_STRING PVからのValue callback時にて受信データからSAD上のString Listオブジェクトを構築する際に設定するStringオブジェクトの寿命スコープに誤りがあり、GCによりList内のStringオブジェクトの領域が破棄されるといバグです
>
> BFA[5148]: Fix CaMonitor crash by DBF_STRING waveform
> -Fix character pointer handling for Fix DBR_TIME_STRING ValueCB
> -Fix String object scope for DBR_TIME_STRING waveform(n > 1)

tfEPICSCA.c において
static int bDebug = 10;
に変更してためしてみました.
(gcc 4.9.2, CentOS 4.9, EPICS base R3.14.12 および R3.16.1)

<17-12-26(Tue) 17:30:40><-tcsh-></usr/users/masanori/work/sad/><masanori@pistachio>sadmope test5.sad
*** Welcome to SAD Ver.1.0.10.9a1 built at 2017-12-26 17:24:12 +0900 ***
*** Today: 17:30:44 Tuesday 12/26/2017 ***
cpu time= 5.6003E-02(sec) dt= 56.003(msec) free area:: 1793
OFF LOG ECHO;READ 77 ; 23
cpu time= 5.6003E-02(sec) dt= 56.003(msec) free area:: 1793
cpu time= 5.6003E-02(sec) dt= 56.003(msec) free area:: 1792
*** SADScript Initialization: /usr/new/pkg/operation/SAD_mt/share/Packages/init.n ***
*** Runtime Environment: /usr/new/pkg/operation/SAD_mt/share/Packages/init.local.n ***
RFSW RADCOD RAD FLUC INTRA POL COD DAPER EMIOU CMPLO FOURI SMEAR
F F F T F F T F F F F T
Design orbit length = 1.0000000000000000

BpmName=CaMonitor["LIiBM:BPM_SYNC:NAMELIST"];
eca_init
eca_chid_new: extend table size from 0 to 1024
eca_chid_new: allocate slot[1] for chid[0x9ed9cc8]
eca_fd_register: fd[5] open (nil)
CaOpen[LIiBM:BPM_SYNC:NAMELIST]
eca_chid_cas: Update slot[1] chid from 0x9ed9cc8 to 0xa1183b8
TkSense[1];
eca_fd_callback: >>> enter
eca_constatcb[LIiBM:BPM_SYNC:NAMELIST]: id=1 up conn=2
eca_evid_new: extend table size from 0 to 1024
eca_evid_new: allocate slot[1] for evid[0xb4dab02c]
eca_evid_cas: Update slot[1] evid from 0xb4dab02c to 0xa273890
eca_chid_inc: increment slot[1] reference count to 1
eca_fd_callback: exit <<<<
eca_fd_callback: >>> enter
eca_fd_callback: exit <<<<
eca_fd_callback: >>> enter
eca_valuecb[LIiBM:BPM_SYNC:NAMELIST]: id=1 conn=2 stat=1 DBR_TIME_STRING[99] {"SP_AT_0", "SP_AT_1", "SP_AT_2", "SP_A1_G", "SP_A1_0", "SP_A1_1", "SP_A1_M", "SP_AS_1", "SP_AS_2", "SP_AS_3", "SP_A2_1", "SP_A2_3", "SP_A2_4", "SP_A3_2", "SP_A3_4", "SP_A4_2", "SP_A4_4", "SP_B1_4", "SP_B2_4", "SP_B3_4", "SP_B4_4", "SP_B5_4", "SP_B6_4", "SP_B7_4", "SP_R0_01", "SP_R0_02", "SP_R0_14", "SP_R0_22", "SP_R0_32", "SP_R0_42", "SP_R0_51", "SP_R0_62", "SP_R0_63", "SP_C1_4", "SP_C2_4", "SP_C3_4", "SP_C4_4", "SP_C5_4", "SP_C6_4", "SP_C7_4", "SP_C8_4", "SP_11_4", "SP_12_4", "SP_13_5", "SP_15_T", "SP_16_5", "SP_17_2", "SP_17_44", "SP_18_2", "SP_18_49", "SP_21_2", "SP_21_4", "SP_22_2", "SP_22_4", "SP_23_2", "SP_23_4", "SP_24_1", "SP_24_2", "SP_24_3", "SP_24_4", "SP_26_1", "SP_26_2", "SP_26_3", "SP_26_4", "SP_27_2", "SP_27_4", "SP_28_2", "SP_28_4", "SP_DC_2", "S8_DN_01U", "SP_DN_12", "SP_DN_21", "SP_DN_31", "S8_DN_42U", "SP_DC_4", "SP_32_4", "SP_34_4", "SP_36_4", "SP_38_4", "SP_42_4", "SP_44_4", "SP_46_4", "SP_48_4", "SP_52_4", "SP_54_4", "SP_56_4", "SP_58_0", "SP_58_4", "SP_61_3", "SP_61_6", "SP_61_8", "SP_61_D1", "SP_61_D2", "SP_61_H1", "SP_61_A1", "SP_61_A3", "SP_61_F1", "SP_61_F4", "SP_61_F5"}
Segmentation fault

Re^3: SAD Ver.1.0.10.9a1 のCaMonitor/CaGet Name:Akio Morita Date:2017/12/25(Mon) 18:40:11 No.690

> > > お世話になっております.
> > > Ver.1.0.10.9a1 において,CaMonitor/CaGetで STRING typeのPVを指定すると,三文字までしかデータが取れません.
> > >
> > > e.g.)
> > > PVnameの内容が,
> > > SP_AT_0
> > > である場合,
> > >
> > > data=CaMonitor["PVname"];
> > > Print[data@Value[]]
> > > をsadで実行すると,最初の三文字である,
> > > SP_
> > > が取得される.
> > >
> > コード的には、ca_element_countが 1なPVと転送要素数 1でのアクセスは等価なので、
> > DBF_STRINGなwaveformに対する読み出しで再現を試みましたが、afsad*cでは再現できませんでした
> >
> > ca = CaMonitor["LIiBM:BPM_SYNC:NAMELIST", DefaultCount->1];
> > ca@WaitValue[];
> > Print[ca@Value[]];
> > SP_AT_0
> >
> > In[1]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->2]
> > Out[1]:= {{"SP_AT_0","SP_AT_1"},17,3,0}
> > In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->1]
> > Out[2]:= {"SP_AT_0",17,3,0}
>
>
> ありがとうございます.取り急ぎ,CaReadでは正常に表示されるようです.他も,ためしてみます.
>
> In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->5]
> Out[2]:= {{"SP_AT_0","SP_AT_1","SP_AT_2","SP_A1_G","SP_A1_0"},17,3,0}
>
DBF_STRINGなPV読み出しで、CaReadが正常、CaMonitor@Value[]でデータが腐るという症状のバグが、
V1.0.10.9aからV1.0.10.9a1の途中に存在しています
当該バグは、Revisionev.6304で修正され patch levelが a1へバンプされています

r6304の修正対象は、要素数 2以上のDBF_STRING PVからのValue callback時にて受信データからSAD上のString Listオブジェクトを構築する際に設定するStringオブジェクトの寿命スコープに誤りがあり、GCによりList内のStringオブジェクトの領域が破棄されるといバグです

BFA[5148]: Fix CaMonitor crash by DBF_STRING waveform
-Fix character pointer handling for Fix DBR_TIME_STRING ValueCB
-Fix String object scope for DBR_TIME_STRING waveform(n > 1)

Re^2: SAD Ver.1.0.10.9a1 のCaMonitor/CaGet Name:M. Satoh Date:2017/12/25(Mon) 18:17:32 No.689

> > お世話になっております.
> > Ver.1.0.10.9a1 において,CaMonitor/CaGetで STRING typeのPVを指定すると,三文字までしかデータが取れません.
> >
> > e.g.)
> > PVnameの内容が,
> > SP_AT_0
> > である場合,
> >
> > data=CaMonitor["PVname"];
> > Print[data@Value[]]
> > をsadで実行すると,最初の三文字である,
> > SP_
> > が取得される.
> >
> コード的には、ca_element_countが 1なPVと転送要素数 1でのアクセスは等価なので、
> DBF_STRINGなwaveformに対する読み出しで再現を試みましたが、afsad*cでは再現できませんでした
>
> ca = CaMonitor["LIiBM:BPM_SYNC:NAMELIST", DefaultCount->1];
> ca@WaitValue[];
> Print[ca@Value[]];
> SP_AT_0
>
> In[1]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->2]
> Out[1]:= {{"SP_AT_0","SP_AT_1"},17,3,0}
> In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->1]
> Out[2]:= {"SP_AT_0",17,3,0}


ありがとうございます.取り急ぎ,CaReadでは正常に表示されるようです.他も,ためしてみます.

In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->5]
Out[2]:= {{"SP_AT_0","SP_AT_1","SP_AT_2","SP_A1_G","SP_A1_0"},17,3,0}

Re: SAD Ver.1.0.10.9a1 のCaMonitor/CaGet Name:Akio Morita Date:2017/12/25(Mon) 17:45:26 No.688

> お世話になっております.
> Ver.1.0.10.9a1 において,CaMonitor/CaGetで STRING typeのPVを指定すると,三文字までしかデータが取れません.
>
> e.g.)
> PVnameの内容が,
> SP_AT_0
> である場合,
>
> data=CaMonitor["PVname"];
> Print[data@Value[]]
> をsadで実行すると,最初の三文字である,
> SP_
> が取得される.
>
コード的には、ca_element_countが 1なPVと転送要素数 1でのアクセスは等価なので、
DBF_STRINGなwaveformに対する読み出しで再現を試みましたが、afsad*cでは再現できませんでした

ca = CaMonitor["LIiBM:BPM_SYNC:NAMELIST", DefaultCount->1];
ca@WaitValue[];
Print[ca@Value[]];
SP_AT_0

In[1]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->2]
Out[1]:= {{"SP_AT_0","SP_AT_1"},17,3,0}
In[2]:= CaRead["LIiBM:BPM_SYNC:NAMELIST"->1]
Out[2]:= {"SP_AT_0",17,3,0}

SAD Ver.1.0.10.9a1 のCaMonitor/CaGet Name:M. Satoh Date:2017/12/25(Mon) 14:51:23 No.687

お世話になっております.
Ver.1.0.10.9a1 において,CaMonitor/CaGetで STRING typeのPVを指定すると,三文字までしかデータが取れません.

e.g.)
PVnameの内容が,
SP_AT_0
である場合,

data=CaMonitor["PVname"];
Print[data@Value[]]
をsadで実行すると,最初の三文字である,
SP_
が取得される.

 取り急ぎ,ご報告いたします.

SAD Update V1.1.1k64 Name:K. Oide Date:2017/11/20(Mon) 22:31:31 No.681

Bug fixes:
1. The transfer matrix of BEND and MULT with nonzero ANGLE and nonzero K1 has been wrong since 1.0.10.9.1k64, on around Mar. 14, 2016. The amount of error was usually not large unless the horizontal focusing (1/rhob + K1) is too weak.

2. DynamicApertureSurvey with artificial damping has not been working for a while, probably within a half year.

Changes:
1. New functions FitGaussian and FitEmit are implemented:
FitGaussian performs Gaussian fit of 1D list data:

FitGaussian[data, [opt, ...]]

returns a list

{sigma, mean, {sigma_conf, mean_conf}, chisq} ,

where sigma_conf and mean_conf are the confidence interval of the results sigma and mean, respectively.
opt is options to Fit. If Plot->True is specified, a plot of the fitting will be made.

FitEmit obtains the emittance, beta, alpha, etc. from data of particles x and px using FitGaussian.

FitEmit[x, px] ,

where x and px are the lists of data of the particles in the phase space, returns a list

{{xmean, pxmean, alpha, beta, emittance},
{xmean, pxmean, alpha, beta, emittance}_conf},

where the second component is the confidence interval of the first.

2. The character "\m" (RETURN) is added to WordSeparators to read a file generated by Windows more easily. Now the default WordSeparators are " ,\t\m".

SAD Update V1.1.1k64_pre15 Name:K. Oide Date:2017/09/15(Fri) 15:19:21 No.644

Fixes:
1. Judgment whether to do a parallel processing in TrackParticles was
wrong when the number of particles or the length of the lattice was
very wrong.

2. Expansion of values of elements changed by Element or LINE functions
have been wrong, since 1.1.1k64_pre11.

Changes:
1. A new flag K64 has been created. If it is OFF, TYPE tries to omit
keywords which are not accepted by the legacy version. The default is
ON.

2. The initialization of internal databases LINE$P and Element$P was
changed for speed in the most of cases.

3. The restriction of transverse phase advance in CALC6D has been
relaxed from -1e-9 to -0.1 (radian). It has caused occasional jump of
tunes by 1 in some cases.

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

- WebForum -