libMesh
Classes | Namespaces | Functions
petsc_linear_solver.h File Reference

Go to the source code of this file.

Classes

class  libMesh::PetscMatrixBase< 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 (PC)
 This function is called by PETSc to initialize the preconditioner. More...
 
PetscErrorCode libmesh_petsc_preconditioner_apply (PC, Vec x, Vec y)
 This function is called by PETSc to actually apply the preconditioner. More...
 
PetscErrorCode __libmesh_petsc_preconditioner_setup (PC)
 This function is called by PETSc to initialize the preconditioner. More...
 
PetscErrorCode __libmesh_petsc_preconditioner_apply (PC, Vec x, Vec y)
 This function is called by PETSc to actually apply the preconditioner. More...
 

Function Documentation

◆ __libmesh_petsc_preconditioner_apply()

PetscErrorCode __libmesh_petsc_preconditioner_apply ( PC  ,
Vec  x,
Vec  y 
)

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

ctx will hold the Preconditioner.

Definition at line 93 of file petsc_linear_solver.C.

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

94  {
95  PetscFunctionBegin;
96  libmesh_deprecated();
98  }
PetscErrorCode libmesh_petsc_preconditioner_apply(PC, Vec x, Vec y)
This function is called by PETSc to actually apply the preconditioner.
PetscFunctionReturn(LIBMESH_PETSC_SUCCESS)

◆ __libmesh_petsc_preconditioner_setup()

PetscErrorCode __libmesh_petsc_preconditioner_setup ( PC  )

This function is called by PETSc to initialize the preconditioner.

ctx will hold the Preconditioner.

Definition at line 86 of file petsc_linear_solver.C.

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

87  {
88  PetscFunctionBegin;
89  libmesh_deprecated();
91  }
PetscErrorCode libmesh_petsc_preconditioner_setup(PC)
This function is called by PETSc to initialize the preconditioner.
PetscFunctionReturn(LIBMESH_PETSC_SUCCESS)

◆ libmesh_petsc_preconditioner_apply()

PetscErrorCode libmesh_petsc_preconditioner_apply ( PC  ,
Vec  x,
Vec  y 
)

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

ctx will hold the Preconditioner.

Definition at line 69 of file petsc_linear_solver.C.

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

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

70  {
71  PetscFunctionBegin;
72 
73  void * ctx;
74  LibmeshPetscCallQ(PCShellGetContext(pc,&ctx));
75  Preconditioner<Number> * preconditioner = static_cast<Preconditioner<Number> *>(ctx);
76 
77  PetscVector<Number> x_vec(x, preconditioner->comm());
78  PetscVector<Number> y_vec(y, preconditioner->comm());
79 
80  preconditioner->apply(x_vec,y_vec);
81 
82  PetscFunctionReturn(LIBMESH_PETSC_SUCCESS);
83  }
template class LIBMESH_EXPORT PetscVector< Number >
template class LIBMESH_EXPORT Preconditioner< Number >
LibmeshPetscCallQ(DMShellGetContext(dm, &ctx))
void * ctx
PetscFunctionReturn(LIBMESH_PETSC_SUCCESS)

◆ libmesh_petsc_preconditioner_setup()

PetscErrorCode libmesh_petsc_preconditioner_setup ( PC  )

This function is called by PETSc to initialize the preconditioner.

ctx will hold the Preconditioner.

Definition at line 53 of file petsc_linear_solver.C.

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

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

54  {
55  PetscFunctionBegin;
56 
57  void * ctx;
58  LibmeshPetscCallQ(PCShellGetContext(pc,&ctx));
59  Preconditioner<Number> * preconditioner = static_cast<Preconditioner<Number> *>(ctx);
60 
61  libmesh_error_msg_if(!preconditioner->initialized(),
62  "Preconditioner not initialized! Make sure you call init() before solve!");
63 
64  preconditioner->setup();
65 
66  PetscFunctionReturn(LIBMESH_PETSC_SUCCESS);
67  }
template class LIBMESH_EXPORT Preconditioner< Number >
LibmeshPetscCallQ(DMShellGetContext(dm, &ctx))
void * ctx
PetscFunctionReturn(LIBMESH_PETSC_SUCCESS)