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