Skip to content

Commit ecba0a2

Browse files
Merge pull request #14444 from marcosvanella/master
FDS Source : ULMAT condense semi-positive matrix when using HYPRE.
2 parents 876a361 + 6465ec9 commit ecba0a2

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

Source/pres.f90

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1702,6 +1702,7 @@ SUBROUTINE ULMAT_SOLVE_ZONE(NM,IPZ)
17021702
#endif
17031703
CASE(HYPRE_FLAG) LIBRARY_SELECT
17041704
#ifdef WITH_HYPRE
1705+
IF (ZM%MTYPE==SYMM_INDEFINITE) ZM%F_H(ZM%NUNKH) = 0._EB
17051706
CALL HYPRE_IJVECTORSETVALUES(ZM%HYPRE_ZM%F_H, ZM%NUNKH, ZM%HYPRE_ZM%INDICES, ZM%F_H, HYPRE_IERR)
17061707
CALL HYPRE_IJVECTORASSEMBLE(ZM%HYPRE_ZM%F_H, HYPRE_IERR)
17071708
CALL HYPRE_PARCSRPCGSOLVE(ZM%HYPRE_ZM%SOLVER, ZM%HYPRE_ZM%PARCSR_A_H, ZM%HYPRE_ZM%PAR_F_H, ZM%HYPRE_ZM%PAR_X_H, HYPRE_IERR)
@@ -2863,6 +2864,19 @@ SUBROUTINE ULMAT_H_MATRIX_SOLVER_SETUP(NM,IPZ)
28632864
CALL HYPRE_IJMATRIXCREATE(MPI_COMM_SELF,0,ZM%NUNKH-1,0,ZM%NUNKH-1,ZM%HYPRE_ZM%A_H,HYPRE_IERR)
28642865
CALL HYPRE_IJMATRIXSETOBJECTTYPE(ZM%HYPRE_ZM%A_H,HYPRE_PARCSR,HYPRE_IERR)
28652866
CALL HYPRE_IJMATRIXINITIALIZE(ZM%HYPRE_ZM%A_H,HYPRE_IERR)
2867+
IF (ZM%MTYPE==SYMM_INDEFINITE) THEN
2868+
! Rows 1 to ZM%NUNKH-1, last column, set all to zero:
2869+
DO IROW=1,ZM%NUNKH-1
2870+
DO JCOL=1,NNZ_H_MAT(IROW)
2871+
IF ( JD_H_MAT(JCOL,IROW) /= ZM%NUNKH ) CYCLE ! Make zero matrix entries in last column.
2872+
D_H_MAT(JCOL,IROW) = 0._EB
2873+
ENDDO
2874+
ENDDO
2875+
! Last row, all zeros except the diagonal that keeps diagonal number: Note after previous loop IROW==ZM%NUNKH
2876+
DO JCOL=1,NNZ_H_MAT(IROW)
2877+
IF ( JD_H_MAT(JCOL,IROW) /= ZM%NUNKH ) D_H_MAT(JCOL,IROW) = 0._EB
2878+
ENDDO
2879+
ENDIF
28662880
JD_H_MAT = JD_H_MAT - 1
28672881
DO IROW=1,ZM%NUNKH
28682882
ZM%HYPRE_ZM%INDICES(IROW)=IROW-1

0 commit comments

Comments
 (0)