> > 今朝行った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の初期値を空リスト{}にするか直前の値を継承するかという
# 問題もありますが...