1! 2! This program tests MatNullSpaceCreate() 3! 4#include <petsc/finclude/petscmat.h> 5program main 6 use petscmat 7 implicit none 8 9 PetscErrorCode ierr 10 MatNullSpace nsp 11 Vec v(1) 12 PetscInt nloc, on 13 PetscScalar one 14 PetscReal norm 15 Vec, pointer :: vnsp(:) 16 17 PetscCallA(PetscInitialize(ierr)) 18 19 nloc = 12 20 on = 1 21 PetscCallA(VecCreateFromOptions(PETSC_COMM_WORLD, PETSC_NULL_CHARACTER, on, nloc, PETSC_DETERMINE, v(1), ierr)) 22 one = 1.0 23 PetscCallA(VecSet(v(1), one, ierr)) 24 PetscCallA(VecNormalize(v(1), norm, ierr)) 25 PetscCallA(MatNullSpaceCreate(PETSC_COMM_WORLD, PETSC_FALSE, on, [v], nsp, ierr)) 26 PetscCallA(MatNullSpaceGetVecs(nsp, PETSC_NULL_BOOL, PETSC_NULL_INTEGER, vnsp, ierr)) 27 PetscCallA(MatNullSpaceRestoreVecs(nsp, PETSC_NULL_BOOL, PETSC_NULL_INTEGER, vnsp, ierr)) 28 PetscCallA(MatNullSpaceDestroy(nsp, ierr)) 29 PetscCallA(VecDestroy(v(1), ierr)) 30 PetscCallA(PetscFinalize(ierr)) 31end 32 33!/*TEST 34! 35! test: 36! output_file: output/empty.out 37! 38!TEST*/ 39