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

PowerExpr.h

Go to the documentation of this file.
00001 #ifndef POWEREXPR_H
00002 #define POWEREXPR_H
00003 
00004 #include "SundanceDefs.h"
00005 
00006 #include "UnaryExpr.h"
00007 #include "Expr.h"
00008 #include "DenseSerialVector.h"
00009 
00010 
00011 namespace Sundance
00012 {
00013 
00014   using namespace TSF;
00015   using std::string;
00016 
00017   using std::ostream;
00018 
00019   /** \ingroup LowLevelSymbolics
00020    * An expression raised to a constant real power.
00021    */
00022 
00023   class PowerExpr : public UnaryExpr
00024     {
00025     public:
00026       /** \name Developer-only methods */
00027       //@{
00028       /** no detailed doc */
00029       PowerExpr(const Expr& base, const double& exponent);
00030       virtual ~PowerExpr(){;}
00031 
00032       // evaluation
00033 
00034       /** */
00035       virtual double value() const ;
00036 
00037       /** */
00038       virtual void evaluate(const WorkSet& workSet,
00039                             const QuadratureFamily& quadFamily,
00040                             DenseSerialVector& result) const ;
00041 
00042 
00043       /** */
00044       virtual void evaluate(const AbstractFunctionSpace& targetSpace, const TSFArray<Cell>& cells,
00045                             const TSFArray<int>& cellIndices,
00046                             const TSFArray<int>& dofIndices,
00047                             const TSFArray<Point>& x,
00048                             DenseSerialVector& values) const ;
00049 
00050       /** */
00051       virtual ExprValue average(const Cell& cell) const ;
00052 
00053       // differentiation
00054       /** */
00055       virtual void derivative(const MultiIndex& d, Expr& result) const ;
00056 
00057 
00058       // ordering support
00059       /** */
00060       virtual bool operator==(const Expr& other) const ;
00061       /** */
00062       virtual bool operator<(const Expr& other) const ;
00063       /** */
00064       virtual int sortPriority() const {return POWEREXPR;}
00065 
00066       /** */
00067       virtual ExprBase* clone() const ;
00068 
00069       /** */
00070       virtual bool isSpatiallyConstant() const {return expr_.isSpatiallyConstant();}
00071 
00072       /** extract the mesh */
00073       virtual bool getMesh(Mesh& mesh) const ;
00074 
00075       /** */
00076       virtual void print(ostream& os, bool paren=false) const ;
00077       /** */
00078       virtual string toString(bool paren=false) const ;
00079       /** */
00080       virtual XMLObject toXML() const ;
00081 
00082       /** */
00083       const string& name() const {return name_;}
00084 
00085       /** */
00086       virtual void differential(const Expr& u, const Expr& du,
00087                                 Expr& result) const ;
00088 
00089       /** */
00090       virtual void substitute(const Expr& u, const Expr& u0,
00091                               Expr& result) const ;
00092       //@}
00093     private:
00094       string name_;
00095       double exponent_;
00096     };
00097 
00098 
00099 
00100 
00101 }
00102 #endif
00103 

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


Documentation generated by