xref: /petsc/src/ksp/pc/impls/none/none.c (revision 3ba1676111f5c958fe6c2729b46ca4d523958bb3)
1dba47a55SKris Buschelman 
24b9ad928SBarry Smith /*
34b9ad928SBarry Smith     Identity preconditioner, simply copies vector x to y.
44b9ad928SBarry Smith */
5af0996ceSBarry Smith #include <petsc/private/pcimpl.h> /*I "petscpc.h" I*/
64b9ad928SBarry Smith 
7d71ae5a4SJacob Faibussowitsch PetscErrorCode PCApply_None(PC pc, Vec x, Vec y)
8d71ae5a4SJacob Faibussowitsch {
94b9ad928SBarry Smith   PetscFunctionBegin;
109566063dSJacob Faibussowitsch   PetscCall(VecCopy(x, y));
11*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
124b9ad928SBarry Smith }
134b9ad928SBarry Smith 
14d71ae5a4SJacob Faibussowitsch PetscErrorCode PCMatApply_None(PC pc, Mat X, Mat Y)
15d71ae5a4SJacob Faibussowitsch {
167b6e2003SPierre Jolivet   PetscFunctionBegin;
179566063dSJacob Faibussowitsch   PetscCall(MatCopy(X, Y, SAME_NONZERO_PATTERN));
18*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
197b6e2003SPierre Jolivet }
207b6e2003SPierre Jolivet 
214b9ad928SBarry Smith /*MC
224b9ad928SBarry Smith      PCNONE - This is used when you wish to employ a nonpreconditioned
234b9ad928SBarry Smith              Krylov method.
244b9ad928SBarry Smith 
254b9ad928SBarry Smith    Level: beginner
264b9ad928SBarry Smith 
27f1580f4eSBarry Smith   Developer Note:
28f1580f4eSBarry Smith   This is implemented by a `VecCopy()`. It would be nice if the `KSP` implementations could be organized to avoid this copy without making them
29f1580f4eSBarry Smith   more complex.
304b9ad928SBarry Smith 
31db781477SPatrick Sanan .seealso: `PCCreate()`, `PCSetType()`, `PCType`, `PC`
324b9ad928SBarry Smith M*/
334b9ad928SBarry Smith 
34d71ae5a4SJacob Faibussowitsch PETSC_EXTERN PetscErrorCode PCCreate_None(PC pc)
35d71ae5a4SJacob Faibussowitsch {
364b9ad928SBarry Smith   PetscFunctionBegin;
374b9ad928SBarry Smith   pc->ops->apply               = PCApply_None;
387b6e2003SPierre Jolivet   pc->ops->matapply            = PCMatApply_None;
394b9ad928SBarry Smith   pc->ops->applytranspose      = PCApply_None;
400a545947SLisandro Dalcin   pc->ops->destroy             = NULL;
410a545947SLisandro Dalcin   pc->ops->setup               = NULL;
420a545947SLisandro Dalcin   pc->ops->view                = NULL;
434b9ad928SBarry Smith   pc->ops->applysymmetricleft  = PCApply_None;
444b9ad928SBarry Smith   pc->ops->applysymmetricright = PCApply_None;
454b9ad928SBarry Smith 
460a545947SLisandro Dalcin   pc->data = NULL;
47*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
484b9ad928SBarry Smith }
49