Conference Room SAD
[thread display] [new arrival display] [word search] [past log] [管理用]

Subject Re^3: TrackParticles[]の進行方向の計算
Date: 2007/12/06(Thu) 19:45:36
ContributorAKio Morita

> 森田さんにお聞きするのが正しいかどうかはわかりませんが、TRACKモジュールに関する計算
> 手法がどこかに記録として残っていないのでしょうか?
>
たぶん間違い
歴史的には最古に属するコードなので、私は知らない
生出さんに聞いて見るべし!

#ひょっとすると、最初期のコードに関する論文が出てくるかもしれませんが、
#CVSのcommitlogにも改訂履歴がきちんと残ってないので、どの様な意図で
#修正されてきたかはたぶん分りません(Bugfixなのか、近似の改良なのかの区別も...)
#変更理由に関しては、直接コードを書いた人が忘れている場合は、全ては闇の中 Orz

> もしくは、ソースコード群のどのファイルがTRACKモジュールに相当するのかを
> 教えていただけないでしょうか?(例えば、tracke.fなど)
>
単一のファイルではないし、ファイル名の規則性も完全ではないので見分けるのは簡単では無いし
末端だけ見ても何も分らないので subroutineコールの連鎖を grepしながらズルズルと
手繰り寄せるのが早いと思います
#同系列のsubroutineでも微妙に渡される引数が違うとか、引数の解説コメントが無いので
#呼び出し元も含めて読まないと意味が分からない

TrackParticle[]に渡す座標系と内部変数の対応関係は、TrackParticleの実装を読むべし

一応、ファイル名の良くある規則
tf*.f -> FFSの subroutine
itf*.f -> FFSの function
t*e.f -> EMITモジュール関連
t*.f -> TRACKモジュール関連

Debuggerでトラップ仕込んでコールトレースを取る手も有りますが、原始的な grepでたどる
(global等の ソースコードタグ付けツールを併用すると効果的です)のに、いくら何でも
src/MAIN.fから読み始めるのは骨なのでコードをたどる上でのヒント

o SADScript側の関数からたどる場合
src/tfinitn.fのitfunallocから関数IDを拾って src/tfefun*.fの table gotoから実体を見つける

o FFSコマンドからたどる場合
src/tffsa.fのコマンドラインパーサーから実体を見つける

実際のビームラインエレメントごとにトラッキングを行ってる部分ですと、tturn1()@src/ttrun.fが
エントリポイントです。内部のtable gotoでビームラインエレメント毎の subroutineへ分岐して
行きます。例えば、QUADの実装の代表的なエントリポイント tquad()@src/tquad.f
エレメント毎のパラメータテーブルを参照するマジックナンバーは、src/initb1.fで kytbl(*, *)配列に
設定されてますが、kytbl(*,*)を使わずに即値でかかれているコードが多いため可読性・保守性が
損なわれています(いつも読んでる人は、頭にテーブルが入ってるんでしょうが...) Orz


- 関連一覧ツリー (Click ▼ to display all articles in a thread.)