:orphan:
# DMPlexMetricEnforceSPD
Enforce symmetric positive-definiteness of a metric 
## Synopsis
```
#include "petscdmplex.h"   
PetscErrorCode DMPlexMetricEnforceSPD(DM dm, Vec metricIn, PetscBool restrictSizes, PetscBool restrictAnisotropy, Vec metricOut, Vec determinant)
```

## Input parameters

- ***dm                 -*** The `DM`
- ***metricIn           -*** The metric
- ***restrictSizes      -*** Should maximum/minimum metric magnitudes be enforced?
- ***restrictAnisotropy -*** Should maximum anisotropy be enforced?



## Output parameter

- ***metricOut          -*** The metric
- ***determinant        -*** Its determinant



## Options Database Keys

- ***-dm_plex_metric_isotropic -*** Is the metric isotropic?
- ***-dm_plex_metric_uniform   -*** Is the metric uniform?
- ***-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





## See Also
 `DMPLEX`, `DMPlexMetricNormalize()`, `DMPlexMetricIntersection()`

## Level
beginner

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/impls/plex/plexmetric.c.html#DMPlexMetricEnforceSPD">src/dm/impls/plex/plexmetric.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/dm/impls/plex/plexmetric.c)


[Index of all DMPlex routines](index.md)  
[Table of Contents for all manual pages](/manualpages/index.md)  
[Index of all manual pages](/manualpages/singleindex.md)  
