mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: support objectRegistry::checkOut(const word& name)
- similar to what erase() does, but as a mutable operation (#1180)
- replace basicThermo lookupAndCheckout (commit 880c98757d) with
the new objectRegistry::checkOut() method.
This commit is contained in:
@ -285,6 +285,12 @@ bool Foam::objectRegistry::checkOut(regIOobject& io) const
|
||||
}
|
||||
|
||||
|
||||
bool Foam::objectRegistry::checkOut(const word& key) const
|
||||
{
|
||||
return const_cast<objectRegistry&>(*this).erase(key);
|
||||
}
|
||||
|
||||
|
||||
void Foam::objectRegistry::clear()
|
||||
{
|
||||
// Free anything owned by the registry
|
||||
|
||||
@ -438,6 +438,10 @@ public:
|
||||
//- object is ownedByRegistry
|
||||
bool checkOut(regIOobject& io) const;
|
||||
|
||||
//- Remove a regIOobject by name from registry and frees memory if the
|
||||
//- object is ownedByRegistry
|
||||
bool checkOut(const word& key) const;
|
||||
|
||||
//- Clear all entries from the registry
|
||||
// Performs a checkOut() for all objects that are ownedByRegistry
|
||||
void clear();
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2009-2011, 2017 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2009-2011, 2017-2019 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
| Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
@ -152,7 +152,7 @@ void Foam::functionObjects::fieldAverageItem::evolve(const objectRegistry& obr)
|
||||
const word fieldName = windowFieldNames_.pop();
|
||||
|
||||
//Info<< "evolve: removing field: " << fieldName << endl;
|
||||
obr.checkOut(*obr[fieldName]);
|
||||
obr.checkOut(fieldName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -164,22 +164,19 @@ void Foam::functionObjects::fieldAverageItem::clear
|
||||
bool fullClean
|
||||
)
|
||||
{
|
||||
if (mean_ && obr.found(meanFieldName_))
|
||||
if (mean_)
|
||||
{
|
||||
obr.checkOut(*obr[meanFieldName_]);
|
||||
obr.checkOut(meanFieldName_);
|
||||
}
|
||||
|
||||
if (prime2Mean_ && obr.found(prime2MeanFieldName_))
|
||||
if (prime2Mean_)
|
||||
{
|
||||
obr.checkOut(*obr[prime2MeanFieldName_]);
|
||||
obr.checkOut(prime2MeanFieldName_);
|
||||
}
|
||||
|
||||
for (const word& fieldName : windowFieldNames_)
|
||||
{
|
||||
if (obr.found(fieldName))
|
||||
{
|
||||
obr.checkOut(*obr[fieldName]);
|
||||
}
|
||||
obr.checkOut(fieldName);
|
||||
}
|
||||
|
||||
if (totalTime_ < 0 || fullClean)
|
||||
|
||||
@ -46,11 +46,9 @@ namespace functionObjects
|
||||
|
||||
void Foam::functionObjects::momentum::purgeFields()
|
||||
{
|
||||
objectRegistry& obr = const_cast<objectRegistry&>(obr_);
|
||||
|
||||
obr.erase(scopedName("momentum"));
|
||||
obr.erase(scopedName("angularMomentum"));
|
||||
obr.erase(scopedName("angularVelocity"));
|
||||
obr_.checkOut(scopedName("momentum"));
|
||||
obr_.checkOut(scopedName("angularMomentum"));
|
||||
obr_.checkOut(scopedName("angularVelocity"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -49,24 +49,6 @@ namespace Foam
|
||||
|
||||
bool Foam::surfMeshSamplers::verbose_ = false;
|
||||
|
||||
void Foam::surfMeshSamplers::checkOutNames
|
||||
(
|
||||
const objectRegistry& registry,
|
||||
const UList<word>& names
|
||||
)
|
||||
{
|
||||
objectRegistry& reg = const_cast<objectRegistry&>(registry);
|
||||
|
||||
for (const word& fldName : names)
|
||||
{
|
||||
objectRegistry::iterator iter = reg.find(fldName);
|
||||
if (iter.found())
|
||||
{
|
||||
registry.checkOut(*iter());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
@ -297,7 +279,11 @@ bool Foam::surfMeshSamplers::execute()
|
||||
}
|
||||
}
|
||||
|
||||
checkOutNames(db, cleanup);
|
||||
// Cleanup any locally introduced names
|
||||
for (const word& fieldName : cleanup)
|
||||
{
|
||||
db.checkOut(fieldName);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -157,14 +157,6 @@ class surfMeshSamplers
|
||||
|
||||
// Private Member Functions
|
||||
|
||||
//- Remove items by name from objectRegistry
|
||||
static void checkOutNames
|
||||
(
|
||||
const objectRegistry& registry,
|
||||
const UList<word>& names
|
||||
);
|
||||
|
||||
|
||||
//- Hard-coded derived field (rho * U)
|
||||
// \return true if field did not previously exist
|
||||
bool add_rhoU(const word& derivedName);
|
||||
|
||||
@ -160,15 +160,6 @@ Foam::volScalarField& Foam::basicThermo::lookupOrConstruct
|
||||
}
|
||||
|
||||
|
||||
void Foam::basicThermo::lookupAndCheckout(const char* name) const
|
||||
{
|
||||
if (db().foundObject<volScalarField>(name))
|
||||
{
|
||||
db().checkOut(*db()[name]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Foam::basicThermo::basicThermo
|
||||
(
|
||||
const fvMesh& mesh,
|
||||
@ -326,7 +317,7 @@ Foam::autoPtr<Foam::basicThermo> Foam::basicThermo::New
|
||||
|
||||
Foam::basicThermo::~basicThermo()
|
||||
{
|
||||
lookupAndCheckout("p");
|
||||
db().checkOut("p");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2004-2010, 2017 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2004-2010, 2017-2019 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
| Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
@ -105,9 +105,6 @@ protected:
|
||||
bool& isOwner
|
||||
);
|
||||
|
||||
//- Lookup and check out field
|
||||
void lookupAndCheckout(const char* name) const;
|
||||
|
||||
//- Return the enthalpy/internal energy field boundary types
|
||||
// by interrogating the temperature field boundary types
|
||||
wordList heBoundaryTypes();
|
||||
|
||||
Reference in New Issue
Block a user