libMesh
Classes | Namespaces | Functions
petsc_linear_solver.h File Reference

Go to the source code of this file.

Classes

class  libMesh::PetscMatrix< T >
 This class provides a nice interface to the PETSc C-based data structures for parallel, sparse matrices. More...
 
class  libMesh::PetscLinearSolver< T >
 This class provides an interface to PETSc iterative solvers that is compatible with the libMesh LinearSolver<> More...
 

Namespaces

 libMesh
 The libMesh namespace provides an interface to certain functionality in the library.
 

Functions

PetscErrorCode libmesh_petsc_preconditioner_setup (void *ctx)
 This function is called by PETSc to initialize the preconditioner. More...
 
PetscErrorCode libmesh_petsc_preconditioner_apply (void *ctx, Vec x, Vec y)
 This function is called by PETSc to actually apply the preconditioner. More...
 
PetscErrorCode libmesh_petsc_preconditioner_setup (PC)
 
PetscErrorCode libmesh_petsc_preconditioner_apply (PC, Vec x, Vec y)
 
PetscErrorCode __libmesh_petsc_preconditioner_setup (void *ctx)
 This function is called by PETSc to initialize the preconditioner. More...
 
PetscErrorCode __libmesh_petsc_preconditioner_apply (void *ctx, Vec x, Vec y)
 This function is called by PETSc to actually apply the preconditioner. More...
 
PetscErrorCode __libmesh_petsc_preconditioner_setup (PC)
 
PetscErrorCode __libmesh_petsc_preconditioner_apply (PC, Vec x, Vec y)
 

Function Documentation

◆ __libmesh_petsc_preconditioner_apply() [1/2]

PetscErrorCode __libmesh_petsc_preconditioner_apply ( PC  ,
Vec  x,
Vec  y 
)

Definition at line 124 of file petsc_linear_solver.C.

125  {
126  libmesh_deprecated();
127  return libmesh_petsc_preconditioner_apply(pc, x, y);
128  }

References libMesh::libmesh_petsc_preconditioner_apply().

◆ __libmesh_petsc_preconditioner_apply() [2/2]

PetscErrorCode __libmesh_petsc_preconditioner_apply ( void *  ctx,
Vec  x,
Vec  y 
)

This function is called by PETSc to actually apply the preconditioner.

ctx will hold the Preconditioner.

Definition at line 111 of file petsc_linear_solver.C.

112  {
113  libmesh_deprecated();
115  }

References libMesh::ctx, and libMesh::libmesh_petsc_preconditioner_apply().

◆ __libmesh_petsc_preconditioner_setup() [1/2]

PetscErrorCode __libmesh_petsc_preconditioner_setup ( PC  )

Definition at line 118 of file petsc_linear_solver.C.

119  {
120  libmesh_deprecated();
122  }

References libMesh::libmesh_petsc_preconditioner_setup().

◆ __libmesh_petsc_preconditioner_setup() [2/2]

PetscErrorCode __libmesh_petsc_preconditioner_setup ( void *  ctx)

This function is called by PETSc to initialize the preconditioner.

ctx will hold the Preconditioner.

Definition at line 105 of file petsc_linear_solver.C.

106  {
107  libmesh_deprecated();
109  }

References libMesh::ctx, and libMesh::libmesh_petsc_preconditioner_setup().

◆ libmesh_petsc_preconditioner_apply() [1/2]

PetscErrorCode libmesh_petsc_preconditioner_apply ( PC  ,
Vec  x,
Vec  y 
)

Definition at line 88 of file petsc_linear_solver.C.

89  {
90  void * ctx;
91  PetscErrorCode ierr = PCShellGetContext(pc,&ctx);CHKERRQ(ierr);
92  Preconditioner<Number> * preconditioner = static_cast<Preconditioner<Number> *>(ctx);
93 
94  PetscVector<Number> x_vec(x, preconditioner->comm());
95  PetscVector<Number> y_vec(y, preconditioner->comm());
96 
97  preconditioner->apply(x_vec,y_vec);
98 
99  return 0;
100  }

References libMesh::Preconditioner< T >::apply(), libMesh::CHKERRQ(), libMesh::ParallelObject::comm(), libMesh::ctx, and libMesh::ierr.

Referenced by libMesh::PetscLinearSolver< Number >::init().

◆ libmesh_petsc_preconditioner_apply() [2/2]

PetscErrorCode libmesh_petsc_preconditioner_apply ( void *  ctx,
Vec  x,
Vec  y 
)

This function is called by PETSc to actually apply the preconditioner.

ctx will hold the Preconditioner.

Definition at line 62 of file petsc_linear_solver.C.

63  {
64  Preconditioner<Number> * preconditioner = static_cast<Preconditioner<Number> *>(ctx);
65 
66  PetscVector<Number> x_vec(x, preconditioner->comm());
67  PetscVector<Number> y_vec(y, preconditioner->comm());
68 
69  preconditioner->apply(x_vec,y_vec);
70 
71  return 0;
72  }

References libMesh::Preconditioner< T >::apply(), libMesh::ParallelObject::comm(), and libMesh::ctx.

Referenced by libMesh::__libmesh_petsc_preconditioner_apply(), and libMesh::PetscNonlinearSolver< Number >::init().

◆ libmesh_petsc_preconditioner_setup() [1/2]

PetscErrorCode libmesh_petsc_preconditioner_setup ( PC  )

Definition at line 74 of file petsc_linear_solver.C.

75  {
76  void * ctx;
77  PetscErrorCode ierr = PCShellGetContext(pc,&ctx);CHKERRQ(ierr);
78  Preconditioner<Number> * preconditioner = static_cast<Preconditioner<Number> *>(ctx);
79 
80  if (!preconditioner->initialized())
81  libmesh_error_msg("Preconditioner not initialized! Make sure you call init() before solve!");
82 
83  preconditioner->setup();
84 
85  return 0;
86  }

References libMesh::CHKERRQ(), libMesh::ctx, libMesh::ierr, libMesh::Preconditioner< T >::initialized(), and libMesh::Preconditioner< T >::setup().

Referenced by libMesh::PetscLinearSolver< Number >::init().

◆ libmesh_petsc_preconditioner_setup() [2/2]

PetscErrorCode libmesh_petsc_preconditioner_setup ( void *  ctx)

This function is called by PETSc to initialize the preconditioner.

ctx will hold the Preconditioner.

Definition at line 49 of file petsc_linear_solver.C.

50  {
51  Preconditioner<Number> * preconditioner = static_cast<Preconditioner<Number> *>(ctx);
52 
53  if (!preconditioner->initialized())
54  libmesh_error_msg("Preconditioner not initialized! Make sure you call init() before solve!");
55 
56  preconditioner->setup();
57 
58  return 0;
59  }

References libMesh::ctx, libMesh::Preconditioner< T >::initialized(), and libMesh::Preconditioner< T >::setup().

Referenced by libMesh::__libmesh_petsc_preconditioner_setup(), and libMesh::PetscNonlinearSolver< Number >::init().

libMesh::libmesh_petsc_preconditioner_apply
PetscErrorCode libmesh_petsc_preconditioner_apply(PC pc, Vec x, Vec y)
Definition: petsc_linear_solver.C:88
libMesh::libmesh_petsc_preconditioner_setup
PetscErrorCode libmesh_petsc_preconditioner_setup(PC pc)
Definition: petsc_linear_solver.C:74
libMesh::ctx
void * ctx
Definition: petsc_dm_wrapper.C:71
CHKERRQ
CHKERRQ(ierr)
ierr
PetscErrorCode ierr
Definition: petscdmlibmeshimpl.C:1028