Sundance::EvaluatableExpr Class Reference

Inheritance diagram for Sundance::EvaluatableExpr:

Sundance::ScalarExpr Sundance::EvaluatorFactory Sundance::FuncSetAccumulator Sundance::ObjectWithClassVerbosity< EvaluatableExpr > Sundance::ExprBase Playa::ObjectWithVerbosity Playa::Handleable< ExprBase > Sundance::CellDiameterExpr Sundance::CellVectorExpr Sundance::CoordExpr Sundance::CurveNormExpr Sundance::DiscreteFuncElement Sundance::ExprWithChildren Sundance::FunctionalPolynomial Sundance::SpatiallyConstantExpr Sundance::SymbolicFuncElement

List of all members.

Public Member Functions

 EvaluatableExpr ()
virtual ~EvaluatableExpr ()
const RCP< Evaluator > & evaluator (const EvalContext &context) const
virtual void showSparsity (std::ostream &os, const EvalContext &context) const
virtual int countNodes () const
virtual int maxDiffOrderOnDiscreteFunctions () const
virtual bool hasDiscreteFunctions () const
virtual bool nodesHaveBeenCounted () const
virtual Set< MultipleDerivinternalFindW (int order, const EvalContext &context) const =0
virtual Set< MultipleDerivinternalFindV (int order, const EvalContext &context) const
virtual Set< MultipleDerivinternalFindC (int order, const EvalContext &context) const
const Set< MultipleDeriv > & findDerivSubset (int order, const DerivSubsetSpecifier &dss, const EvalContext &context) const
const Set< MultipleDeriv > & findDerivSubset (const DerivSubsetSpecifier &dss, const EvalContext &context) const
const Set< MultipleDeriv > & findW (int order, const EvalContext &context) const
const Set< MultipleDeriv > & findR (int order, const EvalContext &context) const
const Set< MultipleDeriv > & findV (int order, const EvalContext &context) const
const Set< MultipleDeriv > & findC (int order, const EvalContext &context) const
const Set< MultipleDeriv > & findW (const EvalContext &context) const
const Set< MultipleDeriv > & findR (const EvalContext &context) const
const Set< MultipleDeriv > & findV (const EvalContext &context) const
const Set< MultipleDeriv > & findC (const EvalContext &context) const
virtual void displayNonzeros (std::ostream &os, const EvalContext &context) const
Set< MultipleDerivsetProduct (const Set< MultipleDeriv > &a, const Set< MultipleDeriv > &b) const
Set< MultipleDerivsetDivision (const Set< MultipleDeriv > &a, const Set< MultipleDeriv > &b) const
Set< MultiSet< int > > setDivision (const Set< MultiSet< int > > &s, int index) const
void determineR (const EvalContext &context, const Array< Set< MultipleDeriv > > &RInput) const
virtual RCP< Array< Set
< MultipleDeriv > > > 
internalDetermineR (const EvalContext &context, const Array< Set< MultipleDeriv > > &RInput) const
const Set< MultipleDeriv > & getR (int order, const EvalContext &context) const
Array< Set< MultipleDeriv > > computeInputR (const EvalContext &context, const Array< Set< MultiSet< int > > > &funcIDCombinations, const Array< Set< MultiIndex > > &spatialDerivs) const
virtual void registerSpatialDerivs (const EvalContext &context, const Set< MultiIndex > &miSet) const
Evaluation


void evaluate (const EvalManager &mgr, Array< double > &constantResults, Array< RCP< EvalVector > > &vectorResults) const
Preprocessing


virtual void setupEval (const EvalContext &context) const
RCP< SparsitySupersetsparsitySuperset (const EvalContext &context) const

Static Public Member Functions

static const EvaluatableExprgetEvalExpr (const Expr &expr)
static int maxFuncDiffOrder ()
static Time & evaluationTimer ()

Protected Member Functions

void registerEvaluator (const EvalContext &context, const RCP< Evaluator > &evaluator) const
Map< EvalContext, RCP
< Evaluator > > & 
evaluators () const
int maxOrder (const Set< MultiIndex > &m) const
const Set< MultiIndex > & activeSpatialDerivs (const EvalContext &context) const
std::string derivType (const DerivSubsetSpecifier &dss) const
void printR (int verb, const RCP< Array< Set< MultipleDeriv > > > &R) const

Static Protected Member Functions

static bool isEvaluatable (const ExprBase *expr)

Private Types

typedef OrderedQuartet
< EvalContext, Set< MultiIndex >
, Set< MultiSet< int > >, bool > 
NonzeroSpecifier
typedef Array< Map
< EvalContext, Set
< MultipleDeriv > > > 
contextToDSSMap_ele_t

Static Private Member Functions

static int numDerivSubsetTypes ()

Private Attributes

