Loading...
Searching...
No Matches
CodedFunction1< Type > Class Template Reference

Function1 with the code supplied by an on-the-fly compiled C++ expression. More...

#include <CodedFunction1.H>

Inheritance diagram for CodedFunction1< Type >:
Collaboration diagram for CodedFunction1< Type >:

Public Member Functions

 TypeName ("coded")
 Runtime type information.
 CodedFunction1 (const word &entryName, const dictionary &dict, const objectRegistry *obrPtr=nullptr)
 Construct from entry name, dictionary and optional registry.
 CodedFunction1 (const CodedFunction1< Type > &rhs)
 Copy construct.
virtual tmp< Function1< Type > > clone () const
 Return a clone.
virtual ~CodedFunction1 ()=default
 Destructor.
virtual Type value (const scalar x) const
 Return value at current time.
virtual void writeData (Ostream &os) const
 Write in dictionary format.
const::Foam::word typeName (Function1Types::CodedFunction1< scalar >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1Types::CodedFunction1< scalar >::typeName_(), 0))
const::Foam::word typeName (Function1Types::CodedFunction1< vector >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1Types::CodedFunction1< vector >::typeName_(), 0))
const::Foam::word typeName (Function1Types::CodedFunction1< sphericalTensor >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1Types::CodedFunction1< sphericalTensor >::typeName_(), 0))
const::Foam::word typeName (Function1Types::CodedFunction1< symmTensor >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1Types::CodedFunction1< symmTensor >::typeName_(), 0))
const::Foam::word typeName (Function1Types::CodedFunction1< tensor >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1Types::CodedFunction1< tensor >::typeName_(), 0))
Public Member Functions inherited from Function1< Type >
virtual const wordtype () const
 Function1 (const word &entryName, const objectRegistry *obrPtr=nullptr)
 Construct from entry name.
 Function1 (const word &entryName, const dictionary &dict, const objectRegistry *obrPtr=nullptr)
 Construct from entry name, (unused) dictionary and optional registry.
 Function1 (const Function1< Type > &rhs)
 Copy construct.
virtual ~Function1 ()=default
 Destructor.
virtual bool constant () const
 Is value constant (i.e. independent of x).
virtual bool good () const
 Can function be evaluated?
virtual tmp< Field< Type > > value (const scalarField &x) const
 Return value as a function of (scalar) independent variable.
virtual Type integrate (const scalar x1, const scalar x2) const
 Integrate between two (scalar) values.
virtual tmp< Field< Type > > integrate (const scalarField &x1, const scalarField &x2) const
 Integrate between two (scalar) values.
virtual void writeEntries (Ostream &os) const
 Write coefficient entries in dictionary format.
