Reference documentation for deal.II version Git d902c8c1aa 20191215 00:36:45 0500

#include <deal.II/algorithms/operator.h>
Public Member Functions  
virtual  ~OperatorBase () override=default 
virtual void  operator() (AnyData &out, const AnyData &in)=0 
virtual void  notify (const Event &) 
void  clear_events () 
Public Member Functions inherited from Subscriptor  
Subscriptor ()  
Subscriptor (const Subscriptor &)  
Subscriptor (Subscriptor &&) noexcept  
virtual  ~Subscriptor () 
Subscriptor &  operator= (const Subscriptor &) 
Subscriptor &  operator= (Subscriptor &&) noexcept 
void  subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const 
void  unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const 
unsigned int  n_subscriptions () const 
template<typename StreamType >  
void  list_subscribers (StreamType &stream) const 
void  list_subscribers () const 
template<class Archive >  
void  serialize (Archive &ar, const unsigned int version) 
Protected Attributes  
Event  notifications 
Additional Inherited Members  
Static Public Member Functions inherited from Subscriptor  
static ::ExceptionBase &  ExcInUse (int arg1, std::string arg2, std::string arg3) 
static ::ExceptionBase &  ExcNoSubscriber (std::string arg1, std::string arg2) 
The abstract base class of all algorithms in this library. An operator is an object with an operator(), which transforms a set of named vectors into another set of named vectors.
Furthermore, an operator can be notified of parameter changes by the calling routine. The outer iteration can notify() the Operator of an Event, which could be for instance a change of mesh, a different time step size or too slow convergence of Newton's method, which would then trigger reassembling of a matrix or similar things.
This is probably the most prominent use for Operator, where an outer iterative method calls an inner solver and so on. Typically, the innermost method in such a nested system will have to compute a residual using values from all outer iterations. Since the depth and order of such a nesting is hardly predictable when designing a general tool, we use AnyData to access these vectors. Typically, the first vector in out
contains the start vector when operator()() is called, and the solution when the function returns. The object in
is providing additional information and forwarded to the inner Operator objects of the nested iteration.
Definition at line 72 of file operator.h.

overridevirtualdefault 
The virtual destructor.

pure virtual 
The actual operation, which is implemented in a derived class.
Implemented in Algorithms::ThetaTimestepping< VectorType >, and Algorithms::Newton< VectorType >.

virtual 
Register an event triggered by an outer iteration.
Reimplemented in Algorithms::ThetaTimestepping< VectorType >, and Algorithms::Newton< VectorType >.
Definition at line 41 of file operator.cc.
void Algorithms::OperatorBase::clear_events  (  ) 
Clear all notifications.
Definition at line 49 of file operator.cc.

protected 
Accumulate events here. If any of those is set, the function solve() of a terminal application must take care of reassembling the matrix.
Definition at line 102 of file operator.h.