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

ConstantExpr.h

Go to the documentation of this file.
00001 #ifndef CONSTANTEXPR_H
00002 #define CONSTANTEXPR_H
00003 
00004 #include "SundanceDefs.h"
00005 
00006 #include "ExprBase.h"
00007 
00008 
00009 namespace Sundance
00010 {
00011 
00012   using namespace TSF;
00013   using std::string;
00014 
00015   using std::ostream;
00016 
00017   /**
00018    * \ingroup LowLevelSymbolics
00019    * Symbolic representation of a scalar constant.
00020    */
00021   class ConstantExpr : public ExprBase
00022     {
00023     public:
00024       /** \name Developer-only methods */
00025       //@{
00026       /** construct with a real value */
00027       ConstantExpr(const double& value);
00028 
00029       // evaluation
00030       /** */
00031       virtual double value() const ;
00032       /** */
00033       virtual void evaluate(const WorkSet& workSet,
00034                             const QuadratureFamily& quadFamily,
00035                             DenseSerialVector& result) const ;
00036 
00037       /** */
00038       virtual void evaluate(const AbstractFunctionSpace& targetSpace, const TSFArray<Cell>& cells,
00039                             const TSFArray<int>& cellIndices,
00040                             const TSFArray<int>& dofIndices,
00041                             const TSFArray<Point>& x,
00042                             DenseSerialVector& values) const ;
00043 
00044       /** */
00045       virtual ExprValue average(const Cell& cell) const ;
00046 
00047       /** */
00048       virtual void derivative(const MultiIndex& d, Expr& result) const ;
00049 
00050       /** */
00051       virtual void pow(const double& p, Expr& result) const ;
00052 
00053 
00054       // ordering support
00055       /** */
00056       virtual bool operator==(const Expr& other) const ;
00057       /** */
00058       virtual bool operator<(const Expr& other) const ;
00059       /** */
00060       virtual int sortPriority() const {return CONSTANTEXPR;}
00061 
00062       // RTTI
00063       /** */
00064       virtual bool isConstant() const {return true;}
00065       /** */
00066       virtual bool isZero() const {return TSFUtils::chop(value_)==0;}
00067 
00068       /** */
00069       virtual bool isSpatiallyConstant() const {return true;}
00070 
00071       // miscellany
00072       /** */
00073       virtual ExprBase* clone() const ;
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     private:
00082       double value_;
00083     };
00084 
00085 }
00086 #endif

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


Documentation generated by