const::Foam::word typeName (Function1< label >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1< label >::typeName_(), 0))
Function1< label >::dictionaryConstructorTableTypedictionaryConstructorTablePtr_ (nullptr)
std::unique_ptr< Function1< label >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTablePtr_ (nullptr)
Function1< label >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTable ()
void dictionaryConstructorTablePtr_construct (bool load)
Function1< label >::dictionaryConstructorPtr dictionaryConstructorTable (const::Foam::word &k)
const::Foam::word typeName (Function1< scalar >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1< scalar >::typeName_(), 0))
Function1< scalar >::dictionaryConstructorTableTypedictionaryConstructorTablePtr_ (nullptr)
std::unique_ptr< Function1< scalar >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTablePtr_ (nullptr)
Function1< scalar >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTable ()
void dictionaryConstructorTablePtr_construct (bool load)
Function1< scalar >::dictionaryConstructorPtr dictionaryConstructorTable (const::Foam::word &k)
const::Foam::word typeName (Function1< vector >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1< vector >::typeName_(), 0))
Function1< vector >::dictionaryConstructorTableTypedictionaryConstructorTablePtr_ (nullptr)
std::unique_ptr< Function1< vector >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTablePtr_ (nullptr)
Function1< vector >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTable ()
void dictionaryConstructorTablePtr_construct (bool load)
Function1< vector >::dictionaryConstructorPtr dictionaryConstructorTable (const::Foam::word &k)
const::Foam::word typeName (Function1< sphericalTensor >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1< sphericalTensor >::typeName_(), 0))
Function1< sphericalTensor >::dictionaryConstructorTableTypedictionaryConstructorTablePtr_ (nullptr)
std::unique_ptr< Function1< sphericalTensor >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTablePtr_ (nullptr)
Function1< sphericalTensor >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTable ()
void dictionaryConstructorTablePtr_construct (bool load)
Function1< sphericalTensor >::dictionaryConstructorPtr dictionaryConstructorTable (const::Foam::word &k)
const::Foam::word typeName (Function1< symmTensor >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1< symmTensor >::typeName_(), 0))
Function1< symmTensor >::dictionaryConstructorTableTypedictionaryConstructorTablePtr_ (nullptr)
std::unique_ptr< Function1< symmTensor >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTablePtr_ (nullptr)
Function1< symmTensor >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTable ()
void dictionaryConstructorTablePtr_construct (bool load)
Function1< symmTensor >::dictionaryConstructorPtr dictionaryConstructorTable (const::Foam::word &k)
const::Foam::word typeName (Function1< tensor >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1< tensor >::typeName_(), 0))
Function1< tensor >::dictionaryConstructorTableTypedictionaryConstructorTablePtr_ (nullptr)
std::unique_ptr< Function1< tensor >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTablePtr_ (nullptr)
Function1< tensor >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTable ()
void dictionaryConstructorTablePtr_construct (bool load)
Function1< tensor >::dictionaryConstructorPtr dictionaryConstructorTable (const::Foam::word &k)
const::Foam::word typeName (Function1< scalarField >::typeName_())
int debug (::Foam::debug::debugSwitch(Function1< scalarField >::typeName_(), 0))
Function1< scalarField >::dictionaryConstructorTableTypedictionaryConstructorTablePtr_ (nullptr)
std::unique_ptr< Function1< scalarField >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTablePtr_ (nullptr)
Function1< scalarField >::dictionaryConstructorCompatTableTypedictionaryConstructorCompatTable ()
void dictionaryConstructorTablePtr_construct (bool load)
Function1< scalarField >::dictionaryConstructorPtr dictionaryConstructorTable (const::Foam::word &k)
Public Member Functions inherited from function1Base
 function1Base (const word &entryName, const objectRegistry *obrPtr=nullptr)
 Construct from entry name and optional registry.
 function1Base (const word &entryName, const dictionary &dict, const objectRegistry *obrPtr=nullptr)
 Construct from entry name, dictionary (unused) and optional registry.
 function1Base (const function1Base &rhs)
 Copy construct.
virtual ~function1Base ()
 Destructor.
const wordname () const noexcept
 The name of the entry.
const objectRegistrywhichDb () const noexcept
 Return the associated registry or nullptr.
void resetDb (const objectRegistry *obrPtr=nullptr) noexcept
 Reset the associated objectRegistry.
void resetDb (const objectRegistry &db) noexcept
 Reset the associated objectRegistry.
const objectRegistryobr () const
 Return the object registry.
bool isTime () const noexcept
 Return true if this function was created with the time database.
const Timetime () const
 Return the time database.
template<class MeshType>
const MeshType & mesh (const word &regionName=word::null) const
 Return the mesh database if this Function1 was created using a mesh.
virtual void userTimeToTime (const Time &t)
 Convert time.
Public Member Functions inherited from refCount
constexpr refCount () noexcept
 Default construct, initializing count to 0.
int use_count () const noexcept
 Return the current reference count.
bool unique () const noexcept
 Return true if the reference count is zero.
void operator++ () noexcept
 Increment the reference count.
