Sundance::ExprWithChildren Class Reference

Inheritance diagram for Sundance::ExprWithChildren:

Sundance::EvaluatableExpr Sundance::ScalarExpr Sundance::EvaluatorFactory Sundance::FuncSetAccumulator Sundance::ObjectWithClassVerbosity< EvaluatableExpr > Sundance::ExprBase Playa::ObjectWithVerbosity Playa::Handleable< ExprBase > Sundance::BinaryExpr Sundance::UnaryExpr Sundance::UserDefOpElement Sundance::ProductExpr Sundance::SumExpr Sundance::DiffOp Sundance::ExplicitFunctionalDerivativeElement Sundance::NonlinearUnaryOp Sundance::UnaryMinus Sundance::DerivOfSymbFunc

List of all members.

Public Member Functions

 ExprWithChildren (const Array< RCP< ScalarExpr > > &children)
virtual ~ExprWithChildren ()
virtual void setupEval (const EvalContext &context) const
virtual bool isConstant () const
int numChildren () const
const EvaluatableExprevaluatableChild (int i) const
const ScalarExprscalarChild (int i) const
Expr child (int i) const
virtual int maxDiffOrderOnDiscreteFunctions () const
virtual bool hasDiscreteFunctions () const
virtual Set< MultipleDerivinternalFindW (int order, const EvalContext &context) const
virtual Set< MultipleDerivinternalFindC (int order, const EvalContext &context) const
virtual Set< MultipleDerivinternalFindV (int order, const EvalContext &context) const
virtual void displayNonzeros (std::ostream &os, const EvalContext &context) const
const Set< MultiSet< int > > & findQ_W (int order, const EvalContext &context) const
const Set< MultiSet< int > > & findQ_C (int order, const EvalContext &context) const
const Set< MultiSet< int > > & findQ_V (int order, const EvalContext &context) const
virtual Set< MultiSet< int > > internalFindQ_W (int order, const EvalContext &context) const
virtual Set< MultiSet< int > > internalFindQ_V (int order, const EvalContext &context) const
virtual Set< MultiSet< int > > internalFindQ_C (int order, const EvalContext &context) const
const Set< MultiSet< int > > & getI_N () const
Set< MultiSet< int > > indexSetProduct (const Set< MultiSet< int > > &a, const Set< MultiSet< int > > &b) const
virtual bool everyTermHasTestFunctions () const
virtual bool hasTestFunctions () const
virtual bool hasUnkFunctions () const
virtual void showSparsity (std::ostream &os, const EvalContext &context) const
virtual void getUnknowns (Set< int > &unkID, Array< Expr > &unks) const
virtual void getTests (Set< int > &varID, Array< Expr > &vars) const
virtual int countNodes () const
virtual bool isLinear () const
virtual bool isProduct () const
virtual bool isIndependentOf (const Expr &u) const
Set< MultiSet< int > > subsetContainingIndex (const Set< MultiSet< int > > &s, int index) const
virtual RCP< Array< Set
< MultipleDeriv > > > 
internalDetermineR (const EvalContext &context, const Array< Set< MultipleDeriv > > &RInput) const
bool childIsRequired (int childIndex, int diffOrder, const EvalContext &context) const
Set< MultipleDerivproduct (const Array< int > &J, const Array< int > &K, DerivSubsetSpecifier dss, const EvalContext &context) const
virtual void accumulateFuncSet (Set< int > &funcIDs, const Set< int > &activeSet) const
virtual void registerSpatialDerivs (const EvalContext &context, const Set< MultiIndex > &miSet) const
virtual bool lessThan (const ScalarExpr *other) const

Static Private Member Functions

static Map< int, Set< MultiSet
< int > > > & 
cachedI_N ()

Private Attributes

Array< RCP< ScalarExpr > > children_
Array< Map< EvalContext, Set
< MultiSet< int > > > > 
contextToQWMap_
Array< Map< EvalContext, Set
< MultiSet< int > > > > 
contextToQVMap_
Array< Map< EvalContext, Set
< MultiSet< int > > > > 
contextToQCMap_

Related Functions

(Note that these are not member functions.)

Array< Array< std::pair< int,
Array< MultipleDeriv > > > > 
chainRuleDerivsOfArgs (int nArgs, const MultiSet< int > &bSet, const MultipleDeriv &c)
Array< Array< Array< int > > > bStructure (const Array< int > &b, const Array< Array< int > > &tmp)
Array< OrderedPair< Array
< MultiSet< int > >, Array
< MultipleDeriv > > > 
chainRuleTerms (int s, const MultiSet< int > &lambda, const MultipleDeriv &nu)


Detailed Description

ExprWithChildren is a base class for any evaluatable expression that has child nodes, for example, sums and unary operators. ExprWithChildren adds nothing new to the expr interface, but provides some common utilities for getting children and recursing to children.

Definition at line 53 of file SundanceExprWithChildren.hpp.


Constructor & Destructor Documentation

ExprWithChildren::ExprWithChildren ( const Array< RCP< ScalarExpr > > &  children  ) 

