exprResult Class Reference

A polymorphic field/result from evaluating an expression. More...

Inheritance diagram for exprResult:
Collaboration diagram for exprResult:

Public Member Functions

 TypeName ("exprResult")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, exprResult, dictionary,(const dictionary &dict),(dict))
 
 declareRunTimeSelectionTable (autoPtr, exprResult, empty,(),())
 
 exprResult ()
 Default construct. More...
 
 exprResult (const exprResult &expr)
 Copy construct. More...
 
 exprResult (exprResult &&expr)
 Move construct. More...
 
 exprResult (const dictionary &dict, const bool singleValueOnly=false, const bool valueReqd=false)
 Construct from a dictionary. More...
 
 exprResult (Istream &is)
 Construct from Istream as dictionary content. More...
 
template<class Type >
 exprResult (const Field< Type > &fld)
 Construct by copying a field. More...
 
template<class Type >
 exprResult (Field< Type > &&fld)
 Construct by moving a field. More...
 
template<class Type >
 exprResult (autoPtr< Type > &&obj)
 Construct for an IOobject. More...
 
template<class Type >
 exprResult (const dimensioned< Type > &dt)
 Construct from a dimensioned value. More...
 
 exprResult (const bool &val)
 Construct from single value of bool. More...
 
 exprResult (const scalar &val)
 Construct from single value of scalar. More...
 
 exprResult (const vector &val)
 Construct from single value of vector. More...
 
 exprResult (const tensor &val)
 Construct from single value of tensor. More...
 
 exprResult (const symmTensor &val)
 Construct from single value of symmTensor. More...
 
 exprResult (const sphericalTensor &val)
 Construct from single value of sphericalTensor. More...
 
virtual autoPtr< exprResultclone () const
 Clone. More...
 
virtual ~exprResult ()
 Destructor. More...
 
bool hasValue () const
 Has a value? More...
 
const wordvalueType () const noexcept
 Basic type for the field or single value. More...
 
bool isPointData (const bool wantPointData=true) const
 True if representing point data, or test for same value as wantPointData argument. More...
 
bool isUniform () const
 True if single, uniform value. More...
 
template<class Type >
bool isType () const
 True if valueType corresponds to the given Type. More...
 
template<class Type >
Type getValue () const
 Return a single value when isUniform() is true, or Zero when it is non-uniform or if the type mismatches, which means that it can generally be considered as failsafe. More...
 
template<class Type >
const Field< Type > * getField () const
 Return a read pointer to the field data if the type matches, nullptr otherwise. Can generally be considered as failsafe. More...
 
bool is_bool () const
 True if valueType is a bool. More...
 
label size () const
 The field or object size. More...
 
const void * dataAddress () const
 The address of the field data content. More...
 
void clear ()
 Clear (zero) the result. More...
 
void noReset () noexcept
 Change reset behaviour. More...
 
void allowReset () noexcept
 Change reset behaviour. More...
 
void testIfSingleValue (const bool parRun=Pstream::parRun())
 Test if field corresponds to a single-value and thus uniform. More...
 
template<class Type >
void setResult (Field< Type > *, bool wantPointData=false)
 Set result field, taking ownership of the pointer. More...
 
template<class Type >
void setResult (const Field< Type > &, bool wantPointData=false)
 Set result field, taking copy of the field contents. More...
 
template<class Type >
void setResult (Field< Type > &&, bool wantPointData=false)
 Set result field, moving field contents. More...
 
template<class Type >
void setResult (const Type &val, const label size)
 Set uniform result field of given size. More...
 
template<class Type >
void setSingleValue (const Type &val)
 Set single-value uniform result. More...
 
template<class Type >
const Field< Type > & cref () const
 Return const reference to the field. More...
 
template<class Type >
Field< Type > & ref ()
 Return non-const reference to the field. More...
 
template<class Type >
Field< Type > & constCast () const
 Return non-const reference to the field, casting away constness. More...
 
template<class Type >
tmp< Field< Type > > getResult (bool cacheCopy=false)
 Return tmp field of the contents, optionally keeping a copy in cache. More...
 
exprResult getUniform (const label size, const bool noWarn, const bool parRun=Pstream::parRun()) const
 Construct a uniform field from the current results. More...
 
template<template< class > class BinaryOp, class Type >
Type getReduced (const BinaryOp< Type > &bop, const Type &initial=pTraits< Type >::zero)
 Get a reduced result. More...
 
