18bad1e52SJose E. Roman! Test MatCreateNest() with NULL index sets 28bad1e52SJose E. Roman 38bad1e52SJose E. Romanprogram main 48bad1e52SJose E. Roman#include <petsc/finclude/petscmat.h> 58bad1e52SJose E. Romanuse petscmat 68bad1e52SJose E. Romanimplicit none 78bad1e52SJose E. Roman 8*819cf653SJose E. Roman Mat :: A,D,Id,Acopy 98bad1e52SJose E. Roman Mat,dimension(4) :: mats 108bad1e52SJose E. Roman Vec :: v,w 118bad1e52SJose E. Roman PetscInt :: i,rstart,rend 128bad1e52SJose E. Roman PetscInt,parameter :: n=6,nb=2 138bad1e52SJose E. Roman PetscScalar,parameter :: one=1.0, two=2.0 148bad1e52SJose E. Roman PetscErrorCode :: ierr 158bad1e52SJose E. Roman 168bad1e52SJose E. Roman PetscCallA(PetscInitialize(ierr)) 178bad1e52SJose E. Roman 188bad1e52SJose E. Roman PetscCallA(MatCreateConstantDiagonal(PETSC_COMM_WORLD,PETSC_DETERMINE,PETSC_DETERMINE,n,n,one,Id,ierr)) 198bad1e52SJose E. Roman PetscCallA(MatCreateVecs(Id,v,w,ierr)) 208bad1e52SJose E. Roman PetscCallA(VecGetOwnershipRange(v,rstart,rend,ierr)) 218bad1e52SJose E. Roman do i=rstart,rend-1 228bad1e52SJose E. Roman PetscCallA(VecSetValue(v,i,two/(i+1),INSERT_VALUES,ierr)) 238bad1e52SJose E. Roman end do 248bad1e52SJose E. Roman PetscCallA(VecAssemblyBegin(v,ierr)) 258bad1e52SJose E. Roman PetscCallA(VecAssemblyEnd(v,ierr)) 268bad1e52SJose E. Roman PetscCallA(MatCreateDiagonal(v,D,ierr)) 278bad1e52SJose E. Roman 288bad1e52SJose E. Roman mats(1) = PETSC_NULL_MAT 298bad1e52SJose E. Roman mats(2) = D 308bad1e52SJose E. Roman mats(3) = Id 318bad1e52SJose E. Roman mats(4) = PETSC_NULL_MAT 328bad1e52SJose E. Roman PetscCallA(MatCreateNest(PETSC_COMM_WORLD,nb,PETSC_NULL_IS_ARRAY,nb,PETSC_NULL_IS_ARRAY,mats,A,ierr)) 338bad1e52SJose E. Roman PetscCallA(MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr)) 348bad1e52SJose E. Roman 35*819cf653SJose E. Roman ! test MatCopy() 36*819cf653SJose E. Roman PetscCallA(MatDuplicate(A,MAT_DO_NOT_COPY_VALUES,Acopy,ierr)) 37*819cf653SJose E. Roman PetscCallA(MatCopy(A,Acopy,DIFFERENT_NONZERO_PATTERN,ierr)) 38*819cf653SJose E. Roman 39*819cf653SJose E. Roman PetscCallA(MatDestroy(Acopy,ierr)) 408bad1e52SJose E. Roman PetscCallA(MatDestroy(Id,ierr)) 418bad1e52SJose E. Roman PetscCallA(VecDestroy(v,ierr)) 428bad1e52SJose E. Roman PetscCallA(VecDestroy(w,ierr)) 438bad1e52SJose E. Roman PetscCallA(MatDestroy(D,ierr)) 448bad1e52SJose E. Roman PetscCallA(MatDestroy(A,ierr)) 458bad1e52SJose E. Roman PetscCallA(PetscFinalize(ierr)) 468bad1e52SJose E. Roman 478bad1e52SJose E. Romanend program 488bad1e52SJose E. Roman 498bad1e52SJose E. Roman!/*TEST 508bad1e52SJose E. Roman! 518bad1e52SJose E. Roman! test: 528bad1e52SJose E. Roman! nsize: 2 538bad1e52SJose E. Roman! 548bad1e52SJose E. Roman!TEST*/ 55