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

Subject Re^6: SAD Update. V1.0.10.4.3a10. ElementValues
Date: 2010/03/02(Tue) 14:56:44
ContributorAkio Morita

> > 今朝行ったcvs updateにより、今まで報告してきた異常が消えたことを確認しました。
> >
> 設定済みの ElementValuesを参照出来ないのが最大のバグだと思うのですが?
> 
> 例えば、
> ElementValues = {}; (* Clear coupling *)
> AppendTo[ElementValues, "K1"["QFH"] :> 0.5 * "K1"["QF"]];
> AppendTo[ElementValues, "K1"["QDH"] :> 0.5 * "K1"["QD"]];
> などのように、一度に設定せずに設定を徐々に追加する場合、MAIN trunkの現状の実装では
> 過去に設定した ElementValuesの値を参照する Getter proxyが存在しないので、非互換性が
> 発生しています(過去に動いたものが動かないという意味で)
> 
> 実用上の互換性から、次の用例をサポートすべきだと思います
>  o 複数のサブルーチンコールの内部で個別に追加設定する場合(Getter proxyが必要)
>  o ElementValues/FitWeight/FitValue/FitFunctionの定義をバックアップして、別の設定の元で計算し復元する場合
>    (Getter proxy/Definition proxyが必要[With[{backup = ?ElementValues}, Clear[ElementValues]; foo; ReleaseHold[backup]])
> 
> 他にも
>  o ビームラインの設定に先立って ElementValuesを設定している場合に、Packages/Couple.n読み込み時点の
>     ElementValuesが反映されません。
>     Packages/Couple.n読み込み時点で、設定済みのElementValuesを評価するか、ElementValuesの評価を
>     SetCoupledElementsの評価時点まで遅延する必要があります
>  o ビームライン定義に先立って設定される場合、ElementValues = l_Listの評価時点では、エレメントが存在しない
>     ((LINE|Element)["POSITION", _] === {})ケースもありえますので、EVSetFunの生成に失敗するケースが考えられます
>
一応、上記のユースケースをサポートする実装を amorita branch側では開発していますが、
(Set|SetDelayed)[ElementValues, foo_, bar__]や(Set|SetDelayed)[foo__, ElementValues, bar___]な
Setter proxyが未実装です。

あと、実装上のオプションとして BeamLineName[]をキーにして ElementValuesをビームライン毎に保持することが
可能ですが(名前付きビームラインを切り替えながら使うユースケースを想定)、需要はあるのでしょうか?
# 新規のビームラインに移った際に、ElementValuesの初期値を空リスト{}にするか直前の値を継承するかという
# 問題もありますが...


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