1736d4f42SpierreXVI #include <petscfv.h> 2736d4f42SpierreXVI 3736d4f42SpierreXVI static char help[] = "Test memory allocation of PetscFV arrays used in PetscFVComputeGradient"; 4736d4f42SpierreXVI 5736d4f42SpierreXVI int main(int argc, char **argv) 6736d4f42SpierreXVI { 7736d4f42SpierreXVI PetscFV fvm; 8736d4f42SpierreXVI PetscInt dim, numFaces; 9736d4f42SpierreXVI PetscScalar *dx, *grad; 10736d4f42SpierreXVI 11736d4f42SpierreXVI PetscFunctionBeginUser; 129566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, PETSC_NULL, help)); 13736d4f42SpierreXVI 14736d4f42SpierreXVI /* 15736d4f42SpierreXVI Working with a 2D mesh, made of triangles, and using the 2nd neighborhood 16736d4f42SpierreXVI to reconstruct the cell gradient with a least square method, we use numFaces = 9 17736d4f42SpierreXVI The array dx is not initialised, but it doesn't matter here 18736d4f42SpierreXVI */ 19736d4f42SpierreXVI dim = 2; 20736d4f42SpierreXVI numFaces = 9; 219566063dSJacob Faibussowitsch PetscCall(PetscMalloc2(dim * numFaces, &dx, dim * numFaces, &grad)); 229566063dSJacob Faibussowitsch PetscCall(PetscFVCreate(PETSC_COMM_WORLD, &fvm)); 239566063dSJacob Faibussowitsch PetscCall(PetscFVSetType(fvm, PETSCFVLEASTSQUARES)); 249566063dSJacob Faibussowitsch PetscCall(PetscFVLeastSquaresSetMaxFaces(fvm, numFaces)); 25736d4f42SpierreXVI 26736d4f42SpierreXVI /* Issue here */ 279566063dSJacob Faibussowitsch PetscCall(PetscFVComputeGradient(fvm, numFaces, dx, grad)); 28736d4f42SpierreXVI 299566063dSJacob Faibussowitsch PetscCall(PetscFVDestroy(&fvm)); 309566063dSJacob Faibussowitsch PetscCall(PetscFree2(dx, grad)); 319566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 32*4e2b1bc7SBarry Smith return(0); 33736d4f42SpierreXVI } 34736d4f42SpierreXVI 35736d4f42SpierreXVI /*TEST 36736d4f42SpierreXVI test: 37736d4f42SpierreXVI suffix: 1 38736d4f42SpierreXVI TEST*/ 39