@@ -2865,17 +2865,23 @@ SUBROUTINE ULMAT_H_MATRIX_SOLVER_SETUP(NM,IPZ)
28652865 CALL HYPRE_IJMATRIXSETOBJECTTYPE(ZM% HYPRE_ZM% A_H,HYPRE_PARCSR,HYPRE_IERR)
28662866 CALL HYPRE_IJMATRIXINITIALIZE(ZM% HYPRE_ZM% A_H,HYPRE_IERR)
28672867 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
2868+ IF (ZM% NUNKH== 1 ) THEN ! Single unknown, zero coefficient matrix (1,1). Set coefficient to 1.
2869+ NNZ_H_MAT(1 ) = 1
2870+ DEALLOCATE (JD_H_MAT); ALLOCATE (JD_H_MAT(1 ,1 )); JD_H_MAT(1 ,1 ) = 1
2871+ DEALLOCATE ( D_H_MAT); ALLOCATE ( D_H_MAT(1 ,1 )); D_H_MAT(1 ,1 ) = 1._EB
2872+ ELSE ! More than one unknown
2873+ ! Rows 1 to ZM%NUNKH-1, last column, set all to zero:
2874+ DO IROW= 1 ,ZM% NUNKH-1
2875+ DO JCOL= 1 ,NNZ_H_MAT(IROW)
2876+ IF ( JD_H_MAT(JCOL,IROW) /= ZM% NUNKH ) CYCLE ! Make zero matrix entries in last column.
2877+ D_H_MAT(JCOL,IROW) = 0._EB
2878+ ENDDO
2879+ ENDDO
2880+ ! Last row, all zeros except the diagonal that keeps diagonal number: Note after previous loop IROW==ZM%NUNKH
28702881 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
2882+ IF ( JD_H_MAT(JCOL,IROW) /= ZM% NUNKH ) D_H_MAT(JCOL,IROW) = 0._EB
28732883 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
2884+ ENDIF
28792885 ENDIF
28802886 JD_H_MAT = JD_H_MAT - 1
28812887 DO IROW= 1 ,ZM% NUNKH
0 commit comments