Loading src/MatrixTypes_PETSc.f90 +4 −11 Original line number Diff line number Diff line Loading @@ -165,13 +165,9 @@ SUBROUTINE init_PETScMatrixParam(matrix,Params) ENDIF IF (matType == SPARSE) THEN IF(nlocal == matrix%n .AND. mlocal == matrix%m) THEN CALL MatSetType(matrix%a,MATAIJ,ierr) ELSE CALL MatSetType(matrix%a,MATMPIAIJ,ierr) ENDIF ELSEIF (matType == DENSESQUARE) THEN CALL MatSetType(matrix%a,MATMPIDENSE,ierr) CALL MatSetType(matrix%a,MATDENSE,ierr) ELSE CALL eMatrixType%raiseError('Invalid matrix type in '// & modName//'::'//myName//' - Only sparse and dense square '// & Loading @@ -179,11 +175,8 @@ SUBROUTINE init_PETScMatrixParam(matrix,Params) ENDIF IF(MINVAL(dnnz) > 0_SIK .AND. MINVAL(onnz) >= 0_SIK) THEN IF(nlocal == matrix%n .AND. mlocal == matrix%m) THEN CALL MatSeqAIJSetPreallocation(matrix%A,0,dnnz,ierr) ELSE CALL MatMPIAIJSetPreallocation(matrix%A,0,dnnz,0,onnz,ierr) ENDIF ELSE CALL MatSetUp(matrix%a,ierr) ENDIF Loading unit_tests/testLinearSolver/testLinearSolver.f90 +6 −0 Original line number Diff line number Diff line Loading @@ -1411,6 +1411,12 @@ SUBROUTINE testDirectSolve() CALL b%set(3,42._SRK) ENDSELECT SELECTTYPE(x => thisLS%x); TYPE IS(PETScVectorType) CALL x%set(1, 0.0_SRK) CALL x%set(2, 0.0_SRK) CALL x%set(3, 0.0_SRK) ENDSELECT CALL thisLS%solve() ! check X Loading Loading
src/MatrixTypes_PETSc.f90 +4 −11 Original line number Diff line number Diff line Loading @@ -165,13 +165,9 @@ SUBROUTINE init_PETScMatrixParam(matrix,Params) ENDIF IF (matType == SPARSE) THEN IF(nlocal == matrix%n .AND. mlocal == matrix%m) THEN CALL MatSetType(matrix%a,MATAIJ,ierr) ELSE CALL MatSetType(matrix%a,MATMPIAIJ,ierr) ENDIF ELSEIF (matType == DENSESQUARE) THEN CALL MatSetType(matrix%a,MATMPIDENSE,ierr) CALL MatSetType(matrix%a,MATDENSE,ierr) ELSE CALL eMatrixType%raiseError('Invalid matrix type in '// & modName//'::'//myName//' - Only sparse and dense square '// & Loading @@ -179,11 +175,8 @@ SUBROUTINE init_PETScMatrixParam(matrix,Params) ENDIF IF(MINVAL(dnnz) > 0_SIK .AND. MINVAL(onnz) >= 0_SIK) THEN IF(nlocal == matrix%n .AND. mlocal == matrix%m) THEN CALL MatSeqAIJSetPreallocation(matrix%A,0,dnnz,ierr) ELSE CALL MatMPIAIJSetPreallocation(matrix%A,0,dnnz,0,onnz,ierr) ENDIF ELSE CALL MatSetUp(matrix%a,ierr) ENDIF Loading
unit_tests/testLinearSolver/testLinearSolver.f90 +6 −0 Original line number Diff line number Diff line Loading @@ -1411,6 +1411,12 @@ SUBROUTINE testDirectSolve() CALL b%set(3,42._SRK) ENDSELECT SELECTTYPE(x => thisLS%x); TYPE IS(PETScVectorType) CALL x%set(1, 0.0_SRK) CALL x%set(2, 0.0_SRK) CALL x%set(3, 0.0_SRK) ENDSELECT CALL thisLS%solve() ! check X Loading