Lines Matching refs:A
13 PetscErrorCode MatSeqDenseSymmetrize_Private(Mat A, PetscBool hermitian) in MatSeqDenseSymmetrize_Private() argument
15 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatSeqDenseSymmetrize_Private()
16 PetscInt j, k, n = A->rmap->n; in MatSeqDenseSymmetrize_Private()
20 …PetscCheck(A->rmap->n == A->cmap->n, PetscObjectComm((PetscObject)A), PETSC_ERR_SUP, "Cannot symme… in MatSeqDenseSymmetrize_Private()
21 PetscCall(MatDenseGetArray(A, &v)); in MatSeqDenseSymmetrize_Private()
31 PetscCall(MatDenseRestoreArray(A, &v)); in MatSeqDenseSymmetrize_Private()
35 PetscErrorCode MatSeqDenseInvertFactors_Private(Mat A) in MatSeqDenseInvertFactors_Private() argument
37 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatSeqDenseInvertFactors_Private()
41 if (!A->rmap->n || !A->cmap->n) PetscFunctionReturn(PETSC_SUCCESS); in MatSeqDenseInvertFactors_Private()
42 PetscCall(PetscBLASIntCast(A->cmap->n, &n)); in MatSeqDenseInvertFactors_Private()
43 if (A->factortype == MAT_FACTOR_LU) { in MatSeqDenseInvertFactors_Private()
52 PetscCall(PetscLogFlops((1.0 * A->cmap->n * A->cmap->n * A->cmap->n) / 3.0)); in MatSeqDenseInvertFactors_Private()
53 } else if (A->factortype == MAT_FACTOR_CHOLESKY) { in MatSeqDenseInvertFactors_Private()
54 if (A->spd == PETSC_BOOL3_TRUE) { in MatSeqDenseInvertFactors_Private()
58 PetscCall(MatSeqDenseSymmetrize_Private(A, PETSC_TRUE)); in MatSeqDenseInvertFactors_Private()
60 } else if (A->hermitian == PETSC_BOOL3_TRUE) { in MatSeqDenseInvertFactors_Private()
66 PetscCall(MatSeqDenseSymmetrize_Private(A, PETSC_TRUE)); in MatSeqDenseInvertFactors_Private()
74 PetscCall(MatSeqDenseSymmetrize_Private(A, PETSC_FALSE)); in MatSeqDenseInvertFactors_Private()
77 PetscCall(PetscLogFlops((1.0 * A->cmap->n * A->cmap->n * A->cmap->n) / 3.0)); in MatSeqDenseInvertFactors_Private()
80 A->ops->solve = NULL; in MatSeqDenseInvertFactors_Private()
81 A->ops->matsolve = NULL; in MatSeqDenseInvertFactors_Private()
82 A->ops->solvetranspose = NULL; in MatSeqDenseInvertFactors_Private()
83 A->ops->matsolvetranspose = NULL; in MatSeqDenseInvertFactors_Private()
84 A->ops->solveadd = NULL; in MatSeqDenseInvertFactors_Private()
85 A->ops->solvetransposeadd = NULL; in MatSeqDenseInvertFactors_Private()
86 A->factortype = MAT_FACTOR_NONE; in MatSeqDenseInvertFactors_Private()
87 PetscCall(PetscFree(A->solvertype)); in MatSeqDenseInvertFactors_Private()
91 static PetscErrorCode MatZeroRowsColumns_SeqDense(Mat A, PetscInt N, const PetscInt rows[], PetscSc… in MatZeroRowsColumns_SeqDense() argument
93 Mat_SeqDense *l = (Mat_SeqDense *)A->data; in MatZeroRowsColumns_SeqDense()
94 PetscInt m = l->lda, n = A->cmap->n, r = A->rmap->n, i, j; in MatZeroRowsColumns_SeqDense()
102 …A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Row %" PetscInt_FMT " requested to be zero… in MatZeroRowsColumns_SeqDense()
103 …A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Col %" PetscInt_FMT " requested to be zero… in MatZeroRowsColumns_SeqDense()
112 …PetscCheck(A->rmap->n == A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_SUP, "Only coded for square matric… in MatZeroRowsColumns_SeqDense()
116 PetscCall(MatMultAdd(A, xt, b, b)); in MatZeroRowsColumns_SeqDense()
125 PetscCall(MatDenseGetArray(A, &v)); in MatZeroRowsColumns_SeqDense()
138 …PetscCheck(A->rmap->n == A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_SUP, "Only coded for square matric… in MatZeroRowsColumns_SeqDense()
144 PetscCall(MatDenseRestoreArray(A, &v)); in MatZeroRowsColumns_SeqDense()
148 PETSC_INTERN PetscErrorCode MatConvert_SeqAIJ_SeqDense(Mat A, MatType newtype, MatReuse reuse, Mat … in MatConvert_SeqAIJ_SeqDense() argument
151 Mat_SeqAIJ *a = (Mat_SeqAIJ *)A->data; in MatConvert_SeqAIJ_SeqDense()
153 PetscInt *ai = a->i, *aj = a->j, m = A->rmap->N, n = A->cmap->N, i; in MatConvert_SeqAIJ_SeqDense()
163 PetscCall(MatCreate(PetscObjectComm((PetscObject)A), &B)); in MatConvert_SeqAIJ_SeqDense()
172 PetscCall(MatSeqAIJGetArrayRead(A, &av)); in MatConvert_SeqAIJ_SeqDense()
182 PetscCall(MatSeqAIJRestoreArrayRead(A, &av)); in MatConvert_SeqAIJ_SeqDense()
187 PetscCall(MatHeaderReplace(A, &B)); in MatConvert_SeqAIJ_SeqDense()
196 PETSC_INTERN PetscErrorCode MatConvert_SeqDense_SeqAIJ(Mat A, MatType newtype, MatReuse reuse, Mat … in MatConvert_SeqDense_SeqAIJ() argument
199 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatConvert_SeqDense_SeqAIJ()
205 PetscCall(PetscCalloc3(A->rmap->n, &rows, A->rmap->n, &nnz, A->rmap->n, &vals)); in MatConvert_SeqDense_SeqAIJ()
207 PetscCall(MatCreate(PetscObjectComm((PetscObject)A), &B)); in MatConvert_SeqDense_SeqAIJ()
208 PetscCall(MatSetSizes(B, A->rmap->n, A->cmap->n, A->rmap->N, A->cmap->N)); in MatConvert_SeqDense_SeqAIJ()
210 for (j = 0; j < A->cmap->n; j++) { in MatConvert_SeqDense_SeqAIJ()
211 for (i = 0; i < A->rmap->n; i++) in MatConvert_SeqDense_SeqAIJ()
212 if (aa[i] != 0.0 || (i == j && A->cmap->n == A->rmap->n)) ++nnz[i]; in MatConvert_SeqDense_SeqAIJ()
218 for (j = 0; j < A->cmap->n; j++) { in MatConvert_SeqDense_SeqAIJ()
220 for (i = 0; i < A->rmap->n; i++) in MatConvert_SeqDense_SeqAIJ()
221 if (aa[i] != 0.0 || (i == j && A->cmap->n == A->rmap->n)) { in MatConvert_SeqDense_SeqAIJ()
232 if (reuse == MAT_INPLACE_MATRIX) PetscCall(MatHeaderReplace(A, &B)); in MatConvert_SeqDense_SeqAIJ()
262 static PetscErrorCode MatGetInfo_SeqDense(Mat A, MatInfoType flag, MatInfo *info) in MatGetInfo_SeqDense() argument
264 PetscLogDouble N = A->rmap->n * A->cmap->n; in MatGetInfo_SeqDense()
271 info->assemblies = A->num_ass; in MatGetInfo_SeqDense()
280 PetscErrorCode MatScale_SeqDense(Mat A, PetscScalar alpha) in MatScale_SeqDense() argument
282 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatScale_SeqDense()
287 PetscCall(MatDenseGetArray(A, &v)); in MatScale_SeqDense()
289 if (lda > A->rmap->n) { in MatScale_SeqDense()
290 PetscCall(PetscBLASIntCast(A->rmap->n, &nz)); in MatScale_SeqDense()
291 …for (j = 0; j < A->cmap->n; j++) PetscCallBLAS("BLASscal", BLASscal_(&nz, &alpha, v + j * lda, &on… in MatScale_SeqDense()
293 PetscCall(PetscBLASIntCast(A->rmap->n * A->cmap->n, &nz)); in MatScale_SeqDense()
296 PetscCall(PetscLogFlops(A->rmap->n * A->cmap->n)); in MatScale_SeqDense()
297 PetscCall(MatDenseRestoreArray(A, &v)); in MatScale_SeqDense()
301 PetscErrorCode MatShift_SeqDense(Mat A, PetscScalar alpha) in MatShift_SeqDense() argument
303 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatShift_SeqDense()
308 PetscCall(MatDenseGetArray(A, &v)); in MatShift_SeqDense()
309 k = PetscMin(A->rmap->n, A->cmap->n); in MatShift_SeqDense()
312 PetscCall(MatDenseRestoreArray(A, &v)); in MatShift_SeqDense()
316 static PetscErrorCode MatIsHermitian_SeqDense(Mat A, PetscReal rtol, PetscBool *fl) in MatIsHermitian_SeqDense() argument
318 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatIsHermitian_SeqDense()
319 PetscInt i, j, m = A->rmap->n, N = a->lda; in MatIsHermitian_SeqDense()
324 if (A->rmap->n != A->cmap->n) PetscFunctionReturn(PETSC_SUCCESS); in MatIsHermitian_SeqDense()
325 PetscCall(MatDenseGetArrayRead(A, &v)); in MatIsHermitian_SeqDense()
333 PetscCall(MatDenseRestoreArrayRead(A, &v)); in MatIsHermitian_SeqDense()
337 static PetscErrorCode MatIsSymmetric_SeqDense(Mat A, PetscReal rtol, PetscBool *fl) in MatIsSymmetric_SeqDense() argument
339 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatIsSymmetric_SeqDense()
340 PetscInt i, j, m = A->rmap->n, N = a->lda; in MatIsSymmetric_SeqDense()
345 if (A->rmap->n != A->cmap->n) PetscFunctionReturn(PETSC_SUCCESS); in MatIsSymmetric_SeqDense()
346 PetscCall(MatDenseGetArrayRead(A, &v)); in MatIsSymmetric_SeqDense()
354 PetscCall(MatDenseRestoreArrayRead(A, &v)); in MatIsSymmetric_SeqDense()
358 PetscErrorCode MatDuplicateNoCreate_SeqDense(Mat newi, Mat A, MatDuplicateOption cpvalues) in MatDuplicateNoCreate_SeqDense() argument
360 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatDuplicateNoCreate_SeqDense()
365 PetscCall(PetscLayoutReference(A->rmap, &newi->rmap)); in MatDuplicateNoCreate_SeqDense()
366 PetscCall(PetscLayoutReference(A->cmap, &newi->cmap)); in MatDuplicateNoCreate_SeqDense()
376 PetscCall(MatDenseGetArrayRead(A, &av)); in MatDuplicateNoCreate_SeqDense()
379 m = A->rmap->n; in MatDuplicateNoCreate_SeqDense()
381 …for (j = 0; j < A->cmap->n; j++) PetscCall(PetscArraycpy(PetscSafePointerPlusOffset(v, j * nlda), … in MatDuplicateNoCreate_SeqDense()
383 PetscCall(PetscArraycpy(v, av, A->rmap->n * A->cmap->n)); in MatDuplicateNoCreate_SeqDense()
386 PetscCall(MatDenseRestoreArrayRead(A, &av)); in MatDuplicateNoCreate_SeqDense()
387 PetscCall(MatPropagateSymmetryOptions(A, newi)); in MatDuplicateNoCreate_SeqDense()
392 PetscErrorCode MatDuplicate_SeqDense(Mat A, MatDuplicateOption cpvalues, Mat *newmat) in MatDuplicate_SeqDense() argument
395 PetscCall(MatCreate(PetscObjectComm((PetscObject)A), newmat)); in MatDuplicate_SeqDense()
396 PetscCall(MatSetSizes(*newmat, A->rmap->n, A->cmap->n, A->rmap->n, A->cmap->n)); in MatDuplicate_SeqDense()
397 PetscCall(MatSetType(*newmat, ((PetscObject)A)->type_name)); in MatDuplicate_SeqDense()
398 PetscCall(MatDuplicateNoCreate_SeqDense(*newmat, A, cpvalues)); in MatDuplicate_SeqDense()
402 static PetscErrorCode MatSolve_SeqDense_Internal_LU(Mat A, PetscScalar *x, PetscBLASInt ldx, PetscB… in MatSolve_SeqDense_Internal_LU() argument
404 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatSolve_SeqDense_Internal_LU()
416 static PetscErrorCode MatSolve_SeqDense_Internal_Cholesky(Mat A, PetscScalar *x, PetscBLASInt ldx, … in MatSolve_SeqDense_Internal_Cholesky() argument
418 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatSolve_SeqDense_Internal_Cholesky()
422 if (A->spd == PETSC_BOOL3_TRUE) { in MatSolve_SeqDense_Internal_Cholesky()
423 if (PetscDefined(USE_COMPLEX) && T) PetscCall(MatConjugate_SeqDense(A)); in MatSolve_SeqDense_Internal_Cholesky()
428 if (PetscDefined(USE_COMPLEX) && T) PetscCall(MatConjugate_SeqDense(A)); in MatSolve_SeqDense_Internal_Cholesky()
430 } else if (A->hermitian == PETSC_BOOL3_TRUE) { in MatSolve_SeqDense_Internal_Cholesky()
431 if (T) PetscCall(MatConjugate_SeqDense(A)); in MatSolve_SeqDense_Internal_Cholesky()
436 if (T) PetscCall(MatConjugate_SeqDense(A)); in MatSolve_SeqDense_Internal_Cholesky()
448 static PetscErrorCode MatSolve_SeqDense_Internal_QR(Mat A, PetscScalar *x, PetscBLASInt ldx, PetscB… in MatSolve_SeqDense_Internal_QR() argument
450 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatSolve_SeqDense_Internal_QR()
487 static PetscErrorCode MatSolveTranspose_SeqDense_Internal_QR(Mat A, PetscScalar *x, PetscBLASInt ld… in MatSolveTranspose_SeqDense_Internal_QR() argument
489 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatSolveTranspose_SeqDense_Internal_QR()
493 if (A->rmap->n == A->cmap->n && mat->rank == A->rmap->n) { in MatSolveTranspose_SeqDense_Internal_QR()
498 if (PetscDefined(USE_COMPLEX)) PetscCall(MatConjugate_SeqDense(A)); in MatSolveTranspose_SeqDense_Internal_QR()
515 if (PetscDefined(USE_COMPLEX)) PetscCall(MatConjugate_SeqDense(A)); in MatSolveTranspose_SeqDense_Internal_QR()
521 static PetscErrorCode MatSolve_SeqDense_SetUp(Mat A, Vec xx, Vec yy, PetscScalar **_y, PetscBLASInt… in MatSolve_SeqDense_SetUp() argument
523 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatSolve_SeqDense_SetUp()
528 PetscCall(PetscBLASIntCast(A->rmap->n, &m)); in MatSolve_SeqDense_SetUp()
529 PetscCall(PetscBLASIntCast(A->cmap->n, &k)); in MatSolve_SeqDense_SetUp()
543 static PetscErrorCode MatSolve_SeqDense_TearDown(Mat A, Vec xx, Vec yy, PetscScalar **_y, PetscBLAS… in MatSolve_SeqDense_TearDown() argument
545 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatSolve_SeqDense_TearDown()
566 static PetscErrorCode MatSolve_SeqDense_LU(Mat A, Vec xx, Vec yy) in MatSolve_SeqDense_LU() argument
572 PetscCall(MatSolve_SeqDense_SetUp(A, xx, yy, &y, &m, &k)); in MatSolve_SeqDense_LU()
573 PetscCall(MatSolve_SeqDense_Internal_LU(A, y, m, m, 1, k, PETSC_FALSE)); in MatSolve_SeqDense_LU()
574 PetscCall(MatSolve_SeqDense_TearDown(A, xx, yy, &y, &m, &k)); in MatSolve_SeqDense_LU()
578 static PetscErrorCode MatSolveTranspose_SeqDense_LU(Mat A, Vec xx, Vec yy) in MatSolveTranspose_SeqDense_LU() argument
584 PetscCall(MatSolve_SeqDense_SetUp(A, xx, yy, &y, &m, &k)); in MatSolveTranspose_SeqDense_LU()
585 PetscCall(MatSolve_SeqDense_Internal_LU(A, y, m, m, 1, k, PETSC_TRUE)); in MatSolveTranspose_SeqDense_LU()
586 PetscCall(MatSolve_SeqDense_TearDown(A, xx, yy, &y, &m, &k)); in MatSolveTranspose_SeqDense_LU()
590 static PetscErrorCode MatSolve_SeqDense_Cholesky(Mat A, Vec xx, Vec yy) in MatSolve_SeqDense_Cholesky() argument
596 PetscCall(MatSolve_SeqDense_SetUp(A, xx, yy, &y, &m, &k)); in MatSolve_SeqDense_Cholesky()
597 PetscCall(MatSolve_SeqDense_Internal_Cholesky(A, y, m, m, 1, k, PETSC_FALSE)); in MatSolve_SeqDense_Cholesky()
598 PetscCall(MatSolve_SeqDense_TearDown(A, xx, yy, &y, &m, &k)); in MatSolve_SeqDense_Cholesky()
602 static PetscErrorCode MatSolveTranspose_SeqDense_Cholesky(Mat A, Vec xx, Vec yy) in MatSolveTranspose_SeqDense_Cholesky() argument
608 PetscCall(MatSolve_SeqDense_SetUp(A, xx, yy, &y, &m, &k)); in MatSolveTranspose_SeqDense_Cholesky()
609 PetscCall(MatSolve_SeqDense_Internal_Cholesky(A, y, m, m, 1, k, PETSC_TRUE)); in MatSolveTranspose_SeqDense_Cholesky()
610 PetscCall(MatSolve_SeqDense_TearDown(A, xx, yy, &y, &m, &k)); in MatSolveTranspose_SeqDense_Cholesky()
614 static PetscErrorCode MatSolve_SeqDense_QR(Mat A, Vec xx, Vec yy) in MatSolve_SeqDense_QR() argument
620 PetscCall(MatSolve_SeqDense_SetUp(A, xx, yy, &y, &m, &k)); in MatSolve_SeqDense_QR()
621 PetscCall(MatSolve_SeqDense_Internal_QR(A, y, PetscMax(m, k), m, 1, k)); in MatSolve_SeqDense_QR()
622 PetscCall(MatSolve_SeqDense_TearDown(A, xx, yy, &y, &m, &k)); in MatSolve_SeqDense_QR()
626 static PetscErrorCode MatSolveTranspose_SeqDense_QR(Mat A, Vec xx, Vec yy) in MatSolveTranspose_SeqDense_QR() argument
632 PetscCall(MatSolve_SeqDense_SetUp(A, xx, yy, &y, &m, &k)); in MatSolveTranspose_SeqDense_QR()
633 PetscCall(MatSolveTranspose_SeqDense_Internal_QR(A, y, PetscMax(m, k), m, 1, k)); in MatSolveTranspose_SeqDense_QR()
634 PetscCall(MatSolve_SeqDense_TearDown(A, xx, yy, &y, &m, &k)); in MatSolveTranspose_SeqDense_QR()
638 static PetscErrorCode MatMatSolve_SeqDense_SetUp(Mat A, Mat B, Mat X, PetscScalar **_y, PetscBLASIn… in MatMatSolve_SeqDense_SetUp() argument
651 PetscCall(PetscBLASIntCast(A->rmap->n, &m)); in MatMatSolve_SeqDense_SetUp()
652 PetscCall(PetscBLASIntCast(A->cmap->n, &k)); in MatMatSolve_SeqDense_SetUp()
689 static PetscErrorCode MatMatSolve_SeqDense_TearDown(Mat A, Mat B, Mat X, PetscScalar **_y, PetscBLA… in MatMatSolve_SeqDense_TearDown() argument
715 static PetscErrorCode MatMatSolve_SeqDense_LU(Mat A, Mat B, Mat X) in MatMatSolve_SeqDense_LU() argument
721 PetscCall(MatMatSolve_SeqDense_SetUp(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolve_SeqDense_LU()
722 PetscCall(MatSolve_SeqDense_Internal_LU(A, y, ldy, m, nrhs, k, PETSC_FALSE)); in MatMatSolve_SeqDense_LU()
723 PetscCall(MatMatSolve_SeqDense_TearDown(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolve_SeqDense_LU()
727 static PetscErrorCode MatMatSolveTranspose_SeqDense_LU(Mat A, Mat B, Mat X) in MatMatSolveTranspose_SeqDense_LU() argument
733 PetscCall(MatMatSolve_SeqDense_SetUp(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolveTranspose_SeqDense_LU()
734 PetscCall(MatSolve_SeqDense_Internal_LU(A, y, ldy, m, nrhs, k, PETSC_TRUE)); in MatMatSolveTranspose_SeqDense_LU()
735 PetscCall(MatMatSolve_SeqDense_TearDown(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolveTranspose_SeqDense_LU()
739 static PetscErrorCode MatMatSolve_SeqDense_Cholesky(Mat A, Mat B, Mat X) in MatMatSolve_SeqDense_Cholesky() argument
745 PetscCall(MatMatSolve_SeqDense_SetUp(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolve_SeqDense_Cholesky()
746 PetscCall(MatSolve_SeqDense_Internal_Cholesky(A, y, ldy, m, nrhs, k, PETSC_FALSE)); in MatMatSolve_SeqDense_Cholesky()
747 PetscCall(MatMatSolve_SeqDense_TearDown(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolve_SeqDense_Cholesky()
751 static PetscErrorCode MatMatSolveTranspose_SeqDense_Cholesky(Mat A, Mat B, Mat X) in MatMatSolveTranspose_SeqDense_Cholesky() argument
757 PetscCall(MatMatSolve_SeqDense_SetUp(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolveTranspose_SeqDense_Cholesky()
758 PetscCall(MatSolve_SeqDense_Internal_Cholesky(A, y, ldy, m, nrhs, k, PETSC_TRUE)); in MatMatSolveTranspose_SeqDense_Cholesky()
759 PetscCall(MatMatSolve_SeqDense_TearDown(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolveTranspose_SeqDense_Cholesky()
763 static PetscErrorCode MatMatSolve_SeqDense_QR(Mat A, Mat B, Mat X) in MatMatSolve_SeqDense_QR() argument
769 PetscCall(MatMatSolve_SeqDense_SetUp(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolve_SeqDense_QR()
770 PetscCall(MatSolve_SeqDense_Internal_QR(A, y, ldy, m, nrhs, k)); in MatMatSolve_SeqDense_QR()
771 PetscCall(MatMatSolve_SeqDense_TearDown(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolve_SeqDense_QR()
775 static PetscErrorCode MatMatSolveTranspose_SeqDense_QR(Mat A, Mat B, Mat X) in MatMatSolveTranspose_SeqDense_QR() argument
781 PetscCall(MatMatSolve_SeqDense_SetUp(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolveTranspose_SeqDense_QR()
782 PetscCall(MatSolveTranspose_SeqDense_Internal_QR(A, y, ldy, m, nrhs, k)); in MatMatSolveTranspose_SeqDense_QR()
783 PetscCall(MatMatSolve_SeqDense_TearDown(A, B, X, &y, &ldy, &m, &nrhs, &k)); in MatMatSolveTranspose_SeqDense_QR()
789 PetscErrorCode MatLUFactor_SeqDense(Mat A, IS row, IS col, PETSC_UNUSED const MatFactorInfo *minfo) in MatLUFactor_SeqDense() argument
791 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatLUFactor_SeqDense()
795 PetscCall(PetscBLASIntCast(A->cmap->n, &n)); in MatLUFactor_SeqDense()
796 PetscCall(PetscBLASIntCast(A->rmap->n, &m)); in MatLUFactor_SeqDense()
797 if (!mat->pivots) PetscCall(PetscMalloc1(A->rmap->n, &mat->pivots)); in MatLUFactor_SeqDense()
798 if (!A->rmap->n || !A->cmap->n) PetscFunctionReturn(PETSC_SUCCESS); in MatLUFactor_SeqDense()
806 A->ops->solve = MatSolve_SeqDense_LU; in MatLUFactor_SeqDense()
807 A->ops->matsolve = MatMatSolve_SeqDense_LU; in MatLUFactor_SeqDense()
808 A->ops->solvetranspose = MatSolveTranspose_SeqDense_LU; in MatLUFactor_SeqDense()
809 A->ops->matsolvetranspose = MatMatSolveTranspose_SeqDense_LU; in MatLUFactor_SeqDense()
810 A->factortype = MAT_FACTOR_LU; in MatLUFactor_SeqDense()
812 PetscCall(PetscFree(A->solvertype)); in MatLUFactor_SeqDense()
813 PetscCall(PetscStrallocpy(MATSOLVERPETSC, &A->solvertype)); in MatLUFactor_SeqDense()
815 PetscCall(PetscLogFlops((2.0 * A->cmap->n * A->cmap->n * A->cmap->n) / 3)); in MatLUFactor_SeqDense()
819 static PetscErrorCode MatLUFactorNumeric_SeqDense(Mat fact, Mat A, const MatFactorInfo *info) in MatLUFactorNumeric_SeqDense() argument
822 PetscCall(MatDuplicateNoCreate_SeqDense(fact, A, MAT_COPY_VALUES)); in MatLUFactorNumeric_SeqDense()
827 PetscErrorCode MatLUFactorSymbolic_SeqDense(Mat fact, Mat A, IS row, IS col, PETSC_UNUSED const Mat… in MatLUFactorSymbolic_SeqDense() argument
837 PetscErrorCode MatCholeskyFactor_SeqDense(Mat A, IS perm, PETSC_UNUSED const MatFactorInfo *minfo) in MatCholeskyFactor_SeqDense() argument
839 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatCholeskyFactor_SeqDense()
843 PetscCall(PetscBLASIntCast(A->cmap->n, &n)); in MatCholeskyFactor_SeqDense()
844 if (!A->rmap->n || !A->cmap->n) PetscFunctionReturn(PETSC_SUCCESS); in MatCholeskyFactor_SeqDense()
845 if (A->spd == PETSC_BOOL3_TRUE) { in MatCholeskyFactor_SeqDense()
850 } else if (A->hermitian == PETSC_BOOL3_TRUE) { in MatCholeskyFactor_SeqDense()
851 if (!mat->pivots) PetscCall(PetscMalloc1(A->rmap->n, &mat->pivots)); in MatCholeskyFactor_SeqDense()
867 if (!mat->pivots) PetscCall(PetscMalloc1(A->rmap->n, &mat->pivots)); in MatCholeskyFactor_SeqDense()
884 A->ops->solve = MatSolve_SeqDense_Cholesky; in MatCholeskyFactor_SeqDense()
885 A->ops->matsolve = MatMatSolve_SeqDense_Cholesky; in MatCholeskyFactor_SeqDense()
886 A->ops->solvetranspose = MatSolveTranspose_SeqDense_Cholesky; in MatCholeskyFactor_SeqDense()
887 A->ops->matsolvetranspose = MatMatSolveTranspose_SeqDense_Cholesky; in MatCholeskyFactor_SeqDense()
888 A->factortype = MAT_FACTOR_CHOLESKY; in MatCholeskyFactor_SeqDense()
890 PetscCall(PetscFree(A->solvertype)); in MatCholeskyFactor_SeqDense()
891 PetscCall(PetscStrallocpy(MATSOLVERPETSC, &A->solvertype)); in MatCholeskyFactor_SeqDense()
893 PetscCall(PetscLogFlops((1.0 * A->cmap->n * A->cmap->n * A->cmap->n) / 3.0)); in MatCholeskyFactor_SeqDense()
897 static PetscErrorCode MatCholeskyFactorNumeric_SeqDense(Mat fact, Mat A, const MatFactorInfo *info) in MatCholeskyFactorNumeric_SeqDense() argument
900 PetscCall(MatDuplicateNoCreate_SeqDense(fact, A, MAT_COPY_VALUES)); in MatCholeskyFactorNumeric_SeqDense()
905 PetscErrorCode MatCholeskyFactorSymbolic_SeqDense(Mat fact, Mat A, IS row, const MatFactorInfo *inf… in MatCholeskyFactorSymbolic_SeqDense() argument
914 PetscErrorCode MatQRFactor_SeqDense(Mat A, IS col, PETSC_UNUSED const MatFactorInfo *minfo) in MatQRFactor_SeqDense() argument
916 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatQRFactor_SeqDense()
920 PetscCall(PetscBLASIntCast(A->cmap->n, &n)); in MatQRFactor_SeqDense()
921 PetscCall(PetscBLASIntCast(A->rmap->n, &m)); in MatQRFactor_SeqDense()
926 if (!mat->qrrhs) PetscCall(MatCreateVecs(A, NULL, &mat->qrrhs)); in MatQRFactor_SeqDense()
927 if (!A->rmap->n || !A->cmap->n) PetscFunctionReturn(PETSC_SUCCESS); in MatQRFactor_SeqDense()
945 A->ops->solve = MatSolve_SeqDense_QR; in MatQRFactor_SeqDense()
946 A->ops->matsolve = MatMatSolve_SeqDense_QR; in MatQRFactor_SeqDense()
947 A->factortype = MAT_FACTOR_QR; in MatQRFactor_SeqDense()
949 A->ops->solvetranspose = MatSolveTranspose_SeqDense_QR; in MatQRFactor_SeqDense()
950 A->ops->matsolvetranspose = MatMatSolveTranspose_SeqDense_QR; in MatQRFactor_SeqDense()
953 PetscCall(PetscFree(A->solvertype)); in MatQRFactor_SeqDense()
954 PetscCall(PetscStrallocpy(MATSOLVERPETSC, &A->solvertype)); in MatQRFactor_SeqDense()
960 static PetscErrorCode MatQRFactorNumeric_SeqDense(Mat fact, Mat A, const MatFactorInfo *info) in MatQRFactorNumeric_SeqDense() argument
963 PetscCall(MatDuplicateNoCreate_SeqDense(fact, A, MAT_COPY_VALUES)); in MatQRFactorNumeric_SeqDense()
968 PetscErrorCode MatQRFactorSymbolic_SeqDense(Mat fact, Mat A, IS row, const MatFactorInfo *info) in MatQRFactorSymbolic_SeqDense() argument
978 PETSC_INTERN PetscErrorCode MatGetFactor_seqdense_petsc(Mat A, MatFactorType ftype, Mat *fact) in MatGetFactor_seqdense_petsc() argument
981 PetscCall(MatCreate(PetscObjectComm((PetscObject)A), fact)); in MatGetFactor_seqdense_petsc()
982 PetscCall(MatSetSizes(*fact, A->rmap->n, A->cmap->n, A->rmap->n, A->cmap->n)); in MatGetFactor_seqdense_petsc()
1004 static PetscErrorCode MatSOR_SeqDense(Mat A, Vec bb, PetscReal omega, MatSORType flag, PetscReal sh… in MatSOR_SeqDense() argument
1006 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatSOR_SeqDense()
1009 PetscInt m = A->rmap->n, i; in MatSOR_SeqDense()
1014 …PetscCheck(A->offloadmask != PETSC_OFFLOAD_GPU, PETSC_COMM_SELF, PETSC_ERR_SUP, "Not implemented"); in MatSOR_SeqDense()
1045 PETSC_INTERN PetscErrorCode MatMultColumnRangeKernel_SeqDense(Mat A, Vec xx, Vec yy, PetscInt c_sta… in MatMultColumnRangeKernel_SeqDense() argument
1047 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatMultColumnRangeKernel_SeqDense()
1053 PetscCall(PetscBLASIntCast(A->rmap->n, &m)); in MatMultColumnRangeKernel_SeqDense()
1077 PetscErrorCode MatMultHermitianTransposeColumnRange_SeqDense(Mat A, Vec xx, Vec yy, PetscInt c_star… in MatMultHermitianTransposeColumnRange_SeqDense() argument
1080 PetscCall(MatMultColumnRangeKernel_SeqDense(A, xx, yy, c_start, c_end, PETSC_TRUE, PETSC_TRUE)); in MatMultHermitianTransposeColumnRange_SeqDense()
1084 PetscErrorCode MatMult_SeqDense(Mat A, Vec xx, Vec yy) in MatMult_SeqDense() argument
1087 PetscCall(MatMultColumnRangeKernel_SeqDense(A, xx, yy, 0, A->cmap->n, PETSC_FALSE, PETSC_FALSE)); in MatMult_SeqDense()
1091 PetscErrorCode MatMultTranspose_SeqDense(Mat A, Vec xx, Vec yy) in MatMultTranspose_SeqDense() argument
1094 PetscCall(MatMultColumnRangeKernel_SeqDense(A, xx, yy, 0, A->cmap->n, PETSC_TRUE, PETSC_FALSE)); in MatMultTranspose_SeqDense()
1098 PetscErrorCode MatMultHermitianTranspose_SeqDense(Mat A, Vec xx, Vec yy) in MatMultHermitianTranspose_SeqDense() argument
1101 PetscCall(MatMultColumnRangeKernel_SeqDense(A, xx, yy, 0, A->cmap->n, PETSC_TRUE, PETSC_TRUE)); in MatMultHermitianTranspose_SeqDense()
1105 PETSC_INTERN PetscErrorCode MatMultAddColumnRangeKernel_SeqDense(Mat A, Vec xx, Vec zz, Vec yy, Pet… in MatMultAddColumnRangeKernel_SeqDense() argument
1107 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatMultAddColumnRangeKernel_SeqDense()
1113 PetscCall(PetscBLASIntCast(A->rmap->n, &m)); in MatMultAddColumnRangeKernel_SeqDense()
1131 PetscErrorCode MatMultColumnRange_SeqDense(Mat A, Vec xx, Vec yy, PetscInt c_start, PetscInt c_end) in MatMultColumnRange_SeqDense() argument
1134 PetscCall(MatMultColumnRangeKernel_SeqDense(A, xx, yy, c_start, c_end, PETSC_FALSE, PETSC_FALSE)); in MatMultColumnRange_SeqDense()
1138 PetscErrorCode MatMultAddColumnRange_SeqDense(Mat A, Vec xx, Vec zz, Vec yy, PetscInt c_start, Pets… in MatMultAddColumnRange_SeqDense() argument
1141 …PetscCall(MatMultAddColumnRangeKernel_SeqDense(A, xx, zz, yy, c_start, c_end, PETSC_FALSE, PETSC_F… in MatMultAddColumnRange_SeqDense()
1145 PetscErrorCode MatMultHermitianTransposeAddColumnRange_SeqDense(Mat A, Vec xx, Vec zz, Vec yy, Pets… in MatMultHermitianTransposeAddColumnRange_SeqDense() argument
1150 …PetscCall(MatMultAddColumnRangeKernel_SeqDense(A, xx, zz, yy, c_start, c_end, PETSC_TRUE, PETSC_TR… in MatMultHermitianTransposeAddColumnRange_SeqDense()
1154 PetscErrorCode MatMultAdd_SeqDense(Mat A, Vec xx, Vec zz, Vec yy) in MatMultAdd_SeqDense() argument
1157 …PetscCall(MatMultAddColumnRangeKernel_SeqDense(A, xx, zz, yy, 0, A->cmap->n, PETSC_FALSE, PETSC_FA… in MatMultAdd_SeqDense()
1161 PetscErrorCode MatMultTransposeAdd_SeqDense(Mat A, Vec xx, Vec zz, Vec yy) in MatMultTransposeAdd_SeqDense() argument
1164 …PetscCall(MatMultAddColumnRangeKernel_SeqDense(A, xx, zz, yy, 0, A->cmap->n, PETSC_TRUE, PETSC_FAL… in MatMultTransposeAdd_SeqDense()
1168 PetscErrorCode MatMultHermitianTransposeAdd_SeqDense(Mat A, Vec xx, Vec zz, Vec yy) in MatMultHermitianTransposeAdd_SeqDense() argument
1171 …PetscCall(MatMultAddColumnRangeKernel_SeqDense(A, xx, zz, yy, 0, A->cmap->n, PETSC_TRUE, PETSC_TRU… in MatMultHermitianTransposeAdd_SeqDense()
1175 static PetscErrorCode MatGetRow_SeqDense(Mat A, PetscInt row, PetscInt *ncols, PetscInt **cols, Pet… in MatGetRow_SeqDense() argument
1177 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatGetRow_SeqDense()
1181 if (ncols) *ncols = A->cmap->n; in MatGetRow_SeqDense()
1183 PetscCall(PetscMalloc1(A->cmap->n, cols)); in MatGetRow_SeqDense()
1184 for (i = 0; i < A->cmap->n; i++) (*cols)[i] = i; in MatGetRow_SeqDense()
1189 PetscCall(MatDenseGetArrayRead(A, &v)); in MatGetRow_SeqDense()
1190 PetscCall(PetscMalloc1(A->cmap->n, vals)); in MatGetRow_SeqDense()
1192 for (i = 0; i < A->cmap->n; i++) { in MatGetRow_SeqDense()
1196 PetscCall(MatDenseRestoreArrayRead(A, &v)); in MatGetRow_SeqDense()
1201 static PetscErrorCode MatRestoreRow_SeqDense(Mat A, PetscInt row, PetscInt *ncols, PetscInt **cols,… in MatRestoreRow_SeqDense() argument
1209 static PetscErrorCode MatSetValues_SeqDense(Mat A, PetscInt m, const PetscInt indexm[], PetscInt n,… in MatSetValues_SeqDense() argument
1211 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatSetValues_SeqDense()
1219 PetscCall(MatDenseGetArray(A, &av)); in MatSetValues_SeqDense()
1227 …indexn[j] < A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Column too large: col %" Petsc… in MatSetValues_SeqDense()
1233 …(indexm[i] < A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Row too large: row %" PetscIn… in MatSetValues_SeqDense()
1243 …indexn[j] < A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Column too large: col %" Petsc… in MatSetValues_SeqDense()
1249 …(indexm[i] < A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Row too large: row %" PetscIn… in MatSetValues_SeqDense()
1261 …(indexm[i] < A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Row too large: row %" PetscIn… in MatSetValues_SeqDense()
1267 …indexn[j] < A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Column too large: col %" Petsc… in MatSetValues_SeqDense()
1277 …(indexm[i] < A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Row too large: row %" PetscIn… in MatSetValues_SeqDense()
1283 …indexn[j] < A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Column too large: col %" Petsc… in MatSetValues_SeqDense()
1291 oldf = A->offloadmask; in MatSetValues_SeqDense()
1292 A->offloadmask = PETSC_OFFLOAD_GPU; in MatSetValues_SeqDense()
1294 PetscCall(MatDenseRestoreArray(A, &av)); in MatSetValues_SeqDense()
1296 …A->offloadmask = (oldf == PETSC_OFFLOAD_UNALLOCATED ? PETSC_OFFLOAD_UNALLOCATED : PETSC_OFFLOAD_CP… in MatSetValues_SeqDense()
1301 static PetscErrorCode MatGetValues_SeqDense(Mat A, PetscInt m, const PetscInt indexm[], PetscInt n,… in MatGetValues_SeqDense() argument
1303 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatGetValues_SeqDense()
1308 PetscCall(MatDenseGetArrayRead(A, &vv)); in MatGetValues_SeqDense()
1315 …[i] < A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Row %" PetscInt_FMT " requested larg… in MatGetValues_SeqDense()
1321 … < A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Column %" PetscInt_FMT " requested larg… in MatGetValues_SeqDense()
1325 PetscCall(MatDenseRestoreArrayRead(A, &vv)); in MatGetValues_SeqDense()
1472 static PetscErrorCode MatView_SeqDense_ASCII(Mat A, PetscViewer viewer) in MatView_SeqDense_ASCII() argument
1474 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatView_SeqDense_ASCII()
1484 PetscCall(MatDenseGetArrayRead(A, (const PetscScalar **)&av)); in MatView_SeqDense_ASCII()
1490 for (i = 0; i < A->rmap->n; i++) { in MatView_SeqDense_ASCII()
1493 for (j = 0; j < A->cmap->n; j++) { in MatView_SeqDense_ASCII()
1512 for (j = 0; j < A->cmap->n; j++) { in MatView_SeqDense_ASCII()
1514 for (i = 0; i < A->rmap->n; i++) { in MatView_SeqDense_ASCII()
1523 PetscCall(PetscObjectGetName((PetscObject)A, &name)); in MatView_SeqDense_ASCII()
1524 …erASCIIPrintf(viewer, "%% Size = %" PetscInt_FMT " %" PetscInt_FMT " \n", A->rmap->n, A->cmap->n)); in MatView_SeqDense_ASCII()
1525 …rintf(viewer, "%s = zeros(%" PetscInt_FMT ",%" PetscInt_FMT ");\n", name, A->rmap->n, A->cmap->n)); in MatView_SeqDense_ASCII()
1529 for (i = 0; i < A->rmap->n; i++) { in MatView_SeqDense_ASCII()
1531 for (j = 0; j < A->cmap->n; j++) { in MatView_SeqDense_ASCII()
1548 PetscCall(MatDenseRestoreArrayRead(A, (const PetscScalar **)&av)); in MatView_SeqDense_ASCII()
1556 Mat A = (Mat)Aa; in MatView_SeqDense_Draw_Zoom() local
1557 PetscInt m = A->rmap->n, n = A->cmap->n, i, j; in MatView_SeqDense_Draw_Zoom()
1565 PetscCall(PetscObjectQuery((PetscObject)A, "Zoomviewer", (PetscObject *)&viewer)); in MatView_SeqDense_Draw_Zoom()
1570 PetscCall(MatDenseGetArrayRead(A, &v)); in MatView_SeqDense_Draw_Zoom()
1613 PetscCall(MatDenseRestoreArrayRead(A, &v)); in MatView_SeqDense_Draw_Zoom()
1617 static PetscErrorCode MatView_SeqDense_Draw(Mat A, PetscViewer viewer) in MatView_SeqDense_Draw() argument
1628 xr = A->cmap->n; in MatView_SeqDense_Draw()
1629 yr = A->rmap->n; in MatView_SeqDense_Draw()
1637 PetscCall(PetscObjectCompose((PetscObject)A, "Zoomviewer", (PetscObject)viewer)); in MatView_SeqDense_Draw()
1638 PetscCall(PetscDrawZoom(draw, MatView_SeqDense_Draw_Zoom, A)); in MatView_SeqDense_Draw()
1639 PetscCall(PetscObjectCompose((PetscObject)A, "Zoomviewer", NULL)); in MatView_SeqDense_Draw()
1644 PetscErrorCode MatView_SeqDense(Mat A, PetscViewer viewer) in MatView_SeqDense() argument
1652 if (isascii) PetscCall(MatView_SeqDense_ASCII(A, viewer)); in MatView_SeqDense()
1653 else if (isbinary) PetscCall(MatView_Dense_Binary(A, viewer)); in MatView_SeqDense()
1654 else if (isdraw) PetscCall(MatView_SeqDense_Draw(A, viewer)); in MatView_SeqDense()
1658 static PetscErrorCode MatDensePlaceArray_SeqDense(Mat A, const PetscScalar *array) in MatDensePlaceArray_SeqDense() argument
1660 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDensePlaceArray_SeqDense()
1671 A->offloadmask = PETSC_OFFLOAD_CPU; in MatDensePlaceArray_SeqDense()
1676 static PetscErrorCode MatDenseResetArray_SeqDense(Mat A) in MatDenseResetArray_SeqDense() argument
1678 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseResetArray_SeqDense()
1687 A->offloadmask = PETSC_OFFLOAD_CPU; in MatDenseResetArray_SeqDense()
1692 static PetscErrorCode MatDenseReplaceArray_SeqDense(Mat A, const PetscScalar *array) in MatDenseReplaceArray_SeqDense() argument
1694 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseReplaceArray_SeqDense()
1703 A->offloadmask = PETSC_OFFLOAD_CPU; in MatDenseReplaceArray_SeqDense()
1783 static PetscErrorCode MatTranspose_SeqDense(Mat A, MatReuse reuse, Mat *matout) in MatTranspose_SeqDense() argument
1785 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatTranspose_SeqDense()
1786 PetscInt k, j, m = A->rmap->n, M = mat->lda, n = A->cmap->n; in MatTranspose_SeqDense()
1790 if (reuse == MAT_REUSE_MATRIX) PetscCall(MatTransposeCheckNonzeroState_Private(A, *matout)); in MatTranspose_SeqDense()
1793 PetscCall(MatDenseGetArray(A, &v)); in MatTranspose_SeqDense()
1801 PetscCall(MatDenseRestoreArray(A, &v)); in MatTranspose_SeqDense()
1807 PetscCall(MatDenseGetArray(A, &v)); in MatTranspose_SeqDense()
1813 PetscCall(MatDenseRestoreArray(A, &v)); in MatTranspose_SeqDense()
1821 tmplayout = A->rmap; in MatTranspose_SeqDense()
1822 A->rmap = A->cmap; in MatTranspose_SeqDense()
1823 A->cmap = tmplayout; in MatTranspose_SeqDense()
1832 PetscCall(MatCreate(PetscObjectComm((PetscObject)A), &tmat)); in MatTranspose_SeqDense()
1833 PetscCall(MatSetSizes(tmat, A->cmap->n, A->rmap->n, A->cmap->n, A->rmap->n)); in MatTranspose_SeqDense()
1834 PetscCall(MatSetType(tmat, ((PetscObject)A)->type_name)); in MatTranspose_SeqDense()
1838 PetscCall(MatDenseGetArrayRead(A, (const PetscScalar **)&v)); in MatTranspose_SeqDense()
1846 PetscCall(MatDenseRestoreArrayRead(A, (const PetscScalar **)&v)); in MatTranspose_SeqDense()
1884 PetscErrorCode MatGetDiagonal_SeqDense(Mat A, Vec v) in MatGetDiagonal_SeqDense() argument
1886 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatGetDiagonal_SeqDense()
1894 len = PetscMin(A->rmap->n, A->cmap->n); in MatGetDiagonal_SeqDense()
1895 PetscCall(MatDenseGetArrayRead(A, &vv)); in MatGetDiagonal_SeqDense()
1896 PetscCheck(n == A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Nonconforming mat and vec"); in MatGetDiagonal_SeqDense()
1898 PetscCall(MatDenseRestoreArrayRead(A, &vv)); in MatGetDiagonal_SeqDense()
1903 static PetscErrorCode MatDiagonalScale_SeqDense(Mat A, Vec ll, Vec rr) in MatDiagonalScale_SeqDense() argument
1905 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatDiagonalScale_SeqDense()
1908 PetscInt i, j, m = A->rmap->n, n = A->cmap->n; in MatDiagonalScale_SeqDense()
1911 PetscCall(MatDenseGetArray(A, &vv)); in MatDiagonalScale_SeqDense()
1915 PetscCheck(m == A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Left scaling vec wrong size"); in MatDiagonalScale_SeqDense()
1930 PetscCheck(n == A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Right scaling vec wrong size"); in MatDiagonalScale_SeqDense()
1939 PetscCall(MatDenseRestoreArray(A, &vv)); in MatDiagonalScale_SeqDense()
1943 PetscErrorCode MatNorm_SeqDense(Mat A, NormType type, PetscReal *nrm) in MatNorm_SeqDense() argument
1945 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatNorm_SeqDense()
1948 PetscInt lda, m = A->rmap->n, i, j; in MatNorm_SeqDense()
1951 PetscCall(MatDenseGetArrayRead(A, (const PetscScalar **)&vv)); in MatNorm_SeqDense()
1952 PetscCall(MatDenseGetLDA(A, &lda)); in MatNorm_SeqDense()
1956 for (j = 0; j < A->cmap->n; j++) { in MatNorm_SeqDense()
1965 PetscBLASInt one = 1, cnt = A->cmap->n * A->rmap->n; in MatNorm_SeqDense()
1969 for (i = 0; i < A->cmap->n * A->rmap->n; i++) { in MatNorm_SeqDense()
1976 PetscCall(PetscLogFlops(2.0 * A->cmap->n * A->rmap->n)); in MatNorm_SeqDense()
1979 for (j = 0; j < A->cmap->n; j++) {
1982 for (i = 0; i < A->rmap->n; i++) {
1988 PetscCall(PetscLogFlops(1.0 * A->cmap->n * A->rmap->n));
1991 for (j = 0; j < A->rmap->n; j++) {
1994 for (i = 0; i < A->cmap->n; i++) {
2000 PetscCall(PetscLogFlops(1.0 * A->cmap->n * A->rmap->n));
2002 PetscCall(MatDenseRestoreArrayRead(A, (const PetscScalar **)&vv));
2006 static PetscErrorCode MatSetOption_SeqDense(Mat A, MatOption op, PetscBool flg) in MatSetOption_SeqDense() argument
2008 Mat_SeqDense *aij = (Mat_SeqDense *)A->data; in MatSetOption_SeqDense()
2021 PetscErrorCode MatZeroEntries_SeqDense(Mat A) in MatZeroEntries_SeqDense() argument
2023 Mat_SeqDense *l = (Mat_SeqDense *)A->data; in MatZeroEntries_SeqDense()
2024 PetscInt lda = l->lda, m = A->rmap->n, n = A->cmap->n, j; in MatZeroEntries_SeqDense()
2028 PetscCall(MatDenseGetArrayWrite(A, &v)); in MatZeroEntries_SeqDense()
2034 PetscCall(MatDenseRestoreArrayWrite(A, &v)); in MatZeroEntries_SeqDense()
2038 static PetscErrorCode MatZeroRows_SeqDense(Mat A, PetscInt N, const PetscInt rows[], PetscScalar di… in MatZeroRows_SeqDense() argument
2040 Mat_SeqDense *l = (Mat_SeqDense *)A->data; in MatZeroRows_SeqDense()
2041 PetscInt m = l->lda, n = A->cmap->n, i, j; in MatZeroRows_SeqDense()
2049 …A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Row %" PetscInt_FMT " requested to be zero… in MatZeroRows_SeqDense()
2063 PetscCall(MatDenseGetArray(A, &v)); in MatZeroRows_SeqDense()
2072 …PetscCheck(A->rmap->n == A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_SUP, "Only coded for square matric… in MatZeroRows_SeqDense()
2078 PetscCall(MatDenseRestoreArray(A, &v)); in MatZeroRows_SeqDense()
2082 static PetscErrorCode MatDenseGetLDA_SeqDense(Mat A, PetscInt *lda) in MatDenseGetLDA_SeqDense() argument
2084 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatDenseGetLDA_SeqDense()
2091 PetscErrorCode MatDenseGetArray_SeqDense(Mat A, PetscScalar **array) in MatDenseGetArray_SeqDense() argument
2093 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatDenseGetArray_SeqDense()
2101 PetscErrorCode MatDenseRestoreArray_SeqDense(Mat A, PetscScalar **array) in MatDenseRestoreArray_SeqDense() argument
2123 PetscErrorCode MatDenseGetLDA(Mat A, PetscInt *lda) in MatDenseGetLDA() argument
2126 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetLDA()
2128 MatCheckPreallocated(A, 1); in MatDenseGetLDA()
2129 PetscUseMethod(A, "MatDenseGetLDA_C", (Mat, PetscInt *), (A, lda)); in MatDenseGetLDA()
2146 PetscErrorCode MatDenseSetLDA(Mat A, PetscInt lda) in MatDenseSetLDA() argument
2149 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseSetLDA()
2150 PetscTryMethod(A, "MatDenseSetLDA_C", (Mat, PetscInt), (A, lda)); in MatDenseSetLDA()
2169 PetscErrorCode MatDenseGetArray(Mat A, PetscScalar *array[]) PeNS in MatDenseGetArray() argument
2172 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetArray()
2174 PetscUseMethod(A, "MatDenseGetArray_C", (Mat, PetscScalar **), (A, array)); in MatDenseGetArray()
2191 PetscErrorCode MatDenseRestoreArray(Mat A, PetscScalar *array[]) PeNS in MatDenseRestoreArray() argument
2194 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreArray()
2196 PetscUseMethod(A, "MatDenseRestoreArray_C", (Mat, PetscScalar **), (A, array)); in MatDenseRestoreArray()
2197 PetscCall(PetscObjectStateIncrease((PetscObject)A)); in MatDenseRestoreArray()
2199 A->offloadmask = PETSC_OFFLOAD_CPU; in MatDenseRestoreArray()
2219 PetscErrorCode MatDenseGetArrayRead(Mat A, const PetscScalar *array[]) PeNS in MatDenseGetArrayRead() argument
2222 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetArrayRead()
2224 PetscUseMethod(A, "MatDenseGetArrayRead_C", (Mat, PetscScalar **), (A, (PetscScalar **)array)); in MatDenseGetArrayRead()
2241 PetscErrorCode MatDenseRestoreArrayRead(Mat A, const PetscScalar *array[]) PeNS in MatDenseRestoreArrayRead() argument
2244 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreArrayRead()
2246 …PetscUseMethod(A, "MatDenseRestoreArrayRead_C", (Mat, PetscScalar **), (A, (PetscScalar **)array)); in MatDenseRestoreArrayRead()
2265 PetscErrorCode MatDenseGetArrayWrite(Mat A, PetscScalar *array[]) PeNS in MatDenseGetArrayWrite() argument
2268 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetArrayWrite()
2270 PetscUseMethod(A, "MatDenseGetArrayWrite_C", (Mat, PetscScalar **), (A, array)); in MatDenseGetArrayWrite()
2287 PetscErrorCode MatDenseRestoreArrayWrite(Mat A, PetscScalar *array[]) PeNS in MatDenseRestoreArrayWrite() argument
2290 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreArrayWrite()
2292 PetscUseMethod(A, "MatDenseRestoreArrayWrite_C", (Mat, PetscScalar **), (A, array)); in MatDenseRestoreArrayWrite()
2293 PetscCall(PetscObjectStateIncrease((PetscObject)A)); in MatDenseRestoreArrayWrite()
2295 A->offloadmask = PETSC_OFFLOAD_CPU; in MatDenseRestoreArrayWrite()
2321 PetscErrorCode MatDenseGetArrayAndMemType(Mat A, PetscScalar *array[], PetscMemType *mtype) in MatDenseGetArrayAndMemType() argument
2326 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetArrayAndMemType()
2328 …PetscCall(MatBindToCPU(A, PETSC_FALSE)); /* We want device matrices to always return device arrays… in MatDenseGetArrayAndMemType()
2329 PetscCall(PetscObjectBaseTypeCompare((PetscObject)A, MATMPIDENSE, &isMPI)); in MatDenseGetArrayAndMemType()
2332 PetscCall(MatDenseGetArrayAndMemType(((Mat_MPIDense *)A->data)->A, array, mtype)); in MatDenseGetArrayAndMemType()
2336 PetscCall(PetscObjectQueryFunction((PetscObject)A, "MatDenseGetArrayAndMemType_C", &fptr)); in MatDenseGetArrayAndMemType()
2338 PetscCall((*fptr)(A, array, mtype)); in MatDenseGetArrayAndMemType()
2340 PetscUseMethod(A, "MatDenseGetArray_C", (Mat, PetscScalar **), (A, array)); in MatDenseGetArrayAndMemType()
2360 PetscErrorCode MatDenseRestoreArrayAndMemType(Mat A, PetscScalar *array[]) in MatDenseRestoreArrayAndMemType() argument
2365 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreArrayAndMemType()
2367 PetscCall(PetscObjectBaseTypeCompare((PetscObject)A, MATMPIDENSE, &isMPI)); in MatDenseRestoreArrayAndMemType()
2369 PetscCall(MatDenseRestoreArrayAndMemType(((Mat_MPIDense *)A->data)->A, array)); in MatDenseRestoreArrayAndMemType()
2373 PetscCall(PetscObjectQueryFunction((PetscObject)A, "MatDenseRestoreArrayAndMemType_C", &fptr)); in MatDenseRestoreArrayAndMemType()
2375 PetscCall((*fptr)(A, array)); in MatDenseRestoreArrayAndMemType()
2377 PetscUseMethod(A, "MatDenseRestoreArray_C", (Mat, PetscScalar **), (A, array)); in MatDenseRestoreArrayAndMemType()
2381 PetscCall(PetscObjectStateIncrease((PetscObject)A)); in MatDenseRestoreArrayAndMemType()
2406 PetscErrorCode MatDenseGetArrayReadAndMemType(Mat A, const PetscScalar *array[], PetscMemType *mtyp… in MatDenseGetArrayReadAndMemType() argument
2411 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetArrayReadAndMemType()
2413 …PetscCall(MatBindToCPU(A, PETSC_FALSE)); /* We want device matrices to always return device arrays… in MatDenseGetArrayReadAndMemType()
2414 PetscCall(PetscObjectBaseTypeCompare((PetscObject)A, MATMPIDENSE, &isMPI)); in MatDenseGetArrayReadAndMemType()
2416 PetscCall(MatDenseGetArrayReadAndMemType(((Mat_MPIDense *)A->data)->A, array, mtype)); in MatDenseGetArrayReadAndMemType()
2420 PetscCall(PetscObjectQueryFunction((PetscObject)A, "MatDenseGetArrayReadAndMemType_C", &fptr)); in MatDenseGetArrayReadAndMemType()
2422 PetscCall((*fptr)(A, array, mtype)); in MatDenseGetArrayReadAndMemType()
2424 … PetscUseMethod(A, "MatDenseGetArrayRead_C", (Mat, PetscScalar **), (A, (PetscScalar **)array)); in MatDenseGetArrayReadAndMemType()
2444 PetscErrorCode MatDenseRestoreArrayReadAndMemType(Mat A, const PetscScalar *array[]) in MatDenseRestoreArrayReadAndMemType() argument
2449 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreArrayReadAndMemType()
2451 PetscCall(PetscObjectBaseTypeCompare((PetscObject)A, MATMPIDENSE, &isMPI)); in MatDenseRestoreArrayReadAndMemType()
2453 PetscCall(MatDenseRestoreArrayReadAndMemType(((Mat_MPIDense *)A->data)->A, array)); in MatDenseRestoreArrayReadAndMemType()
2457 …PetscCall(PetscObjectQueryFunction((PetscObject)A, "MatDenseRestoreArrayReadAndMemType_C", &fptr)); in MatDenseRestoreArrayReadAndMemType()
2459 PetscCall((*fptr)(A, array)); in MatDenseRestoreArrayReadAndMemType()
2461 …PetscUseMethod(A, "MatDenseRestoreArrayRead_C", (Mat, PetscScalar **), (A, (PetscScalar **)array)); in MatDenseRestoreArrayReadAndMemType()
2489 PetscErrorCode MatDenseGetArrayWriteAndMemType(Mat A, PetscScalar *array[], PetscMemType *mtype) in MatDenseGetArrayWriteAndMemType() argument
2494 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetArrayWriteAndMemType()
2496 …PetscCall(MatBindToCPU(A, PETSC_FALSE)); /* We want device matrices to always return device arrays… in MatDenseGetArrayWriteAndMemType()
2497 PetscCall(PetscObjectBaseTypeCompare((PetscObject)A, MATMPIDENSE, &isMPI)); in MatDenseGetArrayWriteAndMemType()
2499 PetscCall(MatDenseGetArrayWriteAndMemType(((Mat_MPIDense *)A->data)->A, array, mtype)); in MatDenseGetArrayWriteAndMemType()
2503 PetscCall(PetscObjectQueryFunction((PetscObject)A, "MatDenseGetArrayWriteAndMemType_C", &fptr)); in MatDenseGetArrayWriteAndMemType()
2505 PetscCall((*fptr)(A, array, mtype)); in MatDenseGetArrayWriteAndMemType()
2507 PetscUseMethod(A, "MatDenseGetArrayWrite_C", (Mat, PetscScalar **), (A, array)); in MatDenseGetArrayWriteAndMemType()
2527 PetscErrorCode MatDenseRestoreArrayWriteAndMemType(Mat A, PetscScalar *array[]) in MatDenseRestoreArrayWriteAndMemType() argument
2532 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreArrayWriteAndMemType()
2534 PetscCall(PetscObjectBaseTypeCompare((PetscObject)A, MATMPIDENSE, &isMPI)); in MatDenseRestoreArrayWriteAndMemType()
2536 PetscCall(MatDenseRestoreArrayWriteAndMemType(((Mat_MPIDense *)A->data)->A, array)); in MatDenseRestoreArrayWriteAndMemType()
2540 …PetscCall(PetscObjectQueryFunction((PetscObject)A, "MatDenseRestoreArrayWriteAndMemType_C", &fptr)… in MatDenseRestoreArrayWriteAndMemType()
2542 PetscCall((*fptr)(A, array)); in MatDenseRestoreArrayWriteAndMemType()
2544 PetscUseMethod(A, "MatDenseRestoreArrayWrite_C", (Mat, PetscScalar **), (A, array)); in MatDenseRestoreArrayWriteAndMemType()
2548 PetscCall(PetscObjectStateIncrease((PetscObject)A)); in MatDenseRestoreArrayWriteAndMemType()
2552 static PetscErrorCode MatCreateSubMatrix_SeqDense(Mat A, IS isrow, IS iscol, MatReuse scall, Mat *B) in MatCreateSubMatrix_SeqDense() argument
2554 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatCreateSubMatrix_SeqDense()
2577 PetscCall(MatCreate(PetscObjectComm((PetscObject)A), &newmat)); in MatCreateSubMatrix_SeqDense()
2579 PetscCall(MatSetType(newmat, ((PetscObject)A)->type_name)); in MatCreateSubMatrix_SeqDense()
2604 static PetscErrorCode MatCreateSubMatrices_SeqDense(Mat A, PetscInt n, const IS irow[], const IS ic… in MatCreateSubMatrices_SeqDense() argument
2611 …for (i = 0; i < n; i++) PetscCall(MatCreateSubMatrix_SeqDense(A, irow[i], icol[i], scall, &(*B)[i]… in MatCreateSubMatrices_SeqDense()
2615 PetscErrorCode MatCopy_SeqDense(Mat A, Mat B, MatStructure str) in MatCopy_SeqDense() argument
2617 Mat_SeqDense *a = (Mat_SeqDense *)A->data, *b = (Mat_SeqDense *)B->data; in MatCopy_SeqDense()
2620 PetscInt lda1 = a->lda, lda2 = b->lda, m = A->rmap->n, n = A->cmap->n, j; in MatCopy_SeqDense()
2624 if (A->ops->copy != B->ops->copy) { in MatCopy_SeqDense()
2625 PetscCall(MatCopy_Basic(A, B, str)); in MatCopy_SeqDense()
2629 PetscCall(MatDenseGetArrayRead(A, &va)); in MatCopy_SeqDense()
2634 PetscCall(PetscArraycpy(vb, va, A->rmap->n * A->cmap->n)); in MatCopy_SeqDense()
2637 PetscCall(MatDenseRestoreArrayRead(A, &va)); in MatCopy_SeqDense()
2643 PetscErrorCode MatSetUp_SeqDense(Mat A) in MatSetUp_SeqDense() argument
2646 PetscCall(PetscLayoutSetUp(A->rmap)); in MatSetUp_SeqDense()
2647 PetscCall(PetscLayoutSetUp(A->cmap)); in MatSetUp_SeqDense()
2648 if (!A->preallocated) PetscCall(MatSeqDenseSetPreallocation(A, NULL)); in MatSetUp_SeqDense()
2652 PetscErrorCode MatConjugate_SeqDense(Mat A) in MatConjugate_SeqDense() argument
2654 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatConjugate_SeqDense()
2656 PetscInt min = PetscMin(A->rmap->n, A->cmap->n); in MatConjugate_SeqDense()
2660 PetscCall(MatDenseGetArray(A, &aa)); in MatConjugate_SeqDense()
2661 for (j = 0; j < A->cmap->n; j++) in MatConjugate_SeqDense()
2662 for (i = 0; i < A->rmap->n; i++) aa[i + j * mat->lda] = PetscConj(aa[i + j * mat->lda]); in MatConjugate_SeqDense()
2663 PetscCall(MatDenseRestoreArray(A, &aa)); in MatConjugate_SeqDense()
2669 static PetscErrorCode MatRealPart_SeqDense(Mat A) in MatRealPart_SeqDense() argument
2671 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatRealPart_SeqDense()
2676 PetscCall(MatDenseGetArray(A, &aa)); in MatRealPart_SeqDense()
2677 for (j = 0; j < A->cmap->n; j++) { in MatRealPart_SeqDense()
2678 for (i = 0; i < A->rmap->n; i++) aa[i + j * mat->lda] = PetscRealPart(aa[i + j * mat->lda]); in MatRealPart_SeqDense()
2680 PetscCall(MatDenseRestoreArray(A, &aa)); in MatRealPart_SeqDense()
2684 static PetscErrorCode MatImaginaryPart_SeqDense(Mat A) in MatImaginaryPart_SeqDense() argument
2686 Mat_SeqDense *mat = (Mat_SeqDense *)A->data; in MatImaginaryPart_SeqDense()
2691 PetscCall(MatDenseGetArray(A, &aa)); in MatImaginaryPart_SeqDense()
2692 for (j = 0; j < A->cmap->n; j++) { in MatImaginaryPart_SeqDense()
2693 … for (i = 0; i < A->rmap->n; i++) aa[i + j * mat->lda] = PetscImaginaryPart(aa[i + j * mat->lda]); in MatImaginaryPart_SeqDense()
2695 PetscCall(MatDenseRestoreArray(A, &aa)); in MatImaginaryPart_SeqDense()
2699 PetscErrorCode MatMatMultSymbolic_SeqDense_SeqDense(Mat A, Mat B, PetscReal fill, Mat C) in MatMatMultSymbolic_SeqDense_SeqDense() argument
2701 PetscInt m = A->rmap->n, n = B->cmap->n; in MatMatMultSymbolic_SeqDense_SeqDense()
2715 PetscCall(PetscObjectTypeCompare((PetscObject)B, ((PetscObject)A)->type_name, &flg)); in MatMatMultSymbolic_SeqDense_SeqDense()
2716 PetscCall(MatSetType(C, flg ? ((PetscObject)A)->type_name : MATDENSE)); in MatMatMultSymbolic_SeqDense_SeqDense()
2722 PetscErrorCode MatMatMultNumeric_SeqDense_SeqDense(Mat A, Mat B, Mat C) in MatMatMultNumeric_SeqDense_SeqDense() argument
2724 …Mat_SeqDense *a = (Mat_SeqDense *)A->data, *b = (Mat_SeqDense *)B->data, *c = (Mat_SeqDense *… in MatMatMultNumeric_SeqDense_SeqDense()
2733 PetscCall(PetscBLASIntCast(A->cmap->n, &k)); in MatMatMultNumeric_SeqDense_SeqDense()
2735 PetscCall(MatDenseGetArrayRead(A, &av)); in MatMatMultNumeric_SeqDense_SeqDense()
2740 PetscCall(MatDenseRestoreArrayRead(A, &av)); in MatMatMultNumeric_SeqDense_SeqDense()
2746 PetscErrorCode MatMatTransposeMultSymbolic_SeqDense_SeqDense(Mat A, Mat B, PetscReal fill, Mat C) in MatMatTransposeMultSymbolic_SeqDense_SeqDense() argument
2748 PetscInt m = A->rmap->n, n = B->rmap->n; in MatMatTransposeMultSymbolic_SeqDense_SeqDense()
2762 PetscCall(PetscObjectTypeCompare((PetscObject)B, ((PetscObject)A)->type_name, &flg)); in MatMatTransposeMultSymbolic_SeqDense_SeqDense()
2763 PetscCall(MatSetType(C, flg ? ((PetscObject)A)->type_name : MATDENSE)); in MatMatTransposeMultSymbolic_SeqDense_SeqDense()
2769 PetscErrorCode MatMatTransposeMultNumeric_SeqDense_SeqDense(Mat A, Mat B, Mat C) in MatMatTransposeMultNumeric_SeqDense_SeqDense() argument
2771 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatMatTransposeMultNumeric_SeqDense_SeqDense()
2782 PetscCall(PetscBLASIntCast(A->cmap->n, &k)); in MatMatTransposeMultNumeric_SeqDense_SeqDense()
2784 PetscCall(MatDenseGetArrayRead(A, &av)); in MatMatTransposeMultNumeric_SeqDense_SeqDense()
2788 PetscCall(MatDenseRestoreArrayRead(A, &av)); in MatMatTransposeMultNumeric_SeqDense_SeqDense()
2795 PetscErrorCode MatTransposeMatMultSymbolic_SeqDense_SeqDense(Mat A, Mat B, PetscReal fill, Mat C) in MatTransposeMatMultSymbolic_SeqDense_SeqDense() argument
2797 PetscInt m = A->cmap->n, n = B->cmap->n; in MatTransposeMatMultSymbolic_SeqDense_SeqDense()
2811 PetscCall(PetscObjectTypeCompare((PetscObject)B, ((PetscObject)A)->type_name, &flg)); in MatTransposeMatMultSymbolic_SeqDense_SeqDense()
2812 PetscCall(MatSetType(C, flg ? ((PetscObject)A)->type_name : MATDENSE)); in MatTransposeMatMultSymbolic_SeqDense_SeqDense()
2818 PetscErrorCode MatTransposeMatMultNumeric_SeqDense_SeqDense(Mat A, Mat B, Mat C) in MatTransposeMatMultNumeric_SeqDense_SeqDense() argument
2820 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatTransposeMatMultNumeric_SeqDense_SeqDense()
2831 PetscCall(PetscBLASIntCast(A->rmap->n, &k)); in MatTransposeMatMultNumeric_SeqDense_SeqDense()
2833 PetscCall(MatDenseGetArrayRead(A, &av)); in MatTransposeMatMultNumeric_SeqDense_SeqDense()
2837 PetscCall(MatDenseRestoreArrayRead(A, &av)); in MatTransposeMatMultNumeric_SeqDense_SeqDense()
2889 static PetscErrorCode MatGetRowMax_SeqDense(Mat A, Vec v, PetscInt idx[]) in MatGetRowMax_SeqDense() argument
2891 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatGetRowMax_SeqDense()
2892 PetscInt i, j, m = A->rmap->n, n = A->cmap->n, p; in MatGetRowMax_SeqDense()
2897 PetscCheck(!A->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatGetRowMax_SeqDense()
2900 PetscCall(MatDenseGetArrayRead(A, &aa)); in MatGetRowMax_SeqDense()
2901 …PetscCheck(p == A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Nonconforming matrix and vector"); in MatGetRowMax_SeqDense()
2912 PetscCall(MatDenseRestoreArrayRead(A, &aa)); in MatGetRowMax_SeqDense()
2917 static PetscErrorCode MatGetRowMaxAbs_SeqDense(Mat A, Vec v, PetscInt idx[]) in MatGetRowMaxAbs_SeqDense() argument
2919 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatGetRowMaxAbs_SeqDense()
2920 PetscInt i, j, m = A->rmap->n, n = A->cmap->n, p; in MatGetRowMaxAbs_SeqDense()
2926 PetscCheck(!A->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatGetRowMaxAbs_SeqDense()
2929 PetscCall(MatDenseGetArrayRead(A, &aa)); in MatGetRowMaxAbs_SeqDense()
2930 …PetscCheck(p == A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Nonconforming matrix and vector"); in MatGetRowMaxAbs_SeqDense()
2941 PetscCall(MatDenseRestoreArrayRead(A, &aa)); in MatGetRowMaxAbs_SeqDense()
2946 static PetscErrorCode MatGetRowMin_SeqDense(Mat A, Vec v, PetscInt idx[]) in MatGetRowMin_SeqDense() argument
2948 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatGetRowMin_SeqDense()
2949 PetscInt i, j, m = A->rmap->n, n = A->cmap->n, p; in MatGetRowMin_SeqDense()
2954 PetscCheck(!A->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatGetRowMin_SeqDense()
2955 PetscCall(MatDenseGetArrayRead(A, &aa)); in MatGetRowMin_SeqDense()
2958 …PetscCheck(p == A->rmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Nonconforming matrix and vector"); in MatGetRowMin_SeqDense()
2970 PetscCall(MatDenseRestoreArrayRead(A, &aa)); in MatGetRowMin_SeqDense()
2974 PetscErrorCode MatGetColumnVector_SeqDense(Mat A, Vec v, PetscInt col) in MatGetColumnVector_SeqDense() argument
2976 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatGetColumnVector_SeqDense()
2981 PetscCheck(!A->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatGetColumnVector_SeqDense()
2982 PetscCall(MatDenseGetArrayRead(A, &aa)); in MatGetColumnVector_SeqDense()
2984 PetscCall(PetscArraycpy(x, aa + col * a->lda, A->rmap->n)); in MatGetColumnVector_SeqDense()
2986 PetscCall(MatDenseRestoreArrayRead(A, &aa)); in MatGetColumnVector_SeqDense()
2990 PETSC_INTERN PetscErrorCode MatGetColumnReductions_SeqDense(Mat A, PetscInt type, PetscReal *reduct… in MatGetColumnReductions_SeqDense() argument
2996 PetscCall(MatGetSize(A, &m, &n)); in MatGetColumnReductions_SeqDense()
2998 PetscCall(MatDenseGetArrayRead(A, &a)); in MatGetColumnReductions_SeqDense()
3024 } else SETERRQ(PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Unknown reduction type"); in MatGetColumnReductions_SeqDense()
3025 PetscCall(MatDenseRestoreArrayRead(A, &a)); in MatGetColumnReductions_SeqDense()
3051 static PetscErrorCode MatDenseGetColumn_SeqDense(Mat A, PetscInt col, PetscScalar **vals) in MatDenseGetColumn_SeqDense() argument
3053 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseGetColumn_SeqDense()
3057 PetscCheck(!A->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatDenseGetColumn_SeqDense()
3058 PetscCall(MatDenseGetArray(A, &v)); in MatDenseGetColumn_SeqDense()
3060 PetscCall(MatDenseRestoreArray(A, &v)); in MatDenseGetColumn_SeqDense()
3064 static PetscErrorCode MatDenseRestoreColumn_SeqDense(Mat A, PetscScalar **vals) in MatDenseRestoreColumn_SeqDense() argument
3244 PetscErrorCode MatCreateSeqDense(MPI_Comm comm, PetscInt m, PetscInt n, PetscScalar data[], Mat *A) in MatCreateSeqDense() argument
3247 PetscCall(MatCreate(comm, A)); in MatCreateSeqDense()
3248 PetscCall(MatSetSizes(*A, m, n, m, n)); in MatCreateSeqDense()
3249 PetscCall(MatSetType(*A, MATSEQDENSE)); in MatCreateSeqDense()
3250 PetscCall(MatSeqDenseSetPreallocation(*A, data)); in MatCreateSeqDense()
3308 PETSC_INTERN PetscErrorCode MatConvert_SeqDense_Elemental(Mat A, MatType newtype, MatReuse reuse, M… in MatConvert_SeqDense_Elemental() argument
3313 PetscInt M = A->rmap->N, N = A->cmap->N, i, j, k, *rows, *cols; in MatConvert_SeqDense_Elemental()
3317 PetscCall(MatDenseGetArrayRead(A, &array)); in MatConvert_SeqDense_Elemental()
3325 PetscCall(MatDenseRestoreArrayRead(A, &array)); in MatConvert_SeqDense_Elemental()
3327 PetscCall(MatCreate(PetscObjectComm((PetscObject)A), &mat_elemental)); in MatConvert_SeqDense_Elemental()
3339 PetscCall(MatHeaderReplace(A, &mat_elemental)); in MatConvert_SeqDense_Elemental()
3367 PetscErrorCode MatDenseCreateColumnVec_Private(Mat A, Vec *v) in MatDenseCreateColumnVec_Private() argument
3378 PetscCall(PetscStrcmpAny(A->defaultvectype, &isstd, VECSTANDARD, VECSEQ, VECMPI, "")); in MatDenseCreateColumnVec_Private()
3379 PetscCall(PetscStrcmpAny(A->defaultvectype, &iskok, VECKOKKOS, VECSEQKOKKOS, VECMPIKOKKOS, "")); in MatDenseCreateColumnVec_Private()
3380 PetscCall(PetscStrcmpAny(A->defaultvectype, &iscuda, VECCUDA, VECSEQCUDA, VECMPICUDA, "")); in MatDenseCreateColumnVec_Private()
3381 PetscCall(PetscStrcmpAny(A->defaultvectype, &iship, VECHIP, VECSEQHIP, VECMPIHIP, "")); in MatDenseCreateColumnVec_Private()
3382 PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)A), &size)); in MatDenseCreateColumnVec_Private()
3384 …PetscCall(VecCreateMPIWithArray(PetscObjectComm((PetscObject)A), A->rmap->bs, A->rmap->n, A->rmap-… in MatDenseCreateColumnVec_Private()
3385 …else PetscCall(VecCreateSeqWithArray(PetscObjectComm((PetscObject)A), A->rmap->bs, A->rmap->n, NUL… in MatDenseCreateColumnVec_Private()
3387 …PetscCheck(PetscDefined(HAVE_KOKKOS_KERNELS), PetscObjectComm((PetscObject)A), PETSC_ERR_SUP, "Rec… in MatDenseCreateColumnVec_Private()
3389 …all(VecCreateMPIKokkosWithArray(PetscObjectComm((PetscObject)A), A->rmap->bs, A->rmap->n, A->rmap-… in MatDenseCreateColumnVec_Private()
3390 …else PetscCall(VecCreateSeqKokkosWithArray(PetscObjectComm((PetscObject)A), A->rmap->bs, A->rmap->… in MatDenseCreateColumnVec_Private()
3393 …PetscCheck(PetscDefined(HAVE_CUDA), PetscObjectComm((PetscObject)A), PETSC_ERR_SUP, "Reconfigure u… in MatDenseCreateColumnVec_Private()
3395 PetscCall(MatDenseCUDAGetArrayRead(A, &a)); in MatDenseCreateColumnVec_Private()
3396 …Call(VecCreateMPICUDAWithArrays(PetscObjectComm((PetscObject)A), A->rmap->bs, A->rmap->n, A->rmap-… in MatDenseCreateColumnVec_Private()
3397 …else PetscCall(VecCreateSeqCUDAWithArrays(PetscObjectComm((PetscObject)A), A->rmap->bs, A->rmap->n… in MatDenseCreateColumnVec_Private()
3400 …PetscCheck(PetscDefined(HAVE_HIP), PetscObjectComm((PetscObject)A), PETSC_ERR_SUP, "Reconfigure us… in MatDenseCreateColumnVec_Private()
3402 PetscCall(MatDenseHIPGetArrayRead(A, &a)); in MatDenseCreateColumnVec_Private()
3403 …cCall(VecCreateMPIHIPWithArrays(PetscObjectComm((PetscObject)A), A->rmap->bs, A->rmap->n, A->rmap-… in MatDenseCreateColumnVec_Private()
3404 …else PetscCall(VecCreateSeqHIPWithArrays(PetscObjectComm((PetscObject)A), A->rmap->bs, A->rmap->n,… in MatDenseCreateColumnVec_Private()
3407 …PetscCheck(*v, PetscObjectComm((PetscObject)A), PETSC_ERR_SUP, "Not coded for type %s", A->default… in MatDenseCreateColumnVec_Private()
3411 PetscErrorCode MatDenseGetColumnVec_SeqDense(Mat A, PetscInt col, Vec *v) in MatDenseGetColumnVec_SeqDense() argument
3413 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseGetColumnVec_SeqDense()
3418 if (!a->cvec) PetscCall(MatDenseCreateColumnVec_Private(A, &a->cvec)); in MatDenseGetColumnVec_SeqDense()
3420 PetscCall(MatDenseGetArray(A, (PetscScalar **)&a->ptrinuse)); in MatDenseGetColumnVec_SeqDense()
3426 PetscErrorCode MatDenseRestoreColumnVec_SeqDense(Mat A, PetscInt col, Vec *v) in MatDenseRestoreColumnVec_SeqDense() argument
3428 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseRestoreColumnVec_SeqDense()
3435 PetscCall(MatDenseRestoreArray(A, (PetscScalar **)&a->ptrinuse)); in MatDenseRestoreColumnVec_SeqDense()
3441 PetscErrorCode MatDenseGetColumnVecRead_SeqDense(Mat A, PetscInt col, Vec *v) in MatDenseGetColumnVecRead_SeqDense() argument
3443 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseGetColumnVecRead_SeqDense()
3448 if (!a->cvec) PetscCall(MatDenseCreateColumnVec_Private(A, &a->cvec)); in MatDenseGetColumnVecRead_SeqDense()
3450 PetscCall(MatDenseGetArrayRead(A, &a->ptrinuse)); in MatDenseGetColumnVecRead_SeqDense()
3457 PetscErrorCode MatDenseRestoreColumnVecRead_SeqDense(Mat A, PetscInt col, Vec *v) in MatDenseRestoreColumnVecRead_SeqDense() argument
3459 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseRestoreColumnVecRead_SeqDense()
3466 PetscCall(MatDenseRestoreArrayRead(A, &a->ptrinuse)); in MatDenseRestoreColumnVecRead_SeqDense()
3473 PetscErrorCode MatDenseGetColumnVecWrite_SeqDense(Mat A, PetscInt col, Vec *v) in MatDenseGetColumnVecWrite_SeqDense() argument
3475 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseGetColumnVecWrite_SeqDense()
3480 if (!a->cvec) PetscCall(MatDenseCreateColumnVec_Private(A, &a->cvec)); in MatDenseGetColumnVecWrite_SeqDense()
3482 PetscCall(MatDenseGetArrayWrite(A, (PetscScalar **)&a->ptrinuse)); in MatDenseGetColumnVecWrite_SeqDense()
3488 PetscErrorCode MatDenseRestoreColumnVecWrite_SeqDense(Mat A, PetscInt col, Vec *v) in MatDenseRestoreColumnVecWrite_SeqDense() argument
3490 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseRestoreColumnVecWrite_SeqDense()
3497 PetscCall(MatDenseRestoreArrayWrite(A, (PetscScalar **)&a->ptrinuse)); in MatDenseRestoreColumnVecWrite_SeqDense()
3503 PetscErrorCode MatDenseGetSubMatrix_SeqDense(Mat A, PetscInt rbegin, PetscInt rend, PetscInt cbegin… in MatDenseGetSubMatrix_SeqDense() argument
3505 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseGetSubMatrix_SeqDense()
3512 …PetscCall(MatCreateDense(PetscObjectComm((PetscObject)A), rend - rbegin, PETSC_DECIDE, rend - rbeg… in MatDenseGetSubMatrix_SeqDense()
3520 A->offloadmask = PETSC_OFFLOAD_CPU; in MatDenseGetSubMatrix_SeqDense()
3525 PetscErrorCode MatDenseRestoreSubMatrix_SeqDense(Mat A, Mat *v) in MatDenseRestoreSubMatrix_SeqDense() argument
3527 Mat_SeqDense *a = (Mat_SeqDense *)A->data; in MatDenseRestoreSubMatrix_SeqDense()
3537 A->offloadmask = PETSC_OFFLOAD_CPU; in MatDenseRestoreSubMatrix_SeqDense()
3641 PetscErrorCode MatDenseGetColumn(Mat A, PetscInt col, PetscScalar *vals[]) in MatDenseGetColumn() argument
3644 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetColumn()
3645 PetscValidLogicalCollectiveInt(A, col, 2); in MatDenseGetColumn()
3647 PetscUseMethod(A, "MatDenseGetColumn_C", (Mat, PetscInt, PetscScalar **), (A, col, vals)); in MatDenseGetColumn()
3664 PetscErrorCode MatDenseRestoreColumn(Mat A, PetscScalar *vals[]) in MatDenseRestoreColumn() argument
3667 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreColumn()
3669 PetscUseMethod(A, "MatDenseRestoreColumn_C", (Mat, PetscScalar **), (A, vals)); in MatDenseRestoreColumn()
3694 PetscErrorCode MatDenseGetColumnVec(Mat A, PetscInt col, Vec *v) in MatDenseGetColumnVec() argument
3697 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetColumnVec()
3698 PetscValidType(A, 1); in MatDenseGetColumnVec()
3699 PetscValidLogicalCollectiveInt(A, col, 2); in MatDenseGetColumnVec()
3701 …PetscCheck(A->preallocated, PetscObjectComm((PetscObject)A), PETSC_ERR_ORDER, "Matrix not prealloc… in MatDenseGetColumnVec()
3702 …col < A->cmap->N, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Invalid col %" PetscInt_F… in MatDenseGetColumnVec()
3703 PetscUseMethod(A, "MatDenseGetColumnVec_C", (Mat, PetscInt, Vec *), (A, col, v)); in MatDenseGetColumnVec()
3721 PetscErrorCode MatDenseRestoreColumnVec(Mat A, PetscInt col, Vec *v) in MatDenseRestoreColumnVec() argument
3724 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreColumnVec()
3725 PetscValidType(A, 1); in MatDenseRestoreColumnVec()
3726 PetscValidLogicalCollectiveInt(A, col, 2); in MatDenseRestoreColumnVec()
3728 …PetscCheck(A->preallocated, PetscObjectComm((PetscObject)A), PETSC_ERR_ORDER, "Matrix not prealloc… in MatDenseRestoreColumnVec()
3729 …col < A->cmap->N, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Invalid col %" PetscInt_F… in MatDenseRestoreColumnVec()
3730 PetscUseMethod(A, "MatDenseRestoreColumnVec_C", (Mat, PetscInt, Vec *), (A, col, v)); in MatDenseRestoreColumnVec()
3757 PetscErrorCode MatDenseGetColumnVecRead(Mat A, PetscInt col, Vec *v) in MatDenseGetColumnVecRead() argument
3760 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetColumnVecRead()
3761 PetscValidType(A, 1); in MatDenseGetColumnVecRead()
3762 PetscValidLogicalCollectiveInt(A, col, 2); in MatDenseGetColumnVecRead()
3764 …PetscCheck(A->preallocated, PetscObjectComm((PetscObject)A), PETSC_ERR_ORDER, "Matrix not prealloc… in MatDenseGetColumnVecRead()
3765 …col < A->cmap->N, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Invalid col %" PetscInt_F… in MatDenseGetColumnVecRead()
3766 PetscUseMethod(A, "MatDenseGetColumnVecRead_C", (Mat, PetscInt, Vec *), (A, col, v)); in MatDenseGetColumnVecRead()
3784 PetscErrorCode MatDenseRestoreColumnVecRead(Mat A, PetscInt col, Vec *v) in MatDenseRestoreColumnVecRead() argument
3787 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreColumnVecRead()
3788 PetscValidType(A, 1); in MatDenseRestoreColumnVecRead()
3789 PetscValidLogicalCollectiveInt(A, col, 2); in MatDenseRestoreColumnVecRead()
3791 …PetscCheck(A->preallocated, PetscObjectComm((PetscObject)A), PETSC_ERR_ORDER, "Matrix not prealloc… in MatDenseRestoreColumnVecRead()
3792 …col < A->cmap->N, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Invalid col %" PetscInt_F… in MatDenseRestoreColumnVecRead()
3793 PetscUseMethod(A, "MatDenseRestoreColumnVecRead_C", (Mat, PetscInt, Vec *), (A, col, v)); in MatDenseRestoreColumnVecRead()
3818 PetscErrorCode MatDenseGetColumnVecWrite(Mat A, PetscInt col, Vec *v) in MatDenseGetColumnVecWrite() argument
3821 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetColumnVecWrite()
3822 PetscValidType(A, 1); in MatDenseGetColumnVecWrite()
3823 PetscValidLogicalCollectiveInt(A, col, 2); in MatDenseGetColumnVecWrite()
3825 …PetscCheck(A->preallocated, PetscObjectComm((PetscObject)A), PETSC_ERR_ORDER, "Matrix not prealloc… in MatDenseGetColumnVecWrite()
3826 …col < A->cmap->N, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Invalid col %" PetscInt_F… in MatDenseGetColumnVecWrite()
3827 PetscUseMethod(A, "MatDenseGetColumnVecWrite_C", (Mat, PetscInt, Vec *), (A, col, v)); in MatDenseGetColumnVecWrite()
3845 PetscErrorCode MatDenseRestoreColumnVecWrite(Mat A, PetscInt col, Vec *v) in MatDenseRestoreColumnVecWrite() argument
3848 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreColumnVecWrite()
3849 PetscValidType(A, 1); in MatDenseRestoreColumnVecWrite()
3850 PetscValidLogicalCollectiveInt(A, col, 2); in MatDenseRestoreColumnVecWrite()
3852 …PetscCheck(A->preallocated, PetscObjectComm((PetscObject)A), PETSC_ERR_ORDER, "Matrix not prealloc… in MatDenseRestoreColumnVecWrite()
3853 …col < A->cmap->N, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Invalid col %" PetscInt_F… in MatDenseRestoreColumnVecWrite()
3854 PetscUseMethod(A, "MatDenseRestoreColumnVecWrite_C", (Mat, PetscInt, Vec *), (A, col, v)); in MatDenseRestoreColumnVecWrite()
3882 PetscErrorCode MatDenseGetSubMatrix(Mat A, PetscInt rbegin, PetscInt rend, PetscInt cbegin, PetscIn… in MatDenseGetSubMatrix() argument
3885 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseGetSubMatrix()
3886 PetscValidType(A, 1); in MatDenseGetSubMatrix()
3887 PetscValidLogicalCollectiveInt(A, rbegin, 2); in MatDenseGetSubMatrix()
3888 PetscValidLogicalCollectiveInt(A, rend, 3); in MatDenseGetSubMatrix()
3889 PetscValidLogicalCollectiveInt(A, cbegin, 4); in MatDenseGetSubMatrix()
3890 PetscValidLogicalCollectiveInt(A, cend, 5); in MatDenseGetSubMatrix()
3893 if (rend == PETSC_DECIDE) rend = A->rmap->N; in MatDenseGetSubMatrix()
3895 if (cend == PETSC_DECIDE) cend = A->cmap->N; in MatDenseGetSubMatrix()
3896 …PetscCheck(A->preallocated, PetscObjectComm((PetscObject)A), PETSC_ERR_ORDER, "Matrix not prealloc… in MatDenseGetSubMatrix()
3897 …<= A->rmap->N, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Invalid rbegin %" PetscInt_F… in MatDenseGetSubMatrix()
3898 …A->rmap->N, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Invalid rend %" PetscInt_FMT ",… in MatDenseGetSubMatrix()
3899 …<= A->cmap->N, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Invalid cbegin %" PetscInt_F… in MatDenseGetSubMatrix()
3900 …A->cmap->N, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Invalid cend %" PetscInt_FMT ",… in MatDenseGetSubMatrix()
3901 …PetscUseMethod(A, "MatDenseGetSubMatrix_C", (Mat, PetscInt, PetscInt, PetscInt, PetscInt, Mat *), … in MatDenseGetSubMatrix()
3918 PetscErrorCode MatDenseRestoreSubMatrix(Mat A, Mat *v) in MatDenseRestoreSubMatrix() argument
3921 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDenseRestoreSubMatrix()
3922 PetscValidType(A, 1); in MatDenseRestoreSubMatrix()
3925 PetscUseMethod(A, "MatDenseRestoreSubMatrix_C", (Mat, Mat *), (A, v)); in MatDenseRestoreSubMatrix()
3932 PetscErrorCode MatSeqDenseInvert(Mat A) in MatSeqDenseInvert() argument
3940 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatSeqDenseInvert()
3941 PetscCall(MatDenseGetArray(A, &values)); in MatSeqDenseInvert()
3942 PetscCall(MatGetLocalSize(A, &m, NULL)); in MatSeqDenseInvert()
3943 allowzeropivot = PetscNot(A->erroriffailure); in MatSeqDenseInvert()
3951 if (zeropivotdetected) A->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatSeqDenseInvert()
3955 if (zeropivotdetected) A->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatSeqDenseInvert()
3959 if (zeropivotdetected) A->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatSeqDenseInvert()
3966 if (zeropivotdetected) A->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatSeqDenseInvert()
3970 if (zeropivotdetected) A->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatSeqDenseInvert()
3974 if (zeropivotdetected) A->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatSeqDenseInvert()
3983 if (zeropivotdetected) A->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatSeqDenseInvert()
3987 PetscCall(MatDenseRestoreArray(A, &values)); in MatSeqDenseInvert()