Map< EvalContext, RCP
< Evaluator > > 
evaluators_
Map< EvalContext, RCP
< SparsitySuperset > > 
sparsity_
Array< int > orderOfDependency_
Set< MultiSet< int > > funcIDSet_
Set< int > funcDependencies_
Set< NonzeroSpecifierknownNonzeros_
bool nodesHaveBeenCounted_
Array< contextToDSSMap_ele_tcontextToDSSMap_
bool rIsReady_
Array< Map< EvalContext, Set
< MultipleDeriv > > > 
allOrdersMap_
Map< EvalContext, Set
< MultiIndex > > 
activeSpatialDerivMap_


Detailed Description

Definition at line 75 of file SundanceEvaluatableExpr.hpp.


Member Typedef Documentation

Definition at line 313 of file SundanceEvaluatableExpr.hpp.

Definition at line 83 of file SundanceEvaluatableExpr.hpp.


Constructor & Destructor Documentation

Sundance::EvaluatableExpr::EvaluatableExpr (  ) 

Ctor is empty, but has some internal initialization to do and so must be called by all subclasses

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

virtual dtor

Definition at line 92 of file SundanceEvaluatableExpr.hpp.


Member Function Documentation

const Set< MultiIndex > & EvaluatableExpr::activeSpatialDerivs ( const EvalContext context  )  const [protected]

Array< Set< MultipleDeriv > > EvaluatableExpr::computeInputR ( const EvalContext context,
const Array< Set< MultiSet< int > > > &  funcIDCombinations,
const Array< Set< MultiIndex > > &  spatialDerivs 
) const

int EvaluatableExpr::countNodes (  )  const [virtual]

Reimplemented in Sundance::ExprWithChildren.

Definition at line 232 of file SundanceEvaluatableExpr.cpp.

References nodesHaveBeenCounted_.

Referenced by Sundance::ExprWithChildren::countNodes().

string EvaluatableExpr::derivType ( const DerivSubsetSpecifier dss  )  const [protected]

void EvaluatableExpr::determineR ( const EvalContext context,
const Array< Set< MultipleDeriv > > &  RInput 
) const

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

void EvaluatableExpr::evaluate ( const EvalManager mgr,
Array< double > &  constantResults,
Array< RCP< EvalVector > > &  vectorResults 
) const

Evaluate this expression in the given region, putting the results of the evaluation in the results argument.

Definition at line 151 of file SundanceEvaluatableExpr.cpp.

References evaluator(), and Sundance::EvalManager::getRegion().

Time & EvaluatableExpr::evaluationTimer (  )  [static]

Definition at line 59 of file SundanceEvaluatableExpr.cpp.

const RCP< Evaluator > & EvaluatableExpr::evaluator ( const EvalContext context  )  const

Map<EvalContext, RCP<Evaluator> >& Sundance::EvaluatableExpr::evaluators (  )  const [inline, protected]

Definition at line 268 of file SundanceEvaluatableExpr.hpp.

References evaluators_.

Referenced by Sundance::ExprWithChildren::setupEval().

const Set< MultipleDeriv > & EvaluatableExpr::findC ( const EvalContext context  )  const

Definition at line 468 of file SundanceEvaluatableExpr.cpp.

References Sundance::ConstantNonzeros, and findDerivSubset().

const Set< MultipleDeriv > & EvaluatableExpr::findC ( int  order,
const EvalContext context 
) const

const Set< MultipleDeriv > & EvaluatableExpr::findDerivSubset ( const DerivSubsetSpecifier dss,
const EvalContext context 
) const

const Set< MultipleDeriv > & EvaluatableExpr::findDerivSubset ( int  order,
const DerivSubsetSpecifier dss,
const EvalContext context 
) const

const Set< MultipleDeriv > & EvaluatableExpr::findR ( const EvalContext context  )  const

Definition at line 463 of file SundanceEvaluatableExpr.cpp.

References findDerivSubset(), and Sundance::RequiredNonzeros.

const Set< MultipleDeriv > & EvaluatableExpr::findR ( int  order,
const EvalContext context 
) const

const Set< MultipleDeriv > & EvaluatableExpr::findV ( const EvalContext context  )  const

Definition at line 473 of file SundanceEvaluatableExpr.cpp.

References findDerivSubset(), and Sundance::VariableNonzeros.

const Set< MultipleDeriv > & EvaluatableExpr::findV ( int  order,
const EvalContext context 
) const

const Set< MultipleDeriv > & EvaluatableExpr::findW ( const EvalContext context  )  const

Definition at line 458 of file SundanceEvaluatableExpr.cpp.

References Sundance::AllNonzeros, and findDerivSubset().

const Set< MultipleDeriv > & EvaluatableExpr::findW ( int  order,
const EvalContext context 
) const

const EvaluatableExpr * EvaluatableExpr::getEvalExpr ( const Expr expr  )  [static]

Utility to downcast an expression to an evaluatable expr. Throws an exception if the cast fails.

Definition at line 211 of file SundanceEvaluatableExpr.cpp.

