Reference documentation for deal.II version 8.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Protected Attributes | List of all members
Algorithms::Operator< VECTOR > Class Template Referenceabstract

#include <operator.h>

Inheritance diagram for Algorithms::Operator< VECTOR >:
[legend]

Public Member Functions

 ~Operator ()
 
virtual void operator() (NamedData< VECTOR * > &out, const NamedData< VECTOR * > &in)=0
 
virtual void notify (const Event &)
 
void clear_events ()
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
void subscribe (const char *identifier=0) const
 
void unsubscribe (const char *identifier=0) const
 
unsigned int n_subscriptions () const
 
void list_subscribers () const
 
 DeclException3 (ExcInUse, int, char *, std::string &,<< "Object of class "<< arg2<< " is still used by "<< arg1<< " other objects.\n"<< "(Additional information: "<< arg3<< ")\n"<< "Note the entry in the Frequently Asked Questions of "<< "deal.II (linked to from http://www.dealii.org/) for "<< "more information on what this error means.")
 
 DeclException2 (ExcNoSubscriber, char *, char *,<< "No subscriber with identifier \""<< arg2<< "\" did subscribe to this object of class "<< arg1)
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Protected Attributes

Event notifications
 

Detailed Description

template<class VECTOR>
class Algorithms::Operator< VECTOR >

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 NamedData 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.

Author
Guido Kanschat, 2010

Definition at line 71 of file operator.h.

Constructor & Destructor Documentation

template<class VECTOR >
Algorithms::Operator< VECTOR >::~Operator ( )

The virtual destructor.

Definition at line 25 of file operator.templates.h.

Member Function Documentation

template<class VECTOR>
virtual void Algorithms::Operator< VECTOR >::operator() ( NamedData< VECTOR * > &  out,
const NamedData< VECTOR * > &  in 
)
pure virtual

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

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

template<class VECTOR >
void Algorithms::Operator< VECTOR >::notify ( const Event e)
virtual

Register an event triggered by an outer iteration.

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

Definition at line 31 of file operator.templates.h.

template<class VECTOR >
void Algorithms::Operator< VECTOR >::clear_events ( )

Clear all notifications.

Definition at line 39 of file operator.templates.h.

Member Data Documentation

template<class VECTOR>
Event Algorithms::Operator< VECTOR >::notifications
protected

Accumulate reasons for reassembling here. If any of those is set, the function solve() of a terminal application must take care of reassembling the matrix.

Definition at line 103 of file operator.h.


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