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