#ifndef _PETSC_COMPAT_MAT_H #define _PETSC_COMPAT_MAT_H #define MATBLOCKMAT "blockmat" #define MATCOMPOSITE "composite" #define MATSEQFFTW "seqfftw" #undef __FUNCT__ #define __FUNCT__ "MatSeqBAIJSetPreallocationCSR_232" static PETSC_UNUSED PetscErrorCode MatSeqBAIJSetPreallocationCSR_232(Mat A, PetscInt bs, const PetscInt i[], const PetscInt j[], const PetscScalar v[]) { PetscFunctionBegin; SETERRQ(1,"Not implemented yet"); PetscFunctionReturn(0); } #define MatSeqBAIJSetPreallocationCSR MatSeqBAIJSetPreallocationCSR_232 #define MAT_ROW_ORIENTED MAT_ROW_ORIENTED #define MAT_NEW_NONZERO_LOCATIONS MAT_YES_NEW_NONZERO_LOCATIONS #define MAT_SYMMETRIC MAT_SYMMETRIC #define MAT_STRUCTURALLY_SYMMETRIC MAT_STRUCTURALLY_SYMMETRIC #define MAT_NEW_DIAGONALS MAT_YES_NEW_DIAGONALS #define MAT_IGNORE_OFF_PROC_ENTRIES MAT_IGNORE_OFF_PROC_ENTRIES #define MAT_NEW_NONZERO_LOCATION_ERR MAT_NEW_NONZERO_LOCATION_ERR #define MAT_NEW_NONZERO_ALLOCATION_ERR MAT_NEW_NONZERO_ALLOCATION_ERR #define MAT_USE_HASH_TABLE MAT_USE_HASH_TABLE #define MAT_KEEP_ZEROED_ROWS MAT_KEEP_ZEROED_ROWS #define MAT_IGNORE_ZERO_ENTRIES MAT_IGNORE_ZERO_ENTRIES #define MAT_USE_INODES MAT_USE_INODES #define MAT_HERMITIAN MAT_HERMITIAN #define MAT_SYMMETRY_ETERNAL MAT_SYMMETRY_ETERNAL #define MAT_USE_COMPRESSEDROW MAT_USE_COMPRESSEDROW #define MAT_IGNORE_LOWER_TRIANGULAR MAT_IGNORE_LOWER_TRIANGULAR #define MAT_ERROR_LOWER_TRIANGULAR MAT_ERROR_LOWER_TRIANGULAR #define MAT_GETROW_UPPERTRIANGULAR MAT_GETROW_UPPERTRIANGULAR #undef __FUNCT__ #define __FUNCT__ "MatSetOption_232" static PETSC_UNUSED PetscErrorCode MatSetOption_232(Mat mat,MatOption op,PetscTruth flag) { #define MAT_OPTION_INVALID ((MatOption)(100)) PetscErrorCode ierr; MatOption o = MAT_OPTION_INVALID; PetscFunctionBegin; PetscValidHeaderSpecific(mat,MAT_COOKIE,1); switch (op) { case MAT_ROW_ORIENTED: o = (flag ? MAT_ROW_ORIENTED : MAT_COLUMN_ORIENTED); break; case MAT_NEW_NONZERO_LOCATIONS: o = (flag ? MAT_YES_NEW_NONZERO_LOCATIONS : MAT_NO_NEW_NONZERO_LOCATIONS); break; case MAT_SYMMETRIC: o = (flag ? MAT_SYMMETRIC : MAT_NOT_SYMMETRIC); break; case MAT_STRUCTURALLY_SYMMETRIC: o = (flag ? MAT_STRUCTURALLY_SYMMETRIC : MAT_NOT_STRUCTURALLY_SYMMETRIC); break; case MAT_NEW_DIAGONALS: o = (flag ? MAT_YES_NEW_DIAGONALS : MAT_NO_NEW_DIAGONALS); break; case MAT_IGNORE_OFF_PROC_ENTRIES: o = (flag ? MAT_IGNORE_OFF_PROC_ENTRIES : MAT_OPTION_INVALID); break; case MAT_NEW_NONZERO_LOCATION_ERR: o = (flag ? MAT_NEW_NONZERO_LOCATION_ERR : MAT_OPTION_INVALID); break; case MAT_NEW_NONZERO_ALLOCATION_ERR: o = (flag ? MAT_NEW_NONZERO_ALLOCATION_ERR : MAT_OPTION_INVALID); break; case MAT_USE_HASH_TABLE: o = (flag ? MAT_USE_HASH_TABLE : MAT_OPTION_INVALID); break; case MAT_KEEP_ZEROED_ROWS: o = (flag ? MAT_KEEP_ZEROED_ROWS : MAT_OPTION_INVALID); break; case MAT_IGNORE_ZERO_ENTRIES: o = (flag ? MAT_IGNORE_ZERO_ENTRIES : MAT_OPTION_INVALID); break; case MAT_USE_INODES: o = (flag ? MAT_USE_INODES : MAT_DO_NOT_USE_INODES); break; case MAT_HERMITIAN: o = (flag ? MAT_HERMITIAN: MAT_NOT_HERMITIAN); break; case MAT_SYMMETRY_ETERNAL: o = (flag ? MAT_SYMMETRY_ETERNAL : MAT_NOT_SYMMETRY_ETERNAL); break; case MAT_USE_COMPRESSEDROW: o = (flag ? MAT_USE_COMPRESSEDROW : MAT_DO_NOT_USE_COMPRESSEDROW); break; case MAT_IGNORE_LOWER_TRIANGULAR: o = (flag ? MAT_IGNORE_LOWER_TRIANGULAR : MAT_OPTION_INVALID); break; case MAT_ERROR_LOWER_TRIANGULAR: o = (flag ? MAT_ERROR_LOWER_TRIANGULAR : MAT_OPTION_INVALID); break; case MAT_GETROW_UPPERTRIANGULAR: o = (flag ? MAT_GETROW_UPPERTRIANGULAR : MAT_OPTION_INVALID); break; default: o = op; break; } if (o == MAT_OPTION_INVALID) { SETERRQ(1, "option and flag combination unsupported"); PetscFunctionReturn(1); } ierr = MatSetOption(mat,o);CHKERRQ(ierr); PetscFunctionReturn(0); #undef MAT_OPTION_INVALID } #define MatSetOption MatSetOption_232 #undef __FUNCT__ #define __FUNCT__ "MatIsHermitian_232" static PETSC_UNUSED PetscErrorCode MatIsHermitian_232(Mat A,PetscReal tol,PetscTruth *flg) { return MatIsHermitian(A,flg); } #define MatIsHermitian MatIsHermitian_232 #define MatGetRowIJ(mat,shift,symm,bc,n,ia,ja,done) \ MatGetRowIJ(mat,shift,symm,n,ia,ja,done) #define MatRestoreRowIJ(mat,shift,symm,bc,n,ia,ja,done) \ MatRestoreRowIJ(mat,shift,symm,n,ia,ja,done) #define MatGetColumnIJ(mat,shift,symm,bc,n,ia,ja,done) \ MatGetColumnIJ(mat,shift,symm,n,ia,ja,done) #define MatRestoreColumnIJ(mat,shift,symm,bc,n,ia,ja,done) \ MatRestoreColumnIJ(mat,shift,symm,n,ia,ja,done) #undef __FUNCT__ #define __FUNCT__ "MatSetOption_232" static PETSC_UNUSED PetscErrorCode MatTranspose_232(Mat mat,MatReuse reuse,Mat *B) { PetscErrorCode ierr; PetscFunctionBegin; PetscValidHeaderSpecific(mat,MAT_COOKIE,1); PetscValidPointer(B,3); if (mat == *B) { /* always in-place */ ierr= MatTranspose(mat,PETSC_NULL);CHKERRQ(ierr); PetscFunctionReturn(ierr); } else { if (reuse == MAT_INITIAL_MATRIX) { ierr = MatTranspose(mat,B);CHKERRQ(ierr); PetscFunctionReturn(ierr); } else { SETERRQ(PETSC_ERR_SUP,"MAT_REUSE_MATRIX only supported for in-place transpose currently"); PetscFunctionReturn(PETSC_ERR_SUP); } } PetscFunctionReturn(0); } #define MatTranspose MatTranspose_232 #endif /* _PETSC_COMPAT_MAT_H */