7#ifndef WARPX_PRECONDITIONER_H_
8#define WARPX_PRECONDITIONER_H_
38template <
class T,
class Ops>
43 using RT =
typename T::value_type;
64 virtual
void Define (const T&, Ops* const) = 0;
69 virtual
void Update ( const T& a_U ) = 0;
78 virtual
void Apply (T& a_x, const T& a_b) = 0;
89 amrex::Gpu::DeviceVector<
int>&,
90 amrex::Gpu::DeviceVector<
int>&,
#define AMREX_ENUM(CLASS,...)
PreconditionerType
Types for preconditioners for field solvers.
Definition Preconditioner.H:22
@ none
Definition Preconditioner.H:22
@ pc_jacobi
Definition Preconditioner.H:22
@ pc_curl_curl_mlmg
Definition Preconditioner.H:22
@ pc_petsc
Definition Preconditioner.H:22
#define WARPX_ABORT_WITH_MESSAGE(MSG)
Definition TextMsg.H:15
void CurTimeStep(const RT a_dt)
Set the current time step size.
Definition Preconditioner.H:120
virtual void Apply(T &a_x, const T &a_b)=0
Apply (solve) the preconditioner given a RHS.
Preconditioner(Preconditioner &&) noexcept=default
Preconditioner(const Preconditioner &)=default
RT m_time
Definition Preconditioner.H:124
virtual void printParameters() const
Print parameters.
Definition Preconditioner.H:110
RT m_dt
Definition Preconditioner.H:125
void CurTime(const RT a_time)
Set the current time.
Definition Preconditioner.H:115
virtual void Update(const T &a_U)=0
Update the preconditioner.
typename T::value_type RT
Definition Preconditioner.H:43
virtual ~Preconditioner()=default
Default destructor.
Preconditioner & operator=(const Preconditioner &)=default
virtual void setName(const std::string &)
Set the name for screen output and parsing inputs.
Definition Preconditioner.H:105
virtual bool IsDefined() const =0
Check if the nonlinear solver has been defined.
virtual void getPCMatrix(amrex::Gpu::DeviceVector< int > &, amrex::Gpu::DeviceVector< int > &, amrex::Gpu::DeviceVector< int > &, amrex::Gpu::DeviceVector< RT > &, int &, int &)
Get the sparse matrix form of the preconditioner.
Definition Preconditioner.H:88
virtual void Define(const T &, Ops *const)=0
Define the preconditioner.
Preconditioner()=default
Default constructor.