void operator++ (int) noexcept
 Increment the reference count.
void operator-- () noexcept
 Decrement the reference count.
void operator-- (int) noexcept
 Decrement the reference count.

Static Public Attributes

static constexpr const char *const codeTemplateC = "codedFunction1Template.C"
 Name of the C code template to be used.
static constexpr const char *const codeTemplateH = "codedFunction1Template.H"
 Name of the H code template to be used.
Static Public Attributes inherited from Function1< Type >
static const ::Foam::word typeName
static int debug
static dictionaryConstructorTableTypedictionaryConstructorTablePtr_
static std::unique_ptr< dictionaryConstructorCompatTableTypedictionaryConstructorCompatTablePtr_

Protected Member Functions

virtual dlLibraryTablelibs () const
 Mutable access to the loaded dynamic libraries.
virtual string description () const
 Description (type + name) for the output.
virtual void clearRedirect () const
 Clear redirected object(s).
virtual const dictionarycodeContext () const
 Additional 'codeContext' dictionary to pass through.
virtual const dictionarycodeDict (const dictionary &dict) const
virtual const dictionarycodeDict () const
virtual void prepare (dynamicCode &, const dynamicCodeContext &) const
 Adapt the context for the current object.
void operator= (const CodedFunction1< Type > &)=delete
 No copy assignment.
Protected Member Functions inherited from Function1< Type >
void operator= (const Function1< Type > &)=delete
 No copy assignment.
Protected Member Functions inherited from function1Base
void operator= (const function1Base &)=delete
 No copy assignment.
Protected Member Functions inherited from codedBase
dynamicCodeContextcodeContext ()
 Access to the dynamic code context.
void setCodeContext (const dictionary &dict)
 Set code context from a dictionary.
void append (const std::string &str)
 Add content to SHA1 hashing.
void updateLibrary (const word &name, const dynamicCodeContext &context) const
 Update library as required, using the given context.
void updateLibrary (const word &name, const dictionary &dict) const
 Update library as required, using the given code dictionary to use for the context.
void updateLibrary (const word &name) const
 Update library as required, using the predefined context or use the codeDict() to generate one.
 ClassName ("codedBase")
 Runtime type information.
 codedBase (const codedBase &)=delete
 No copy construct.
void operator= (const codedBase &)=delete
 No copy assignment.
 codedBase ()=default
 Default construct.
virtual ~codedBase ()=default
 Destructor.

Additional Inherited Members

Public Types inherited from Function1< Type >
typedef Type returnType
 The return type.
typedef autoPtr< Function1 >(* dictionaryConstructorPtr) (const word &entryName, const dictionary &dict, const objectRegistry *obrPtr)
 Declare runtime constructor selection table.
typedef ::Foam::HashTable< dictionaryConstructorPtr, ::Foam::word, ::Foam::Hash<::Foam::word > > dictionaryConstructorTableType
typedef ::Foam::HashTable< std::pair<::Foam::word, int >, ::Foam::word, ::Foam::Hash<::Foam::word > > dictionaryConstructorCompatTableType
Static Public Member Functions inherited from Function1< Type >
static const char * typeName_ ()
 Runtime type information.
static dictionaryConstructorCompatTableTypedictionaryConstructorCompatTable ()
static void dictionaryConstructorTablePtr_construct (bool load)
static dictionaryConstructorPtr dictionaryConstructorTable (const ::Foam::word &k)
template<class Derived>
static tmp< Function1< Type > > Clone (const Derived &fun)
 Clone a Function1.
static autoPtr< Function1< Type > > New (const word &entryName, const dictionary &dict, const word &redirectType, const objectRegistry *obrPtr=nullptr, const bool mandatory=true)
 Selector, with fallback redirection.
static autoPtr< Function1< Type > > NewCompat (const word &entryName, std::initializer_list< std::pair< const char *, int > > compat, const dictionary &dict, const word &redirectType=word::null, const objectRegistry *obrPtr=nullptr, const bool mandatory=true)
 Compatibility selector, with fallback redirection.
