Compiles and executes code string expressions, returning the result to the dictionary entry. More...
Public Member Functions | |
ClassName ("calc") | |
Runtime type information. More... | |
calcEntry (const calcEntry &)=delete | |
Disallow default bitwise copy construction. More... | |
void | operator= (const calcEntry &)=delete |
Disallow default bitwise assignment. More... | |
Public Member Functions inherited from functionEntry | |
functionEntry (const word &, const dictionary &, Istream &) | |
Construct from keyword, parent dictionary and Istream. More... | |
functionEntry (const functionEntry &)=default | |
Copy construct. More... | |
autoPtr< entry > | clone (const dictionary &) const |
Clone. More... | |
declareMemberFunctionSelectionTable (bool, functionEntry, execute, dictionaryIstream,(dictionary &parentDict, Istream &is),(parentDict, is)) | |
declareMemberFunctionSelectionTable (bool, functionEntry, execute, primitiveEntryIstream,(const dictionary &parentDict, primitiveEntry &entry, Istream &is),(parentDict, entry, is)) | |
virtual void | write (Ostream &) const |
Write. More... | |
void | operator= (const functionEntry &)=delete |
Disallow default bitwise assignment. More... | |
Public Member Functions inherited from primitiveEntry | |
primitiveEntry (const keyType &, Istream &) | |
Construct from keyword and a Istream. More... | |
primitiveEntry (const keyType &, const dictionary &parentDict, Istream &) | |
Construct from keyword, parent dictionary and Istream. More... | |
primitiveEntry (const keyType &, const ITstream &) | |
Construct from keyword and a ITstream. More... | |
primitiveEntry (const keyType &, const token &) | |
Construct from keyword and a single token. More... | |
primitiveEntry (const keyType &, const UList< token > &) | |
Construct from keyword and a list of tokens. More... | |
primitiveEntry (const keyType &, List< token > &&) | |
Move construct from keyword and by transferring a list of tokens. More... | |
template<class T > | |
primitiveEntry (const keyType &, const T &) | |
Construct from keyword and a T. More... | |
autoPtr< entry > | clone (const dictionary &) const |
Construct on freestore as copy with reference to the. More... | |
const fileName & | name () const |
Return the dictionary name. More... | |
fileName & | name () |
Return the dictionary name. More... | |
label | startLineNumber () const |
Return line number of first token in dictionary. More... | |
label | endLineNumber () const |
Return line number of last token in dictionary. More... | |
bool | isStream () const |
Return true because this entry is a stream. More... | |
ITstream & | stream () const |
Return token stream if this entry is a primitive entry. More... | |
const dictionary & | dict () const |
This entry is not a dictionary,. More... | |
dictionary & | dict () |
This entry is not a dictionary,. More... | |
virtual bool | read (const dictionary &, Istream &) |
Read tokens from the given stream. More... | |
void | write (Ostream &) const |
Write. More... | |
void | write (Ostream &, const bool contentsOnly) const |
Write, optionally with contents only (no keyword, etc) More... | |
InfoProxy< primitiveEntry > | info () const |
Return info proxy. More... | |
virtual Istream & | read (token &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (char &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (word &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (string &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (int32_t &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (int64_t &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (uint32_t &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (uint64_t &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (floatScalar &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (doubleScalar &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (longDoubleScalar &) |
Inherit read from ITstream. More... | |
virtual Istream & | read (char *, std::streamsize) |
Inherit read from ITstream. More... | |
Public Member Functions inherited from entry | |
entry (const keyType &) | |
Construct from keyword. More... | |
entry (const entry &) | |
Copy constructor. More... | |
virtual autoPtr< entry > | clone () const |
Construct on freestore as copy. More... | |
virtual | ~entry () |
Destructor. More... | |
const keyType & | keyword () const |
Return keyword. More... | |
keyType & | keyword () |
Return non-const access to keyword. More... | |
virtual bool | isDict () const |
Return true if this entry is a dictionary. More... | |
void | operator= (const entry &) |
bool | operator== (const entry &) const |
bool | operator!= (const entry &) const |
Public Member Functions inherited from ITstream | |
ITstream (const string &name, const UList< token > &tokens, streamFormat format=ASCII, versionNumber version=currentVersion) | |
Construct from components. More... | |
ITstream (const string &name, List< token > &&tokens, streamFormat format=ASCII, versionNumber version=currentVersion) | |
Move construct from components, transferring the tokens. More... | |
ITstream (const ITstream &its) | |
Copy constructor. More... | |
virtual | ~ITstream () |
Destructor. More... | |
const fileName & | name () const |
Return the name of the stream. More... | |
fileName & | name () |
Return non-const access to the name of the stream. More... | |
label | tokenIndex () const |
Return the current token index. More... | |
label & | tokenIndex () |
Return non-const access to the current token index. More... | |
label | nRemainingTokens () const |
Return the number of remaining tokens. More... | |
ios_base::fmtflags | flags () const |
Return flags of output stream. More... | |
virtual Istream & | read (token &) |
Return next token from stream. More... | |
virtual Istream & | read (char &) |
Read a character. More... | |
virtual Istream & | read (word &) |
Read a word. More... | |
virtual Istream & | read (string &) |
virtual Istream & | read (int32_t &) |
Read an int32_t. More... | |
virtual Istream & | read (int64_t &) |
Read an int64_t. More... | |
virtual Istream & | read (uint32_t &) |
Read a uint32_t. More... | |
virtual Istream & | read (uint64_t &) |
Read a uint64_t. More... | |
virtual Istream & | read (floatScalar &) |
Read a floatScalar. More... | |
virtual Istream & | read (doubleScalar &) |
Read a doubleScalar. More... | |
virtual Istream & | read (longDoubleScalar &) |
Read a longDoubleScalar. More... | |
virtual Istream & | read (char *, std::streamsize) |
Read binary block. More... | |
virtual Istream & | rewind () |
Rewind and return the stream so that it may be read again. More... | |
ios_base::fmtflags | flags (const ios_base::fmtflags) |
Set flags of stream. More... | |
void | print (Ostream &) const |
Print description of IOstream to Ostream. More... | |
void | operator= (const ITstream &its) |
Assignment operator. More... | |
Public Member Functions inherited from Istream | |
Istream (streamFormat format=ASCII, versionNumber version=currentVersion, compressionType compression=UNCOMPRESSED) | |
Set stream status. More... | |
virtual | ~Istream () |
Destructor. More... | |
void | putBack (const token &) |
Put back token. More... | |
bool | getBack (token &) |
Get the put back token if there is one and return true. More... | |
bool | peekBack (token &) |
Peek at the put back token without removing it. More... | |
Istream & | readBegin (const char *funcName) |
Istream & | readEnd (const char *funcName) |
Istream & | readEndBegin (const char *funcName) |
char | readBeginList (const char *funcName) |
char | readEndList (const char *funcName) |
Istream & | operator() () const |
Return a non-const reference to const Istream. More... | |
Public Member Functions inherited from IOstream | |
IOstream (streamFormat format, versionNumber version, compressionType compression=UNCOMPRESSED) | |
Construct setting format and version. More... | |
virtual | ~IOstream () |
Destructor. More... | |
virtual bool | check (const char *operation) const |
Check IOstream status for given operation. More... | |
void | fatalCheck (const char *operation) const |
Check IOstream status for given operation. More... | |
bool | opened () const |
Return true if stream has been opened. More... | |
bool | closed () const |
Return true if stream is closed. More... | |
bool | good () const |
Return true if next operation might succeed. More... | |
bool | eof () const |
Return true if end of input seen. More... | |
bool | fail () const |
Return true if next operation will fail. More... | |
bool | bad () const |
Return true if stream is corrupted. More... | |
operator void * () const | |
Return non-zero if the stream has not failed. More... | |
bool | operator! () const |
Return true if the stream has failed. More... | |
streamFormat | format () const |
Return current stream format. More... | |
streamFormat | format (const streamFormat fmt) |
Set the stream format. More... | |
streamFormat | format (const word &fmt) |
Set the stream format from word. More... | |
versionNumber | version () const |
Return the stream version. More... | |
versionNumber | version (const versionNumber ver) |
Set the stream version. More... | |
compressionType | compression () const |
Return the stream compression. More... | |
compressionType | compression (const compressionType cmp) |
Set the stream compression. More... | |
compressionType | compression (const word &cmp) |
Set the stream compression from word. More... | |
label | lineNumber () const |
Return current stream line number. More... | |
label & | lineNumber () |
Return current stream line number. More... | |
label | lineNumber (const label ln) |
Set the stream line number. More... | |
void | setEof () |
Set stream to have reached eof. More... | |
void | setFail () |
Set stream to have failed. More... | |
void | setBad () |
Set stream to be bad. More... | |
ios_base::fmtflags | setf (const ios_base::fmtflags f) |
Set flags of stream. More... | |
ios_base::fmtflags | setf (const ios_base::fmtflags f, const ios_base::fmtflags mask) |
Set flags of given field of stream. More... | |
void | unsetf (const ios_base::fmtflags uf) |
Unset flags of stream. More... | |
void | print (Ostream &, const int streamState) const |
Check given stream state bits. More... | |
InfoProxy< IOstream > | info () const |
Return info proxy. More... | |
Public Member Functions inherited from List< T > | |
List () | |
Null constructor. More... | |
List (const label) | |
Construct with given size. More... | |
List (const label, const T &) | |
Construct with given size and value for all elements. More... | |
List (const label, const zero) | |
Construct with given size initialising all elements to zero. More... | |
List (const List< T > &) | |
Copy constructor. More... | |
template<class T2 > | |
List (const UList< T2 > &) | |
Copy constructor from list containing another type. More... | |
List (List< T > &&) | |
Move constructor. More... | |
List (List< T > &, bool reuse) | |
Construct as copy or reuse as specified. More... | |
List (const UList< T > &, const labelUList &mapAddressing) | |
Construct as subset. More... | |
template<class InputIterator > | |
List (InputIterator first, InputIterator last) | |
Construct given start and end iterators. More... | |
template<unsigned Size> | |
List (const FixedList< T, Size > &) | |
Construct as copy of FixedList<T, Size> More... | |
List (const PtrList< T > &) | |
Construct as copy of PtrList<T> More... | |
List (const SLList< T > &) | |
Construct as copy of SLList<T> More... | |
List (const UIndirectList< T > &) | |
Construct as copy of UIndirectList<T> More... | |
List (const BiIndirectList< T > &) | |
Construct as copy of BiIndirectList<T> More... | |
List (std::initializer_list< T >) | |
Construct from an initialiser list. More... | |
List (Istream &) | |
Construct from Istream. More... | |
autoPtr< List< T > > | clone () const |
Clone. More... | |
~List () | |
Destructor. More... | |
label | size () const |
Return the number of elements in the UList. More... | |
void | resize (const label) |
Alias for setSize(const label) More... | |
void | resize (const label, const T &) |
Alias for setSize(const label, const T&) More... | |
void | setSize (const label) |
Reset size of List. More... | |
void | setSize (const label, const T &) |
Reset size of List and value for new elements. More... | |
void | clear () |
Clear the list, i.e. set size to zero. More... | |
void | append (const T &) |
Append an element at the end of the list. More... | |
void | append (const UList< T > &) |
Append a List at the end of this list. More... | |
void | append (const UIndirectList< T > &) |
Append a UIndirectList at the end of this list. More... | |
void | transfer (List< T > &) |
Transfer the contents of the argument List into this list. More... | |
template<unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv> | |
void | transfer (DynamicList< T, SizeInc, SizeMult, SizeDiv > &) |
Transfer the contents of the argument List into this list. More... | |
void | transfer (SortableList< T > &) |
Transfer the contents of the argument List into this list. More... | |
T & | newElmt (const label) |
Return subscript-checked element of UList. More... | |
void | shallowCopy (const UList< T > &)=delete |
Disallow implicit shallowCopy. More... | |
void | operator= (const UList< T > &) |
Assignment to UList operator. Takes linear time. More... | |
void | operator= (const List< T > &) |
Assignment operator. Takes linear time. More... | |
void | operator= (List< T > &&) |
Move assignment operator. More... | |
void | operator= (const SLList< T > &) |
Assignment to SLList operator. Takes linear time. More... | |
void | operator= (const UIndirectList< T > &) |
Assignment to UIndirectList operator. Takes linear time. More... | |
void | operator= (const BiIndirectList< T > &) |
Assignment to BiIndirectList operator. Takes linear time. More... | |
void | operator= (std::initializer_list< T >) |
Assignment to an initialiser list. More... | |
void | operator= (const T &) |
Assignment of all entries to the given value. More... | |
void | operator= (const zero) |
Assignment of all entries to zero. More... | |
Public Member Functions inherited from UList< T > | |
UList () | |
Null constructor. More... | |
UList (T *__restrict__ v, label size) | |
Construct from components. More... | |
UList (const UList< T > &)=default | |
Copy construct. More... | |
label | fcIndex (const label i) const |
Return the forward circular index, i.e. the next index. More... | |
label | rcIndex (const label i) const |
Return the reverse circular index, i.e. the previous index. More... | |
std::streamsize | byteSize () const |
Return the binary size in number of characters of the UList. More... | |
const T * | cdata () const |
Return a const pointer to the first data element,. More... | |
T * | data () |
Return a pointer to the first data element,. More... | |
T & | first () |
Return the first element of the list. More... | |
const T & | first () const |
Return first element of the list. More... | |
T & | last () |
Return the last element of the list. More... | |
const T & | last () const |
Return the last element of the list. More... | |
void | checkStart (const label start) const |
Check start is within valid range (0 ... size-1) More... | |
void | checkSize (const label size) const |
Check size is within valid range (0 ... size) More... | |
void | checkIndex (const label i) const |
Check index i is within valid range (0 ... size-1) More... | |
void | shallowCopy (const UList< T > &) |
Copy the pointer held by the given UList. More... | |
void | deepCopy (const UList< T > &) |
Copy elements of the given UList. More... | |
T & | operator[] (const label) |
Return element of UList. More... | |
const T & | operator[] (const label) const |
Return element of constant UList. More... | |
operator const Foam::List< T > & () const | |
Allow cast to a const List<T>&. More... | |
void | operator= (const T &) |
Assignment of all entries to the given value. More... | |
void | operator= (const zero) |
Assignment of all entries to zero. More... | |
iterator | begin () |
Return an iterator to begin traversing the UList. More... | |
iterator | end () |
Return an iterator to end traversing the UList. More... | |
const_iterator | cbegin () const |
Return const_iterator to begin traversing the constant UList. More... | |
const_iterator | cend () const |
Return const_iterator to end traversing the constant UList. More... | |
const_iterator | begin () const |
Return const_iterator to begin traversing the constant UList. More... | |
const_iterator | end () const |
Return const_iterator to end traversing the constant UList. More... | |
reverse_iterator | rbegin () |
Return reverse_iterator to begin reverse traversing the UList. More... | |
reverse_iterator | rend () |
Return reverse_iterator to end reverse traversing the UList. More... | |
const_reverse_iterator | crbegin () const |
Return const_reverse_iterator to begin reverse traversing the UList. More... | |
const_reverse_iterator | crend () const |
Return const_reverse_iterator to end reverse traversing the UList. More... | |
const_reverse_iterator | rbegin () const |
Return const_reverse_iterator to begin reverse traversing the UList. More... | |
const_reverse_iterator | rend () const |
Return const_reverse_iterator to end reverse traversing the UList. More... | |
label | size () const |
Return the number of elements in the UList. More... | |
label | max_size () const |
Return size of the largest possible UList. More... | |
bool | empty () const |
Return true if the UList is empty (ie, size() is zero) More... | |
void | swap (UList< T > &) |
Swap two ULists of the same type in constant time. More... | |
bool | operator== (const UList< T > &) const |
Equality operation on ULists of the same type. More... | |
bool | operator!= (const UList< T > &) const |
The opposite of the equality operation. Takes linear time. More... | |
bool | operator< (const UList< T > &) const |
Compare two ULists lexicographically. Takes linear time. More... | |
bool | operator> (const UList< T > &) const |
Compare two ULists lexicographically. Takes linear time. More... | |
bool | operator<= (const UList< T > &) const |
Return true if !(a > b). Takes linear time. More... | |
bool | operator>= (const UList< T > &) const |
Return true if !(a < b). Takes linear time. More... | |
const bool & | operator[] (const label i) const |
Static Public Member Functions | |
static bool | execute (dictionary &dict, Istream &) |
Execute the functionEntry in a sub-dict context. More... | |
static bool | execute (const dictionary &dict, primitiveEntry &, Istream &) |
Execute the functionEntry in a primitiveEntry context. More... | |
Static Public Member Functions inherited from functionEntry | |
static bool | execute (const word &functionName, dictionary &parentDict, Istream &) |
Execute the functionEntry in a sub-dict context. More... | |
static bool | execute (const word &functionName, const dictionary &parentDict, primitiveEntry &, Istream &) |
Execute the functionEntry in a primitiveEntry context. More... | |
Static Public Member Functions inherited from entry | |
static bool | New (dictionary &parentDict, Istream &) |
Construct from Istream and insert into dictionary. More... | |
static autoPtr< entry > | New (Istream &is) |
Construct on freestore from Istream and return. More... | |
Static Public Member Functions inherited from IOstream | |
static streamFormat | formatEnum (const word &) |
Return stream format of given format name. More... | |
static compressionType | compressionEnum (const word &) |
Return compression of given compression name. More... | |
static unsigned int | defaultPrecision () |
Return the default precision. More... | |
static unsigned int | defaultPrecision (unsigned int p) |
Reset the default precision (and return old precision) More... | |
Static Public Member Functions inherited from List< T > | |
static const List< T > & | null () |
Return a null List. More... | |
Static Public Member Functions inherited from UList< T > | |
static const UList< T > & | null () |
Return a null UList. More... | |
Additional Inherited Members | |
Public Types inherited from IOstream | |
enum | streamAccess { OPENED , CLOSED } |
Enumeration for whether the stream open or closed. More... | |
enum | streamFormat { ASCII , BINARY } |
Enumeration for the format of data in the stream. More... | |
enum | compressionType { UNCOMPRESSED , COMPRESSED } |
Enumeration for the format of data in the stream. More... | |
Public Types inherited from List< T > | |
typedef SubList< T > | subList |
Declare type of subList. More... | |
Public Types inherited from UList< T > | |
typedef T | value_type |
Type of values the UList contains. More... | |
typedef T & | reference |
Type that can be used for storing into. More... | |
typedef const T & | const_reference |
Type that can be used for storing into. More... | |
typedef label | difference_type |
The type that can represent the difference between any two. More... | |
typedef label | size_type |
The type that can represent the size of a UList. More... | |
typedef T * | iterator |
Random access iterator for traversing UList. More... | |
typedef const T * | const_iterator |
Random access iterator for traversing UList. More... | |
typedef std::reverse_iterator< iterator > | reverse_iterator |
Reverse iterator for reverse traversal of UList. More... | |
typedef std::reverse_iterator< const_iterator > | const_reverse_iterator |
Reverse iterator for reverse traversal of constant UList. More... | |
Static Public Attributes inherited from entry | |
static int | disableFunctionEntries |
Static Public Attributes inherited from IOstream | |
static const versionNumber | currentVersion |
Current version number. More... | |
static unsigned int | precision_ |
Default precision. More... | |
Protected Member Functions inherited from IOstream | |
void | setOpened () |
Set stream opened. More... | |
void | setClosed () |
Set stream closed. More... | |
void | setState (ios_base::iostate state) |
Set stream state. More... | |
void | setGood () |
Set stream to be good. More... | |
Protected Member Functions inherited from List< T > | |
void | size (const label) |
Override size to be inconsistent with allocated storage. More... | |
Static Protected Member Functions inherited from functionEntry | |
static string | readFuncNameArgs (Istream &is) |
Read the function name and optional argument list. More... | |
static bool | insert (dictionary &parentDict, const string &) |
Insert the given string in a sub-dict context. More... | |
static bool | insert (const dictionary &parentDict, primitiveEntry &thisEntry, const string &) |
Insert the given string in a primitiveEntry context. More... | |
Protected Attributes inherited from IOstream | |
label | lineNumber_ |
Compiles and executes code string expressions, returning the result to the dictionary entry.
#calc
reads the following code string to generate the library source code stored in the local dynamicCode
directory with a subdirectory name corresponding to the SHA1 of the code. The code is then compiled into a dynamically loaded library libcodeStream_<SHA1>.so stored in the dynamicCode/platforms/$WM_OPTIONS/lib
directory using 'wmake libso'. The resulting library is loaded in executed with arguments
where the dictionary is the current dictionary. The code writes results to the current entry via the Ostream
os
.
The verbatim string format #{
... #}
can optionally be used to allow multi-line input without the need to escape the newlines but in this case the result must be written to the Ostream
os
explicitly.
Dictionary entries constructed #calc
can conveniently access and use typed variables. This means calculations involving vectors and tensors and list etc. are possible. To access a variable and construct it as a given type within a #calc
entry, put the type immediately after the $ symbol inside angled brackets <>. So, $<vector>var or $<vector>{var} substitutes a variable named var as a vector.
The variable values are no longer embedded into the code but looked-up at run-time making the code corresponding to each #calc
independent of the values in the dictionary and of each other. Hence the #calc
code does not need to be recompiled when the values in the dictionary are changed, only if the code is changed.
a 1.1; b 3.2; c #calc "$a*$b";
Special care is required for calc entries that include a division since "/" is also used as the scoping operator to identify keywords in sub-dictionaries. For example, "$a/b" expects a keyword "b" within a sub-dictionary named "a". A division can be correctly executed by using a space between a variables and "/", e.g.
c #calc "$a / $b";
or bracketing the variable, e.g.
c #calc "($a)/$b";
Example using the string type
s "field"; fieldName #calc "$<string>s + \"Name\" ";
Additional include files for the #calc
code compilation can be specified using the #calcInclude
entry, e.g. if functions from transform.H are used
angleOfAttack 5; // degs angle #calc "-degToRad($angleOfAttack)"; #calcInclude "transform.H" liftDir #calc "transform(Ry($angle), vector(0, 0, 1))"; dragDir #calc "transform(Ry($angle), vector(1, 0, 0))";
Calculate the magnitude of the velocity and turbulent kinetic energy where the velocity is looked-up from testCalc2
magU #calc "mag($<vector>testCalc2!U)"; k #calc "1.5*magSqr(0.05*$<vector>{${FOAM_CASE}/testCalc2!U})";
If the code string is delimited by #{ ... #}
multiple lines and multiple code statements can be used to generate the entry using 'os << ...;'. This is equivalent to #codeStream but with a more compact syntax.
#calcInclude "transform.H" maxAngle 30; nAngles 7; Us #calc #{ const vector U($<vector>testCalc2!U); const int nAngles = $nAngles; const scalar angleStep = ($<scalar>maxAngle)/(nAngles - 1); List<vector> Us(nAngles); for(int i=0; i<nAngles; i++) { const scalar angle = degToRad(i*angleStep); Us[i] = transform(Ry(angle), U); } os << Us; #};
Example to generate a single block blockMeshDict for use with snappyHexMesh with no redundant information
min (-2.5 -1.2 -3.0); // Minimum coordinates of the block max (2.5 1.2 3.0); // Maximum coordinates of the block nCellsByL 33.3333; // Number of cells per unit length // Calculate the number of cells in each block direction nCells #calc "Vector<label>($nCellsByL*($<vector>max - $<vector>min) + vector::one/2)"; // Generate the vertices using a boundBox #calcInclude "boundBox.H" vertices #calc "boundBox($<vector>min, $<vector>max).points()"; blocks ( hex #calc "identityMap(8)" $nCells simpleGrading (1 1 1) ); defaultPatch { type patch; } boundary ();
Definition at line 188 of file calcEntry.H.
ClassName | ( | "calc" | ) |
Runtime type information.
|
static |
Execute the functionEntry in a sub-dict context.
Definition at line 126 of file calcEntry.C.
References dict, and Foam::vtkWriteOps::insert().
|
static |
Execute the functionEntry in a primitiveEntry context.
Definition at line 136 of file calcEntry.C.
References dict, and Foam::vtkWriteOps::insert().