Actual source code: dapreallocate.c

petsc-3.13.6 2020-09-29
Report Typos and Errors
  1:  #include <petsc/private/dmdaimpl.h>
  2:  #include <petsc/private/isimpl.h>
  3:  #include <petscsf.h>

  5: /*@
  6:   DMDASetPreallocationCenterDimension - Determine the topology used to determine adjacency

  8:   Input Parameters:
  9: + dm - The DM object
 10: - preallocCenterDim - The dimension of points which connect adjacent entries

 12:   Level: developer

 14:   Notes:
 15: $     FEM:   Two points p and q are adjacent if q \in closure(star(p)), preallocCenterDim = dim
 16: $     FVM:   Two points p and q are adjacent if q \in star(cone(p)),    preallocCenterDim = dim-1
 17: $     FVM++: Two points p and q are adjacent if q \in star(closure(p)), preallocCenterDim = 0

 19: .seealso: DMCreateMatrix(), DMDAPreallocateOperator()
 20: @*/
 21: PetscErrorCode DMDASetPreallocationCenterDimension(DM dm, PetscInt preallocCenterDim)
 22: {
 23:   DM_DA *mesh = (DM_DA*) dm->data;

 27:   mesh->preallocCenterDim = preallocCenterDim;
 28:   return(0);
 29: }

 31: /*@
 32:   DMDAGetPreallocationCenterDimension - Return the topology used to determine adjacency

 34:   Input Parameter:
 35: . dm - The DM object

 37:   Output Parameter:
 38: . preallocCenterDim - The dimension of points which connect adjacent entries

 40:   Level: developer

 42:   Notes:
 43: $     FEM:   Two points p and q are adjacent if q \in closure(star(p)), preallocCenterDim = dim
 44: $     FVM:   Two points p and q are adjacent if q \in star(cone(p)),    preallocCenterDim = dim-1
 45: $     FVM++: Two points p and q are adjacent if q \in star(closure(p)), preallocCenterDim = 0

 47: .seealso: DMCreateMatrix(), DMDAPreallocateOperator(), DMDASetPreallocationCenterDimension()
 48: @*/
 49: PetscErrorCode DMDAGetPreallocationCenterDimension(DM dm, PetscInt *preallocCenterDim)
 50: {
 51:   DM_DA *mesh = (DM_DA*) dm->data;

 56:   *preallocCenterDim = mesh->preallocCenterDim;
 57:   return(0);
 58: }