static autoPtr< Function1< Type > > New (const word &entryName, const dictionary &dict, const objectRegistry *obrPtr=nullptr, const bool mandatory=true)
 Selector, without fallback redirection.
static autoPtr< Function1< Type > > NewIfPresent (const word &entryName, const dictionary &dict, const word &redirectType, const objectRegistry *obrPtr=nullptr)
 An optional selector, with fallback redirection.
static autoPtr< Function1< Type > > NewIfPresent (const word &entryName, const dictionary &dict, const objectRegistry *obrPtr=nullptr)
 An optional selector, without fallback redirection.
static refPtr< Function1< Type > > New (HashPtrTable< Function1< Type > > &cache, const word &entryName, const dictionary &dict, enum keyType::option matchOpt=keyType::LITERAL, const objectRegistry *obrPtr=nullptr, const bool mandatory=true)
 Selector with external storage of Function1. This also allows wildcard matches in a dictionary.
Static Protected Member Functions inherited from codedBase
static void writeCodeDict (Ostream &os, const dictionary &dict)
 Write code-dictionary contents.
static const dictionarycodeDict (const objectRegistry &obr, const word &dictName="codeDict")
 Return "codeDict" from objectRegistry or read from disk.
Protected Attributes inherited from function1Base
const word name_
 Name of entry.
const objectRegistryobrPtr_
 Pointer to an object registry.

Detailed Description

template<class Type>
class Foam::Function1Types::CodedFunction1< Type >

Function1 with the code supplied by an on-the-fly compiled C++ expression.

The code entries:

codeInclude :include files
codeOptions :compiler line: added to EXE_INC (Make/options)
codeLibs :linker line: added to LIB_LIBS (Make/options)
localCode :c++; local static functions
code :c++; return the patch values at (scalar x)
Usage
Example:
<patchName>
{
    type            uniformFixedValue;
    uniformValue
    {
        type  coded;
        name  myExpression;  // Name of generated PatchFunction1

        code
        #{
            const polyPatch& pp = this->patch();
            Pout<< "** Patch size:" << pp.size() << endl;
            return tmp<vectorField>::New(pp.size(), vector(1, 0, 0))
        #};

        //codeInclude
        //#{
        //    #include "volFields.H"
        //#};

        //codeOptions
        //#{
        //    -I$(LIB_SRC)/finiteVolume/lnInclude
        //#};
    }
}
Note
The code context dictionary is simply the dictionary used to specify the PatchFunction1 coefficients.
See also
Foam::dynamicCode Foam::codedFixedValue Foam::functionEntries::codeStream
Source files

Definition at line 120 of file CodedFunction1.H.

Constructor & Destructor Documentation

◆ CodedFunction1() [1/2]

template<class Type>
CodedFunction1 ( const word & entryName,
const dictionary & dict,
const objectRegistry * obrPtr = nullptr )

Construct from entry name, dictionary and optional registry.

Definition at line 136 of file CodedFunction1.C.

References codedBase::codedBase(), dict, Function1< Type >::Function1(), codedBase::setCodeContext(), and codedBase::updateLibrary().

Referenced by CodedFunction1(), operator=(), and TypeName().

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

◆ CodedFunction1() [2/2]

template<class Type>
CodedFunction1 ( const CodedFunction1< Type > & rhs)
explicit

Copy construct.

Definition at line 157 of file CodedFunction1.C.

References codedBase::codedBase(), CodedFunction1(), Function1< Type >::Function1(), and Foam::rhs().

Here is the call graph for this function:

◆ ~CodedFunction1()

template<class Type>
virtual ~CodedFunction1 ( )
virtualdefault

Destructor.

References os(), and x.

Here is the call graph for this function:

Member Function Documentation

◆ libs()

