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*/