Skip to main content
`Ctrl`+`K`

# DMPlexCreateBasisRotation

Create an internal transformation from the global basis, used to specify boundary conditions and global solutions, to a local basis, appropriate for discretization integrals and assembly.

## Synopsis

    #include "petscdmplex.h"
    PetscErrorCode DMPlexCreateBasisRotation(DM dm, PetscReal alpha, PetscReal beta, PetscReal gamma)

## Input Parameters

- dm - The `DM`

- alpha - The first Euler angle, and in 2D the only one

- beta - The second Euler angle

- gamma - The third Euler angle

## Note

Following https://en.wikipedia.org/wiki/Euler_angles, we will specify Euler angles by extrinsic rotations, meaning that we rotate with respect to a fixed initial coordinate system, the local basis (x-y-z). The global basis (X-Y-Z) is reached as follows

       The XYZ system rotates about the z axis by alpha. The X axis is now at angle alpha with respect to the x axis.
       The XYZ system rotates again about the x axis by beta. The Z axis is now at angle beta with respect to the z axis.
       The XYZ system rotates a third time about the z axis by gamma.

## See Also

DMPlex: Unstructured Grids, `DM`, `DMPLEX`, `DMPlexGlobalToLocalBasis()`, `DMPlexLocalToGlobalBasis()`

## Level

developer

## Location

src/dm/impls/plex/plexfem.c

## Examples

src/snes/tutorials/ex71.c
src/snes/tutorials/ex76.c

Index of all DMPlex routines
Table of Contents for all manual pages
Index of all manual pages