Actual source code: none.c

      2: /*
      3:     Identity preconditioner, simply copies vector x to y.
      4: */
      5: #include <petsc/private/pcimpl.h>

      7: PetscErrorCode PCApply_None(PC pc,Vec x,Vec y)
      8: {

     12:   VecCopy(x,y);
     13:   return(0);
     14: }

     16: PetscErrorCode PCMatApply_None(PC pc,Mat X,Mat Y)
     17: {

     21:   MatCopy(X,Y,SAME_NONZERO_PATTERN);
     22:   return(0);
     23: }

     25: /*MC
     26:      PCNONE - This is used when you wish to employ a nonpreconditioned
     27:              Krylov method.

     29:    Level: beginner

     31:   Notes:
     32:     This is implemented by a VecCopy()

     34: .seealso:  PCCreate(), PCSetType(), PCType (for list of available types), PC
     35: M*/

     37: PETSC_EXTERN PetscErrorCode PCCreate_None(PC pc)
     38: {
     40:   pc->ops->apply               = PCApply_None;
     41:   pc->ops->matapply            = PCMatApply_None;
     42:   pc->ops->applytranspose      = PCApply_None;
     43:   pc->ops->destroy             = NULL;
     44:   pc->ops->setup               = NULL;
     45:   pc->ops->view                = NULL;
     46:   pc->ops->applysymmetricleft  = PCApply_None;
     47:   pc->ops->applysymmetricright = PCApply_None;

     49:   pc->data = NULL;
     50:   return(0);
     51: }