1c4762a1bSJed Brown 2c4762a1bSJed Brown static char help[] = "Tests DMCreateMatrix for DMComposite.\n\n"; 3c4762a1bSJed Brown 4c4762a1bSJed Brown #include <petscdmredundant.h> 5c4762a1bSJed Brown #include <petscdm.h> 6c4762a1bSJed Brown #include <petscdmda.h> 7c4762a1bSJed Brown #include <petscdmcomposite.h> 8c4762a1bSJed Brown #include <petscpf.h> 9c4762a1bSJed Brown 10c4762a1bSJed Brown int main(int argc,char **argv) 11c4762a1bSJed Brown { 12c4762a1bSJed Brown ISLocalToGlobalMapping *ltog,ltogs; 13c4762a1bSJed Brown PetscMPIInt size; 14c4762a1bSJed Brown DM packer; 15c4762a1bSJed Brown DM da,dmred; 16c4762a1bSJed Brown Mat M; 17c4762a1bSJed Brown PetscInt i; 18c4762a1bSJed Brown 19*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscInitialize(&argc,&argv,(char*)0,help)); 205f80ce2aSJacob Faibussowitsch CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size)); 21c4762a1bSJed Brown 225f80ce2aSJacob Faibussowitsch CHKERRQ(DMCompositeCreate(PETSC_COMM_WORLD,&packer)); 23c4762a1bSJed Brown 245f80ce2aSJacob Faibussowitsch CHKERRQ(DMRedundantCreate(PETSC_COMM_WORLD,0,5,&dmred)); 255f80ce2aSJacob Faibussowitsch CHKERRQ(DMCompositeAddDM(packer,dmred)); 265f80ce2aSJacob Faibussowitsch CHKERRQ(DMGetLocalToGlobalMapping(dmred,<ogs)); 275f80ce2aSJacob Faibussowitsch CHKERRQ(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD,"Local to global mapping of dmred\n")); 285f80ce2aSJacob Faibussowitsch CHKERRQ(ISLocalToGlobalMappingView(ltogs,PETSC_VIEWER_STDOUT_WORLD)); 295f80ce2aSJacob Faibussowitsch CHKERRQ(DMDestroy(&dmred)); 30c4762a1bSJed Brown 315f80ce2aSJacob Faibussowitsch 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)); 325f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetFromOptions(da)); 335f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetUp(da)); 345f80ce2aSJacob Faibussowitsch CHKERRQ(DMCompositeAddDM(packer,da)); 355f80ce2aSJacob Faibussowitsch CHKERRQ(DMGetLocalToGlobalMapping(da,<ogs)); 365f80ce2aSJacob Faibussowitsch CHKERRQ(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD,"Local to global mapping of da\n")); 375f80ce2aSJacob Faibussowitsch CHKERRQ(ISLocalToGlobalMappingView(ltogs,PETSC_VIEWER_STDOUT_WORLD)); 385f80ce2aSJacob Faibussowitsch CHKERRQ(DMDestroy(&da)); 39c4762a1bSJed Brown 405f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetMatType(packer,MATNEST)); 415f80ce2aSJacob Faibussowitsch CHKERRQ(DMSetFromOptions(packer)); 425f80ce2aSJacob Faibussowitsch CHKERRQ(DMCreateMatrix(packer,&M)); 435f80ce2aSJacob Faibussowitsch CHKERRQ(MatView(M,NULL)); 445f80ce2aSJacob Faibussowitsch CHKERRQ(MatDestroy(&M)); 45c4762a1bSJed Brown 46c4762a1bSJed Brown /* get the global numbering for each subvector element */ 475f80ce2aSJacob Faibussowitsch CHKERRQ(DMCompositeGetISLocalToGlobalMappings(packer,<og)); 485f80ce2aSJacob Faibussowitsch CHKERRQ(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD,"Local to global mapping of dmred vector\n")); 495f80ce2aSJacob Faibussowitsch CHKERRQ(ISLocalToGlobalMappingView(ltog[0],PETSC_VIEWER_STDOUT_WORLD)); 505f80ce2aSJacob Faibussowitsch CHKERRQ(PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD,"Local to global mapping of da vector\n")); 515f80ce2aSJacob Faibussowitsch CHKERRQ(ISLocalToGlobalMappingView(ltog[1],PETSC_VIEWER_STDOUT_WORLD)); 525f80ce2aSJacob Faibussowitsch for (i=0; i<2; i++) CHKERRQ(ISLocalToGlobalMappingDestroy(<og[i])); 53c4762a1bSJed Brown 545f80ce2aSJacob Faibussowitsch CHKERRQ(PetscFree(ltog)); 555f80ce2aSJacob Faibussowitsch CHKERRQ(DMDestroy(&packer)); 56*b122ec5aSJacob Faibussowitsch CHKERRQ(PetscFinalize()); 57*b122ec5aSJacob Faibussowitsch return 0; 58c4762a1bSJed Brown } 59c4762a1bSJed Brown 60c4762a1bSJed Brown /*TEST 61c4762a1bSJed Brown 62c4762a1bSJed Brown test: 63c4762a1bSJed Brown suffix: composite_nest_l2g 64c4762a1bSJed Brown nsize: {{1 2}separate output} 65c4762a1bSJed Brown 66c4762a1bSJed Brown TEST*/ 67