トップ «前の日記(2008-09-01) 最新 次の日記(2008-09-03)» 編集

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2008-09-02 [長年日記]

_ [SAD]TableFormバグってる

です。SAD->MADX変換器のデバッグで転送行列を整形して表示するのに 使っていたら、指数部の下一桁が欠落するバグ (例えば、1.23456e-10が、1.23456e-1に化ける) が原因で、思いっきり時間を食った...Orz

つー訳で、amorita branchはRevision 2347で修正入れました。

あと、Emittance[]の返すTransferMatricesとClosedOrbitだが、 どうやらSOL領域は一個ずれているようだ。 原因は、src/tsole.fsrc/tturne.fでの転送行列(iatr)と軌道(iacod)の 格納法の問題で、src/tturne.fではl番目のエレメントの 入り口の状態をリストのl番目の要素に保存したあとにエレメントの 転送行列を作用させているのに対して、src/tsole.fではl番目の エレメントの転送行列を作用させた結果をリストのl番目の要素に 保存しているので、SOLで囲まれた境界内部では、TransferMatricesや ClosedOrbitのインデックスがズレている。 これと同時に計算されるtwiss配列の更新では、 src/tsole.fではリストのl+1番目の要素へ格納するので整合する。 多分、格納コードをコピー&ペーストしたが 保存と転送の順番を入れ替えに対応してコードを書き換えるのを 忘れたと推測される。

修正は、Revision 2348で修正をコミットした。

アーキテクチャ的には、SOL領域内部の写像は ソレノイド磁場が0となる極限ではSOL領域外と一致するので、 単一のコードで処理すべきだと思う。

_ [SAD]SAD->MADX変換

昨日の問題だが、原因が判明

  • Emittance[]から得た転送行列をmatrixエレメントへ変換する際に、ROTATEパラメータによる不要な座標回転変換を加えていた
  • SOL内部のインデックスのズレにより、Emittance[]から得た転送行列と軌道との関係が、正しくないのでアフィン変換の定数項が正しく計算出来ていなかった
  • SOL内部のインデックスのズレに対する、Quick Hackの際にSOL境界を越えてNext Elementを探索したので、FBLX(何もしないMULT)を正しく単位行列に変換出来なかった

一つはこちら側のミスだが、残りはSADの実装バグに起因する Orz

Emittance[]で取り出した転送行列でエレメントを置換するルーチンは完成

SOL系のエレメントを転送行列近似に切り替えて様子を見ると

  • HERでは、分散関数と軌道の近似が劣化
  • LERでは、分散関数と軌道の近似が改善(主に垂直方向)

という、悩ましい結果に...

QCSL側で、まっすぐ通過している(LER) or 傾いている(HER)の違いが 現れているのだろうか?

別の可能性としては、Emittance[]の返す転送行列が先頭から 各エレメントまでのものなので、エレメント毎の行列を 行列積で計算することによる誤差混入とかSAD-MADX間の 座標系定義の差異とかが疑わしい。

座標系定義に関してはドキュメントをあたって定義を突き合わせてみる。

全部のエレメントを転送行列で展開しても軌道に残差が残る Orz

転送行列とCODをアフィン変換へ展開して、MADX内部で再度 転送行列とCODを計算する過程の演算精度が原因か?

次のステップは、SAD上でアフィン変換展開して後でCODの再構築での 再現精度を検証することかな?


カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記