template<class Type>
Foam::dlLibraryTable & libs ( ) const
protectedvirtual

Mutable access to the loaded dynamic libraries.

Implements codedBase.

Definition at line 29 of file CodedFunction1.C.

References function1Base::time().

Here is the call graph for this function:

◆ description()

template<class Type>
Foam::string description ( ) const
protectedvirtual

Description (type + name) for the output.

Implements codedBase.

Definition at line 37 of file CodedFunction1.C.

◆ clearRedirect()

template<class Type>
void clearRedirect ( ) const
protectedvirtual

Clear redirected object(s).

Implements codedBase.

Definition at line 44 of file CodedFunction1.C.

◆ codeContext()

template<class Type>
const Foam::dictionary & codeContext ( ) const
protectedvirtual

Additional 'codeContext' dictionary to pass through.

Definition at line 52 of file CodedFunction1.C.

◆ codeDict() [1/2]

template<class Type>
const Foam::dictionary & codeDict ( const dictionary & dict) const
protectedvirtual

Definition at line 61 of file CodedFunction1.C.

References dict.

Referenced by codeDict().

Here is the caller graph for this function:

◆ codeDict() [2/2]

template<class Type>
const Foam::dictionary & codeDict ( ) const
protectedvirtual

Implements codedBase.

Definition at line 80 of file CodedFunction1.C.

References codeDict().

Here is the call graph for this function:

◆ prepare()

◆ operator=()

template<class Type>
void operator= ( const CodedFunction1< Type > & )
protecteddelete

No copy assignment.

References CodedFunction1().

Here is the call graph for this function:

◆ TypeName()

template<class Type>
TypeName ( "coded" )

Runtime type information.

References CodedFunction1(), dict, and Foam::rhs().

Here is the call graph for this function:

◆ clone()

template<class Type>
virtual tmp< Function1< Type > > clone ( ) const
inlinevirtual

Return a clone.

Implements Function1< Type >.

Definition at line 231 of file CodedFunction1.H.

References Function1< Type >::Clone().

Here is the call graph for this function:

◆ value()

template<class Type>
Type value ( const scalar x) const
inlinevirtual

Return value at current time.

Reimplemented from Function1< Type >.

Definition at line 215 of file CodedFunction1.C.

References codedBase::updateLibrary(), and x.

Here is the call graph for this function:

◆ writeData()

template<class Type>
void writeData ( Ostream & os) const
virtual

Write in dictionary format.

Reimplemented from Function1< Type >.

Definition at line 228 of file CodedFunction1.C.

References name, and os().

Here is the call graph for this function:

◆ typeName() [1/5]

const::Foam::word typeName ( Function1Types::CodedFunction1< scalar > ::typeName_())

◆ debug() [1/5]

◆ typeName() [2/5]

const::Foam::word typeName ( Function1Types::CodedFunction1< vector > ::typeName_())

◆ debug() [2/5]

◆ typeName() [3/5]

const::Foam::word typeName ( Function1Types::CodedFunction1< sphericalTensor > ::typeName_())

◆ debug() [3/5]

◆ typeName() [4/5]

const::Foam::word typeName ( Function1Types::CodedFunction1< symmTensor > ::typeName_())

◆ debug() [4/5]

◆ typeName() [5/5]

const::Foam::word typeName ( Function1Types::CodedFunction1< tensor > ::typeName_())

◆ debug() [5/5]

Member Data Documentation

◆ codeTemplateC

template<class Type>
const char* const codeTemplateC = "codedFunction1Template.C"
staticconstexpr

Name of the C code template to be used.

Definition at line 195 of file CodedFunction1.H.

Referenced by prepare().

◆ codeTemplateH

template<class Type>
const char* const codeTemplateH = "codedFunction1Template.H"
staticconstexpr

Name of the H code template to be used.

Definition at line 201 of file CodedFunction1.H.

Referenced by prepare().


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