1 2 static char help[] = "Tests DMCreateMatrix for DMComposite.\n\n"; 3 4 #include <petscdmredundant.h> 5 #include <petscdm.h> 6 #include <petscdmda.h> 7 #include <petscdmcomposite.h> 8 #include <petscpf.h> 9 10 int main(int argc,char **argv) 11 { 12 PetscErrorCode ierr; 13 ISLocalToGlobalMapping *ltog,ltogs; 14 PetscMPIInt size; 15 DM packer; 16 DM da,dmred; 17 Mat M; 18 PetscInt i; 19 20 ierr = PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr; 21 CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); 22 23 CHKERRQ(DMCompositeCreate(PETSC_COMM_WORLD,&packer)); 24 25 CHKERRQ(DMRedundantCreate(PETSC_COMM_WORLD,0,5,&dmred)); 26 CHKERRQ(DMCompositeAddDM(packer,dmred)); 27 CHKERRQ(DMGetLocalToGlobalMapping(dmred,<ogs)); 28 CHKERRQ(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD,"Local to global mapping of dmred\n")); 29 CHKERRQ(ISLocalToGlobalMappingView(ltogs,PETSC_VIEWER_STDOUT_WORLD)); 30 CHKERRQ(DMDestroy(&dmred)); 31 32 CHKERRQ(DMDACreate2d(PETSC_COMM_WORLD,DM_BOUNDARY_MIRROR,DM_BOUNDARY_MIRROR,DMDA_STENCIL_STAR,3,3,PETSC_DECIDE,PETSC_DECIDE,2,1,NULL,NULL,&da)); 33 CHKERRQ(DMSetFromOptions(da)); 34 CHKERRQ(DMSetUp(da)); 35 CHKERRQ(DMCompositeAddDM(packer,da)); 36 CHKERRQ(DMGetLocalToGlobalMapping(da,<ogs)); 37 CHKERRQ(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD,"Local to global mapping of da\n")); 38 CHKERRQ(ISLocalToGlobalMappingView(ltogs,PETSC_VIEWER_STDOUT_WORLD)); 39 CHKERRQ(DMDestroy(&da)); 40 41 CHKERRQ(DMSetMatType(packer,MATNEST)); 42 CHKERRQ(DMSetFromOptions(packer)); 43 CHKERRQ(DMCreateMatrix(packer,&M)); 44 CHKERRQ(MatView(M,NULL)); 45 CHKERRQ(MatDestroy(&M)); 46 47 /* get the global numbering for each subvector element */ 48 CHKERRQ(DMCompositeGetISLocalToGlobalMappings(packer,<og)); 49 CHKERRQ(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD,"Local to global mapping of dmred vector\n")); 50 CHKERRQ(ISLocalToGlobalMappingView(ltog[0],PETSC_VIEWER_STDOUT_WORLD)); 51 CHKERRQ(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD,"Local to global mapping of da vector\n")); 52 CHKERRQ(ISLocalToGlobalMappingView(ltog[1],PETSC_VIEWER_STDOUT_WORLD)); 53 for (i=0; i<2; i++) CHKERRQ(ISLocalToGlobalMappingDestroy(<og[i])); 54 55 CHKERRQ(PetscFree(ltog)); 56 CHKERRQ(DMDestroy(&packer)); 57 ierr = PetscFinalize(); 58 return ierr; 59 } 60 61 /*TEST 62 63 test: 64 suffix: composite_nest_l2g 65 nsize: {{1 2}separate output} 66 67 TEST*/ 68