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