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 8819cf653SJose 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 28*58ad77e8SBarry Smith mats = [PETSC_NULL_MAT, D, Id, PETSC_NULL_MAT] 298bad1e52SJose E. Roman PetscCallA(MatCreateNest(PETSC_COMM_WORLD,nb,PETSC_NULL_IS_ARRAY,nb,PETSC_NULL_IS_ARRAY,mats,A,ierr)) 308bad1e52SJose E. Roman PetscCallA(MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr)) 31*58ad77e8SBarry Smith PetscCallA(MatNestSetSubMats(A,nb,PETSC_NULL_IS_ARRAY,nb,PETSC_NULL_IS_ARRAY,mats,ierr)) 32*58ad77e8SBarry Smith PetscCallA(MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr)) 338bad1e52SJose E. Roman 34819cf653SJose E. Roman ! test MatCopy() 35819cf653SJose E. Roman PetscCallA(MatDuplicate(A,MAT_DO_NOT_COPY_VALUES,Acopy,ierr)) 36819cf653SJose E. Roman PetscCallA(MatCopy(A,Acopy,DIFFERENT_NONZERO_PATTERN,ierr)) 37819cf653SJose E. Roman 38819cf653SJose E. Roman PetscCallA(MatDestroy(Acopy,ierr)) 398bad1e52SJose E. Roman PetscCallA(MatDestroy(Id,ierr)) 408bad1e52SJose E. Roman PetscCallA(VecDestroy(v,ierr)) 418bad1e52SJose E. Roman PetscCallA(VecDestroy(w,ierr)) 428bad1e52SJose E. Roman PetscCallA(MatDestroy(D,ierr)) 438bad1e52SJose E. Roman PetscCallA(MatDestroy(A,ierr)) 448bad1e52SJose E. Roman PetscCallA(PetscFinalize(ierr)) 458bad1e52SJose E. Roman 468bad1e52SJose E. Romanend program 478bad1e52SJose E. Roman 488bad1e52SJose E. Roman!/*TEST 498bad1e52SJose E. Roman! 508bad1e52SJose E. Roman! test: 518bad1e52SJose E. Roman! nsize: 2 528bad1e52SJose E. Roman! 538bad1e52SJose E. Roman!TEST*/ 54