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,&ltogs);
 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,&ltogs);
 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,&ltog);
 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(&ltog[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*/