Lines Matching refs:pc

18 static PetscErrorCode PCApply_Mat(PC pc, Vec x, Vec y)  in PCApply_Mat()  argument
20 PC_Mat *pcmat = (PC_Mat *)pc->data; in PCApply_Mat()
25 PetscCall(MatMult(pc->pmat, x, y)); in PCApply_Mat()
28 PetscCall(MatMultTranspose(pc->pmat, x, y)); in PCApply_Mat()
31 PetscCall(MatSolve(pc->pmat, x, y)); in PCApply_Mat()
34 PetscCall(MatSolveTranspose(pc->pmat, x, y)); in PCApply_Mat()
37 PetscCall(MatMultHermitianTranspose(pc->pmat, x, y)); in PCApply_Mat()
40 …SETERRQ(PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_INCOMP, "Unsupported %s case", PCMatOpType… in PCApply_Mat()
45 static PetscErrorCode PCSetUp_Mat(PC pc) in PCSetUp_Mat() argument
47 PC_Mat *pcmat = (PC_Mat *)pc->data; in PCSetUp_Mat()
52 PetscCall(MatHasOperation(pc->pmat, MATOP_SOLVE, &hassolve)); in PCSetUp_Mat()
59 static PetscErrorCode PCMatApply_Mat(PC pc, Mat X, Mat Y) in PCMatApply_Mat() argument
61 PC_Mat *pcmat = (PC_Mat *)pc->data; in PCMatApply_Mat()
67 PetscCall(MatMatMult(pc->pmat, X, MAT_REUSE_MATRIX, PETSC_CURRENT, &Y)); in PCMatApply_Mat()
70 PetscCall(MatTransposeMatMult(pc->pmat, X, MAT_REUSE_MATRIX, PETSC_CURRENT, &Y)); in PCMatApply_Mat()
73 PetscCall(MatMatSolve(pc->pmat, X, Y)); in PCMatApply_Mat()
76 PetscCall(MatMatSolveTranspose(pc->pmat, X, Y)); in PCMatApply_Mat()
81 PetscCall(MatTransposeMatMult(pc->pmat, W, MAT_REUSE_MATRIX, PETSC_CURRENT, &Y)); in PCMatApply_Mat()
86 …SETERRQ(PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_INCOMP, "Unsupported %s case", PCMatOpType… in PCMatApply_Mat()
91 static PetscErrorCode PCApplyTranspose_Mat(PC pc, Vec x, Vec y) in PCApplyTranspose_Mat() argument
93 PC_Mat *pcmat = (PC_Mat *)pc->data; in PCApplyTranspose_Mat()
99 PetscCall(MatMultTranspose(pc->pmat, x, y)); in PCApplyTranspose_Mat()
102 PetscCall(MatMult(pc->pmat, x, y)); in PCApplyTranspose_Mat()
105 PetscCall(MatSolveTranspose(pc->pmat, x, y)); in PCApplyTranspose_Mat()
108 PetscCall(MatSolve(pc->pmat, x, y)); in PCApplyTranspose_Mat()
114 PetscCall(MatMult(pc->pmat, w, y)); in PCApplyTranspose_Mat()
119 …SETERRQ(PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_INCOMP, "Unsupported %s case", PCMatOpType… in PCApplyTranspose_Mat()
124 static PetscErrorCode PCDestroy_Mat(PC pc) in PCDestroy_Mat() argument
127 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCMatSetApplyOperation_C", NULL)); in PCDestroy_Mat()
128 PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCMatGetApplyOperation_C", NULL)); in PCDestroy_Mat()
129 PetscCall(PetscFree(pc->data)); in PCDestroy_Mat()
150 PetscErrorCode PCMatSetApplyOperation(PC pc, MatOperation matop) in PCMatSetApplyOperation() argument
153 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCMatSetApplyOperation()
154 PetscTryMethod(pc, "PCMatSetApplyOperation_C", (PC, MatOperation), (pc, matop)); in PCMatSetApplyOperation()
173 PetscErrorCode PCMatGetApplyOperation(PC pc, MatOperation *matop) in PCMatGetApplyOperation() argument
176 PetscValidHeaderSpecific(pc, PC_CLASSID, 1); in PCMatGetApplyOperation()
178 PetscUseMethod(pc, "PCMatGetApplyOperation_C", (PC, MatOperation *), (pc, matop)); in PCMatGetApplyOperation()
182 static PetscErrorCode PCMatSetApplyOperation_Mat(PC pc, MatOperation matop) in PCMatSetApplyOperation_Mat() argument
184 PC_Mat *pcmat = (PC_Mat *)pc->data; in PCMatSetApplyOperation_Mat()
197 …SETERRQ(PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_INCOMP, "Unsupported MatOperation %d for P… in PCMatSetApplyOperation_Mat()
206 static PetscErrorCode PCMatGetApplyOperation_Mat(PC pc, MatOperation *matop_p) in PCMatGetApplyOperation_Mat() argument
208 PC_Mat *pcmat = (PC_Mat *)pc->data; in PCMatGetApplyOperation_Mat()
212 if (!pc->setupcalled) PetscCall(PCSetUp(pc)); in PCMatGetApplyOperation_Mat()
223 …SETERRQ(PetscObjectComm((PetscObject)pc), PETSC_ERR_ARG_INCOMP, "Unsupported %s case", PCMatOpType… in PCMatGetApplyOperation_Mat()
232 static PetscErrorCode PCView_Mat(PC pc, PetscViewer viewer) in PCView_Mat() argument
234 PC_Mat *pcmat = (PC_Mat *)pc->data; in PCView_Mat()
255 PETSC_EXTERN PetscErrorCode PCCreate_Mat(PC pc) in PCCreate_Mat() argument
261 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCMatSetApplyOperation_C", PCMatSetApplyOpe… in PCCreate_Mat()
262 …PetscCall(PetscObjectComposeFunction((PetscObject)pc, "PCMatGetApplyOperation_C", PCMatGetApplyOpe… in PCCreate_Mat()
263 pc->data = data; in PCCreate_Mat()
264 pc->ops->apply = PCApply_Mat; in PCCreate_Mat()
265 pc->ops->matapply = PCMatApply_Mat; in PCCreate_Mat()
266 pc->ops->applytranspose = PCApplyTranspose_Mat; in PCCreate_Mat()
267 pc->ops->setup = PCSetUp_Mat; in PCCreate_Mat()
268 pc->ops->destroy = PCDestroy_Mat; in PCCreate_Mat()
269 pc->ops->setfromoptions = NULL; in PCCreate_Mat()
270 pc->ops->view = PCView_Mat; in PCCreate_Mat()
271 pc->ops->applyrichardson = NULL; in PCCreate_Mat()
272 pc->ops->applysymmetricleft = NULL; in PCCreate_Mat()
273 pc->ops->applysymmetricright = NULL; in PCCreate_Mat()