イベント管理

説明

mesh, mesh_fem, mesh_immodel は相互に依存関係があります.たとえば要素がメッシュに対応していない場合, mesh_fem オブジェクトは反応する必要があります.

ファイル

ファイル

説明

getfem_context.hgetfem_context.cc

イベントを管理するすべてのオブジェクトの派生元となるクラス context_dependencies を定義します.

状態

オブジェクトの単純な依存性に対処するための主なツールは getfem_context.h にあります.オブジェクト context_dependencies はここで定義されています.オブジェクトの依存関係を処理するために,オブジェクト context_dependencies はオブジェクトの親クラスである必要があります.オブジェクトには次のメソッドが追加されています.

getfem::context_dependencies::add_dependency(ct)

オブジェクト (親クラスとして context_dependencies を持つ必要があります) を,現在のオブジェクトが依存するオブジェクトのリストに追加します.

getfem::context_dependencies::touch()

オブジェクトに何か変化があったことを従属オブジェクトに知らせます.

getfem::context_dependencies::context_check()

オブジェクトを更新するかどうかを確認します.更新する場合は,最初に依存関係リストにチェックを行い,オブジェクトの更新関数を呼び出します.(依存関係の更新関数は,現在のオブジェクトの更新関数の前に呼び出されます).

getfem::context_dependencies::context_valid()

オブジェクトがまだ有効なコンテキストを持っているかどうか,つまり,依存関係リスト内のオブジェクトがまだ存在するかを表示します.

さらに,オブジェクトは次のメソッドを定義する必要があります.

``void update_from_context(void) const``

このメソッドはコンテキストが変更された際に context_check() の後に呼び出されます.

オブジェクト mesh には追加のシステムが提供されています. mesh_femmesh_im の2つの呼び出しの間で変更された要素を検出するために個々の要素はオブジェクトのバージョン番号を所持しています.

展望

いくつかのオブジェクトのイベント管理は,注意して分析する必要があります. mesh_level_setmesh_fem_level_setpartial_mesh_fem などのインスタンスの場合です.

完全な挙動をするイベント管理システムにするためにはまだ改善の余地があります.