Public Member Functions | |
ChainRuleEvaluator (const ExprWithChildren *expr, const EvalContext &context) | |
virtual | ~ChainRuleEvaluator () |
virtual void | internalEval (const EvalManager &mgr, Array< double > &constantResults, Array< RCP< EvalVector > > &vectorResults) const |
int | numChildren () const |
int | constArgDerivIndex (const MultiSet< int > &df) const |
int | varArgDerivIndex (const MultiSet< int > &df) const |
TEUCHOS_TIMER (chainRuleEvalTimer,"chain rule evaluation") | |
const Array< Array< int > > & | nComps (int N, int n) const |
void | resetNumCalls () const |
virtual void | evalArgDerivs (const EvalManager &mgr, const Array< RCP< Array< double > > > &constDerivsOfArgs, const Array< RCP< Array< RCP< EvalVector > > > > &varDerivOfArgs, Array< double > &constArgDerivs, Array< RCP< EvalVector > > &varArgDerivs) const =0 |
Static Public Member Functions | |
static Set< MultiSet < MultipleDeriv > > | chainRuleBins (const MultipleDeriv &d, const MultiSet< int > &q) |
Protected Member Functions | |
void | init (const ExprWithChildren *expr, const EvalContext &context) |
void | addConstArgDeriv (const MultiSet< int > &df, int index) |
void | addVarArgDeriv (const MultiSet< int > &df, int index) |
const Evaluator * | childEvaluator (int i) const |
const SparsitySuperset * | childSparsity (int i) const |
double | choose (int N, int n) const |
double | fact (int n) const |
double | stirling2 (int n, int k) const |
int | derivComboMultiplicity (const MultiSet< MultipleDeriv > &b) const |
Static Protected Member Functions | |
static MultipleDeriv | makeMD (const Array< Deriv > &d) |
Static Private Member Functions | |
static Map< OrderedPair< int, int >, Array< Array< int > > > & | compMap () |
Private Attributes | |
Array< RCP< ChainRuleSum > > | expansions_ |
Array< RCP< Evaluator > > | childEvaluators_ |
Array< RCP< SparsitySuperset > > | childSparsity_ |
Map< MultiSet< int >, int > | constArgDerivMap_ |
Map< MultiSet< int >, int > | varArgDerivMap_ |
int | zerothDerivResultIndex_ |
bool | zerothDerivIsConstant_ |
Definition at line 44 of file SundanceChainRuleEvaluator.hpp.
ChainRuleEvaluator::ChainRuleEvaluator | ( | const ExprWithChildren * | expr, | |
const EvalContext & | context | |||
) |
Definition at line 49 of file SundanceChainRuleEvaluator.cpp.
References childEvaluators_, childSparsity_, Sundance::ExprWithChildren::evaluatableChild(), Sundance::EvaluatableExpr::evaluator(), numChildren(), Sundance::EvalContext::setupVerbosity(), Sundance::EvaluatableExpr::sparsitySuperset(), SUNDANCE_MSG1, and Sundance::ExprBase::toString().
virtual Sundance::ChainRuleEvaluator::~ChainRuleEvaluator | ( | ) | [inline, virtual] |
Definition at line 53 of file SundanceChainRuleEvaluator.hpp.
void ChainRuleEvaluator::addConstArgDeriv | ( | const MultiSet< int > & | df, | |
int | index | |||
) | [protected] |
Definition at line 88 of file SundanceChainRuleEvaluator.cpp.
References constArgDerivMap_, and Sundance::Map< Key, Value, Compare >::put().
void ChainRuleEvaluator::addVarArgDeriv | ( | const MultiSet< int > & | df, | |
int | index | |||
) | [protected] |
Definition at line 93 of file SundanceChainRuleEvaluator.cpp.
References Sundance::Map< Key, Value, Compare >::put(), and varArgDerivMap_.
Set< MultiSet< MultipleDeriv > > ChainRuleEvaluator::chainRuleBins | ( | const MultipleDeriv & | d, | |
const MultiSet< int > & | q | |||
) | [static] |
Definition at line 162 of file SundanceChainRuleEvaluator.cpp.
References Sundance::binnings(), makeMD(), Sundance::Set< Key, Compare >::put(), and Sundance::MultiSet< Key >::put().
const Evaluator* Sundance::ChainRuleEvaluator::childEvaluator | ( | int | i | ) | const [inline, protected] |
const SparsitySuperset* Sundance::ChainRuleEvaluator::childSparsity | ( | int | i | ) | const [inline, protected] |
double ChainRuleEvaluator::choose | ( | int | N, | |
int | n | |||
) | const [protected] |
Returns the binomial coefficient
Definition at line 135 of file SundanceChainRuleEvaluator.cpp.
References fact().
Referenced by stirling2().
Sundance::Map< OrderedPair< int, int >, Array< Array< int > > > & ChainRuleEvaluator::compMap | ( | ) | [static, private] |
int ChainRuleEvaluator::constArgDerivIndex | ( | const MultiSet< int > & | df | ) | const |
Definition at line 98 of file SundanceChainRuleEvaluator.cpp.
References constArgDerivMap_, Sundance::Map< Key, Value, Compare >::containsKey(), and Sundance::Map< Key, Value, Compare >::get().
Referenced by init().
int ChainRuleEvaluator::derivComboMultiplicity | ( | const MultiSet< MultipleDeriv > & | b | ) | const [protected] |
Definition at line 185 of file SundanceChainRuleEvaluator.cpp.
References Sundance::MultipleDeriv::order(), and Sundance::MultiSet< Key >::put().
virtual void Sundance::ChainRuleEvaluator::evalArgDerivs | ( | const EvalManager & | mgr, | |
const Array< RCP< Array< double > > > & | constDerivsOfArgs, | |||
const Array< RCP< Array< RCP< EvalVector > > > > & | varDerivOfArgs, | |||
Array< double > & | constArgDerivs, | |||
Array< RCP< EvalVector > > & | varArgDerivs | |||
) | const [pure virtual] |
Evaluate the derivatives of the expression with respect to the arguments.
mgr | Manager for this evaluation step | |
constDerivsOfArgs | Constant values and functional derivatives of arguments. The outer array index is over arguments. The inner array index is over functional derivatives of that argument. | |
varDerivsOfArgs | Variable values and functional derivatives of arguments. The outer array index is over arguments. The inner array index is over functional derivatives of that argument. | |
constArgDerivs | Constant-valued derivatives of expr wrt arguments. | |
varArgDerivs | Variable-valued derivatives of expr wrt arguments. |
Implemented in Sundance::NonlinearUnaryOpEvaluator, and Sundance::UserDefOpEvaluator.
Referenced by internalEval().
double ChainRuleEvaluator::fact | ( | int | n | ) | const [protected] |
Returns the factorial of n
Definition at line 128 of file SundanceChainRuleEvaluator.cpp.
Referenced by choose().
void ChainRuleEvaluator::init | ( | const ExprWithChildren * | expr, | |
const EvalContext & | context | |||
) | [protected] |
The init() function should be called from the derived class ctors
Definition at line 246 of file SundanceChainRuleEvaluator.cpp.
References Sundance::DerivProduct::addConstantFactor(), Sundance::Evaluator::addConstantIndex(), Sundance::DerivProduct::addVariableFactor(), Sundance::Evaluator::addVectorIndex(), Sundance::Set< Key, Compare >::begin(), Sundance::chainRuleMultiplicity(), Sundance::chainRuleTerms(), childEvaluators_, childSparsity_, constArgDerivIndex(), Sundance::Set< Key, Compare >::contains(), Sundance::Set< Key, Compare >::end(), Sundance::ExprWithChildren::evaluatableChild(), expansions_, Sundance::EvaluatableExpr::findC(), Sundance::ExprWithChildren::findQ_C(), Sundance::ExprWithChildren::findQ_W(), Sundance::EvaluatableExpr::findR(), Sundance::EvaluatableExpr::findV(), numChildren(), Sundance::ExprWithChildren::numChildren(), Sundance::EvalContext::setupVerbosity(), Sundance::SubtypeEvaluator< ExprWithChildren >::sparsity(), SUNDANCE_MSG1, SUNDANCE_MSG3, Sundance::ExprBase::toString(), varArgDerivIndex(), Playa::ObjectWithVerbosity::verb(), zerothDerivIsConstant_, and zerothDerivResultIndex_.
void ChainRuleEvaluator::internalEval | ( | const EvalManager & | mgr, | |
Array< double > & | constantResults, | |||
Array< RCP< EvalVector > > & | vectorResults | |||
) | const [virtual] |
Implements Sundance::Evaluator.
Definition at line 419 of file SundanceChainRuleEvaluator.cpp.
References childEvaluators_, evalArgDerivs(), expansions_, Sundance::SubtypeEvaluator< ExprWithChildren >::expr(), Sundance::EvalManager::getRegion(), numChildren(), Playa::Out::os(), Playa::Tabs::print(), Sundance::EvalManager::showResults(), Sundance::SubtypeEvaluator< ExprWithChildren >::sparsity(), SUNDANCE_MSG1, SUNDANCE_MSG2, SUNDANCE_MSG3, Sundance::EvalContext::topLevelDiffOrder(), Sundance::ExprBase::toString(), Sundance::EvalManager::verb(), zerothDerivIsConstant_, and zerothDerivResultIndex_.
MultipleDeriv ChainRuleEvaluator::makeMD | ( | const Array< Deriv > & | d | ) | [static, protected] |
Definition at line 151 of file SundanceChainRuleEvaluator.cpp.
References Sundance::MultiSet< Key >::put().
Referenced by chainRuleBins().
const Array< Array< int > > & ChainRuleEvaluator::nComps | ( | int | N, | |
int | n | |||
) | const |
Definition at line 117 of file SundanceChainRuleEvaluator.cpp.
References compMap(), and Sundance::compositions().
int Sundance::ChainRuleEvaluator::numChildren | ( | ) | const [inline] |
Definition at line 61 of file SundanceChainRuleEvaluator.hpp.
References childEvaluators_.
Referenced by ChainRuleEvaluator(), init(), internalEval(), and resetNumCalls().
void ChainRuleEvaluator::resetNumCalls | ( | ) | const [virtual] |
Reimplemented from Sundance::Evaluator.
Reimplemented in Sundance::UserDefOpEvaluator.
Definition at line 78 of file SundanceChainRuleEvaluator.cpp.
References childEvaluators_, and numChildren().
double ChainRuleEvaluator::stirling2 | ( | int | n, | |
int | k | |||
) | const [protected] |
Returns the stirling number of the second kind
Definition at line 140 of file SundanceChainRuleEvaluator.cpp.
References choose().
Sundance::ChainRuleEvaluator::TEUCHOS_TIMER | ( | chainRuleEvalTimer | , | |
"chain rule evaluation" | ||||
) |
int ChainRuleEvaluator::varArgDerivIndex | ( | const MultiSet< int > & | df | ) | const |
Definition at line 107 of file SundanceChainRuleEvaluator.cpp.
References Sundance::Map< Key, Value, Compare >::containsKey(), Sundance::Map< Key, Value, Compare >::get(), and varArgDerivMap_.
Referenced by init().
Array<RCP<Evaluator> > Sundance::ChainRuleEvaluator::childEvaluators_ [private] |
Definition at line 150 of file SundanceChainRuleEvaluator.hpp.
Referenced by ChainRuleEvaluator(), childEvaluator(), init(), internalEval(), numChildren(), and resetNumCalls().
Array<RCP<SparsitySuperset> > Sundance::ChainRuleEvaluator::childSparsity_ [private] |
Definition at line 152 of file SundanceChainRuleEvaluator.hpp.
Referenced by ChainRuleEvaluator(), childSparsity(), and init().
Map<MultiSet<int>, int> Sundance::ChainRuleEvaluator::constArgDerivMap_ [private] |
Definition at line 154 of file SundanceChainRuleEvaluator.hpp.
Referenced by addConstArgDeriv(), and constArgDerivIndex().
Array<RCP<ChainRuleSum> > Sundance::ChainRuleEvaluator::expansions_ [private] |
Definition at line 148 of file SundanceChainRuleEvaluator.hpp.
Referenced by init(), and internalEval().
Map<MultiSet<int>, int> Sundance::ChainRuleEvaluator::varArgDerivMap_ [private] |
Definition at line 156 of file SundanceChainRuleEvaluator.hpp.
Referenced by addVarArgDeriv(), and varArgDerivIndex().
bool Sundance::ChainRuleEvaluator::zerothDerivIsConstant_ [private] |
Definition at line 160 of file SundanceChainRuleEvaluator.hpp.
Referenced by init(), and internalEval().
int Sundance::ChainRuleEvaluator::zerothDerivResultIndex_ [private] |
Definition at line 158 of file SundanceChainRuleEvaluator.hpp.
Referenced by init(), and internalEval().