void writeEntry (const word &keyword, Ostream &os) const
 Forwarding to Field::writeEntry. More...
 
void writeDict (Ostream &os, const bool subDict=true) const
 Write entry as dictionary contents. More...
 
void writeField (Ostream &os, const word &keyword="") const
 Write the field, optionally as an entry. More...
 
void writeValue (Ostream &os) const
 Write the single value, or the first value from field. More...
 
virtual void operator= (const exprResult &rhs)
 Copy assignment. More...
 
virtual void operator= (exprResult &&rhs)
 Move assignment. More...
 
exprResultoperator*= (const scalar &b)
 Scalar multiplication. More...
 
exprResultoperator+= (const exprResult &b)
 Addition of results. More...
 
template<class Type >
const Foam::Field< Type > * getField () const
 
template<class Type >
Foam::tmp< Foam::Field< Type > > getResult (bool cacheCopy)
 
template<class Type >
const Foam::Field< Type > & cref () const
 
template<class Type >
Foam::Field< Type > & ref ()
 
template<class Type >
Foam::Field< Type > & constCast () const
 

Static Public Member Functions

static autoPtr< exprResultNew (const dictionary &dict)
 Return a reference to the selected value driver. More...
 
static autoPtr< exprResultNew (Istream &is)
 Construct from Istream as dictionary content. More...
 

Static Public Attributes

static const exprResult null
 An empty result. More...
 

Protected Member Functions

virtual expressions::exprResulttarget ()
 Simulate virtual templated methods. More...
 
virtual void resetImpl ()
 Reset at new timestep according to the derived class type. More...
 
bool reset (bool force=false)
 Reset at new timestep according to type. More...
 
void needsReset (bool val)
 Adjusts the internal needsReset value. More...
 

Friends

class exprResultGlobals
 Friendship with globals. More...
 

Detailed Description

A polymorphic field/result from evaluating an expression.


Dictionary parameters

Property Description Required Default
resultType The type of result no exprResult
unsetValue Create without reading the dictionary no false
noReset Suppress reset on time no false

When creating with values

Property Description Required Default
valueType Result value type (scalar, vector,..) yes
isSingleValue A single field value no false
isPointValue Interpret values as point values no false
value The field values yes
fieldSize The size of the field (when not single-value) no
Source files

Definition at line 121 of file exprResult.H.

Constructor & Destructor Documentation

◆ exprResult() [1/15]

Default construct.

Definition at line 173 of file exprResult.C.

◆ exprResult() [2/15]

exprResult ( const exprResult expr)

Copy construct.

Definition at line 185 of file exprResult.C.

References exprResult::operator=().

Here is the call graph for this function:

◆ exprResult() [3/15]

exprResult ( exprResult &&  expr)

Move construct.

Definition at line 193 of file exprResult.C.

References exprResult::operator=().

Here is the call graph for this function:

◆ exprResult() [4/15]

exprResult ( const dictionary dict,
const bool  singleValueOnly = false,
const bool  valueReqd = false 
)
explicit

Construct from a dictionary.

Parameters
singleValueOnlyRead a single entry, not a field
valueReqdThe "value" entry required or optional

Definition at line 202 of file exprResult.C.

References DebugInFunction, dict, Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, keyType::LITERAL, and Foam::nl.

Here is the call graph for this function:

◆ exprResult() [5/15]

exprResult ( Istream is)
explicit

Construct from Istream as dictionary content.

◆ exprResult() [6/15]

exprResult ( const Field< Type > &  fld)
explicit

Construct by copying a field.

Definition at line 152 of file exprResultI.H.

References DebugInFunction, fld, Foam::nl, and exprResult::setResult().

Here is the call graph for this function:

◆ exprResult() [7/15]

exprResult ( Field< Type > &&  fld)
explicit

Construct by moving a field.

Definition at line 163 of file exprResultI.H.

References DebugInFunction, fld, Foam::nl, and exprResult::setResult().

Here is the call graph for this function:

◆ exprResult() [8/15]

exprResult ( autoPtr< Type > &&  obj)
explicit

Construct for an IOobject.

◆ exprResult() [9/15]

exprResult ( const dimensioned< Type > &  dt)
explicit

Construct from a dimensioned value.

Definition at line 174 of file exprResultI.H.