construct with a list of child operands

Definition at line 52 of file SundanceExprWithChildren.cpp.

virtual Sundance::ExprWithChildren::~ExprWithChildren (  )  [inline, virtual]

virtual dtor

Definition at line 60 of file SundanceExprWithChildren.hpp.


Member Function Documentation

void ExprWithChildren::accumulateFuncSet ( Set< int > &  funcIDs,
const Set< int > &  activeSet 
) const [virtual]

Append to the set of func IDs present in this expression.

Reimplemented from Sundance::FuncSetAccumulator.

Definition at line 132 of file SundanceExprWithChildren.cpp.

References children_.

static Map<int, Set<MultiSet<int> > >& Sundance::ExprWithChildren::cachedI_N (  )  [inline, static, private]

Definition at line 218 of file SundanceExprWithChildren.hpp.

Referenced by getI_N().

Expr Sundance::ExprWithChildren::child ( int  i  )  const [inline]

bool ExprWithChildren::childIsRequired ( int  childIndex,
int  diffOrder,
const EvalContext context 
) const

Determine whether the given child is needed to compute derivatives of the given order

Definition at line 810 of file SundanceExprWithChildren.cpp.

References Sundance::Set< Key, Compare >::begin(), Sundance::Set< Key, Compare >::end(), and findQ_W().

Referenced by internalFindC(), internalFindQ_V(), and internalFindV().

int ExprWithChildren::countNodes (  )  const [virtual]

void ExprWithChildren::displayNonzeros ( std::ostream &  os,
const EvalContext context 
) const [virtual]

const EvaluatableExpr * ExprWithChildren::evaluatableChild ( int  i  )  const

bool ExprWithChildren::everyTermHasTestFunctions (  )  const [virtual]

Return true if any child returns true. The sum expression will override this requiring all children to return true

Reimplemented from Sundance::ScalarExpr.

Reimplemented in Sundance::SumExpr.

Definition at line 207 of file SundanceExprWithChildren.cpp.

References children_, evaluatableChild(), and Sundance::ScalarExpr::everyTermHasTestFunctions().

const Set< MultiSet< int > > & ExprWithChildren::findQ_C ( int  order,
const EvalContext context 
) const

const Set< MultiSet< int > > & ExprWithChildren::findQ_V ( int  order,
const EvalContext context 
) const

Definition at line 665 of file SundanceExprWithChildren.cpp.

References contextToQVMap_, and internalFindQ_V().

Referenced by internalFindC(), internalFindQ_C(), and internalFindV().

const Set< MultiSet< int > > & ExprWithChildren::findQ_W ( int  order,
const EvalContext context 
) const

const Set< MultiSet< int > > & ExprWithChildren::getI_N (  )  const

void ExprWithChildren::getTests ( Set< int > &  varID,
Array< Expr > &  vars 
) const [virtual]

void ExprWithChildren::getUnknowns ( Set< int > &  unkID,
Array< Expr > &  unks 
) const [virtual]

bool ExprWithChildren::hasDiscreteFunctions (  )  const [virtual]

Indicate whether this expression contains discrete functions.

Reimplemented from Sundance::EvaluatableExpr.

Definition at line 122 of file SundanceExprWithChildren.cpp.

References evaluatableChild(), Sundance::EvaluatableExpr::hasDiscreteFunctions(), and numChildren().

Referenced by Sundance::DiffOp::maxDiffOrderOnDiscreteFunctions().

bool ExprWithChildren::hasTestFunctions (  )  const [virtual]

Test whether this expr contains a test function. If any child contains a test, return true.

Reimplemented from Sundance::ScalarExpr.

Definition at line 217 of file SundanceExprWithChildren.cpp.

References children_, evaluatableChild(), and Sundance::ScalarExpr::hasTestFunctions().

bool ExprWithChildren::hasUnkFunctions (  )  const [virtual]

Test whether this expr contains an unknown function. If any child contains an unknown, return true.

Reimplemented from Sundance::ScalarExpr.

Definition at line 227 of file SundanceExprWithChildren.cpp.

References children_, evaluatableChild(), and Sundance::ScalarExpr::hasUnkFunctions().

Set< MultiSet< int > > ExprWithChildren::indexSetProduct ( const Set< MultiSet< int > > &  a,
const Set< MultiSet< int > > &  b 
) const

RCP< Array< Set< MultipleDeriv > > > ExprWithChildren::internalDetermineR ( const EvalContext context,
const Array< Set< MultipleDeriv > > &  RInput 
) const [virtual]

Set< MultipleDeriv > ExprWithChildren::internalFindC ( int  order,
const EvalContext context 
) const [virtual]

Set< MultiSet< int > > ExprWithChildren::internalFindQ_C ( int  order,
const EvalContext context 
) const [virtual]

Set< MultiSet< int > > ExprWithChildren::internalFindQ_V ( int  order,
const EvalContext context 
) const [virtual]

Set< MultiSet< int > > ExprWithChildren::internalFindQ_W ( int  order,
const EvalContext context 
) const [virtual]

