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