xref: /petsc/src/mat/tests/ex171f.F90 (revision 9b88ac225e01f016352a5f4cd90e158abe5f5675)
1d8606c27SBarry Smith!
2d8606c27SBarry Smith!   This program tests MatNullSpaceCreate()
3d8606c27SBarry Smith!
4d8606c27SBarry Smith#include <petsc/finclude/petscmat.h>
5*c5e229c2SMartin Diehlprogram main
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 Smithend
32d8606c27SBarry Smith
33d8606c27SBarry Smith!/*TEST
34d8606c27SBarry Smith!
35d8606c27SBarry Smith!   test:
363886731fSPierre Jolivet!      output_file: output/empty.out
37d8606c27SBarry Smith!
38d8606c27SBarry Smith!TEST*/
39