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