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