Loading src/MatrixTypes_Base.f90 +4 −0 Original line number Diff line number Diff line Loading @@ -264,6 +264,9 @@ SUBROUTINE MatrixTypes_Declare_ValidParams() CALL BandedMatrixType_reqParams%add('MatrixType->n',n) CALL BandedMatrixType_reqParams%add('MatrixType->m',m) CALL BandedMatrixType_reqParams%add('MatrixType->nnz',nnz) ! Banded Matrix Type - Optional CALL BandedMatrixType_optParams%add('MatrixType->dnnz',dnnz) CALL BandedMatrixType_optParams%add('MatrixType->onnz',onnz) !Dense Rectangular Matrix Type - Required CALL DenseRectMatrixType_reqParams%add('MatrixType->n',n) CALL DenseRectMatrixType_reqParams%add('MatrixType->m',m) Loading Loading @@ -316,6 +319,7 @@ SUBROUTINE MatrixTypes_Clear_ValidParams() CALL TriDiagMatrixType_reqParams%clear() !Banded Matrix Type CALL BandedMatrixType_reqParams%clear() CALL BandedMatrixType_optParams%clear() !Dense Rectangular Matrix Type CALL DenseRectMatrixType_reqParams%clear() !Dense Square Matrix Type Loading src/MatrixTypes_Native.f90 +30 −19 Original line number Diff line number Diff line Loading @@ -422,6 +422,7 @@ SUBROUTINE init_BandedMatrixParam(matrix,Params) CLASS(BandedMatrixType),INTENT(INOUT) :: matrix CLASS(ParamType),INTENT(IN) :: Params TYPE(ParamType) :: validParams INTEGER(SIK),ALLOCATABLE :: nnzTmp(:) INTEGER(SIK) :: n,m,nnz !Check to set up required and optional param lists. Loading @@ -429,26 +430,37 @@ SUBROUTINE init_BandedMatrixParam(matrix,Params) !Validate against the reqParams and OptParams validParams=Params CALL validParams%validate(BandedMatrixType_reqParams) CALL validParams%validate(BandedMatrixType_reqParams,BandedMatrixType_optParams) ! Pull Data From Parameter List CALL validParams%get('MatrixType->n',n) m=n IF (validParams%has('MatrixType->m')) CALL validParams%get('MatrixType->m',m) CALL validParams%get('MatrixType->nnz',nnz) CALL validParams%clear() IF(.NOT. matrix%isInit) THEN IF(n <= 1) THEN CALL eMatrixType%raiseError('Incorrect input to '//modName//'::'//myName// & ' - Number of rows (n) must be greater than 1!') ELSEIF(m <= 1) THEN ENDIF IF(m <= 1) THEN CALL eMatrixType%raiseError('Incorrect input to '//modName//'::'//myName// & ' - Number of columns (m) must be greater than 1!') ELSEIF(nnz < 1) THEN ENDIF IF(nnz < 1) THEN IF (validParams%has("MatrixType->dnnz") .AND. validParams%has("MatrixType->onnz")) THEN CALL validParams%get("MatrixType->dnnz",nnzTmp) nnz = SUM(nnzTmp) DEALLOCATE(nnzTmp) CALL validParams%get("MatrixType->onnz",nnzTmp) nnz = nnz + SUM(nnzTmp) DEALLOCATE(nnzTmp) ELSE CALL eMatrixType%raiseError('Incorrect input to '//modName//'::'//myName// & ' - Number of nonzero elements (nnz) must be greater than 0!') ELSE ENDIF ENDIF CALL validParams%clear() ALLOCATE(matrix%iTmp(nnz)) ALLOCATE(matrix%jTmp(nnz)) ALLOCATE(matrix%elemTmp(nnz)) Loading @@ -460,7 +472,6 @@ SUBROUTINE init_BandedMatrixParam(matrix,Params) matrix%n=n matrix%m=m matrix%nnz=nnz ENDIF ELSE CALL eMatrixType%raiseError('Incorrect call to '// & modName//'::'//myName//' - MatrixType already initialized') Loading Loading
src/MatrixTypes_Base.f90 +4 −0 Original line number Diff line number Diff line Loading @@ -264,6 +264,9 @@ SUBROUTINE MatrixTypes_Declare_ValidParams() CALL BandedMatrixType_reqParams%add('MatrixType->n',n) CALL BandedMatrixType_reqParams%add('MatrixType->m',m) CALL BandedMatrixType_reqParams%add('MatrixType->nnz',nnz) ! Banded Matrix Type - Optional CALL BandedMatrixType_optParams%add('MatrixType->dnnz',dnnz) CALL BandedMatrixType_optParams%add('MatrixType->onnz',onnz) !Dense Rectangular Matrix Type - Required CALL DenseRectMatrixType_reqParams%add('MatrixType->n',n) CALL DenseRectMatrixType_reqParams%add('MatrixType->m',m) Loading Loading @@ -316,6 +319,7 @@ SUBROUTINE MatrixTypes_Clear_ValidParams() CALL TriDiagMatrixType_reqParams%clear() !Banded Matrix Type CALL BandedMatrixType_reqParams%clear() CALL BandedMatrixType_optParams%clear() !Dense Rectangular Matrix Type CALL DenseRectMatrixType_reqParams%clear() !Dense Square Matrix Type Loading
src/MatrixTypes_Native.f90 +30 −19 Original line number Diff line number Diff line Loading @@ -422,6 +422,7 @@ SUBROUTINE init_BandedMatrixParam(matrix,Params) CLASS(BandedMatrixType),INTENT(INOUT) :: matrix CLASS(ParamType),INTENT(IN) :: Params TYPE(ParamType) :: validParams INTEGER(SIK),ALLOCATABLE :: nnzTmp(:) INTEGER(SIK) :: n,m,nnz !Check to set up required and optional param lists. Loading @@ -429,26 +430,37 @@ SUBROUTINE init_BandedMatrixParam(matrix,Params) !Validate against the reqParams and OptParams validParams=Params CALL validParams%validate(BandedMatrixType_reqParams) CALL validParams%validate(BandedMatrixType_reqParams,BandedMatrixType_optParams) ! Pull Data From Parameter List CALL validParams%get('MatrixType->n',n) m=n IF (validParams%has('MatrixType->m')) CALL validParams%get('MatrixType->m',m) CALL validParams%get('MatrixType->nnz',nnz) CALL validParams%clear() IF(.NOT. matrix%isInit) THEN IF(n <= 1) THEN CALL eMatrixType%raiseError('Incorrect input to '//modName//'::'//myName// & ' - Number of rows (n) must be greater than 1!') ELSEIF(m <= 1) THEN ENDIF IF(m <= 1) THEN CALL eMatrixType%raiseError('Incorrect input to '//modName//'::'//myName// & ' - Number of columns (m) must be greater than 1!') ELSEIF(nnz < 1) THEN ENDIF IF(nnz < 1) THEN IF (validParams%has("MatrixType->dnnz") .AND. validParams%has("MatrixType->onnz")) THEN CALL validParams%get("MatrixType->dnnz",nnzTmp) nnz = SUM(nnzTmp) DEALLOCATE(nnzTmp) CALL validParams%get("MatrixType->onnz",nnzTmp) nnz = nnz + SUM(nnzTmp) DEALLOCATE(nnzTmp) ELSE CALL eMatrixType%raiseError('Incorrect input to '//modName//'::'//myName// & ' - Number of nonzero elements (nnz) must be greater than 0!') ELSE ENDIF ENDIF CALL validParams%clear() ALLOCATE(matrix%iTmp(nnz)) ALLOCATE(matrix%jTmp(nnz)) ALLOCATE(matrix%elemTmp(nnz)) Loading @@ -460,7 +472,6 @@ SUBROUTINE init_BandedMatrixParam(matrix,Params) matrix%n=n matrix%m=m matrix%nnz=nnz ENDIF ELSE CALL eMatrixType%raiseError('Incorrect call to '// & modName//'::'//myName//' - MatrixType already initialized') Loading