gf_geotrans — Return the handle of a geometric transformation object
I = gf_geotrans(name)
The geometric transformation must be used when you are building a custom mesh convex by convex (see the 'add convex' sub-command of gf_mesh_set): it also defines the kind of convex (triangle, hexahedron, prism, etc..).
The name argument contains the specification of the geometric transformation as a string, which may be:
GT_PK(n,k) Transformation on simplexes, dim
n
, degree k
.
GT_QK(n,k) Transformation on parallelepipeds, dim
n
, degree k
.
GT_PRISM(n,k) Transformation on prisms, dim
n
, degree k
.
GT_PRODUCT(A,B) Tensorial product of two transformations.
GT_LINEAR_PRODUCT(A,B) Linear tensorial product of two transformations
Geometric transformations of an existing mesh can be obtained with gf_mesh_get(M,'geotrans').
In order to get the geometric transformation for a prism of dimension 3, you could use
gt = gf_geotrans('GT_PRISM(3,1)') or gt = gf_geotrans('GT_PRODUCT(GT_PK(2,1),GT_PK(1,1))')
If you want the geometric transformation for a curved triangle, you might choose
gt = gf_geotrans('GT_PK(2,2)') // 6-noded triangle
If you want to use a cartesian mesh, then it is preferable to use
gt = gf_geotrans('GT_LINEAR_PRODUCT(GT_PK(1,1), GT_PK(1,1))') instead of gf_geotrans('GT_QK(2,1)') or gf_geotrans('GT_PRODUCT(GT_PK(1,1), GT_PK(1,1))'),
since the geometric transformation for parallelepipeds is linear, and getfem++ can take advantage of it (exact integration method, direct inversion of the geometrical transformation,...).