Reference documentation for deal.II version 9.3.3
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Public Member Functions | Protected Attributes | List of all members
Algorithms::OperatorBase Class Referenceabstract

#include <deal.II/algorithms/operator.h>

Inheritance diagram for Algorithms::OperatorBase:
[legend]

Public Member Functions

virtual ~OperatorBase () override=default
 
virtual void operator() (AnyData &out, const AnyData &in)=0
 
virtual void notify (const Event &)
 
void clear_events ()
 

Protected Attributes

Event notifications
 

Subscriptor functionality

Classes derived from Subscriptor provide a facility to subscribe to this object. This is mostly used by the SmartPointer class.

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)
 
using map_value_type = decltype(counter_map)::value_type
 
using map_iterator = decltype(counter_map)::iterator
 
std::atomic< unsigned intcounter
 
std::map< std::string, unsigned intcounter_map
 
std::vector< std::atomic< bool > * > validity_pointers
 
const std::type_info * object_info
 
static std::mutex mutex
 
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
void check_no_subscribers () const noexcept
 

Detailed Description

Todo:
Update this documentation and the one of Operator

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.

Usage for nested iterations

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 66 of file operator.h.

Constructor & Destructor Documentation

◆ ~OperatorBase()

virtual Algorithms::OperatorBase::~OperatorBase ( )
overridevirtualdefault

The virtual destructor.

Member Function Documentation

◆ operator()()

virtual void Algorithms::OperatorBase::operator() ( AnyData out,
const AnyData in 
)
pure virtual

The actual operation, which is implemented in a derived class.

Implemented in Algorithms::Newton< VectorType >, and Algorithms::ThetaTimestepping< VectorType >.

◆ notify()

void Algorithms::OperatorBase::notify ( const Event e)
virtual

Register an event triggered by an outer iteration.

Reimplemented in Algorithms::Newton< VectorType >, and Algorithms::ThetaTimestepping< VectorType >.

Definition at line 41 of file operator.cc.

◆ clear_events()

void Algorithms::OperatorBase::clear_events ( )

Clear all notifications.

Definition at line 49 of file operator.cc.

Member Data Documentation

◆ notifications

Event Algorithms::OperatorBase::notifications
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 97 of file operator.h.


The documentation for this class was generated from the following files: