Skip to content

Commit 7ab9984

Browse files
committed
FDS Source : ULMAT consider case of indefinite matrix, single unknown for HYPRE.
1 parent 8e2a194 commit 7ab9984

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

Source/pres.f90

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)