Lines Matching refs:A

13 static PetscErrorCode MatDiagonalSetUpDiagonal(Mat A)  in MatDiagonalSetUpDiagonal()  argument
15 Mat_Diagonal *ctx = (Mat_Diagonal *)A->data; in MatDiagonalSetUpDiagonal()
19 …PetscAssert(ctx->inv_diag_valid, PetscObjectComm((PetscObject)A), PETSC_ERR_PLIB, "Neither diagona… in MatDiagonalSetUpDiagonal()
27 static PetscErrorCode MatDiagonalSetUpInverseDiagonal(Mat A) in MatDiagonalSetUpInverseDiagonal() argument
29 Mat_Diagonal *ctx = (Mat_Diagonal *)A->data; in MatDiagonalSetUpInverseDiagonal()
33 …PetscAssert(ctx->diag_valid, PetscObjectComm((PetscObject)A), PETSC_ERR_PLIB, "Neither diagonal no… in MatDiagonalSetUpInverseDiagonal()
54 static PetscErrorCode MatGetRow_Diagonal(Mat A, PetscInt row, PetscInt *ncols, PetscInt **cols, Pet… in MatGetRow_Diagonal() argument
56 Mat_Diagonal *mat = (Mat_Diagonal *)A->data; in MatGetRow_Diagonal()
57 PetscInt rstart = A->rmap->rstart, rend = A->rmap->rend; in MatGetRow_Diagonal()
79 static PetscErrorCode MatMult_Diagonal(Mat A, Vec x, Vec y) in MatMult_Diagonal() argument
81 Mat_Diagonal *ctx = (Mat_Diagonal *)A->data; in MatMult_Diagonal()
84 PetscCall(MatDiagonalSetUpDiagonal(A)); in MatMult_Diagonal()
108 static PetscErrorCode MatNorm_Diagonal(Mat A, NormType type, PetscReal *nrm) in MatNorm_Diagonal() argument
110 Mat_Diagonal *ctx = (Mat_Diagonal *)A->data; in MatNorm_Diagonal()
113 PetscCall(MatDiagonalSetUpDiagonal(A)); in MatNorm_Diagonal()
119 static PetscErrorCode MatDuplicate_Diagonal(Mat A, MatDuplicateOption op, Mat *B) in MatDuplicate_Diagonal() argument
121 Mat_Diagonal *actx = (Mat_Diagonal *)A->data; in MatDuplicate_Diagonal()
124 PetscCall(MatCreate(PetscObjectComm((PetscObject)A), B)); in MatDuplicate_Diagonal()
125 PetscCall(MatSetSizes(*B, A->rmap->n, A->cmap->n, A->rmap->N, A->cmap->N)); in MatDuplicate_Diagonal()
126 PetscCall(MatSetBlockSizesFromMats(*B, A, A)); in MatDuplicate_Diagonal()
128 PetscCall(PetscLayoutReference(A->rmap, &(*B)->rmap)); in MatDuplicate_Diagonal()
129 PetscCall(PetscLayoutReference(A->cmap, &(*B)->cmap)); in MatDuplicate_Diagonal()
133 PetscCall(MatSetUp(A)); in MatDuplicate_Diagonal()
164 PetscErrorCode MatDiagonalGetDiagonal(Mat A, Vec *diag) in MatDiagonalGetDiagonal() argument
167 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDiagonalGetDiagonal()
170 PetscUseMethod(A, "MatDiagonalGetDiagonal_C", (Mat, Vec *), (A, diag)); in MatDiagonalGetDiagonal()
174 static PetscErrorCode MatDiagonalGetDiagonal_Diagonal(Mat A, Vec *diag) in MatDiagonalGetDiagonal_Diagonal() argument
176 Mat_Diagonal *ctx = (Mat_Diagonal *)A->data; in MatDiagonalGetDiagonal_Diagonal()
179 PetscCall(MatSetUp(A)); in MatDiagonalGetDiagonal_Diagonal()
180 PetscCall(MatDiagonalSetUpDiagonal(A)); in MatDiagonalGetDiagonal_Diagonal()
200 PetscErrorCode MatDiagonalRestoreDiagonal(Mat A, Vec *diag) in MatDiagonalRestoreDiagonal() argument
203 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDiagonalRestoreDiagonal()
205 PetscUseMethod(A, "MatDiagonalRestoreDiagonal_C", (Mat, Vec *), (A, diag)); in MatDiagonalRestoreDiagonal()
209 static PetscErrorCode MatDiagonalRestoreDiagonal_Diagonal(Mat A, Vec *diag) in MatDiagonalRestoreDiagonal_Diagonal() argument
211 Mat_Diagonal *ctx = (Mat_Diagonal *)A->data; in MatDiagonalRestoreDiagonal_Diagonal()
215 …PetscCheck(ctx->diag == *diag, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Restored a d… in MatDiagonalRestoreDiagonal_Diagonal()
219 PetscCall(PetscObjectStateIncrease((PetscObject)A)); in MatDiagonalRestoreDiagonal_Diagonal()
247 PetscErrorCode MatDiagonalGetInverseDiagonal(Mat A, Vec *inv_diag) in MatDiagonalGetInverseDiagonal() argument
250 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDiagonalGetInverseDiagonal()
253 PetscUseMethod(A, "MatDiagonalGetInverseDiagonal_C", (Mat, Vec *), (A, inv_diag)); in MatDiagonalGetInverseDiagonal()
257 static PetscErrorCode MatDiagonalGetInverseDiagonal_Diagonal(Mat A, Vec *inv_diag) in MatDiagonalGetInverseDiagonal_Diagonal() argument
259 Mat_Diagonal *ctx = (Mat_Diagonal *)A->data; in MatDiagonalGetInverseDiagonal_Diagonal()
262 PetscCall(MatSetUp(A)); in MatDiagonalGetInverseDiagonal_Diagonal()
263 PetscCall(MatDiagonalSetUpInverseDiagonal(A)); in MatDiagonalGetInverseDiagonal_Diagonal()
280 PetscErrorCode MatDiagonalRestoreInverseDiagonal(Mat A, Vec *inv_diag) in MatDiagonalRestoreInverseDiagonal() argument
283 PetscValidHeaderSpecific(A, MAT_CLASSID, 1); in MatDiagonalRestoreInverseDiagonal()
285 PetscUseMethod(A, "MatDiagonalRestoreInverseDiagonal_C", (Mat, Vec *), (A, inv_diag)); in MatDiagonalRestoreInverseDiagonal()
289 static PetscErrorCode MatDiagonalRestoreInverseDiagonal_Diagonal(Mat A, Vec *inv_diag) in MatDiagonalRestoreInverseDiagonal_Diagonal() argument
291 Mat_Diagonal *ctx = (Mat_Diagonal *)A->data; in MatDiagonalRestoreInverseDiagonal_Diagonal()
295 …PetscCheck(ctx->inv_diag == *inv_diag, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Rest… in MatDiagonalRestoreInverseDiagonal_Diagonal()
299 PetscCall(PetscObjectStateIncrease((PetscObject)A)); in MatDiagonalRestoreInverseDiagonal_Diagonal()
306 static PetscErrorCode MatPermute_Diagonal(Mat A, IS rowp, IS colp, Mat *B) in MatPermute_Diagonal() argument
308 Mat_Diagonal *ctx = (Mat_Diagonal *)A->data; in MatPermute_Diagonal()
312 …PetscCheck(rowp == colp, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_INCOMP, "Row permutation a… in MatPermute_Diagonal()
321 static PetscErrorCode MatSetRandom_Diagonal(Mat A, PetscRandom rand) in MatSetRandom_Diagonal() argument
326 PetscCall(MatDiagonalGetDiagonal(A, &d)); in MatSetRandom_Diagonal()
328 PetscCall(MatDiagonalRestoreDiagonal(A, &d)); in MatSetRandom_Diagonal()
475 static PetscErrorCode MatTranspose_Diagonal(Mat A, MatReuse reuse, Mat *matout) in MatTranspose_Diagonal() argument
479 PetscLayout tmplayout = A->rmap; in MatTranspose_Diagonal()
481 A->rmap = A->cmap; in MatTranspose_Diagonal()
482 A->cmap = tmplayout; in MatTranspose_Diagonal()
486 PetscCall(MatDiagonalGetDiagonal(A, &diag)); in MatTranspose_Diagonal()
489 PetscCall(MatDiagonalRestoreDiagonal(A, &diag)); in MatTranspose_Diagonal()
493 PetscCall(MatDiagonalGetDiagonal(A, &diag)); in MatTranspose_Diagonal()
497 PetscCall(MatDiagonalRestoreDiagonal(A, &diag)); in MatTranspose_Diagonal()
503 static PetscErrorCode MatSetUp_Diagonal(Mat A) in MatSetUp_Diagonal() argument
505 Mat_Diagonal *ctx = (Mat_Diagonal *)A->data; in MatSetUp_Diagonal()
509 PetscCall(PetscLayoutSetUp(A->cmap)); in MatSetUp_Diagonal()
510 PetscCall(PetscLayoutSetUp(A->rmap)); in MatSetUp_Diagonal()
511 PetscCall(MatCreateVecs(A, &ctx->diag, NULL)); in MatSetUp_Diagonal()
516 A->assembled = PETSC_TRUE; in MatSetUp_Diagonal()
542 static PetscErrorCode MatGetInfo_Diagonal(Mat A, MatInfoType flag, MatInfo *info) in MatGetInfo_Diagonal() argument
546 info->nz_allocated = A->cmap->N; in MatGetInfo_Diagonal()
547 info->nz_used = A->cmap->N; in MatGetInfo_Diagonal()
549 info->assemblies = A->num_ass; in MatGetInfo_Diagonal()
614 Mat A, B; in MatProductNumeric_Diagonal_Dense() local
622 A = C->product->A; in MatProductNumeric_Diagonal_Dense()
624 a = (Mat_Diagonal *)A->data; in MatProductNumeric_Diagonal_Dense()
641 Mat A, B; in MatProductSymbolic_Diagonal_Dense() local
647 A = C->product->A; in MatProductSymbolic_Diagonal_Dense()
649 PetscCall(MatDiagonalSetUpDiagonal(A)); in MatProductSymbolic_Diagonal_Dense()
655 PetscCall(MatGetLocalSize(A, &m, NULL)); in MatProductSymbolic_Diagonal_Dense()
656 PetscCall(MatGetSize(A, &M, NULL)); in MatProductSymbolic_Diagonal_Dense()
689 PETSC_INTERN PetscErrorCode MatCreate_Diagonal(Mat A) in MatCreate_Diagonal() argument
695 A->data = (void *)ctx; in MatCreate_Diagonal()
697 A->structurally_symmetric = PETSC_BOOL3_TRUE; in MatCreate_Diagonal()
698 A->structural_symmetry_eternal = PETSC_TRUE; in MatCreate_Diagonal()
699 A->symmetry_eternal = PETSC_TRUE; in MatCreate_Diagonal()
700 A->symmetric = PETSC_BOOL3_TRUE; in MatCreate_Diagonal()
701 if (!PetscDefined(USE_COMPLEX)) A->hermitian = PETSC_BOOL3_TRUE; in MatCreate_Diagonal()
703 A->ops->getrow = MatGetRow_Diagonal; in MatCreate_Diagonal()
704 A->ops->mult = MatMult_Diagonal; in MatCreate_Diagonal()
705 A->ops->multadd = MatMultAdd_Diagonal; in MatCreate_Diagonal()
706 A->ops->multtranspose = MatMult_Diagonal; in MatCreate_Diagonal()
707 A->ops->multtransposeadd = MatMultAdd_Diagonal; in MatCreate_Diagonal()
708 A->ops->norm = MatNorm_Diagonal; in MatCreate_Diagonal()
709 A->ops->duplicate = MatDuplicate_Diagonal; in MatCreate_Diagonal()
710 A->ops->solve = MatSolve_Diagonal; in MatCreate_Diagonal()
711 A->ops->solvetranspose = MatSolve_Diagonal; in MatCreate_Diagonal()
712 A->ops->shift = MatShift_Diagonal; in MatCreate_Diagonal()
713 A->ops->scale = MatScale_Diagonal; in MatCreate_Diagonal()
714 A->ops->diagonalscale = MatDiagonalScale_Diagonal; in MatCreate_Diagonal()
715 A->ops->getdiagonal = MatGetDiagonal_Diagonal; in MatCreate_Diagonal()
716 A->ops->diagonalset = MatDiagonalSet_Diagonal; in MatCreate_Diagonal()
717 A->ops->view = MatView_Diagonal; in MatCreate_Diagonal()
718 A->ops->zeroentries = MatZeroEntries_Diagonal; in MatCreate_Diagonal()
719 A->ops->destroy = MatDestroy_Diagonal; in MatCreate_Diagonal()
720 A->ops->getinfo = MatGetInfo_Diagonal; in MatCreate_Diagonal()
721 A->ops->axpy = MatAXPY_Diagonal; in MatCreate_Diagonal()
722 A->ops->setup = MatSetUp_Diagonal; in MatCreate_Diagonal()
723 A->ops->permute = MatPermute_Diagonal; in MatCreate_Diagonal()
724 A->ops->setrandom = MatSetRandom_Diagonal; in MatCreate_Diagonal()
725 A->ops->conjugate = MatConjugate_Diagonal; in MatCreate_Diagonal()
726 A->ops->transpose = MatTranspose_Diagonal; in MatCreate_Diagonal()
728 …PetscCall(PetscObjectComposeFunction((PetscObject)A, "MatDiagonalGetDiagonal_C", MatDiagonalGetDia… in MatCreate_Diagonal()
729 …PetscCall(PetscObjectComposeFunction((PetscObject)A, "MatDiagonalRestoreDiagonal_C", MatDiagonalRe… in MatCreate_Diagonal()
730 …PetscCall(PetscObjectComposeFunction((PetscObject)A, "MatDiagonalGetInverseDiagonal_C", MatDiagona… in MatCreate_Diagonal()
731 …PetscCall(PetscObjectComposeFunction((PetscObject)A, "MatDiagonalRestoreInverseDiagonal_C", MatDia… in MatCreate_Diagonal()
732 …PetscCall(PetscObjectComposeFunction((PetscObject)A, "MatProductSetFromOptions_diagonal_seqdense_C… in MatCreate_Diagonal()
733 …PetscCall(PetscObjectComposeFunction((PetscObject)A, "MatProductSetFromOptions_diagonal_mpidense_C… in MatCreate_Diagonal()
734 PetscCall(PetscObjectChangeTypeName((PetscObject)A, MATDIAGONAL)); in MatCreate_Diagonal()