INMOST
A toolkit for distributed mathematical modeling
inmost_operator.h
1 #ifndef INMOST_OPERATOR_INCLUDED
2 #define INMOST_OPERATOR_INCLUDED
3 
4 #include "inmost_variable.h"
5 
6 #if defined(USE_AUTODIFF) && defined(USE_MESH) && defined(USE_SOLVER)
7 
8 namespace INMOST
9 {
10  class Model;
28  {
29  public:
31  virtual ~AbstractOperator() {};
33  virtual bool Initialize(Model & m) = 0;
35  virtual bool PrepareIterations() = 0;
37  virtual bool SetupCoupling(Model& P) { return true; }
39  virtual bool isValid(const Storage & e) const = 0;
41  virtual std::pair<ElementType,MarkerType> GetUnknownDomain() const = 0;
43  virtual std::pair<ElementType, MarkerType> GetOperatorDomain() const = 0;
45  virtual vMatrix Evaluate(const Storage& e) const = 0;
46  };
47 }
48 
49 #endif //USE_AUTODIFF && USE_MESH
50 
51 #endif //INMOST_OPERATOR_INCLUDED
This class is responsible to unite access to various point-wise implementations of discrete operators...
virtual bool PrepareIterations()=0
Let operator prepare data on the mesh before evaluation.
virtual std::pair< ElementType, MarkerType > GetUnknownDomain() const =0
Provides input domain of the operator. (TODO)
virtual vMatrix Evaluate(const Storage &e) const =0
Compute expression of the opertor (TODO)
virtual bool isValid(const Storage &e) const =0
Check, whether we need to compute operator on this element.
virtual bool SetupCoupling(Model &P)
Setup coupling with unknowns of otheer models.
virtual ~AbstractOperator()
Destroy all the data of the operator.
virtual bool Initialize(Model &m)=0
Initialize all the data necessary to evalute the operator.
virtual std::pair< ElementType, MarkerType > GetOperatorDomain() const =0
Provides output domain of the operator. (TODO)
Class for linear algebra operations on dense matrices.
A class to organize a model.
Definition: inmost_model.h:186
Base class for Mesh, Element, and ElementSet classes.
Definition: inmost_data.h:310