Set< MultipleDeriv > ExprWithChildren::internalFindV ( int  order,
const EvalContext context 
) const [virtual]

Set< MultipleDeriv > ExprWithChildren::internalFindW ( int  order,
const EvalContext context 
) const [virtual]

bool ExprWithChildren::isConstant (  )  const [virtual]

Determine whether this expression is constant. It will be constant if all children are constant.

Reimplemented from Sundance::ScalarExpr.

Definition at line 80 of file SundanceExprWithChildren.cpp.

References children_.

Referenced by Sundance::RearrangeLeftSumWithConstant::doTransform(), Sundance::RearrangeLeftProductWithConstant::doTransform(), and Sundance::RearrangeRightProductWithConstant::doTransform().

bool ExprWithChildren::isIndependentOf ( const Expr u  )  const [virtual]

Indicate whether the expression is independent of the given functions

Reimplemented from Sundance::ScalarExpr.

Definition at line 89 of file SundanceExprWithChildren.cpp.

References children_.

virtual bool Sundance::ExprWithChildren::isLinear (  )  const [inline, virtual]

Reimplemented in Sundance::SumExpr, and Sundance::UnaryMinus.

Definition at line 173 of file SundanceExprWithChildren.hpp.

Referenced by internalFindQ_C(), internalFindQ_V(), and internalFindW().

virtual bool Sundance::ExprWithChildren::isProduct (  )  const [inline, virtual]

Reimplemented in Sundance::ProductExpr.

Definition at line 176 of file SundanceExprWithChildren.hpp.

Referenced by internalFindW().

bool ExprWithChildren::lessThan ( const ScalarExpr other  )  const [virtual]

Ordering operator for use in transforming exprs to standard form

Implements Sundance::ScalarExpr.

Reimplemented in Sundance::BinaryExpr, Sundance::DerivOfSymbFunc, Sundance::DiffOp, Sundance::ExplicitFunctionalDerivativeElement, and Sundance::NonlinearUnaryOp.

Definition at line 60 of file SundanceExprWithChildren.cpp.

References children_, Sundance::Expr::handle(), and Sundance::Expr::lessThan().

int ExprWithChildren::maxDiffOrderOnDiscreteFunctions (  )  const [virtual]

Find the maximum differentiation order acting on discrete functions in this expression.

Reimplemented from Sundance::EvaluatableExpr.

Reimplemented in Sundance::DiffOp.

Definition at line 111 of file SundanceExprWithChildren.cpp.

References evaluatableChild(), Sundance::EvaluatableExpr::maxDiffOrderOnDiscreteFunctions(), and numChildren().

int Sundance::ExprWithChildren::numChildren (  )  const [inline]

Set< MultipleDeriv > ExprWithChildren::product ( const Array< int > &  J,
const Array< int > &  K,
DerivSubsetSpecifier  dss,
const EvalContext context 
) const

void ExprWithChildren::registerSpatialDerivs ( const EvalContext context,
const Set< MultiIndex > &  miSet 
) const [virtual]

const ScalarExpr* Sundance::ExprWithChildren::scalarChild ( int  i  )  const [inline]

downcast the i-th to a scalar expr

Definition at line 78 of file SundanceExprWithChildren.hpp.

References children_.

Referenced by Sundance::BinaryExpr::leftScalar(), and Sundance::BinaryExpr::rightScalar().

void ExprWithChildren::setupEval ( const EvalContext context  )  const [virtual]

void ExprWithChildren::showSparsity ( std::ostream &  os,
const EvalContext context 
) const [virtual]

Set<MultiSet<int> > Sundance::ExprWithChildren::subsetContainingIndex ( const Set< MultiSet< int > > &  s,
int  index 
) const


Friends And Related Function Documentation

Array< Array< Array< int > > > bStructure ( const Array< int > &  b,
const Array< Array< int > > &  tmp 
) [related]

Definition at line 1100 of file SundanceExprWithChildren.cpp.

Array< Array< std::pair< int, Array< MultipleDeriv > > > > chainRuleDerivsOfArgs ( int  nArgs,
const MultiSet< int > &  bSet,
const MultipleDeriv c 
) [related]

Definition at line 993 of file SundanceExprWithChildren.cpp.

Array< OrderedPair< Array< MultiSet< int > >, Array< MultipleDeriv > > > chainRuleTerms ( int  s,
const MultiSet< int > &  lambda,
const MultipleDeriv nu 
) [related]

Return the set of (k,l) tuples appearing in the Constantine and Savits formulation of the multivariable, multiargument chain rule.

Parameters:
s 
lambda 
nu 

Definition at line 1122 of file SundanceExprWithChildren.cpp.


Member Data Documentation

Definition at line 223 of file SundanceExprWithChildren.hpp.

Referenced by findQ_C().

Definition at line 222 of file SundanceExprWithChildren.hpp.

Referenced by findQ_V().

Definition at line 221 of file SundanceExprWithChildren.hpp.

Referenced by findQ_W().

Site Contact