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

SymbolicFunction.h

Go to the documentation of this file.
00001 #ifndef SYMBOLICFEFUNC_H
00002 #define SYMBOLICFEFUNC_H
00003 
00004 #include "SundanceDefs.h"
00005 
00006 #include "FuncExprBase.h"
00007 #include "Expr.h"
00008 
00009 namespace Sundance
00010 {
00011 
00012   using namespace TSF;
00013   using std::string;
00014 
00015   using std::ostream;
00016 
00017   /** \ingroup LowLevelSymbolics
00018    * Expression subtype representing a unknown or variational function
00019    * with a basis.
00020    */
00021 
00022   class SymbolicFunction : public FuncExprBase
00023     {
00024     public:
00025       /** \name Developer-only methods */
00026       //@{
00027       /** */
00028       SymbolicFunction(const BasisFamily& basis);
00029       /** */
00030       SymbolicFunction(const BasisFamily& basis, const string& name);
00031 
00032       /** */
00033       virtual const MultiIndex& multiIndex() const {return d_;}
00034 
00035       // differentiation
00036       /** */
00037       virtual void derivative(const MultiIndex& d, Expr& result) const ;
00038       /** */
00039       virtual void setMultiIndex(const MultiIndex& d) {d_ = d;}
00040 
00041       // ordering
00042       /** */
00043       virtual bool operator==(const Expr& other) const ;
00044       /** */
00045       virtual bool operator<(const Expr& other) const ;
00046       /** */
00047       virtual int sortPriority() const {return SYMBOLICFUNCTION;}
00048 
00049       // misc
00050       /** */
00051       virtual ExprBase* clone() const = 0 ;
00052       /** */
00053       virtual void print(ostream& os, bool paren=false) const ;
00054       /** */
00055       virtual string toString(bool paren=false) const ;
00056       /** */
00057       virtual XMLObject toXML() const ;
00058 
00059       // FE
00060       /** */
00061       virtual void getBasis(BasisFamily& basis) const {basis = basis_;}
00062 
00063 
00064 
00065       /** */
00066       virtual void differential(const Expr& u, const Expr& du,
00067                                 Expr& result) const ;
00068 
00069       /** */
00070       virtual void substitute(const Expr& u, const Expr& u0,
00071                               Expr& result) const ;
00072       //@}
00073     protected:
00074       MultiIndex d_;
00075       BasisFamily basis_;
00076     };
00077 
00078 
00079 }
00080 #endif

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


Documentation generated by