Objects
Various “objects” can be manipulated by the GetFEM++ toolbox, see fig.
GetFEM++ objects hierarchy.. The MESH and MESHFEM objects are the two most
important objects.
- gfGeoTrans: geometric transformations (defines the shape/position of
the convexes), created with gf_geotrans
- gfGlobalFunction: represent a global function for the enrichment of finite element methods.
- gfMesh : mesh structure (nodes, convexes, geometric transformations for
each convex), created with gf_mesh
- gfInteg : integration method (exact, quadrature formula...). Although
not linked directly to GEOTRANS, an integration method is usually specific to a
given convex structure. Created with gf_integ
- gfFem : the finite element method (one per convex, can be PK, QK,
HERMITE, etc.). Created with gf_fem
- gfCvStruct : stores formal information convex structures (nb. of points,
nb. of faces which are themselves convex structures).
- gfMeshFem : object linked to a mesh, where each convex has been assigned
a FEM. Created with gf_mesh_fem.
- gfMeshImM : object linked to a mesh, where each convex has been assigned
an integration method. Created with gf_mesh_im.
- gfMeshSlice : object linked to a mesh, very similar to a
P1-discontinuous gfMeshFem. Used for fast interpolation and plotting.
- gfMdBrick : gfMdBrick , an abstraction of a part of solver (for
example, the part which build the tangent matrix, the part which handles the
dirichlet conditions, etc.). These objects are stacked to build a complete
solver for a wide variety of problems. They typically use a number of
gfMeshFem, gfMeshIm etc. Deprecated object, replaced now by gfModel.
- gfMdState : “model state”, holds the global data for a stack of mdbricks
(global tangent matrix, right hand side etc.). Deprecated object, replaced now by gfModel.
- gfModel : “model”, holds the global data, variables and description of a
model. Evolution of “model state” object for 4.0 version of GetFEM++.
The GetFEM++ toolbox uses its own memory management. Hence GetFEM++ objects
are not cleared when a:
is issued at the SciLab prompt, but instead the function:
>> gf_workspace('clear all')
should be used. The various GetFEM++ object can be accessed via handles (or
descriptors), which are just SciLab structures containing 32-bits integer
identifiers to the real objects. Hence the SciLab command:
does not report the memory consumption of GetFEM++ objects (except the marginal space
used by the handle). Instead, you should use:
There are two kinds of GetFEM++ objects:
- static ones, which can not be deleted: ELTM, FEM, INTEG, GEOTRANS and CVSTRUCT.
Hopefully their memory consumption is very low.
- dynamic ones, which can be destroyed, and are handled by the gf_workspace
function: MESH, MESHFEM, MESHIM, SLICE, SPMAT, PRECOND.
The objects MESH and MESHFEM are not independent: a MESHFEM object is always
linked to a MESH object, and a MESH object can be used by several MESHFEM
objects. Hence when you request the destruction of a MESH object, its destruction
might be delayed until it is not used anymore by any MESHFEM (these objects
waiting for deletion are listed in the anonymous workspace section of
gf_workspace('stats')).