Public Member Functions | Static Private Member Functions | Private Attributes | Related Functions
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 64 of file SundanceExprWithChildren.hpp.


Constructor & Destructor Documentation

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

construct with a list of child operands

Definition at line 63 of file SundanceExprWithChildren.cpp.

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

virtual dtor

Definition at line 71 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 143 of file SundanceExprWithChildren.cpp.

References children_.

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

Definition at line 229 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 821 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]

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 218 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 676 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 133 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 228 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 238 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 91 of file SundanceExprWithChildren.cpp.

References children_.

Referenced by Sundance::RearrangeLeftSumWithConstant::doTransform(), Sundance::RearrangeRightProductWithConstant::doTransform(), and Sundance::RearrangeLeftProductWithConstant::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 100 of file SundanceExprWithChildren.cpp.

References children_.

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

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

Definition at line 184 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 187 of file SundanceExprWithChildren.hpp.

Referenced by internalFindW().

bool ExprWithChildren::lessThan ( const ScalarExpr other) 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 122 of file SundanceExprWithChildren.cpp.

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

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 89 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 1111 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 1004 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 1133 of file SundanceExprWithChildren.cpp.


Member Data Documentation

Definition at line 234 of file SundanceExprWithChildren.hpp.

Referenced by findQ_C().

Definition at line 233 of file SundanceExprWithChildren.hpp.

Referenced by findQ_V().

Definition at line 232 of file SundanceExprWithChildren.hpp.

Referenced by findQ_W().

Site Contact