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