Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Types | Static Private Member Functions | Private Attributes
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 86 of file SundanceEvaluatableExpr.hpp.


Member Typedef Documentation

Definition at line 324 of file SundanceEvaluatableExpr.hpp.

Definition at line 94 of file SundanceEvaluatableExpr.hpp.


Constructor & Destructor Documentation

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 103 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 243 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 162 of file SundanceEvaluatableExpr.cpp.

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

Time & EvaluatableExpr::evaluationTimer ( ) [static]

Definition at line 70 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 279 of file SundanceEvaluatableExpr.hpp.

References evaluators_.

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

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

Definition at line 479 of file SundanceEvaluatableExpr.cpp.

References Sundance::ConstantNonzeros, and findDerivSubset().

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

Definition at line 474 of file SundanceEvaluatableExpr.cpp.

References findDerivSubset(), and Sundance::RequiredNonzeros.

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

Definition at line 484 of file SundanceEvaluatableExpr.cpp.

References findDerivSubset(), and Sundance::VariableNonzeros.

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

Definition at line 469 of file SundanceEvaluatableExpr.cpp.

References Sundance::AllNonzeros, and findDerivSubset().

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 222 of file SundanceEvaluatableExpr.cpp.

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

Referenced by Sundance::Assembler::init().

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 164 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 237 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 159 of file SundanceEvaluatableExpr.hpp.

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

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

Definition at line 170 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 298 of file SundanceEvaluatableExpr.hpp.

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

Definition at line 529 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 271 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< MultipleDeriv > EvaluatableExpr::setDivision ( const Set< MultipleDeriv > &  a,
const Set< MultipleDeriv > &  b 
) const
Set< MultiSet< int > > EvaluatableExpr::setDivision ( const Set< MultiSet< int > > &  s,
int  index 
) const

Definition at line 345 of file SundanceEvaluatableExpr.cpp.

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

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]

Member Data Documentation

Definition at line 331 of file SundanceEvaluatableExpr.hpp.

Referenced by registerSpatialDerivs().

Definition at line 329 of file SundanceEvaluatableExpr.hpp.

Referenced by findDerivSubset().

Definition at line 325 of file SundanceEvaluatableExpr.hpp.

Referenced by determineR(), and findDerivSubset().

evaluators, indexed by context

Definition at line 303 of file SundanceEvaluatableExpr.hpp.

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

Definition at line 318 of file SundanceEvaluatableExpr.hpp.

Set of function combinations appearing in nonzero mixed partials

Definition at line 315 of file SundanceEvaluatableExpr.hpp.

Definition at line 320 of file SundanceEvaluatableExpr.hpp.

Definition at line 322 of file SundanceEvaluatableExpr.hpp.

Referenced by countNodes(), and nodesHaveBeenCounted().

Polynomial order of the dependency upon each coordinate direction

Definition at line 312 of file SundanceEvaluatableExpr.hpp.

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

Definition at line 327 of file SundanceEvaluatableExpr.hpp.

Referenced by determineR(), and findR().

supersets of nonzero derivatives to be computed, index by context

Definition at line 309 of file SundanceEvaluatableExpr.hpp.

Referenced by sparsitySuperset().

Site Contact