1 /* -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. 2 3 Detected bug in DMCreateMatrix() for skinny domains with periodic boundary conditions in overestimating nonzero preallocation 4 5 * Creation Date : 08-12-2016 6 7 * Last Modified : Thu 08 Dec 2016 10:46:02 AM CET 8 9 * Created By : Davide Monsorno 10 11 _._._._._._._._._._._._._._._._._._._._._.*/ 12 13 #include <petscdmda.h> 14 15 int main(int argc, char *argv[]) 16 { 17 PetscErrorCode ierr; 18 PetscInt nx = 2; 19 PetscInt ny = 2; 20 PetscInt nz = 128; 21 DM da; 22 Mat A; 23 24 ierr = PetscInitialize(&argc,&argv,NULL,NULL);if (ierr) return ierr; 25 26 ierr = DMDACreate3d(PETSC_COMM_WORLD,DM_BOUNDARY_PERIODIC,DM_BOUNDARY_PERIODIC,DM_BOUNDARY_GHOSTED,DMDA_STENCIL_BOX,nx,ny,nz, 27 PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,2,NULL,NULL,NULL,&da);CHKERRQ(ierr); 28 29 ierr = DMSetFromOptions(da);CHKERRQ(ierr); 30 ierr = DMSetUp(da);CHKERRQ(ierr); 31 ierr = DMView(da,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr); 32 ierr = DMCreateMatrix(da,&A);CHKERRQ(ierr); 33 34 ierr = MatDestroy(&A);CHKERRQ(ierr); 35 ierr = DMDestroy(&da);CHKERRQ(ierr); 36 ierr = PetscFinalize(); 37 return ierr; 38 } 39 40 41 /*TEST 42 43 test: 44 nsize: 5 45 46 TEST*/ 47