1af0996ceSBarry Smith #include <petsc/private/dmdaimpl.h> /*I "petscdmda.h" I*/ 2af0996ceSBarry Smith #include <petsc/private/isimpl.h> 33d183407SMatthew G. Knepley #include <petscsf.h> 43d183407SMatthew G. Knepley 53d183407SMatthew G. Knepley /*@ 63d183407SMatthew G. Knepley DMDASetPreallocationCenterDimension - Determine the topology used to determine adjacency 73d183407SMatthew G. Knepley 83d183407SMatthew G. Knepley Input Parameters: 9dce8aebaSBarry Smith + dm - The `DMDA` object 103d183407SMatthew G. Knepley - preallocCenterDim - The dimension of points which connect adjacent entries 113d183407SMatthew G. Knepley 123d183407SMatthew G. Knepley Level: developer 133d183407SMatthew G. Knepley 143d183407SMatthew G. Knepley Notes: 15dce8aebaSBarry Smith .vb 16dce8aebaSBarry Smith FEM: Two points p and q are adjacent if q \in closure(star(p)), preallocCenterDim = dim 17dce8aebaSBarry Smith FVM: Two points p and q are adjacent if q \in star(cone(p)), preallocCenterDim = dim-1 18dce8aebaSBarry Smith FVM++: Two points p and q are adjacent if q \in star(closure(p)), preallocCenterDim = 0 19dce8aebaSBarry Smith .ve 203d183407SMatthew G. Knepley 21*12b4a537SBarry Smith .seealso: [](sec_struct), `DM`, `DMDA`, `DMCreateMatrix()`, `DMDAPreallocateOperator()` 223d183407SMatthew G. Knepley @*/ 23d71ae5a4SJacob Faibussowitsch PetscErrorCode DMDASetPreallocationCenterDimension(DM dm, PetscInt preallocCenterDim) 24d71ae5a4SJacob Faibussowitsch { 253d183407SMatthew G. Knepley DM_DA *mesh = (DM_DA *)dm->data; 263d183407SMatthew G. Knepley 273d183407SMatthew G. Knepley PetscFunctionBegin; 28a9a02de4SBarry Smith PetscValidHeaderSpecificType(dm, DM_CLASSID, 1, DMDA); 293d183407SMatthew G. Knepley mesh->preallocCenterDim = preallocCenterDim; 303ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 313d183407SMatthew G. Knepley } 323d183407SMatthew G. Knepley 333d183407SMatthew G. Knepley /*@ 343d183407SMatthew G. Knepley DMDAGetPreallocationCenterDimension - Return the topology used to determine adjacency 353d183407SMatthew G. Knepley 363d183407SMatthew G. Knepley Input Parameter: 37dce8aebaSBarry Smith . dm - The `DMDA` object 383d183407SMatthew G. Knepley 393d183407SMatthew G. Knepley Output Parameter: 403d183407SMatthew G. Knepley . preallocCenterDim - The dimension of points which connect adjacent entries 413d183407SMatthew G. Knepley 423d183407SMatthew G. Knepley Level: developer 433d183407SMatthew G. Knepley 443d183407SMatthew G. Knepley Notes: 45dce8aebaSBarry Smith .vb 46dce8aebaSBarry Smith FEM: Two points p and q are adjacent if q \in closure(star(p)), preallocCenterDim = dim 47dce8aebaSBarry Smith FVM: Two points p and q are adjacent if q \in star(cone(p)), preallocCenterDim = dim-1 48dce8aebaSBarry Smith FVM++: Two points p and q are adjacent if q \in star(closure(p)), preallocCenterDim = 0 49dce8aebaSBarry Smith .ve 503d183407SMatthew G. Knepley 51*12b4a537SBarry Smith .seealso: [](sec_struct), `DM`, `DMDA`, `DMCreateMatrix()`, `DMDAPreallocateOperator()`, `DMDASetPreallocationCenterDimension()` 523d183407SMatthew G. Knepley @*/ 53d71ae5a4SJacob Faibussowitsch PetscErrorCode DMDAGetPreallocationCenterDimension(DM dm, PetscInt *preallocCenterDim) 54d71ae5a4SJacob Faibussowitsch { 553d183407SMatthew G. Knepley DM_DA *mesh = (DM_DA *)dm->data; 563d183407SMatthew G. Knepley 573d183407SMatthew G. Knepley PetscFunctionBegin; 58a9a02de4SBarry Smith PetscValidHeaderSpecificType(dm, DM_CLASSID, 1, DMDA); 594f572ea9SToby Isaac PetscAssertPointer(preallocCenterDim, 2); 603d183407SMatthew G. Knepley *preallocCenterDim = mesh->preallocCenterDim; 613ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 623d183407SMatthew G. Knepley } 63