Skip to content

Commit 0583ea9

Browse files
author
Ben Fulton
committed
Use PetscObjectReferenceWrapper to handle different PETSC versions
1 parent ff72928 commit 0583ea9

File tree

2 files changed

+5
-9
lines changed

2 files changed

+5
-9
lines changed

assemble/Full_Projection.F90

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,8 +425,7 @@ subroutine petsc_solve_setup_full_projection(y,A,b,ksp,petsc_numbering_p,name,so
425425
call MatSchurComplementGetKSP(A,ksp_schur,ierr)
426426

427427
! we keep our own reference, so it can be re-used in the velocity correction solve
428-
! call PetscObjectReferenceWrapper(ksp_schur, ierr)
429-
call PetscObjectReference(ksp_schur, ierr)
428+
call PetscObjectReferenceWrapper(ksp_schur, ierr)
430429
inner_M%ksp = ksp_schur
431430
else
432431
! we have a ksp (presumably from the first velocity solve), try to reuse it

femtools/Solvers.F90

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -983,8 +983,7 @@ subroutine petsc_solve_setup(y, A, b, ksp, petsc_numbering, &
983983
ksp_pointer = ksp
984984

985985
! make sure we don't destroy it, the %ksp becomes a separate reference
986-
! call PetscObjectReferenceWrapper(ksp, ierr)
987-
call PetscObjectReference(ksp, ierr)
986+
call PetscObjectReferenceWrapper(ksp, ierr)
988987
else
989988
! matrices coming from block() can't cache
990989
FLAbort("User wants to cache solver context, but no proper matrix is provided.")
@@ -994,14 +993,12 @@ subroutine petsc_solve_setup(y, A, b, ksp, petsc_numbering, &
994993

995994
! ksp is a copy of matrix%ksp, make it a separate reference,
996995
! so we can KSPDestroy it without destroying matrix%ksp
997-
! call PetscObjectReferenceWrapper(ksp, ierr)
998-
call PetscObjectReference(ksp, ierr)
996+
call PetscObjectReferenceWrapper(ksp, ierr)
999997

1000998
! same for the matrix, kspgetoperators returns the matrix reference
1001999
! owned by the ksp - make it a separate reference
1002-
! call PetscObjectReferenceWrapper(A, ierr)
1003-
call PetscObjectReference(ksp, ierr)
1004-
1000+
call PetscObjectReferenceWrapper(A, ierr)
1001+
10051002
end if
10061003

10071004
b=PetscNumberingCreateVec(petsc_numbering)

0 commit comments

Comments
 (0)