@@ -1702,6 +1702,7 @@ SUBROUTINE ULMAT_SOLVE_ZONE(NM,IPZ)
17021702#endif
17031703CASE (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