00001 #ifndef CELLDIAMETEREXPR_H
00002 #define CELLDIAMETEREXPR_H
00003
00004 #include "SundanceDefs.h"
00005
00006 #include "ExprBase.h"
00007 #include "DenseSerialVector.h"
00008
00009
00010 namespace Sundance
00011 {
00012
00013 using namespace TSF;
00014 using std::string;
00015
00016 using std::ostream;
00017
00018
00019
00020
00021
00022
00023
00024 class CellDiameterExpr : public ExprBase
00025 {
00026 public:
00027
00028
00029
00030 CellDiameterExpr(const string& name = "CellDiameterExpr");
00031
00032
00033 virtual ~CellDiameterExpr(){;}
00034
00035
00036
00037
00038
00039
00040 virtual ExprValue average(const Cell& cell) const ;
00041
00042
00043 virtual void evaluate(const WorkSet& workSet,
00044 const QuadratureFamily& quadFamily,
00045 DenseSerialVector& result) const ;
00046
00047
00048
00049
00050
00051 virtual void derivative(const MultiIndex& d, Expr& result) const ;
00052
00053
00054
00055 virtual bool operator==(const Expr& other) const ;
00056
00057 virtual bool operator<(const Expr& other) const ;
00058
00059 virtual int sortPriority() const {return CELLDIAMETEREXPR;}
00060
00061
00062
00063 virtual bool isCellDiameterExpr() const {return true;}
00064
00065
00066 virtual ExprBase* clone() const ;
00067
00068
00069 virtual void print(ostream& os, bool paren=false) const ;
00070
00071 virtual string toString(bool paren=false) const ;
00072
00073 virtual XMLObject toXML() const ;
00074
00075
00076 private:
00077 string name_;
00078 };
00079
00080
00081 }
00082 #endif
00083
00084
00085
00086
00087