Skip to main content
`Ctrl`+`K`

# PCSetCoordinates

sets the coordinates of all the nodes (degrees of freedom in the vector) on the local process

## Synopsis

    #include "petscksp.h"
    PetscErrorCode PCSetCoordinates(PC pc, PetscInt dim, PetscInt nloc, PetscReal coords[])

Collective

## Input Parameters

- pc - the `PC` preconditioner context

- dim - the dimension of the coordinates 1, 2, or 3

- nloc - the blocked size of the coordinates array

- coords - the coordinates array

## Notes

`coords` is an array of the dim coordinates for the nodes on the local processor, of size `dim`*`nloc`. If there are 108 equations (dofs) on a processor for a 3d displacement finite element discretization of elasticity (so that there are nloc = 36 = 108/3 nodes) then the array must have 108 double precision values (ie, 3 * 36). These x y z coordinates should be ordered for nodes 0 to N-1 like so: [ 0.x, 0.y, 0.z, 1.x, … , N-1.z ].

The information provided here can be used by some preconditioners, such as `PCGAMG`, to produce a better preconditioner. See also `MatSetNearNullSpace()`.

## See Also

KSP: Linear System Solvers, `PC`, `MatSetNearNullSpace()`

## Level

intermediate

## Location

src/ksp/pc/interface/precon.c

## Examples

src/ksp/ksp/tutorials/ex21.c
src/ksp/ksp/tutorials/ex56.c
src/ksp/ksp/tutorials/ex55.c
src/ksp/ksp/tutorials/ex54.c

## Implementations

PCSetCoordinates_BDDC() in src/ksp/pc/impls/bddc/bddc.c
PCSetCoordinates_FieldSplit() in src/ksp/pc/impls/fieldsplit/fieldsplit.c
PCSetCoordinates_AGG() in src/ksp/pc/impls/gamg/agg.c
PCSetCoordinates_GEO() in src/ksp/pc/impls/gamg/geo.c
PCSetCoordinates_H2OPUS() in src/ksp/pc/impls/h2opus/pch2opus.c
PCSetCoordinates_HYPRE() in src/ksp/pc/impls/hypre/hypre.c
PCSetCoordinates_ML() in src/ksp/pc/impls/ml/ml.c

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