Events management¶
Description¶
The mesh
, mesh_fem, mesh_im and model description are linked together in the sense
that there is some dependencies between them. For instance, when an element is
suppressed to a mesh, the mesh_fem object has to react.
Files¶
File(s) | Description |
---|---|
getfem_context.h and getfem_context.cc |
Define a class context_dependencies from which all object has to derive in order to manage events. |
State¶
The main tool to deal with simple dependence of object is in
getfem_context.h
. An object context_dependencies
is defined there. In
order to deal with the dependencies of an object, the object
context_dependencies
needs to be a parent class of this object. It adds the
following methods to the object:
-
getfem::context_dependencies
::
add_dependency
(ct)¶ Add an object (which has to have
context_dependencies
as a parent class) to the list of objects from which the current object depend.
-
getfem::context_dependencies
::
touch
()¶ Indicates to the dependent objects that something has change in the object.
-
getfem::context_dependencies
::
context_check
()¶ Check if the object has to be updated. if it is the case it makes first a check to the dependency list and call the update function of the object. (the update function of the dependencies are called before the update function of the current object).
-
getfem::context_dependencies
::
context_valid
()¶ Says if the object has still a valid context, i.e. if the object in the dependency list still exist.
Moreover, the object has to define a method:
``void update_from_context(void) const``
which is called after a context_check()
if the context has changed.
An additional system is present in the object mesh. Each individual element has a version number in order for the objects mesh_fem and mesh_im to detect which element has changed between two calls.
Perspectives¶
The event management of some objects should be analysed with care. This is the case for instance of mesh_level_set, mesh_fem_level_set, partial_mesh_fem, etc.
The event management still have to be improved to be a fully reactive system.