#ifndef _PETSC_COMPAT_MAT_H #define _PETSC_COMPAT_MAT_H #define MATBLOCKMAT "blockmat" #define MATCOMPOSITE "composite" #define MATSEQFFTW "seqfftw" #undef __FUNCT__ #define __FUNCT__ "MatSeqBAIJSetPreallocationCSR_233" static PETSC_UNUSED PetscErrorCode MatSeqBAIJSetPreallocationCSR_233(Mat A, PetscInt bs, const PetscInt i[], const PetscInt j[], const PetscScalar v[]) { PetscFunctionBegin; SETERRQ(1,"Not implemented yet"); PetscFunctionReturn(0); } #define MatSeqBAIJSetPreallocationCSR MatSeqBAIJSetPreallocationCSR_233 #define MAT_NEW_NONZERO_LOCATIONS MAT_YES_NEW_NONZERO_LOCATIONS #define MAT_NEW_DIAGONALS MAT_YES_NEW_DIAGONALS #undef __FUNCT__ #define __FUNCT__ "MatSetOption_233" static PETSC_UNUSED PetscErrorCode MatSetOption_233(Mat A,MatOption op,PetscTruth flag) { #define MAT_OPTION_INVALID ((MatOption)(-1)) MatOption o = MAT_OPTION_INVALID; 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; } return MatSetOption(A,o); #undef MAT_OPTION_INVALID } #define MatSetOption MatSetOption_233 #undef __FUNCT__ #define __FUNCT__ "MatIsHermitian_233" static PETSC_UNUSED PetscErrorCode MatIsHermitian_233(Mat A,PetscReal tol,PetscTruth *flg) { return MatIsHermitian(A,flg); } #define MatIsHermitian MatIsHermitian_233 #undef __FUNCT__ #define __FUNCT__ "MatSetOption_233" static PETSC_UNUSED PetscErrorCode MatTranspose_233(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_233 #endif /* _PETSC_COMPAT_MAT_H */