1*8bad1e52SJose E. Roman! Test MatCreateNest() with NULL index sets 2*8bad1e52SJose E. Roman 3*8bad1e52SJose E. Romanprogram main 4*8bad1e52SJose E. Roman#include <petsc/finclude/petscmat.h> 5*8bad1e52SJose E. Romanuse petscmat 6*8bad1e52SJose E. Romanimplicit none 7*8bad1e52SJose E. Roman 8*8bad1e52SJose E. Roman Mat :: A,D,Id 9*8bad1e52SJose E. Roman Mat,dimension(4) :: mats 10*8bad1e52SJose E. Roman Vec :: v,w 11*8bad1e52SJose E. Roman PetscInt :: i,rstart,rend 12*8bad1e52SJose E. Roman PetscInt,parameter :: n=6,nb=2 13*8bad1e52SJose E. Roman PetscScalar,parameter :: one=1.0, two=2.0 14*8bad1e52SJose E. Roman PetscErrorCode :: ierr 15*8bad1e52SJose E. Roman 16*8bad1e52SJose E. Roman PetscCallA(PetscInitialize(ierr)) 17*8bad1e52SJose E. Roman 18*8bad1e52SJose E. Roman PetscCallA(MatCreateConstantDiagonal(PETSC_COMM_WORLD,PETSC_DETERMINE,PETSC_DETERMINE,n,n,one,Id,ierr)) 19*8bad1e52SJose E. Roman PetscCallA(MatCreateVecs(Id,v,w,ierr)) 20*8bad1e52SJose E. Roman PetscCallA(VecGetOwnershipRange(v,rstart,rend,ierr)) 21*8bad1e52SJose E. Roman do i=rstart,rend-1 22*8bad1e52SJose E. Roman PetscCallA(VecSetValue(v,i,two/(i+1),INSERT_VALUES,ierr)) 23*8bad1e52SJose E. Roman end do 24*8bad1e52SJose E. Roman PetscCallA(VecAssemblyBegin(v,ierr)) 25*8bad1e52SJose E. Roman PetscCallA(VecAssemblyEnd(v,ierr)) 26*8bad1e52SJose E. Roman PetscCallA(MatCreateDiagonal(v,D,ierr)) 27*8bad1e52SJose E. Roman 28*8bad1e52SJose E. Roman mats(1) = PETSC_NULL_MAT 29*8bad1e52SJose E. Roman mats(2) = D 30*8bad1e52SJose E. Roman mats(3) = Id 31*8bad1e52SJose E. Roman mats(4) = PETSC_NULL_MAT 32*8bad1e52SJose E. Roman PetscCallA(MatCreateNest(PETSC_COMM_WORLD,nb,PETSC_NULL_IS_ARRAY,nb,PETSC_NULL_IS_ARRAY,mats,A,ierr)) 33*8bad1e52SJose E. Roman PetscCallA(MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr)) 34*8bad1e52SJose E. Roman 35*8bad1e52SJose E. Roman PetscCallA(MatDestroy(Id,ierr)) 36*8bad1e52SJose E. Roman PetscCallA(VecDestroy(v,ierr)) 37*8bad1e52SJose E. Roman PetscCallA(VecDestroy(w,ierr)) 38*8bad1e52SJose E. Roman PetscCallA(MatDestroy(D,ierr)) 39*8bad1e52SJose E. Roman PetscCallA(MatDestroy(A,ierr)) 40*8bad1e52SJose E. Roman PetscCallA(PetscFinalize(ierr)) 41*8bad1e52SJose E. Roman 42*8bad1e52SJose E. Romanend program 43*8bad1e52SJose E. Roman 44*8bad1e52SJose E. Roman!/*TEST 45*8bad1e52SJose E. Roman! 46*8bad1e52SJose E. Roman! test: 47*8bad1e52SJose E. Roman! nsize: 2 48*8bad1e52SJose E. Roman! 49*8bad1e52SJose E. Roman!TEST*/ 50