Lines Matching refs:C
25 PetscErrorCode MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart(Mat A, Mat R, PetscReal fill, Mat C) in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart() argument
35 MatCheckProduct(C, 4); in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
36 …PetscCheck(!C->product->data, PetscObjectComm((PetscObject)C), PETSC_ERR_PLIB, "Product data not e… in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
41 PetscCall(MatPtAPSymbolic_SeqAIJ_SeqAIJ_SparseAxpy(A, P, fill, C)); in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
42 PetscCall(MatSetBlockSizes(C, R->rmap->bs, R->rmap->bs)); in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
43 C->ops->rartnumeric = MatRARtNumeric_SeqAIJ_SeqAIJ_colorrart; in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
47 C->product->data = rart; in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
48 C->product->destroy = MatProductCtxDestroy_SeqAIJ_RARt; in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
52 PetscCall(MatSetOption(C, MAT_USE_INODES, PETSC_FALSE)); in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
55 PetscCall(MatColoringCreate(C, &coloring)); in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
61 PetscCall(MatTransposeColoringCreate(C, iscoloring, &matcoloring)); in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
77 …PetscCall(MatSetSizes(RARt_dense, C->rmap->n, matcoloring->ncolors, C->rmap->n, matcoloring->ncolo… in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
91 Mat_SeqAIJ *c = (Mat_SeqAIJ *)C->data; in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
93 PetscCall(PetscInfo(C, "C=R*(A*Rt) via coloring C - use sparse-dense inner products\n")); in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
94 …PetscCall(PetscInfo(C, "RARt_den %" PetscInt_FMT " %" PetscInt_FMT "; Rt %" PetscInt_FMT " %" Pets… in MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart()
219 PetscErrorCode MatRARtNumeric_SeqAIJ_SeqAIJ_colorrart(Mat A, Mat R, Mat C) in MatRARtNumeric_SeqAIJ_SeqAIJ_colorrart() argument
226 MatCheckProduct(C, 3); in MatRARtNumeric_SeqAIJ_SeqAIJ_colorrart()
227 …PetscCheck(C->product->data, PetscObjectComm((PetscObject)C), PETSC_ERR_PLIB, "Product data empty"… in MatRARtNumeric_SeqAIJ_SeqAIJ_colorrart()
228 rart = (MatProductCtx_RARt *)C->product->data; in MatRARtNumeric_SeqAIJ_SeqAIJ_colorrart()
240 PetscCall(MatTransColoringApplyDenToSp(matcoloring, RARt, C)); in MatRARtNumeric_SeqAIJ_SeqAIJ_colorrart()
244 …tscErrorCode MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult(Mat A, Mat R, PetscReal fill, Mat C) in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult() argument
251 MatCheckProduct(C, 4); in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult()
252 …PetscCheck(!C->product->data, PetscObjectComm((PetscObject)C), PETSC_ERR_PLIB, "Product data not e… in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult()
263 PetscCall(PetscStrallocpy(C->product->alg, &alg)); in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult()
264 PetscCall(MatProductSetAlgorithm(C, "sorted")); in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult()
265 PetscCall(MatMatMultSymbolic_SeqAIJ_SeqAIJ(R, ARt, fill, C)); in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult()
267 PetscCall(MatProductSetAlgorithm(C, alg)); in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult()
270 C->ops->rartnumeric = MatRARtNumeric_SeqAIJ_SeqAIJ_matmattransposemult; in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult()
274 C->product->data = rart; in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult()
275 C->product->destroy = MatProductCtxDestroy_SeqAIJ_RARt; in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult()
276 …PetscCall(PetscInfo(C, "Use ARt=A*R^T, C=R*ARt via MatMatTransposeMult(). Coloring can be applied … in MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult()
280 PetscErrorCode MatRARtNumeric_SeqAIJ_SeqAIJ_matmattransposemult(Mat A, Mat R, Mat C) in MatRARtNumeric_SeqAIJ_SeqAIJ_matmattransposemult() argument
285 MatCheckProduct(C, 3); in MatRARtNumeric_SeqAIJ_SeqAIJ_matmattransposemult()
286 …PetscCheck(C->product->data, PetscObjectComm((PetscObject)C), PETSC_ERR_PLIB, "Product data empty"… in MatRARtNumeric_SeqAIJ_SeqAIJ_matmattransposemult()
287 rart = (MatProductCtx_RARt *)C->product->data; in MatRARtNumeric_SeqAIJ_SeqAIJ_matmattransposemult()
289 PetscCall(MatMatMultNumeric_SeqAIJ_SeqAIJ(R, rart->ARt, C)); in MatRARtNumeric_SeqAIJ_SeqAIJ_matmattransposemult()
293 PetscErrorCode MatRARtSymbolic_SeqAIJ_SeqAIJ(Mat A, Mat R, PetscReal fill, Mat C) in MatRARtSymbolic_SeqAIJ_SeqAIJ() argument
299 MatCheckProduct(C, 4); in MatRARtSymbolic_SeqAIJ_SeqAIJ()
300 …PetscCheck(!C->product->data, PetscObjectComm((PetscObject)C), PETSC_ERR_PLIB, "Product data not e… in MatRARtSymbolic_SeqAIJ_SeqAIJ()
302 PetscCall(MatMatMatMultSymbolic_SeqAIJ_SeqAIJ_SeqAIJ(R, A, Rt, fill, C)); in MatRARtSymbolic_SeqAIJ_SeqAIJ()
305 rart->data = C->product->data; in MatRARtSymbolic_SeqAIJ_SeqAIJ()
306 rart->destroy = C->product->destroy; in MatRARtSymbolic_SeqAIJ_SeqAIJ()
308 C->product->data = rart; in MatRARtSymbolic_SeqAIJ_SeqAIJ()
309 C->product->destroy = MatProductCtxDestroy_SeqAIJ_RARt; in MatRARtSymbolic_SeqAIJ_SeqAIJ()
310 C->ops->rartnumeric = MatRARtNumeric_SeqAIJ_SeqAIJ; in MatRARtSymbolic_SeqAIJ_SeqAIJ()
311 …PetscCall(PetscInfo(C, "Use Rt=R^T and C=R*A*Rt via MatMatMatMult() to avoid sparse inner products… in MatRARtSymbolic_SeqAIJ_SeqAIJ()
315 PetscErrorCode MatRARtNumeric_SeqAIJ_SeqAIJ(Mat A, Mat R, Mat C) in MatRARtNumeric_SeqAIJ_SeqAIJ() argument
320 MatCheckProduct(C, 3); in MatRARtNumeric_SeqAIJ_SeqAIJ()
321 …PetscCheck(C->product->data, PetscObjectComm((PetscObject)C), PETSC_ERR_PLIB, "Product data empty"… in MatRARtNumeric_SeqAIJ_SeqAIJ()
322 rart = (MatProductCtx_RARt *)C->product->data; in MatRARtNumeric_SeqAIJ_SeqAIJ()
325 C->product->data = rart->data; in MatRARtNumeric_SeqAIJ_SeqAIJ()
326 PetscCall(MatMatMatMultNumeric_SeqAIJ_SeqAIJ_SeqAIJ(R, A, rart->Rt, C)); in MatRARtNumeric_SeqAIJ_SeqAIJ()
327 C->product->data = rart; in MatRARtNumeric_SeqAIJ_SeqAIJ()
331 PetscErrorCode MatRARt_SeqAIJ_SeqAIJ(Mat A, Mat R, MatReuse scall, PetscReal fill, Mat *C) in MatRARt_SeqAIJ_SeqAIJ() argument
343 PetscCall(MatCreate(PETSC_COMM_SELF, C)); in MatRARt_SeqAIJ_SeqAIJ()
347 PetscCall(MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult(A, R, fill, *C)); in MatRARt_SeqAIJ_SeqAIJ()
351 PetscCall(MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart(A, R, fill, *C)); in MatRARt_SeqAIJ_SeqAIJ()
355 PetscCall(MatRARtSymbolic_SeqAIJ_SeqAIJ(A, R, fill, *C)); in MatRARt_SeqAIJ_SeqAIJ()
362 PetscCall(((*C)->ops->rartnumeric)(A, R, *C)); in MatRARt_SeqAIJ_SeqAIJ()
367 PetscErrorCode MatProductSymbolic_RARt_SeqAIJ_SeqAIJ(Mat C) in MatProductSymbolic_RARt_SeqAIJ_SeqAIJ() argument
369 Mat_Product *product = C->product; in MatProductSymbolic_RARt_SeqAIJ_SeqAIJ()
378 PetscCall(MatRARtSymbolic_SeqAIJ_SeqAIJ(A, R, fill, C)); in MatProductSymbolic_RARt_SeqAIJ_SeqAIJ()
384 PetscCall(MatRARtSymbolic_SeqAIJ_SeqAIJ_matmattransposemult(A, R, fill, C)); in MatProductSymbolic_RARt_SeqAIJ_SeqAIJ()
390 PetscCall(MatRARtSymbolic_SeqAIJ_SeqAIJ_colorrart(A, R, fill, C)); in MatProductSymbolic_RARt_SeqAIJ_SeqAIJ()
397 C->ops->productnumeric = MatProductNumeric_RARt; in MatProductSymbolic_RARt_SeqAIJ_SeqAIJ()