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 Sundance::DefaultObjectWithVerbosity Sundance::Handleable< ExprBase > Sundance::ObjectWithVerbosityBase 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 ()
 Ctor is empty, but has some internal initialization to do and so must be called by all subclasses.
virtual ~EvaluatableExpr ()
 virtual dtor
const RCP< Evaluator > & evaluator (const EvalContext &context) const
 Return the evaluator to be used for the given context.
virtual void showSparsity (std::ostream &os, const EvalContext &context) const
virtual int countNodes () const
virtual int maxDiffOrderOnDiscreteFunctions () const
 Find the maximum differentiation order acting on discrete functions in this expression.
virtual bool hasDiscreteFunctions () const
 Indicate whether this expression contains discrete functions.
virtual bool nodesHaveBeenCounted () const
virtual Set< MultipleDerivinternalFindW (int order, const EvalContext &context) const =0
virtual Set< MultipleDerivinternalFindV (int order, const EvalContext &context) const
 Find spatially-variable functional derivatives.
virtual Set< MultipleDerivinternalFindC (int order, const EvalContext &context) const
 Find spatially-constant functional derivatives.
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
 Evaluate this expression in the given region, putting the results of the evaluation in the results argument.
Preprocessing
virtual void setupEval (const EvalContext &context) const
RCP< SparsitySupersetsparsitySuperset (const EvalContext &context) const
 Return the set of all nonzero derivatives required in the given context.

Static Public Member Functions

static const EvaluatableExprgetEvalExpr (const Expr &expr)
 Utility to downcast an expression to an evaluatable expr.
static int maxFuncDiffOrder ()
static Time & evaluationTimer ()

Protected Member Functions

void registerEvaluator (const EvalContext &context, const RCP< Evaluator > &evaluator) const
 Record the evaluator to be used for the given context.
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

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_
 evaluators, indexed by context
Map< EvalContext, RCP
< SparsitySuperset > > 
sparsity_
 supersets of nonzero derivatives to be computed, index by context
Array< int > orderOfDependency_
 Polynomial order of the dependency upon each coordinate direction.
Set< MultiSet< int > > funcIDSet_
 Set of function combinations appearing in nonzero mixed partials.
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 310 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 227 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 146 of file SundanceEvaluatableExpr.cpp.

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

Time & EvaluatableExpr::evaluationTimer ( ) [static]

Definition at line 60 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 ( int  order,
const EvalContext context 
) const
const Set< MultipleDeriv > & EvaluatableExpr::findC ( const EvalContext context) const

Definition at line 462 of file SundanceEvaluatableExpr.cpp.

References Sundance::ConstantNonzeros, and findDerivSubset().

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 ( int  order,
const EvalContext context 
) const
const Set< MultipleDeriv > & EvaluatableExpr::findR ( const EvalContext context) const

Definition at line 457 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 467 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 452 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 206 of file SundanceEvaluatableExpr.cpp.

References Sundance::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 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 221 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(), Sundance::DiffOp::maxDiffOrderOnDiscreteFunctions(), and Sundance::Assembler::whetherToUseCofacets().

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 284 of file SundanceEvaluatableExpr.hpp.

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< 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 329 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]
RCP< SparsitySuperset > EvaluatableExpr::sparsitySuperset ( const EvalContext context) const

Member Data Documentation

Definition at line 317 of file SundanceEvaluatableExpr.hpp.

Referenced by registerSpatialDerivs().

Definition at line 315 of file SundanceEvaluatableExpr.hpp.

Referenced by findDerivSubset().

Definition at line 311 of file SundanceEvaluatableExpr.hpp.

Referenced by determineR(), and findDerivSubset().

evaluators, indexed by context

Definition at line 289 of file SundanceEvaluatableExpr.hpp.

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

Definition at line 304 of file SundanceEvaluatableExpr.hpp.

Set of function combinations appearing in nonzero mixed partials.

Definition at line 301 of file SundanceEvaluatableExpr.hpp.

Definition at line 306 of file SundanceEvaluatableExpr.hpp.

Definition at line 308 of file SundanceEvaluatableExpr.hpp.

Referenced by countNodes(), and nodesHaveBeenCounted().

Polynomial order of the dependency upon each coordinate direction.

Definition at line 298 of file SundanceEvaluatableExpr.hpp.

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

Definition at line 313 of file SundanceEvaluatableExpr.hpp.

Referenced by determineR(), and findR().

supersets of nonzero derivatives to be computed, index by context

Definition at line 295 of file SundanceEvaluatableExpr.hpp.

Referenced by sparsitySuperset().

Site Contact