Reference documentation for deal.II version Git e87e13460a 2021-10-28 06:28:57 +0200
\(\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 | Static 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 ()
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 
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
 

Static Public Member Functions

static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 

Protected Attributes

Event notifications
 

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::ThetaTimestepping< VectorType >, and Algorithms::Newton< VectorType >.

◆ notify()

void Algorithms::OperatorBase::notify ( const Event e)
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.

◆ clear_events()

void Algorithms::OperatorBase::clear_events ( )

Clear all notifications.

Definition at line 49 of file operator.cc.

◆ subscribe()

void Subscriptor::subscribe ( std::atomic< bool > *const  validity,
const std::string &  identifier = "" 
) const
inherited

Subscribes a user of the object by storing the pointer validity. The subscriber may be identified by text supplied as identifier.

Definition at line 136 of file subscriptor.cc.

◆ unsubscribe()

void Subscriptor::unsubscribe ( std::atomic< bool > *const  validity,
const std::string &  identifier = "" 
) const
inherited

Unsubscribes a user from the object.

Note
The identifier and the validity pointer must be the same as the one supplied to subscribe().

Definition at line 156 of file subscriptor.cc.

◆ n_subscriptions()

unsigned int Subscriptor::n_subscriptions ( ) const
inlineinherited

Return the present number of subscriptions to this object. This allows to use this class for reference counted lifetime determination where the last one to unsubscribe also deletes the object.

Definition at line 301 of file subscriptor.h.

◆ list_subscribers() [1/2]

template<typename StreamType >
void Subscriptor::list_subscribers ( StreamType &  stream) const
inlineinherited

List the subscribers to the input stream.

Definition at line 318 of file subscriptor.h.

◆ list_subscribers() [2/2]

void Subscriptor::list_subscribers ( ) const
inherited

List the subscribers to deallog.

Definition at line 204 of file subscriptor.cc.

◆ serialize()

template<class Archive >
void Subscriptor::serialize ( Archive &  ar,
const unsigned int  version 
)
inlineinherited

Read or write the data of this object to or from a stream for the purpose of serialization using the BOOST serialization library.

This function does not actually serialize any of the member variables of this class. The reason is that what this class stores is only who subscribes to this object, but who does so at the time of storing the contents of this object does not necessarily have anything to do with who subscribes to the object when it is restored. Consequently, we do not want to overwrite the subscribers at the time of restoring, and then there is no reason to write the subscribers out in the first place.

Definition at line 310 of file subscriptor.h.

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: