00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef SUNDANCE_EVALMEDIATOR_H
00032 #define SUNDANCE_EVALMEDIATOR_H
00033
00034
00035 #include "SundanceDefs.hpp"
00036 #include "SundanceEvalVector.hpp"
00037 #include "SundanceObjectWithVerbosity.hpp"
00038
00039 namespace Sundance
00040 {
00041
00042 using namespace Sundance;
00043
00044 class CoordExpr;
00045 class CellDiameterExpr;
00046 class CurveNormExpr;
00047 class CellVectorExpr;
00048 class MultiIndex;
00049 class DiscreteFuncElement;
00050 class SparsitySuperset;
00051
00052
00053
00054
00055
00056
00057
00058 class AbstractEvalMediator
00059 {
00060 public:
00061
00062 AbstractEvalMediator(int verb=0);
00063
00064
00065 virtual ~AbstractEvalMediator(){;}
00066
00067
00068 void setVerb(int verb, int dfVerb) const
00069 {verb_ = verb; dfVerb_=dfVerb;}
00070
00071
00072 int verb() const {return verb_;}
00073
00074
00075 int dfVerb() const {return dfVerb_;}
00076
00077
00078
00079
00080
00081 virtual void evalCoordExpr(const CoordExpr* expr,
00082 RCP<EvalVector>& vec) const = 0 ;
00083
00084
00085
00086 virtual void evalDiscreteFuncElement(const DiscreteFuncElement* expr,
00087 const Array<MultiIndex>& mi,
00088 Array<RCP<EvalVector> >& vec) const = 0 ;
00089
00090
00091
00092 virtual void evalCellDiameterExpr(const CellDiameterExpr* expr,
00093 RCP<EvalVector>& vec) const = 0 ;
00094
00095
00096
00097
00098 virtual void evalCurveNormExpr(const CurveNormExpr* expr,
00099 RCP<EvalVector>& vec) const
00100 {
00101 TEUCHOS_TEST_FOR_EXCEPTION( true , std::runtime_error,
00102 " EvalMediator::evalCurveNormExpr , not possible with the current EvalMediator (only with CurveEvalMediator)");
00103 }
00104
00105
00106
00107 virtual void evalCellVectorExpr(const CellVectorExpr* expr,
00108 RCP<EvalVector>& vec) const = 0 ;
00109
00110
00111
00112 virtual void showResults(std::ostream& os,
00113 const RCP<SparsitySuperset>& sparsity,
00114 const Array<RCP<EvalVector> >& vecResults,
00115 const Array<double>& constantResults) const ;
00116 private:
00117 mutable int verb_;
00118 mutable int dfVerb_;
00119 };
00120 }
00121
00122
00123 #endif