Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Examples  

SumExpr.h

Go to the documentation of this file.
00001 #ifndef SUMEXPR_H
00002 #define SUMEXPR_H
00003 
00004 #include "SundanceDefs.h"
00005 
00006 #include "Expr.h"
00007 #include "TermListExpr.h"
00008 #include "Integral.h"
00009 
00010 
00011 namespace Sundance
00012 {
00013 
00014   using namespace TSF;
00015   using std::string;
00016 
00017   using std::ostream;
00018 
00019 
00020 
00021   /** \ingroup LowLevelSymbolics
00022    * A sum of expressions plus a possible constant term
00023    */
00024 
00025   class SumExpr : public TermListExpr
00026     {
00027     public:
00028       /** \name Developer-only methods */
00029       //@{
00030       /** no detailed doc */
00031       SumExpr(const Expr& e1, const Expr& e2, int sign);
00032       virtual ~SumExpr(){;}
00033 
00034       // methods derived from ExprBase
00035 
00036       /** */
00037       virtual double value() const ;
00038 
00039       /** */
00040       virtual void evaluate(const WorkSet& workSet,
00041                             const QuadratureFamily& quadFamily,
00042                             DenseSerialVector& result) const ;
00043 
00044       /** */
00045       virtual void evaluate(const AbstractFunctionSpace& targetSpace,
00046                             const TSFArray<Cell>& cells,
00047                             const TSFArray<int>& cellIndices,
00048                             const TSFArray<int>& dofIndices,
00049                             const TSFArray<Point>& x,
00050                             DenseSerialVector& values) const ;
00051 
00052       /** */
00053       virtual ExprValue average(const Cell& cell) const ;
00054 
00055       /** */
00056       virtual void derivative(const MultiIndex& d, Expr& result) const ;
00057 
00058       /** */
00059       virtual void pow(const double& p, Expr& result) const ;
00060 
00061       /** */
00062       virtual bool operator==(const Expr& other) const ;
00063       /** */
00064       virtual bool operator<(const Expr& other) const ;
00065       /** */
00066       virtual int sortPriority() const {return SUMEXPR;}
00067 
00068       /** */
00069       virtual bool isSumExpr() const {return true;}
00070 
00071       /** */
00072       virtual ExprBase* clone() const ;
00073 
00074       /** */
00075       virtual void print(ostream& os, bool paren=false) const ;
00076       /** */
00077       virtual string toString(bool paren=false) const ;
00078       /** */
00079       virtual XMLObject toXML() const ;
00080 
00081       // FE support
00082       /** */
00083       virtual int countMonomials() const ;
00084       /** */
00085       virtual void getMonomials(ExprArray& monomials, int& offset) const ;
00086 
00087       Expr distributeIntegralOverSum(const CellSet& cellSet,
00088                                      const QuadratureFamily& quad) const ;
00089       // TermListExpr methods
00090       /** */
00091       virtual void invert();
00092       /** */
00093       Expr plus(const Expr& expr, int sign);
00094       /** */
00095       Expr distributeMultiplication(const Expr& expr,
00096                                     bool commuteFlag) const ;
00097       /** */
00098       Expr distributeDivision(const Expr& expr) const;
00099       /** */
00100       Expr sumTimesSum(const Expr& expr) const ;
00101       /** */
00102       void checkForCancellations(Expr& result);
00103 
00104       /** */
00105       virtual void differential(const Expr& u, const Expr& du,
00106                                 Expr& result) const ;
00107 
00108       /** */
00109       virtual void substitute(const Expr& u, const Expr& u0,
00110                               Expr& result) const ;
00111       //@}
00112 
00113     private:
00114 
00115       virtual double constant() const {return constant_;}
00116 
00117       double constant_;
00118     };
00119 
00120 
00121 
00122 }
00123 #endif

Contact:
Kevin Long (krlong@ca.sandia.gov)


Documentation generated by