Skip to main content
`Ctrl`+`K`

# DMPlexMetricCreate

Create a Riemannian metric field

## Synopsis

    #include "petscdmplex.h"
    PetscErrorCode DMPlexMetricCreate(DM dm, PetscInt f, Vec *metric)

## Input Parameters

- dm - The `DM`

- f - The field number to use

## Output Parameter

- metric - The metric

## Options Database Key

- -dm_adaptor <pragmatic/mmg/parmmg> - specify dm adaptor to use

## Options Database Keys for Mmg and ParMmg

- -dm_plex_metric_gradation_factor - Maximum ratio by which edge lengths may grow during gradation

- -dm_plex_metric_num_iterations - Number of parallel mesh adaptation iterations for ParMmg

- -dm_plex_metric_no_insert - Should node insertion/deletion be turned off?

- -dm_plex_metric_no_swap - Should facet swapping be turned off?

- -dm_plex_metric_no_move - Should node movement be turned off?

- -dm_plex_metric_verbosity - Choose a verbosity level from -1 (silent) to 10 (maximum).

## Options Database Keys for Riemannian metrics

- -dm_plex_metric_isotropic - Is the metric isotropic?

- -dm_plex_metric_uniform - Is the metric uniform?

- -dm_plex_metric_restrict_anisotropy_first - Should anisotropy be restricted before normalization?

- -dm_plex_metric_h_min - Minimum tolerated metric magnitude

- -dm_plex_metric_h_max - Maximum tolerated metric magnitude

- -dm_plex_metric_a_max - Maximum tolerated anisotropy

- -dm_plex_metric_p - L-p normalization order

- -dm_plex_metric_target_complexity - Target metric complexity

## Note

It is assumed that the `DM` is comprised of simplices.

## See Also

`DMPLEX`, `DMPlexMetricCreateUniform()`, `DMPlexMetricCreateIsotropic()`

## Level

beginner

## Location

src/dm/impls/plex/plexmetric.c

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