2017.11.10
ReactionRuleから、Descriptorがよびだせる。
呼び出し方・引数は、添付のコード参照。
// 82行目付近
if (next_reaction_.k() <= 0.0)
{
this->dt_ += dt; // skip a reaction
return false;
}
// 84行目付近
for (std::vector<ReactionRule>::const_iterator i(reaction_rules.begin());
i != reaction_rules.end(); ++i)
{
const ReactionRule& rr(*i);
prob += rr.k() * dt();
// ...
}
このあたりを修正?
-
ReactionRuleをコピーしたら、ReactionRuleDescriptorも(参照を渡すのではなく、)オブジェクトを複製する。このとき、Python Functionは、カウントをインクレメントする。
-
Pythonでflux()を呼ぶ=> C++ layer => Python Function という流れだと、どうしても化学種の量を含む配列(ベクタ)を2回も複製する必要が出てくる。これだとオーバーヘッドがあまりに大きいので、ReactionRule::flux()の呼び出しは、C++を経由せずにするのはいかがなものか。
s/flux/propensity/