References Playa::Handle< PointerType >::ptr(), and Sundance::Expr::size().

const Set<MultipleDeriv>& Sundance::EvaluatableExpr::getR ( int  order,
const EvalContext context 
) const

virtual bool Sundance::EvaluatableExpr::hasDiscreteFunctions (  )  const [inline, virtual]

Indicate whether this expression contains discrete functions.

Reimplemented in Sundance::DiscreteFuncElement, and Sundance::ExprWithChildren.

Definition at line 153 of file SundanceEvaluatableExpr.hpp.

Referenced by Sundance::ExprWithChildren::hasDiscreteFunctions().

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

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

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

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

bool EvaluatableExpr::isEvaluatable ( const ExprBase expr  )  [static, protected]

Definition at line 226 of file SundanceEvaluatableExpr.cpp.

virtual int Sundance::EvaluatableExpr::maxDiffOrderOnDiscreteFunctions (  )  const [inline, virtual]

Find the maximum differentiation order acting on discrete functions in this expression. This is needed to identify expressions where cofacet Jacobians are needed to transform discrete function derivatives.

The base class implementation is a no-op.

Reimplemented in Sundance::DiffOp, Sundance::DiscreteFuncElement, and Sundance::ExprWithChildren.

Definition at line 148 of file SundanceEvaluatableExpr.hpp.

Referenced by Sundance::ExprWithChildren::maxDiffOrderOnDiscreteFunctions(), and Sundance::DiffOp::maxDiffOrderOnDiscreteFunctions().

static int Sundance::EvaluatableExpr::maxFuncDiffOrder (  )  [inline, static]

Definition at line 159 of file SundanceEvaluatableExpr.hpp.

int EvaluatableExpr::maxOrder ( const Set< MultiIndex > &  m  )  const [protected]

virtual bool Sundance::EvaluatableExpr::nodesHaveBeenCounted (  )  const [inline, virtual]

static int Sundance::EvaluatableExpr::numDerivSubsetTypes (  )  [inline, static, private]

Definition at line 287 of file SundanceEvaluatableExpr.hpp.

void EvaluatableExpr::printR ( int  verb,
const RCP< Array< Set< MultipleDeriv > > > &  R 
) const [protected]

Definition at line 518 of file SundanceEvaluatableExpr.cpp.

References SUNDANCE_MSG2.

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

void Sundance::EvaluatableExpr::registerEvaluator ( const EvalContext context,
const RCP< Evaluator > &  evaluator 
) const [inline, protected]

Record the evaluator to be used for the given context

Definition at line 260 of file SundanceEvaluatableExpr.hpp.

References evaluators_, and Sundance::Map< Key, Value, Compare >::put().

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

Set< MultiSet< int > > EvaluatableExpr::setDivision ( const Set< MultiSet< int > > &  s,
int  index 
) const

Definition at line 334 of file SundanceEvaluatableExpr.cpp.

References Sundance::Set< Key, Compare >::put().

Set< MultipleDeriv > EvaluatableExpr::setDivision ( const Set< MultipleDeriv > &  a,
const Set< MultipleDeriv > &  b 
) const

Set< MultipleDeriv > EvaluatableExpr::setProduct ( const Set< MultipleDeriv > &  a,
const Set< MultipleDeriv > &  b 
) const

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

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

RCP< SparsitySuperset > EvaluatableExpr::sparsitySuperset ( const EvalContext context  )  const


Member Data Documentation

Definition at line 320 of file SundanceEvaluatableExpr.hpp.

Referenced by registerSpatialDerivs().

Definition at line 318 of file SundanceEvaluatableExpr.hpp.

Referenced by findDerivSubset().

Definition at line 314 of file SundanceEvaluatableExpr.hpp.

Referenced by determineR(), and findDerivSubset().

evaluators, indexed by context

Definition at line 292 of file SundanceEvaluatableExpr.hpp.

Referenced by evaluator(), evaluators(), registerEvaluator(), and setupEval().

Definition at line 307 of file SundanceEvaluatableExpr.hpp.

Set of function combinations appearing in nonzero mixed partials

Definition at line 304 of file SundanceEvaluatableExpr.hpp.

Definition at line 309 of file SundanceEvaluatableExpr.hpp.

Definition at line 311 of file SundanceEvaluatableExpr.hpp.

Referenced by countNodes(), and nodesHaveBeenCounted().

Polynomial order of the dependency upon each coordinate direction

Definition at line 301 of file SundanceEvaluatableExpr.hpp.

bool Sundance::EvaluatableExpr::rIsReady_ [mutable, private]

Definition at line 316 of file SundanceEvaluatableExpr.hpp.

Referenced by determineR(), and findR().

supersets of nonzero derivatives to be computed, index by context

Definition at line 298 of file SundanceEvaluatableExpr.hpp.

Referenced by sparsitySuperset().

Site Contact