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