Actual source code: ex11.c
1: #include <petscfv.h>
3: static char help[] = "Test memory allocation of PetscFV arrays used in PetscFVComputeGradient";
5: int main(int argc, char **argv)
6: {
7: PetscFV fvm;
8: PetscInt dim, numFaces;
9: PetscScalar *dx, *grad;
11: PetscFunctionBeginUser;
12: PetscCall(PetscInitialize(&argc, &argv, NULL, help));
14: /*
15: Working with a 2D mesh, made of triangles, and using the 2nd neighborhood
16: to reconstruct the cell gradient with a least square method, we use numFaces = 9
17: The array dx is not initialised, but it doesn't matter here
18: */
19: dim = 2;
20: numFaces = 9;
21: PetscCall(PetscMalloc2(dim * numFaces, &dx, dim * numFaces, &grad));
22: PetscCall(PetscFVCreate(PETSC_COMM_WORLD, &fvm));
23: PetscCall(PetscFVSetType(fvm, PETSCFVLEASTSQUARES));
24: PetscCall(PetscFVLeastSquaresSetMaxFaces(fvm, numFaces));
26: /* Issue here */
27: PetscCall(PetscFVComputeGradient(fvm, numFaces, dx, grad));
29: PetscCall(PetscFVDestroy(&fvm));
30: PetscCall(PetscFree2(dx, grad));
31: PetscCall(PetscFinalize());
32: return 0;
33: }
35: /*TEST
37: test:
38: suffix: 1
40: TEST*/