Lines Matching refs:product
48 Mat_Product *product = C->product; in MatProductNumeric_PtAP_Unsafe() local
49 Mat P = product->B, AP = product->Dwork; in MatProductNumeric_PtAP_Unsafe()
55 product->type = MATPRODUCT_AtB; in MatProductNumeric_PtAP_Unsafe()
57 product->type = MATPRODUCT_PtAP; in MatProductNumeric_PtAP_Unsafe()
63 Mat_Product *product = C->product; in MatProductSymbolic_PtAP_Unsafe() local
64 Mat A = product->A, P = product->B, AP; in MatProductSymbolic_PtAP_Unsafe()
65 PetscReal fill = product->fill; in MatProductSymbolic_PtAP_Unsafe()
68 …etscInfo(C, "for A %s, P %s is used\n", ((PetscObject)product->A)->type_name, ((PetscObject)produc… in MatProductSymbolic_PtAP_Unsafe()
80 product->A = P; in MatProductSymbolic_PtAP_Unsafe()
81 product->B = AP; in MatProductSymbolic_PtAP_Unsafe()
86 product->type = MATPRODUCT_PtAP; in MatProductSymbolic_PtAP_Unsafe()
87 product->A = A; in MatProductSymbolic_PtAP_Unsafe()
88 product->B = P; in MatProductSymbolic_PtAP_Unsafe()
89 product->Dwork = AP; in MatProductSymbolic_PtAP_Unsafe()
97 Mat_Product *product = C->product; in MatProductNumeric_RARt_Unsafe() local
98 Mat R = product->B, RA = product->Dwork; in MatProductNumeric_RARt_Unsafe()
104 product->type = MATPRODUCT_ABt; in MatProductNumeric_RARt_Unsafe()
106 product->type = MATPRODUCT_RARt; in MatProductNumeric_RARt_Unsafe()
112 Mat_Product *product = C->product; in MatProductSymbolic_RARt_Unsafe() local
113 Mat A = product->A, R = product->B, RA; in MatProductSymbolic_RARt_Unsafe()
114 PetscReal fill = product->fill; in MatProductSymbolic_RARt_Unsafe()
117 …etscInfo(C, "for A %s, R %s is used\n", ((PetscObject)product->A)->type_name, ((PetscObject)produc… in MatProductSymbolic_RARt_Unsafe()
129 product->A = RA; in MatProductSymbolic_RARt_Unsafe()
134 product->type = MATPRODUCT_RARt; in MatProductSymbolic_RARt_Unsafe()
135 product->A = A; in MatProductSymbolic_RARt_Unsafe()
136 product->Dwork = RA; /* save here so it will be destroyed with product C */ in MatProductSymbolic_RARt_Unsafe()
143 Mat_Product *product = mat->product; in MatProductNumeric_ABC_Unsafe() local
144 Mat A = product->A, BC = product->Dwork; in MatProductNumeric_ABC_Unsafe()
150 product->type = MATPRODUCT_AB; in MatProductNumeric_ABC_Unsafe()
152 product->type = MATPRODUCT_ABC; in MatProductNumeric_ABC_Unsafe()
158 Mat_Product *product = mat->product; in MatProductSymbolic_ABC_Unsafe() local
159 Mat B = product->B, C = product->C, BC; in MatProductSymbolic_ABC_Unsafe()
160 PetscReal fill = product->fill; in MatProductSymbolic_ABC_Unsafe()
163 …%s, C %s is used\n", ((PetscObject)product->A)->type_name, ((PetscObject)product->B)->type_name, (… in MatProductSymbolic_ABC_Unsafe()
175 product->B = BC; in MatProductSymbolic_ABC_Unsafe()
176 product->Dwork = BC; in MatProductSymbolic_ABC_Unsafe()
181 product->type = MATPRODUCT_ABC; in MatProductSymbolic_ABC_Unsafe()
182 product->B = B; in MatProductSymbolic_ABC_Unsafe()
189 Mat_Product *product = mat->product; in MatProductSymbolic_Unsafe() local
192 switch (product->type) { in MatProductSymbolic_Unsafe()
203 …etscObject)mat), PETSC_ERR_SUP, "ProductType %s is not supported", MatProductTypes[product->type]); in MatProductSymbolic_Unsafe()
231 Mat_Product *product; in MatProductReplaceMats() local
237 product = D->product; in MatProductReplaceMats()
241 PetscCall(PetscObjectTypeCompare((PetscObject)product->A, ((PetscObject)A)->type_name, &flgA)); in MatProductReplaceMats()
243 …if (product->symbolic_used_the_fact_A_is_symmetric && isset && !issym) { /* symbolic was built aro… in MatProductReplaceMats()
245 product->symbolic_used_the_fact_A_is_symmetric = PETSC_FALSE; /* reinit */ in MatProductReplaceMats()
247 PetscCall(MatDestroy(&product->A)); in MatProductReplaceMats()
248 product->A = A; in MatProductReplaceMats()
253 PetscCall(PetscObjectTypeCompare((PetscObject)product->B, ((PetscObject)B)->type_name, &flgB)); in MatProductReplaceMats()
255 if (product->symbolic_used_the_fact_B_is_symmetric && isset && !issym) { in MatProductReplaceMats()
257 product->symbolic_used_the_fact_B_is_symmetric = PETSC_FALSE; /* reinit */ in MatProductReplaceMats()
259 PetscCall(MatDestroy(&product->B)); in MatProductReplaceMats()
260 product->B = B; in MatProductReplaceMats()
265 PetscCall(PetscObjectTypeCompare((PetscObject)product->C, ((PetscObject)C)->type_name, &flgC)); in MatProductReplaceMats()
267 if (product->symbolic_used_the_fact_C_is_symmetric && isset && !issym) { in MatProductReplaceMats()
269 product->symbolic_used_the_fact_C_is_symmetric = PETSC_FALSE; /* reinit */ in MatProductReplaceMats()
271 PetscCall(MatDestroy(&product->C)); in MatProductReplaceMats()
272 product->C = C; in MatProductReplaceMats()
276 if (D->product->destroy) PetscCall((*D->product->destroy)(&D->product->data)); in MatProductReplaceMats()
277 D->product->destroy = NULL; in MatProductReplaceMats()
278 D->product->data = NULL; in MatProductReplaceMats()
289 Mat_Product *product = C->product; in MatProductNumeric_X_Dense() local
290 Mat A = product->A, B = product->B; in MatProductNumeric_X_Dense()
297 switch (product->type) { in MatProductNumeric_X_Dense()
303 …ctNumeric type %s not supported for %s and %s matrices", MatProductTypes[product->type], ((PetscOb… in MatProductNumeric_X_Dense()
362 Mat_Product *product = C->product; in MatProductSymbolic_X_Dense() local
363 Mat A = product->A, B = product->B; in MatProductSymbolic_X_Dense()
367 switch (product->type) { in MatProductSymbolic_X_Dense()
375 …tSymbolic type %s not supported for %s and %s matrices", MatProductTypes[product->type], ((PetscOb… in MatProductSymbolic_X_Dense()
391 Mat_Product *product = mat->product; in MatProductSetFromOptions_Private() local
393 Mat A = product->A, B = product->B, C = product->C; in MatProductSetFromOptions_Private()
404 if (product->type == MATPRODUCT_UNSPECIFIED) PetscFunctionReturn(PETSC_SUCCESS); in MatProductSetFromOptions_Private()
407 …PetscCheck(product->type != MATPRODUCT_ABC || C, PetscObjectComm((PetscObject)mat), PETSC_ERR_PLIB… in MatProductSetFromOptions_Private()
408 if (product->type != MATPRODUCT_ABC) C = NULL; /* do not use C if not needed */ in MatProductSetFromOptions_Private()
409 if (product->type == MATPRODUCT_RARt) bname = Bnames[1]; in MatProductSetFromOptions_Private()
410 else if (product->type == MATPRODUCT_PtAP) bname = Bnames[2]; in MatProductSetFromOptions_Private()
420 if (product->type == MATPRODUCT_RARt || product->type == MATPRODUCT_ABt) { in MatProductSetFromOptions_Private()
425 if (product->type == MATPRODUCT_AtB) An = Am; in MatProductSetFromOptions_Private()
428 MatProductTypes[product->type], A->rmap->N, A->cmap->N, bname, B->rmap->N, B->cmap->N); in MatProductSetFromOptions_Private()
430 MatProductTypes[product->type], B->rmap->N, B->cmap->N, Cm, Cn); in MatProductSetFromOptions_Private()
436 …PetscCall(PetscInfo(mat, "MatProductType %s for A %s, %s %s, C %s\n", MatProductTypes[product->typ… in MatProductSetFromOptions_Private()
438 …PetscCall(PetscInfo(mat, "MatProductType %s for A %s, %s %s\n", MatProductTypes[product->type], ((… in MatProductSetFromOptions_Private()
494 if (product->type == MATPRODUCT_AB || product->type == MATPRODUCT_AtB) { in MatProductSetFromOptions_Private()
502 …} else if (product->type != MATPRODUCT_ABt) { /* use MatProductSymbolic/Numeric_Unsafe() for tripl… in MatProductSetFromOptions_Private()
543 …PetscCheck(!mat->product->data, PetscObjectComm((PetscObject)mat), PETSC_ERR_ORDER, "Cannot call M… in MatProductSetFromOptions()
544 mat->product->setfromoptionscalled = PETSC_TRUE; in MatProductSetFromOptions()
546 …MatProductNumeric() has been called", "MatProductClear", mat->product->clear, &mat->product->clear… in MatProductSetFromOptions()
550 …PetscCheck(mat->product, PetscObjectComm((PetscObject)mat), PETSC_ERR_PLIB, "Missing product after… in MatProductSetFromOptions()
574 if (!mat->product) PetscFunctionReturn(PETSC_SUCCESS); in MatProductView()
578 if (mat->product->view) PetscCall((*mat->product->view)(mat, viewer)); in MatProductView()
586 Mat_Product *product = mat->product; in MatProductNumeric_AB() local
587 Mat A = product->A, B = product->B; in MatProductNumeric_AB()
596 Mat_Product *product = mat->product; in MatProductNumeric_AtB() local
597 Mat A = product->A, B = product->B; in MatProductNumeric_AtB()
606 Mat_Product *product = mat->product; in MatProductNumeric_ABt() local
607 Mat A = product->A, B = product->B; in MatProductNumeric_ABt()
616 Mat_Product *product = mat->product; in MatProductNumeric_PtAP() local
617 Mat A = product->A, B = product->B; in MatProductNumeric_PtAP()
626 Mat_Product *product = mat->product; in MatProductNumeric_RARt() local
627 Mat A = product->A, B = product->B; in MatProductNumeric_RARt()
636 Mat_Product *product = mat->product; in MatProductNumeric_ABC() local
637 Mat A = product->A, B = product->B, C = product->C; in MatProductNumeric_ABC()
666 switch (mat->product->type) { in MatProductNumeric()
686 …bject)mat), PETSC_ERR_SUP, "ProductType %s is not supported", MatProductTypes[mat->product->type]); in MatProductNumeric()
693 } else if (mat->product) { in MatProductNumeric()
696 if (mat->product->type == MATPRODUCT_ABC) { in MatProductNumeric()
697 …tTypes[mat->product->type], ((PetscObject)mat->product->A)->type_name, ((PetscObject)mat->product-… in MatProductNumeric()
699 …A %s, B %s", MatProductTypes[mat->product->type], ((PetscObject)mat->product->A)->type_name, ((Pet… in MatProductNumeric()
703 …PetscCheck(mat->product, PetscObjectComm((PetscObject)mat), PETSC_ERR_PLIB, "Missing struct after … in MatProductNumeric()
705 if (mat->product->clear) PetscCall(MatProductClear(mat)); in MatProductNumeric()
714 Mat_Product *product = mat->product; in MatProductSymbolic_AB() local
715 Mat A = product->A, B = product->B; in MatProductSymbolic_AB()
718 PetscCall((*mat->ops->matmultsymbolic)(A, B, product->fill, mat)); in MatProductSymbolic_AB()
725 Mat_Product *product = mat->product; in MatProductSymbolic_AtB() local
726 Mat A = product->A, B = product->B; in MatProductSymbolic_AtB()
729 PetscCall((*mat->ops->transposematmultsymbolic)(A, B, product->fill, mat)); in MatProductSymbolic_AtB()
736 Mat_Product *product = mat->product; in MatProductSymbolic_ABt() local
737 Mat A = product->A, B = product->B; in MatProductSymbolic_ABt()
740 PetscCall((*mat->ops->mattransposemultsymbolic)(A, B, product->fill, mat)); in MatProductSymbolic_ABt()
747 Mat_Product *product = mat->product; in MatProductSymbolic_ABC() local
748 Mat A = product->A, B = product->B, C = product->C; in MatProductSymbolic_ABC()
751 PetscCall((*mat->ops->matmatmultsymbolic)(A, B, C, product->fill, mat)); in MatProductSymbolic_ABC()
776 Mat_Product *product = mat->product; in MatProductSymbolic() local
777 Mat A = product->A; in MatProductSymbolic()
778 Mat B = product->B; in MatProductSymbolic()
779 Mat C = product->C; in MatProductSymbolic()
784 …PetscCheck(!mat->product->data, PetscObjectComm((PetscObject)mat), PETSC_ERR_ORDER, "Cannot run sy… in MatProductSymbolic()
785 switch (mat->product->type) { in MatProductSymbolic()
805 …bject)mat), PETSC_ERR_SUP, "ProductType %s is not supported", MatProductTypes[mat->product->type]); in MatProductSymbolic()
813 if (missing || !mat->product || !mat->ops->productnumeric) { in MatProductSymbolic()
816 if (mat->product->type == MATPRODUCT_ABC) { in MatProductSymbolic()
817 …tTypes[mat->product->type], ((PetscObject)mat->product->A)->type_name, ((PetscObject)mat->product-… in MatProductSymbolic()
819 …A %s, B %s", MatProductTypes[mat->product->type], ((PetscObject)mat->product->A)->type_name, ((Pet… in MatProductSymbolic()
821 …PetscCheck(mat->product->setfromoptionscalled, PetscObjectComm((PetscObject)mat), PETSC_ERR_PLIB, … in MatProductSymbolic()
823 …PetscCheck(mat->product, PetscObjectComm((PetscObject)mat), PETSC_ERR_PLIB, "Missing struct after … in MatProductSymbolic()
835 switch (product->type) { in MatProductSymbolic()
855 …tComm((PetscObject)mat), PETSC_ERR_PLIB, "Not for ProductType %s", MatProductTypes[product->type]); in MatProductSymbolic()
884 if (fill == (PetscReal)PETSC_DETERMINE) mat->product->fill = mat->product->default_fill; in MatProductSetFill()
885 else if (fill != (PetscReal)PETSC_CURRENT) mat->product->fill = fill; in MatProductSetFill()
910 PetscCall(PetscFree(mat->product->alg)); in MatProductSetAlgorithm()
911 PetscCall(PetscStrallocpy(alg, &mat->product->alg)); in MatProductSetAlgorithm()
935 if (mat->product) *alg = mat->product->alg; in MatProductGetAlgorithm()
964 if (productype != mat->product->type) { in MatProductSetType()
965 if (mat->product->destroy) PetscCall((*mat->product->destroy)(&mat->product->data)); in MatProductSetType()
966 mat->product->destroy = NULL; in MatProductSetType()
967 mat->product->data = NULL; in MatProductSetType()
971 mat->product->type = productype; in MatProductSetType()
1000 Mat_Product *product = mat->product; in MatProductClear() local
1004 if (product) { in MatProductClear()
1005 PetscCall(MatDestroy(&product->A)); in MatProductClear()
1006 PetscCall(MatDestroy(&product->B)); in MatProductClear()
1007 PetscCall(MatDestroy(&product->C)); in MatProductClear()
1008 PetscCall(PetscFree(product->alg)); in MatProductClear()
1009 PetscCall(MatDestroy(&product->Dwork)); in MatProductClear()
1010 if (product->destroy) PetscCall((*product->destroy)(&product->data)); in MatProductClear()
1012 PetscCall(PetscFree(mat->product)); in MatProductClear()
1021 Mat_Product *product = NULL; in MatProductCreate_Private() local
1025 …PetscCheck(!D->product, PetscObjectComm((PetscObject)D), PETSC_ERR_PLIB, "Product already present"… in MatProductCreate_Private()
1026 PetscCall(PetscNew(&product)); in MatProductCreate_Private()
1027 product->A = A; in MatProductCreate_Private()
1028 product->B = B; in MatProductCreate_Private()
1029 product->C = C; in MatProductCreate_Private()
1030 product->type = MATPRODUCT_UNSPECIFIED; in MatProductCreate_Private()
1031 product->Dwork = NULL; in MatProductCreate_Private()
1032 product->api_user = PETSC_FALSE; in MatProductCreate_Private()
1033 product->clear = PETSC_FALSE; in MatProductCreate_Private()
1034 product->setfromoptionscalled = PETSC_FALSE; in MatProductCreate_Private()
1035 PetscObjectParameterSetDefault(product, fill, 2); in MatProductCreate_Private()
1036 D->product = product; in MatProductCreate_Private()
1200 Mat_Product *product = mat->product; in MatProductNumeric_ABC_Basic() local
1205 …PetscCheck(mat->product->data, PetscObjectComm((PetscObject)mat), PETSC_ERR_PLIB, "Product data em… in MatProductNumeric_ABC_Basic()
1206 mmabc = (MatProductCtx_MatMatMatPrivate *)mat->product->data; in MatProductNumeric_ABC_Basic()
1211 mat->product = mmabc->ABC->product; in MatProductNumeric_ABC_Basic()
1216 mat->product = product; in MatProductNumeric_ABC_Basic()
1222 Mat_Product *product = mat->product; in MatProductSymbolic_ABC_Basic() local
1230 …PetscCheck(!mat->product->data, PetscObjectComm((PetscObject)mat), PETSC_ERR_PLIB, "Product data n… in MatProductSymbolic_ABC_Basic()
1233 product->data = mmabc; in MatProductSymbolic_ABC_Basic()
1234 product->destroy = MatProductCtxDestroy_MatMatMatPrivate; in MatProductSymbolic_ABC_Basic()
1235 switch (product->type) { in MatProductSymbolic_ABC_Basic()
1239 A = product->B; in MatProductSymbolic_ABC_Basic()
1240 B = product->A; in MatProductSymbolic_ABC_Basic()
1241 C = product->B; in MatProductSymbolic_ABC_Basic()
1247 A = product->B; in MatProductSymbolic_ABC_Basic()
1248 B = product->A; in MatProductSymbolic_ABC_Basic()
1249 C = product->B; in MatProductSymbolic_ABC_Basic()
1255 A = product->A; in MatProductSymbolic_ABC_Basic()
1256 B = product->B; in MatProductSymbolic_ABC_Basic()
1257 C = product->C; in MatProductSymbolic_ABC_Basic()
1261 …tComm((PetscObject)mat), PETSC_ERR_PLIB, "Not for ProductType %s", MatProductTypes[product->type]); in MatProductSymbolic_ABC_Basic()
1268 PetscCall(MatProductSetFill(mmabc->BC, product->fill)); in MatProductSymbolic_ABC_Basic()
1269 mmabc->BC->product->api_user = product->api_user; in MatProductSymbolic_ABC_Basic()
1280 PetscCall(MatProductSetFill(mmabc->ABC, product->fill)); in MatProductSymbolic_ABC_Basic()
1281 mmabc->ABC->product->api_user = product->api_user; in MatProductSymbolic_ABC_Basic()
1285 mat->product = mmabc->ABC->product; in MatProductSymbolic_ABC_Basic()
1292 mat->product = product; in MatProductSymbolic_ABC_Basic()
1317 if (mat->product) *mtype = mat->product->type; in MatProductGetType()
1342 if (A) *A = mat->product ? mat->product->A : NULL; in MatProductGetMats()
1343 if (B) *B = mat->product ? mat->product->B : NULL; in MatProductGetMats()
1344 if (C) *C = mat->product ? mat->product->C : NULL; in MatProductGetMats()