Actual source code: ex171f.F90

  1: !
  2: !   This program tests MatNullSpaceCreate()
  3: !
  4: program main
  5: #include <petsc/finclude/petscmat.h>
  6:   use petscmat
  7:   implicit none

  9:   PetscErrorCode ierr
 10:   MatNullSpace nsp
 11:   Vec v(1)
 12:   PetscInt nloc, on
 13:   PetscScalar one
 14:   PetscReal norm
 15:   Vec, pointer :: vnsp(:)

 17:   PetscCallA(PetscInitialize(ierr))

 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))
 31: end

 33: !/*TEST
 34: !
 35: !   test:
 36: !      output_file: output/empty.out
 37: !
 38: !TEST*/