Actual source code: ex171f.F90

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

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

 17:   PetscCallA(PetscInitialize(ierr))

 19:   PetscCallA(VecCreateFromOptions(PETSC_COMM_WORLD, PETSC_NULL_CHARACTER, 1_PETSC_INT_KIND, nloc, PETSC_DETERMINE, v(1), ierr))
 20:   PetscCallA(VecSet(v(1), one, ierr))
 21:   PetscCallA(VecNormalize(v(1), norm, ierr))
 22:   PetscCallA(MatNullSpaceCreate(PETSC_COMM_WORLD, PETSC_FALSE, 1_PETSC_INT_KIND, [v], nsp, ierr))
 23:   PetscCallA(MatNullSpaceGetVecs(nsp, PETSC_NULL_BOOL, PETSC_NULL_INTEGER, vnsp, ierr))
 24:   PetscCallA(MatNullSpaceRestoreVecs(nsp, PETSC_NULL_BOOL, PETSC_NULL_INTEGER, vnsp, ierr))
 25:   PetscCallA(MatNullSpaceDestroy(nsp, ierr))
 26:   PetscCallA(VecDestroy(v(1), ierr))
 27:   PetscCallA(PetscFinalize(ierr))
 28: end

 30: !/*TEST
 31: !
 32: !   test:
 33: !      output_file: output/empty.out
 34: !
 35: !TEST*/