#include <Stencil.h>
Public Types | |
enum | { dimensions = D } |
enum | { hasDataObject = ExprEngine_t::hasDataObject } |
enum | { dynamic = false } |
enum | { multiPatch = ExprEngine_t::multiPatch } |
enum | { zeroBased = true } |
typedef StencilEngine < Function, Expression > | Tag_t |
typedef Engine< D, T, Tag_t > | This_t |
typedef This_t | Engine_t |
typedef Interval< D > | Domain_t |
typedef DomainLayout< D > | Layout_t |
typedef T | Element_t |
typedef ErrorType | ElementRef_t |
typedef Expression::Engine_t | ExprEngine_t |
Public Member Functions | |
Engine () | |
template<class Layout2 > | |
Engine (const Layout2 &layout) | |
Engine (const Function &f, const Expression &e) | |
Engine (const Function &f, const Expression &e, const Interval< D > &domain) | |
Construct StencilEngine from stencil functor, expression and output domain. | |
template<int Dim, class Tx , class EngineTag > | |
void | initExpressionFromModel (const Array< Dim, Tx, EngineTag > &model) |
template<class Mesh , class Tx , class EngineTag > | |
void | initExpressionFromModel (const Field< Mesh, Tx, EngineTag > &model) |
This_t & | operator= (const This_t &model) |
const Domain_t & | domain () const |
Layout_t | layout () const |
int | first (int i) const |
Interval< D > | viewDomain (const Interval< D > &domain) const |
viewDomain() translates the provided output domain to the appropriate input domain. | |
INode< D > | viewDomain (const INode< D > &inode) const |
viewDomain implementation for INode. | |
Interval< D > | intersectDomain () const |
intersectDomain() gives the "original", unshifted output domain. | |
const Function & | function () const |
const Expression & | expression () const |
int | offset (int d) const |
Viewing constructors | |
template<class OtherE > | |
Engine (const Engine< D, T, StencilEngine< Function, OtherE > > &e, const INode< D > &node) | |
INode view of a StencilEngine. | |
Engine (const Engine_t &e, const Interval< D > &domain) | |
Interval view of a StencilEngine. | |
Indexing | |
Element_t | read (int i) const |
Element_t | read (int i, int j) const |
Element_t | read (int i, int j, int k) const |
Element_t | read (const Loc< 1 > &loc) const |
Element_t | read (const Loc< 2 > &loc) const |
Element_t | read (const Loc< 3 > &loc) const |
Element_t | operator() (int i) const |
Element_t | operator() (int i, int j) const |
Element_t | operator() (int i, int j, int k) const |
This does all of the usual Engine things:
typedef StencilEngine<Function, Expression> Engine< D, T, StencilEngine< Function, Expression > >::Tag_t |
typedef Engine<D, T, Tag_t> Engine< D, T, StencilEngine< Function, Expression > >::This_t |
typedef This_t Engine< D, T, StencilEngine< Function, Expression > >::Engine_t |
typedef Interval<D> Engine< D, T, StencilEngine< Function, Expression > >::Domain_t |
typedef DomainLayout<D> Engine< D, T, StencilEngine< Function, Expression > >::Layout_t |
typedef T Engine< D, T, StencilEngine< Function, Expression > >::Element_t |
typedef ErrorType Engine< D, T, StencilEngine< Function, Expression > >::ElementRef_t |
typedef Expression::Engine_t Engine< D, T, StencilEngine< Function, Expression > >::ExprEngine_t |
anonymous enum |
Engine< D, T, StencilEngine< Function, Expression > >::Engine | ( | ) | [inline] |
Engine< D, T, StencilEngine< Function, Expression > >::Engine | ( | const Layout2 & | layout | ) | [inline, explicit] |
Engine< D, T, StencilEngine< Function, Expression > >::Engine | ( | const Function & | f, | |
const Expression & | e | |||
) | [inline] |
References insetDomain().
Engine< D, T, StencilEngine< Function, Expression > >::Engine | ( | const Function & | f, | |
const Expression & | e, | |||
const Interval< D > & | domain | |||
) | [inline] |
Construct StencilEngine from stencil functor, expression and output domain.
The output domain specifies the domain the resulting StencilEngine can be indexed with.
Engine< D, T, StencilEngine< Function, Expression > >::Engine | ( | const Engine< D, T, StencilEngine< Function, OtherE > > & | e, | |
const INode< D > & | node | |||
) | [inline] |
INode view of a StencilEngine.
Apply the view to the expression and update our input domain and offset accordingly.
References INode< Dim >::domain().
Engine< D, T, StencilEngine< Function, Expression > >::Engine | ( | const Engine_t & | e, | |
const Interval< D > & | domain | |||
) | [inline] |
Interval view of a StencilEngine.
Adjust domain and offset, but do not apply a view to the expression itself. Note that this means any possible bounds checking will be deferred to later indexing of the engine.
void Engine< D, T, StencilEngine< Function, Expression > >::initExpressionFromModel | ( | const Array< Dim, Tx, EngineTag > & | model | ) | [inline] |
References Array< Dim, T, EngineTag >::engine().
void Engine< D, T, StencilEngine< Function, Expression > >::initExpressionFromModel | ( | const Field< Mesh, Tx, EngineTag > & | model | ) | [inline] |
References Field< Mesh, T, EngineTag >::fieldEngine().
This_t& Engine< D, T, StencilEngine< Function, Expression > >::operator= | ( | const This_t & | model | ) | [inline] |
Element_t Engine< D, T, StencilEngine< Function, Expression > >::read | ( | int | i | ) | const [inline] |
Element_t Engine< D, T, StencilEngine< Function, Expression > >::read | ( | int | i, | |
int | j | |||
) | const [inline] |
Element_t Engine< D, T, StencilEngine< Function, Expression > >::read | ( | int | i, | |
int | j, | |||
int | k | |||
) | const [inline] |
Element_t Engine< D, T, StencilEngine< Function, Expression > >::read | ( | const Loc< 1 > & | loc | ) | const [inline] |
Element_t Engine< D, T, StencilEngine< Function, Expression > >::read | ( | const Loc< 2 > & | loc | ) | const [inline] |
Element_t Engine< D, T, StencilEngine< Function, Expression > >::read | ( | const Loc< 3 > & | loc | ) | const [inline] |
Element_t Engine< D, T, StencilEngine< Function, Expression > >::operator() | ( | int | i | ) | const [inline] |
Element_t Engine< D, T, StencilEngine< Function, Expression > >::operator() | ( | int | i, | |
int | j | |||
) | const [inline] |
Element_t Engine< D, T, StencilEngine< Function, Expression > >::operator() | ( | int | i, | |
int | j, | |||
int | k | |||
) | const [inline] |
const Domain_t& Engine< D, T, StencilEngine< Function, Expression > >::domain | ( | ) | const [inline] |
Layout_t Engine< D, T, StencilEngine< Function, Expression > >::layout | ( | ) | const [inline] |
int Engine< D, T, StencilEngine< Function, Expression > >::first | ( | int | i | ) | const [inline] |
References PAssert.
Interval<D> Engine< D, T, StencilEngine< Function, Expression > >::viewDomain | ( | const Interval< D > & | domain | ) | const [inline] |
viewDomain() translates the provided output domain to the appropriate input domain.
That is, it returns a domain that should be used in viewing the StencilEngine expression from the domain that was used viewing the StencilEngine itself.
INode<D> Engine< D, T, StencilEngine< Function, Expression > >::viewDomain | ( | const INode< D > & | inode | ) | const [inline] |
Interval<D> Engine< D, T, StencilEngine< Function, Expression > >::intersectDomain | ( | ) | const [inline] |
intersectDomain() gives the "original", unshifted output domain.
That is, the output domain in the notion of the expression domains.
const Function& Engine< D, T, StencilEngine< Function, Expression > >::function | ( | ) | const [inline] |
const Expression& Engine< D, T, StencilEngine< Function, Expression > >::expression | ( | ) | const [inline] |
int Engine< D, T, StencilEngine< Function, Expression > >::offset | ( | int | d | ) | const [inline] |