References DebugInFunction, Foam::nl, exprResult::setSingleValue(), and dimensioned< Type >::value().

Here is the call graph for this function:

◆ exprResult() [10/15]

exprResult ( const bool &  val)
inlineexplicit

Construct from single value of bool.

Definition at line 431 of file exprResult.H.

◆ exprResult() [11/15]

exprResult ( const scalar &  val)
inlineexplicit

Construct from single value of scalar.

Definition at line 432 of file exprResult.H.

◆ exprResult() [12/15]

exprResult ( const vector val)
inlineexplicit

Construct from single value of vector.

Definition at line 433 of file exprResult.H.

◆ exprResult() [13/15]

exprResult ( const tensor val)
inlineexplicit

Construct from single value of tensor.

Definition at line 434 of file exprResult.H.

◆ exprResult() [14/15]

exprResult ( const symmTensor val)
inlineexplicit

Construct from single value of symmTensor.

Definition at line 435 of file exprResult.H.

◆ exprResult() [15/15]

exprResult ( const sphericalTensor val)
inlineexplicit

Construct from single value of sphericalTensor.

Definition at line 436 of file exprResult.H.

◆ ~exprResult()

~exprResult ( )
virtual

Destructor.

Definition at line 336 of file exprResult.C.

References DebugInFunction, and Foam::nl.

Member Function Documentation

◆ target()

virtual expressions::exprResult& target ( )
inlineprotectedvirtual

Simulate virtual templated methods.

Reimplemented in exprResultDelayed.

Definition at line 307 of file exprResult.H.

◆ resetImpl()

void resetImpl ( )
protectedvirtual

Reset at new timestep according to the derived class type.

Reimplemented in exprResultStored, and exprResultStoredStack.

Definition at line 346 of file exprResult.C.

References clear().

Here is the call graph for this function:

◆ reset()

bool reset ( bool  force = false)
protected

Reset at new timestep according to type.

Returns
true if it was actually reset

Definition at line 352 of file exprResult.C.

◆ needsReset()

void needsReset ( bool  val)
inlineprotected

Adjusts the internal needsReset value.

Definition at line 324 of file exprResult.H.

Referenced by exprResultStack::exprResultStack(), and exprResultStoredStack::exprResultStoredStack().

Here is the caller graph for this function:

◆ TypeName()

TypeName ( "exprResult"  )

Runtime type information.

◆ declareRunTimeSelectionTable() [1/2]

