xref: /petsc/src/mat/tests/ex171f.F90 (revision 3886731f808f6f9ca8348e6e791c818340d72f91)
1d8606c27SBarry Smith!
2d8606c27SBarry Smith!   This program tests MatNullSpaceCreate()
3d8606c27SBarry Smith!
4d8606c27SBarry Smith      program main
5d8606c27SBarry Smith#include <petsc/finclude/petscmat.h>
6d8606c27SBarry Smith      use petscmat
7d8606c27SBarry Smith      implicit none
8d8606c27SBarry Smith
9d8606c27SBarry Smith      PetscErrorCode ierr
10d8606c27SBarry Smith      MatNullSpace nsp
11d8606c27SBarry Smith      Vec     v(1)
12d8606c27SBarry Smith      PetscInt nloc,on
13d8606c27SBarry Smith      PetscScalar one
14d8606c27SBarry Smith      PetscReal norm
158c31b630SBarry Smith      Vec, pointer :: vnsp(:)
16d8606c27SBarry Smith
17d8606c27SBarry Smith      PetscCallA(PetscInitialize(ierr))
18d8606c27SBarry Smith
19d8606c27SBarry Smith      nloc = 12
2077433607SBarry Smith      on = 1
2177433607SBarry Smith      PetscCallA(VecCreateFromOptions(PETSC_COMM_WORLD,PETSC_NULL_CHARACTER,on,nloc,PETSC_DETERMINE,v(1),ierr))
22d8606c27SBarry Smith      one = 1.0
23d8606c27SBarry Smith      PetscCallA(VecSet(v(1),one,ierr))
24d8606c27SBarry Smith      PetscCallA(VecNormalize(v(1),norm,ierr))
25ce78bad3SBarry Smith      PetscCallA(MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_FALSE,on,[v],nsp,ierr))
268c31b630SBarry Smith      PetscCallA(MatNullSpaceGetVecs(nsp,PETSC_NULL_BOOL, PETSC_NULL_INTEGER, vnsp, ierr))
278c31b630SBarry Smith      PetscCallA(MatNullSpaceRestoreVecs(nsp,PETSC_NULL_BOOL, PETSC_NULL_INTEGER, vnsp, ierr))
28d8606c27SBarry Smith      PetscCallA(MatNullSpaceDestroy(nsp,ierr))
29d8606c27SBarry Smith      PetscCallA(VecDestroy(v(1),ierr))
30d8606c27SBarry Smith      PetscCallA(PetscFinalize(ierr))
31d8606c27SBarry Smith      end
32d8606c27SBarry Smith
33d8606c27SBarry Smith!/*TEST
34d8606c27SBarry Smith!
35d8606c27SBarry Smith!   test:
36*3886731fSPierre Jolivet!      output_file: output/empty.out
37d8606c27SBarry Smith!
38d8606c27SBarry Smith!TEST*/
39