Lines Matching refs:mat
7 Mat mat; member
31 static PetscErrorCode MatDestroy_Composite(Mat mat) in MatDestroy_Composite() argument
38 PetscCall(MatShellGetContext(mat, &shell)); in MatDestroy_Composite()
41 PetscCall(MatDestroy(&next->mat)); in MatDestroy_Composite()
58 PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatCompositeAddMat_C", NULL)); in MatDestroy_Composite()
59 PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatCompositeSetType_C", NULL)); in MatDestroy_Composite()
60 PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatCompositeGetType_C", NULL)); in MatDestroy_Composite()
61 PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatCompositeSetMergeType_C", NULL)); in MatDestroy_Composite()
62 PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatCompositeSetMatStructure_C", NULL)); in MatDestroy_Composite()
63 PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatCompositeGetMatStructure_C", NULL)); in MatDestroy_Composite()
64 PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatCompositeMerge_C", NULL)); in MatDestroy_Composite()
65 PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatCompositeGetNumberMat_C", NULL)); in MatDestroy_Composite()
66 PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatCompositeGetMat_C", NULL)); in MatDestroy_Composite()
67 PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatCompositeSetScalings_C", NULL)); in MatDestroy_Composite()
69 …PetscCall(PetscObjectComposeFunction((PetscObject)mat, "MatShellSetContext_C", NULL)); // needed t… in MatDestroy_Composite()
85 PetscCall(MatCreateVecs(next->mat, NULL, &next->work)); in MatMult_Composite_Multiplicative()
88 PetscCall(MatMult(next->mat, x, out)); in MatMult_Composite_Multiplicative()
92 PetscCall(MatMult(next->mat, x, y)); in MatMult_Composite_Multiplicative()
113 PetscCall(MatCreateVecs(tail->mat, NULL, &tail->prev->work)); in MatMultTranspose_Composite_Multiplicative()
116 PetscCall(MatMultTranspose(tail->mat, x, out)); in MatMultTranspose_Composite_Multiplicative()
120 PetscCall(MatMultTranspose(tail->mat, x, y)); in MatMultTranspose_Composite_Multiplicative()
129 static PetscErrorCode MatMult_Composite(Mat mat, Vec x, Vec y) in MatMult_Composite() argument
142 PetscCall(MatShellGetContext(mat, &shell)); in MatMult_Composite()
153 PetscCall(PetscObjectTypeCompare((PetscObject)cur->mat, MATMPIAIJ, &match)); in MatMult_Composite()
163 PetscCall(MatMPIAIJGetSeqAIJ(cur->mat, NULL, &B, NULL)); in MatMult_Composite()
175 PetscCall(MatMPIAIJGetSeqAIJ(cur->mat, NULL, &B, &garray)); in MatMult_Composite()
205 PetscCall(MatMPIAIJGetSeqAIJ(cur->mat, NULL, &B, &garray)); in MatMult_Composite()
226 …PetscCall(VecCreateMPIWithArray(PetscObjectComm((PetscObject)mat), 1, mat->cmap->n, mat->cmap->N, … in MatMult_Composite()
236 …if (!((Mat_Shell *)mat->data)->left_work) PetscCall(VecDuplicate(y, &(((Mat_Shell *)mat->data)->le… in MatMult_Composite()
237 y2 = ((Mat_Shell *)mat->data)->left_work; in MatMult_Composite()
252 PetscCall(MatMPIAIJGetSeqAIJ(cur->mat, &A, &B, NULL)); in MatMult_Composite()
264 PetscCall(MatMult(cur->mat, x, y2)); in MatMult_Composite()
268 for (cur = shell->head; cur; cur = cur->next) PetscCall(MatMultAdd(cur->mat, x, y, y)); in MatMult_Composite()
286 PetscCall(MatMultTranspose(next->mat, x, y)); in MatMultTranspose_Composite()
294 if (!shell->scalings) PetscCall(MatMultTransposeAdd(next->mat, x, y, y)); in MatMultTranspose_Composite()
296 PetscCall(MatMultTranspose(next->mat, x, y2)); in MatMultTranspose_Composite()
313 PetscCall(MatGetDiagonal(next->mat, v)); in MatGetDiagonal_Composite()
319 PetscCall(MatGetDiagonal(next->mat, shell->work)); in MatGetDiagonal_Composite()
388 PetscErrorCode MatCreateComposite(MPI_Comm comm, PetscInt nmat, const Mat *mats, Mat *mat) in MatCreateComposite() argument
392 PetscAssertPointer(mat, 4); in MatCreateComposite()
393 PetscCall(MatCreate(comm, mat)); in MatCreateComposite()
394 PetscCall(MatSetType(*mat, MATCOMPOSITE)); in MatCreateComposite()
395 for (PetscInt i = 0; i < nmat; i++) PetscCall(MatCompositeAddMat(*mat, mats[i])); in MatCreateComposite()
396 PetscCall(MatAssemblyBegin(*mat, MAT_FINAL_ASSEMBLY)); in MatCreateComposite()
397 PetscCall(MatAssemblyEnd(*mat, MAT_FINAL_ASSEMBLY)); in MatCreateComposite()
401 static PetscErrorCode MatCompositeAddMat_Composite(Mat mat, Mat smat) in MatCompositeAddMat_Composite() argument
409 PetscCall(MatShellGetContext(mat, &shell)); in MatCompositeAddMat_Composite()
414 ilink->mat = smat; in MatCompositeAddMat_Composite()
428 if (shell->nmat == 1) PetscCall(MatSetVecType(mat, vtype_smat)); in MatCompositeAddMat_Composite()
430 PetscCall(MatGetVecType(mat, &vtype_mat)); in MatCompositeAddMat_Composite()
432 if (!match) PetscCall(MatSetVecType(mat, VECSTANDARD)); in MatCompositeAddMat_Composite()
442 if (shell->nmat == 1) PetscCall(PetscLayoutReference(smat->cmap, &mat->cmap)); in MatCompositeAddMat_Composite()
443 PetscCall(PetscLayoutReference(smat->rmap, &mat->rmap)); in MatCompositeAddMat_Composite()
460 PetscErrorCode MatCompositeAddMat(Mat mat, Mat smat) in MatCompositeAddMat() argument
463 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCompositeAddMat()
465 PetscUseMethod(mat, "MatCompositeAddMat_C", (Mat, Mat), (mat, smat)); in MatCompositeAddMat()
469 static PetscErrorCode MatCompositeSetType_Composite(Mat mat, MatCompositeType type) in MatCompositeSetType_Composite() argument
474 PetscCall(MatShellGetContext(mat, &b)); in MatCompositeSetType_Composite()
477 PetscCall(MatShellSetOperation(mat, MATOP_GET_DIAGONAL, NULL)); in MatCompositeSetType_Composite()
478 …PetscCall(MatShellSetOperation(mat, MATOP_MULT, (PetscErrorCodeFn *)MatMult_Composite_Multiplicati… in MatCompositeSetType_Composite()
479 …PetscCall(MatShellSetOperation(mat, MATOP_MULT_TRANSPOSE, (PetscErrorCodeFn *)MatMultTranspose_Com… in MatCompositeSetType_Composite()
482 …PetscCall(MatShellSetOperation(mat, MATOP_GET_DIAGONAL, (PetscErrorCodeFn *)MatGetDiagonal_Composi… in MatCompositeSetType_Composite()
483 PetscCall(MatShellSetOperation(mat, MATOP_MULT, (PetscErrorCodeFn *)MatMult_Composite)); in MatCompositeSetType_Composite()
484 …PetscCall(MatShellSetOperation(mat, MATOP_MULT_TRANSPOSE, (PetscErrorCodeFn *)MatMultTranspose_Com… in MatCompositeSetType_Composite()
503 PetscErrorCode MatCompositeSetType(Mat mat, MatCompositeType type) in MatCompositeSetType() argument
506 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCompositeSetType()
507 PetscValidLogicalCollectiveEnum(mat, type, 2); in MatCompositeSetType()
508 PetscUseMethod(mat, "MatCompositeSetType_C", (Mat, MatCompositeType), (mat, type)); in MatCompositeSetType()
512 static PetscErrorCode MatCompositeGetType_Composite(Mat mat, MatCompositeType *type) in MatCompositeGetType_Composite() argument
517 PetscCall(MatShellGetContext(mat, &shell)); in MatCompositeGetType_Composite()
537 PetscErrorCode MatCompositeGetType(Mat mat, MatCompositeType *type) in MatCompositeGetType() argument
540 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCompositeGetType()
542 PetscUseMethod(mat, "MatCompositeGetType_C", (Mat, MatCompositeType *), (mat, type)); in MatCompositeGetType()
546 static PetscErrorCode MatCompositeSetMatStructure_Composite(Mat mat, MatStructure str) in MatCompositeSetMatStructure_Composite() argument
551 PetscCall(MatShellGetContext(mat, &shell)); in MatCompositeSetMatStructure_Composite()
572 PetscErrorCode MatCompositeSetMatStructure(Mat mat, MatStructure str) in MatCompositeSetMatStructure() argument
575 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCompositeSetMatStructure()
576 PetscUseMethod(mat, "MatCompositeSetMatStructure_C", (Mat, MatStructure), (mat, str)); in MatCompositeSetMatStructure()
580 static PetscErrorCode MatCompositeGetMatStructure_Composite(Mat mat, MatStructure *str) in MatCompositeGetMatStructure_Composite() argument
585 PetscCall(MatShellGetContext(mat, &shell)); in MatCompositeGetMatStructure_Composite()
605 PetscErrorCode MatCompositeGetMatStructure(Mat mat, MatStructure *str) in MatCompositeGetMatStructure() argument
608 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCompositeGetMatStructure()
610 PetscUseMethod(mat, "MatCompositeGetMatStructure_C", (Mat, MatStructure *), (mat, str)); in MatCompositeGetMatStructure()
614 static PetscErrorCode MatCompositeSetMergeType_Composite(Mat mat, MatCompositeMergeType type) in MatCompositeSetMergeType_Composite() argument
619 PetscCall(MatShellGetContext(mat, &shell)); in MatCompositeSetMergeType_Composite()
643 PetscErrorCode MatCompositeSetMergeType(Mat mat, MatCompositeMergeType type) in MatCompositeSetMergeType() argument
646 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCompositeSetMergeType()
647 PetscValidLogicalCollectiveEnum(mat, type, 2); in MatCompositeSetMergeType()
648 PetscUseMethod(mat, "MatCompositeSetMergeType_C", (Mat, MatCompositeMergeType), (mat, type)); in MatCompositeSetMergeType()
652 static PetscErrorCode MatCompositeMerge_Composite(Mat mat) in MatCompositeMerge_Composite() argument
662 PetscCall(MatShellGetContext(mat, &shell)); in MatCompositeMerge_Composite()
666 …PetscCall(MatShellGetScalingShifts(mat, &shift, &scale, &dshift, &left, &right, (Mat *)MAT_SHELL_N… in MatCompositeMerge_Composite()
670 PetscCall(MatDuplicate(next->mat, MAT_COPY_VALUES, &tmat)); in MatCompositeMerge_Composite()
672 …etscCall(MatAXPY(tmat, shell->scalings ? shell->scalings[i++] : 1.0, next->mat, shell->structure)); in MatCompositeMerge_Composite()
675 PetscCall(MatDuplicate(prev->mat, MAT_COPY_VALUES, &tmat)); in MatCompositeMerge_Composite()
677 …etscCall(MatAXPY(tmat, shell->scalings ? shell->scalings[i--] : 1.0, prev->mat, shell->structure)); in MatCompositeMerge_Composite()
681 PetscCall(MatDuplicate(next->mat, MAT_COPY_VALUES, &tmat)); in MatCompositeMerge_Composite()
683 PetscCall(MatMatMult(next->mat, tmat, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &newmat)); in MatCompositeMerge_Composite()
688 PetscCall(MatDuplicate(prev->mat, MAT_COPY_VALUES, &tmat)); in MatCompositeMerge_Composite()
690 PetscCall(MatMatMult(tmat, prev->mat, MAT_INITIAL_MATRIX, PETSC_DETERMINE, &newmat)); in MatCompositeMerge_Composite()
704 PetscCall(MatHeaderReplace(mat, &tmat)); in MatCompositeMerge_Composite()
706 PetscCall(MatDiagonalScale(mat, left, right)); in MatCompositeMerge_Composite()
707 PetscCall(MatScale(mat, scale)); in MatCompositeMerge_Composite()
708 PetscCall(MatShift(mat, shift)); in MatCompositeMerge_Composite()
712 PetscCall(MatDiagonalSet(mat, dshift, ADD_VALUES)); in MatCompositeMerge_Composite()
738 PetscErrorCode MatCompositeMerge(Mat mat) in MatCompositeMerge() argument
741 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCompositeMerge()
742 PetscUseMethod(mat, "MatCompositeMerge_C", (Mat), (mat)); in MatCompositeMerge()
746 static PetscErrorCode MatCompositeGetNumberMat_Composite(Mat mat, PetscInt *nmat) in MatCompositeGetNumberMat_Composite() argument
751 PetscCall(MatShellGetContext(mat, &shell)); in MatCompositeGetNumberMat_Composite()
771 PetscErrorCode MatCompositeGetNumberMat(Mat mat, PetscInt *nmat) in MatCompositeGetNumberMat() argument
774 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCompositeGetNumberMat()
776 PetscUseMethod(mat, "MatCompositeGetNumberMat_C", (Mat, PetscInt *), (mat, nmat)); in MatCompositeGetNumberMat()
780 static PetscErrorCode MatCompositeGetMat_Composite(Mat mat, PetscInt i, Mat *Ai) in MatCompositeGetMat_Composite() argument
787 PetscCall(MatShellGetContext(mat, &shell)); in MatCompositeGetMat_Composite()
788 …PetscCheck(i < shell->nmat, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUTOFRANGE, "index ou… in MatCompositeGetMat_Composite()
791 *Ai = ilink->mat; in MatCompositeGetMat_Composite()
811 PetscErrorCode MatCompositeGetMat(Mat mat, PetscInt i, Mat *Ai) in MatCompositeGetMat() argument
814 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCompositeGetMat()
815 PetscValidLogicalCollectiveInt(mat, i, 2); in MatCompositeGetMat()
817 PetscUseMethod(mat, "MatCompositeGetMat_C", (Mat, PetscInt, Mat *), (mat, i, Ai)); in MatCompositeGetMat()
821 static PetscErrorCode MatCompositeSetScalings_Composite(Mat mat, const PetscScalar *scalings) in MatCompositeSetScalings_Composite() argument
827 PetscCall(MatShellGetContext(mat, &shell)); in MatCompositeSetScalings_Composite()
828 PetscCall(MatCompositeGetNumberMat(mat, &nmat)); in MatCompositeSetScalings_Composite()
847 PetscErrorCode MatCompositeSetScalings(Mat mat, const PetscScalar *scalings) in MatCompositeSetScalings() argument
850 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCompositeSetScalings()
852 PetscValidLogicalCollectiveScalar(mat, *scalings, 2); in MatCompositeSetScalings()
853 PetscUseMethod(mat, "MatCompositeSetScalings_C", (Mat, const PetscScalar *), (mat, scalings)); in MatCompositeSetScalings()