ENH: add support for an output object registry for function objects

This commit is contained in:
Mark Olesen
2019-01-25 12:15:46 +01:00
parent c4aebc3c8e
commit c45fad8362
4 changed files with 83 additions and 0 deletions

View File

@ -67,6 +67,25 @@ void Foam::functionObjectList::createStateDict() const
} }
void Foam::functionObjectList::createOutputRegistry() const
{
objectsRegistryPtr_.reset
(
new objectRegistry
(
IOobject
(
"functionObjectObjects",
time_.timeName(),
time_,
IOobject::NO_READ,
IOobject::NO_WRITE
)
)
);
}
Foam::autoPtr<Foam::functionObject> Foam::functionObjectList::remove Foam::autoPtr<Foam::functionObject> Foam::functionObjectList::remove
( (
const word& key, const word& key,
@ -339,6 +358,7 @@ Foam::functionObjectList::functionObjectList
time_(runTime), time_(runTime),
parentDict_(runTime.controlDict()), parentDict_(runTime.controlDict()),
stateDictPtr_(), stateDictPtr_(),
objectsRegistryPtr_(),
execution_(execution), execution_(execution),
updated_(false) updated_(false)
{} {}
@ -357,6 +377,7 @@ Foam::functionObjectList::functionObjectList
time_(runTime), time_(runTime),
parentDict_(parentDict), parentDict_(parentDict),
stateDictPtr_(), stateDictPtr_(),
objectsRegistryPtr_(),
execution_(execution), execution_(execution),
updated_(false) updated_(false)
{} {}
@ -491,6 +512,28 @@ const Foam::IOdictionary& Foam::functionObjectList::stateDict() const
} }
Foam::objectRegistry& Foam::functionObjectList::storedObjects()
{
if (!objectsRegistryPtr_.valid())
{
createOutputRegistry();
}
return *objectsRegistryPtr_;
}
const Foam::objectRegistry& Foam::functionObjectList::storedObjects() const
{
if (!objectsRegistryPtr_.valid())
{
createOutputRegistry();
}
return *objectsRegistryPtr_;
}
void Foam::functionObjectList::clear() void Foam::functionObjectList::clear()
{ {
PtrList<functionObject>::clear(); PtrList<functionObject>::clear();

View File

@ -84,6 +84,9 @@ class functionObjectList
//- Function object properties - stores state information //- Function object properties - stores state information
mutable autoPtr<IOdictionary> stateDictPtr_; mutable autoPtr<IOdictionary> stateDictPtr_;
//- Function objects output registry
mutable autoPtr<objectRegistry> objectsRegistryPtr_;
//- Switch for the execution of the functionObjects //- Switch for the execution of the functionObjects
bool execution_; bool execution_;
@ -102,6 +105,9 @@ class functionObjectList
//- Create state dictionary - attached to Time. //- Create state dictionary - attached to Time.
void createStateDict() const; void createStateDict() const;
//- Create registry for output objects - attached to Time.
void createOutputRegistry() const;
//- Remove and return the function object pointer by name, //- Remove and return the function object pointer by name,
//- and returns the old index (into digest) via the parameter. //- and returns the old index (into digest) via the parameter.
// Returns nullptr (and index -1) if it didn't exist // Returns nullptr (and index -1) if it didn't exist
@ -188,11 +194,21 @@ public:
void resetState(); void resetState();
//- Write access to the state dictionary ("functionObjectProperties") //- Write access to the state dictionary ("functionObjectProperties")
//- registered on Time
IOdictionary& stateDict(); IOdictionary& stateDict();
//- Const access to the state dictionary ("functionObjectProperties") //- Const access to the state dictionary ("functionObjectProperties")
//- registered on Time
const IOdictionary& stateDict() const; const IOdictionary& stateDict() const;
//- Write access to the output objects ("functionObjectObjects")
//- registered on Time
objectRegistry& storedObjects();
//- Const access to the output objects ("functionObjectObjects")
//- registered on Time
const objectRegistry& storedObjects() const;
//- Clear the list of function objects //- Clear the list of function objects
void clear(); void clear();

View File

@ -39,4 +39,20 @@ Foam::functionObjects::timeFunctionObject::timeFunctionObject
{} {}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
Foam::objectRegistry&
Foam::functionObjects::timeFunctionObject::storedObjects()
{
return const_cast<Time&>(time_).functionObjects().storedObjects();
}
const Foam::objectRegistry&
Foam::functionObjects::timeFunctionObject::storedObjects() const
{
return time_.functionObjects().storedObjects();
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -92,6 +92,14 @@ public:
{ {
return time_; return time_;
} }
//- Write access to the output objects ("functionObjectObjects")
//- registered on Time
objectRegistry& storedObjects();
//- Const access to the output objects ("functionObjectObjects")
//- registered on Time
const objectRegistry& storedObjects() const;
}; };