declareRunTimeSelectionTable ( autoPtr  ,
exprResult  ,
dictionary  ,
(const dictionary &dict ,
(dict  
)

◆ declareRunTimeSelectionTable() [2/2]

declareRunTimeSelectionTable ( autoPtr  ,
exprResult  ,
empty  ,
()  ,
()   
)

◆ New() [1/2]

Foam::autoPtr< Foam::expressions::exprResult > New ( const dictionary dict)
static

Return a reference to the selected value driver.

Definition at line 272 of file exprResult.C.

References DebugInfo, dict, Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, and Foam::nl.

Referenced by exprResultGlobals::addValue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ New() [2/2]

Construct from Istream as dictionary content.

Definition at line 325 of file exprResult.C.

References dict, and Foam::New().

Here is the call graph for this function:

◆ clone()

virtual autoPtr<exprResult> clone ( ) const
inlinevirtual

Clone.

Reimplemented in exprResultDelayed, exprResultStored, exprResultStack, and exprResultStoredStack.

Definition at line 456 of file exprResult.H.

References autoPtr< T >::New().

Here is the call graph for this function:

◆ hasValue()

bool hasValue ( ) const
inline

Has a value?

Definition at line 185 of file exprResultI.H.

Referenced by Foam::stringOps::evaluate().

Here is the caller graph for this function:

◆ valueType()

const Foam::word & valueType ( ) const
inlinenoexcept

Basic type for the field or single value.

Definition at line 192 of file exprResultI.H.

Referenced by exprDriver::getResultType(), exprDriver::isLocalVariable(), and exprResultStack::push().

Here is the caller graph for this function:

◆ isPointData()

bool isPointData ( const bool  wantPointData = true) const
inline

True if representing point data, or test for same value as wantPointData argument.

Definition at line 199 of file exprResultI.H.

Referenced by exprDriver::getResult(), and exprDriver::isLocalVariable().

Here is the caller graph for this function:

◆ isUniform()

bool isUniform ( ) const
inline

True if single, uniform value.

Definition at line 207 of file exprResultI.H.

Referenced by fvExprDriver::evaluateVariableRemote().

Here is the caller graph for this function:

◆ isType()

bool isType ( ) const
inline

True if valueType corresponds to the given Type.

Definition at line 214 of file exprResultI.H.

Referenced by exprDriver::isLocalVariable().

Here is the caller graph for this function:

◆ getValue()

Type getValue ( ) const
inline

Return a single value when isUniform() is true, or Zero when it is non-uniform or if the type mismatches, which means that it can generally be considered as failsafe.

Definition at line 221 of file exprResultI.H.

References Foam::Zero.

◆ getField() [1/2]

const Field<Type>* getField ( ) const
inline

Return a read pointer to the field data if the type matches, nullptr otherwise. Can generally be considered as failsafe.

◆ is_bool()

bool is_bool ( ) const
inline

True if valueType is a bool.

Definition at line 246 of file exprResultI.H.

◆ size()

Foam::label size ( ) const
inline

The field or object size.

Definition at line 252 of file exprResultI.H.

Referenced by Foam::stringOps::evaluate(), and exprDriver::isLocalVariable().

Here is the caller graph for this function:

◆ dataAddress()

const void * dataAddress ( ) const

The address of the field data content.

Fatal for unknown types. Used, for example, for python integration

Definition at line 810 of file exprResult.C.

References defineExpressionMethod, Foam::exit(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.

Here is the call graph for this function:

◆ clear()

void clear ( )

Clear (zero) the result.

Definition at line 364 of file exprResult.C.

◆ noReset()

void noReset ( )
inlinenoexcept

Change reset behaviour.

Definition at line 543 of file exprResult.H.

◆ allowReset()

void allowReset ( )
inlinenoexcept

Change reset behaviour.

Definition at line 548 of file exprResult.H.

◆ testIfSingleValue()

void testIfSingleValue ( const bool  parRun = Pstream::parRun())

Test if field corresponds to a single-value and thus uniform.

Uses field min/max to establish uniformity. Test afterwards with isUniform()

Definition at line 440 of file exprResult.C.

References Foam::endl(), Foam::nl, and WarningInFunction.

Referenced by fvExprDriver::evaluateVariableRemote().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setResult() [1/4]

void setResult ( Field< Type > *  fldPtr,
bool  wantPointData = false 
)
inline

Set result field, taking ownership of the pointer.

Definition at line 330 of file exprResultI.H.

Referenced by exprResult::exprResult(), and parseDriver::setResult().

Here is the caller graph for this function:

◆ setResult() [2/4]

void setResult ( const Field< Type > &  val,
bool  wantPointData = false 
)
inline

Set result field, taking copy of the field contents.

Definition at line 260 of file exprResultI.H.

References DebugInFunction, and Foam::nl.

◆ setResult() [3/4]

void setResult ( Field< Type > &&  val,
bool  wantPointData = false 
)
inline

Set result field, moving field contents.

Definition at line 273 of file exprResultI.H.

References DebugInFunction, and Foam::nl.

◆ setResult() [4/4]

void setResult ( const Type &  val,
const label  size 
)
inline

Set uniform result field of given size.

Definition at line 362 of file exprResultI.H.

◆ setSingleValue()

void setSingleValue ( const Type &  val)
inline

Set single-value uniform result.

Definition at line 392 of file exprResultI.H.

Referenced by exprDriver::addUniformVariable(), and exprResult::exprResult().

Here is the caller graph for this function:

◆ cref() [1/2]

const Field<Type>& cref ( ) const
inline

Return const reference to the field.

◆ ref() [1/2]

Field<Type>& ref ( )
inline

Return non-const reference to the field.

◆ constCast() [1/2]

Field<Type>& constCast ( ) const
inline

Return non-const reference to the field, casting away constness.

◆ getResult() [1/2]

tmp<Field<Type> > getResult ( bool  cacheCopy = false)
inline

Return tmp field of the contents, optionally keeping a copy in cache.

Referenced by exprDriver::getResult().

Here is the caller graph for this function:

◆ getUniform()

Foam::expressions::exprResult getUniform ( const label  size,
const bool  noWarn,
const bool  parRun = Pstream::parRun() 
) const

Construct a uniform field from the current results.

Uses the field average. Optionally warning if the min/max deviation is larger than SMALL.

Definition at line 404 of file exprResult.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.

Referenced by exprDriver::getRemoteResult(), and exprResultStack::operator=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getReduced()

Type getReduced ( const BinaryOp< Type > &  bop,
const Type &  initial = pTraits<Type>::zero 
)
inline

Get a reduced result.

Definition at line 699 of file exprResultI.H.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, fld, Foam::nl, and Foam::returnReduce().

Here is the call graph for this function:

◆ writeEntry()

void writeEntry ( const word keyword,
Ostream os 
) const

Forwarding to Field::writeEntry.

Definition at line 528 of file exprResult.C.

References Foam::endl(), os(), and WarningInFunction.

Here is the call graph for this function:

◆ writeDict()

void writeDict ( Ostream os,
const bool  subDict = true 
) const

Write entry as dictionary contents.

Definition at line 552 of file exprResult.C.

References DebugInFunction, IOstreamOption::formatNames, Foam::name(), Foam::nl, os(), and Foam::ensightOutput::writeField().

Here is the call graph for this function:

◆ writeField()

void writeField ( Ostream os,
const word keyword = "" 
) const

Write the field, optionally as an entry.

Definition at line 596 of file exprResult.C.

References DebugInFunction, Foam::endl(), IOstreamOption::formatNames, Foam::name(), Foam::nl, os(), and WarningInFunction.

Referenced by Foam::stringOps::evaluate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeValue()

void writeValue ( Ostream os) const

Write the single value, or the first value from field.

Definition at line 628 of file exprResult.C.

References DebugInFunction, Foam::endl(), IOstreamOption::formatNames, Foam::name(), Foam::nl, os(), and WarningInFunction.

Referenced by Foam::stringOps::evaluate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=() [1/2]

void operator= ( const exprResult rhs)
virtual

Copy assignment.

Reimplemented in exprResultDelayed, exprResultStored, and exprResultStack.

Definition at line 467 of file exprResult.C.

References clear(), DebugInFunction, Foam::exit(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.

Referenced by exprResult::exprResult(), exprResultStored::operator=(), exprResultDelayed::operator=(), exprResultStack::push(), and exprResultDelayed::setReadValue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=() [2/2]

void operator= ( exprResult &&  rhs)
virtual

Move assignment.

Reimplemented in exprResultDelayed.

Definition at line 504 of file exprResult.C.

References clear().

Here is the call graph for this function:

◆ operator*=()

Foam::expressions::exprResult & operator*= ( const scalar &  b)

Scalar multiplication.

Definition at line 662 of file exprResult.C.

References Foam::constant::physicoChemical::b, Foam::exit(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.

Here is the call graph for this function:

◆ operator+=()

Foam::expressions::exprResult & operator+= ( const exprResult b)

Addition of results.

Definition at line 697 of file exprResult.C.

References Foam::constant::physicoChemical::b, Foam::exit(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.

Here is the call graph for this function:

◆ getField() [2/2]

const Foam::Field<Type>* getField ( ) const
inline

Definition at line 234 of file exprResultI.H.

◆ getResult() [2/2]

Foam::tmp<Foam::Field<Type> > getResult ( bool  cacheCopy)
inline

Definition at line 614 of file exprResultI.H.

References clear(), DebugInFunction, Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::New(), and Foam::nl.

Here is the call graph for this function:

◆ cref() [2/2]

const Foam::Field<Type>& cref ( ) const
inline

Definition at line 656 of file exprResultI.H.

References DebugInFunction, Foam::exit(), Foam::FatalError, FatalErrorInFunction, and Foam::nl.

Here is the call graph for this function:

◆ ref() [2/2]

Foam::Field<Type>& ref ( )
inline

Definition at line 683 of file exprResultI.H.

◆ constCast() [2/2]

Foam::Field<Type>& constCast ( ) const
inline

Definition at line 691 of file exprResultI.H.

Friends And Related Function Documentation

◆ exprResultGlobals

friend class exprResultGlobals
friend

Friendship with globals.

Definition at line 337 of file exprResult.H.

Member Data Documentation

◆ null

const Foam::expressions::exprResult null
static

An empty result.

Definition at line 332 of file exprResult.H.

Referenced by exprResultGlobals::get().


The documentation for this class was generated from the following files: