# ngsPETSc.utils.firedrake.hierarchies

This module contains all the functions related

## Attributes

`fd` |
`refinementTypes` |

## Functions

`snapToNetgenDMPlex`(ngmesh, petscPlex) | This function snaps the coordinates of a DMPlex mesh to the coordinates of a Netgen mesh.
`snapToCoarse`(coarse, linear, degree, snap_smoothing, cg) | This function snaps the coordinates of a DMPlex mesh to the coordinates of a Netgen mesh.
`uniformRefinementRoutine`(ngmesh, cdm) | Routing called inside of NetgenHierarchy to compute refined ngmesh and plex.
`uniformMapRoutine`(meshes) | This function computes the coarse to fine and fine to coarse maps
`alfeldRefinementRoutine`(ngmesh, cdm) | Routing called inside of NetgenHierarchy to compute refined ngmesh and plex.
`alfeldMapRoutine`(meshes) | This function computes the coarse to fine and fine to coarse maps
`NetgenHierarchy`(mesh, levs, flags) | This function creates a Firedrake mesh hierarchy from Netgen/NGSolve meshes.

## Module Contents

ngsPETSc.utils.firedrake.hierarchies.fd = None

ngsPETSc.utils.firedrake.hierarchies.snapToNetgenDMPlex(ngmesh, petscPlex)

  This function snaps the coordinates of a DMPlex mesh to the coordinates of a Netgen mesh.

ngsPETSc.utils.firedrake.hierarchies.snapToCoarse(coarse, linear, degree, snap_smoothing, cg)

  This function snaps the coordinates of a DMPlex mesh to the coordinates of a Netgen mesh.

ngsPETSc.utils.firedrake.hierarchies.uniformRefinementRoutine(ngmesh, cdm)

  Routing called inside of NetgenHierarchy to compute refined ngmesh and plex.

ngsPETSc.utils.firedrake.hierarchies.uniformMapRoutine(meshes)

  This function computes the coarse to fine and fine to coarse maps for a uniform mesh hierarchy.

ngsPETSc.utils.firedrake.hierarchies.alfeldRefinementRoutine(ngmesh, cdm)

  Routing called inside of NetgenHierarchy to compute refined ngmesh and plex.

ngsPETSc.utils.firedrake.hierarchies.alfeldMapRoutine(meshes)

  This function computes the coarse to fine and fine to coarse maps for a alfeld mesh hierarchy.

ngsPETSc.utils.firedrake.hierarchies.refinementTypes

ngsPETSc.utils.firedrake.hierarchies.NetgenHierarchy(mesh, levs, flags)

  This function creates a Firedrake mesh hierarchy from Netgen/NGSolve meshes.

  Parameters:

    - mesh – the Netgen/NGSolve mesh

    - levs – the number of levels in the hierarchy

    - netgen_flags – either a bool or a dictionray containing options for Netgen.

  If not False the hierachy is constructed using ngsPETSc, if None hierarchy constructed in a standard manner. Netgen flags includes:

  > -degree, either an integer denoting the degree of curvature of all levels of the mesh or a list of levs+1 integers denoting the degree of curvature of each level of the mesh. -tol, geometric tolerance adopted in snapToNetgenDMPlex. -refinement_type, the refinment type to be used: uniform (default), Alfeld