GetFEM organization¶
The GetFEM toolbox is just a convenient interface to the GetFEM library: you must
have a working GetFEM installed on your computer. This toolbox provides a big
mex-file
(c++ binary callable from Octave or MatLab) and some additional
m-files
(documentation and extra-functionalities). All the functions of GetFEM
are prefixed by gf_
(hence typing gf_
at the Octave or MatLab prompt and then
pressing the <tab>
key is a quick way to obtain the list of getfem
functions).
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.
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.

GetFEM objects hierarchy.
gfGeoTrans
: geometric transformations (defines the shape/position of the convexes), created withgf_geotrans
gfGlobalFunction
: represent a global function for the enrichment of finite element methods.gfMesh
: mesh structure (nodes, convexes, geometric transformations for each convex), created withgf_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 withgf_integ
gfFem
: the finite element method (one per convex, can be PK, QK, HERMITE, etc.). Created withgf_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 withgf_mesh_fem
.gfMeshImM
: object linked to a mesh, where each convex has been assigned an integration method. Created withgf_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 Octave or MatLab 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 Octave / MatLab structures containing 32-bits integer identifiers to the real objects. Hence the Octave or MatLab 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')
).