GetFEM organization

This part of the SciLab GetFEM documentation is to be adapted (comes frome the | MatLab GetFEM one).

The GetFEM toolbox is just a convenient interface to the GetFEM library: you must have a working GetFEM installed on your computer. All the functions of GetFEM are prefixed by gf_ (hence typing gf_ at the SciLab prompt and then pressing the <tab> key is a quick way to obtain the list of getfem functions).


  • gf_workspace : workspace management.

  • gf_util : miscellanous utility functions.

  • gf_delete : destroy a GetFEM object (gfMesh , gfMeshFem , gfMeshIm etc.).

  • gf_cvstruct_get : retrieve informations from a gfCvStruct object.

  • gf_geotrans : define a geometric transformation.

  • gf_geotrans_get : retrieve informations from a gfGeoTrans object.

  • gf_mesh : creates a new gfMesh object.

  • gf_mesh_get : retrieve informations from a gfMesh object.

  • gf_mesh_set : modify a gfMesh object.

  • gf_eltm : define an elementary matrix.

  • gf_fem : define a gfFem.

  • gf_fem_get : retrieve informations from a gfFem object.

  • gf_integ : define a integration method.

  • gf_integ_get : retrieve informations from an gfInteg object.

  • gf_mesh_fem : creates a new gfMeshFem object.

  • gf_mesh_fem_get : retrieve informations from a gfMeshFem object.

  • gf_mesh_fem_set : modify a gfMeshFem object.

  • gf_mesh_im : creates a new gfMeshIm object.

  • gf_mesh_im_get : retrieve informations from a gfMeshIm object.

  • gf_mesh_im_set : modify a gfMeshIm object.

  • gf_slice : create a new gfSlice object.

  • gf_slice_get : retrieve informations from a gfSlice object.

  • gf_slice_set : modify a gfSlice object.

  • gf_spmat : create a gfSpMat object.

  • gf_spmat_get : perform computations with the gfSpMat.

  • gf_spmat_set : modify the gfSpMat.

  • gf_precond : create a gfPrecond object.

  • gf_precond_get : perform computations with the gfPrecond.

  • gf_linsolve : interface to various linear solvers provided by getfem (SuperLU, conjugated gradient, etc.).

  • gf_asm : assembly routines.

  • gf_solve : various solvers for usual PDEs (obsoleted by the gfMdBrick objects).

  • gf_compute : computations involving the solution of a PDE (norm, derivative, etc.).

  • gf_mdbrick : create a (“model brick”) gfMdBrick object.

  • gf_mdbrick_get : retrieve information from a gfMdBrick object.

  • gf_mdbrick_set : modify a gfMdBrick object.

  • gf_mdstate : create a (“model state”) gfMdState object.

  • gf_mdstate_get : retrieve information from a gfMdState object.

  • gf_mdstate_set : modify a gfMdState object.

  • gf_model : create a gfModel object.

  • gf_model_get : retrieve information from a gfModel object.

  • gf_model_set : modify a gfModel object.

  • gf_global_function : create a gfGlobalFunction object.

  • gf_model_get : retrieve information from a gfGlobalFunction object.

  • gf_model_set : modify a GlobalFunction object.

  • gf_plot_mesh : plotting of mesh.

  • gf_plot : plotting of 2D and 3D fields.

  • gf_plot_1D : plotting of 1D fields.

  • gf_plot_slice : plotting of a mesh slice.


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.


GetFEM objects hierarchy.

  • 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 an 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:

>> clear all

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:

>> whos

does not report the memory consumption of GetFEM objects (except the marginal space used by the handle). Instead, you should use:

>> gf_workspace('stats')

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')).