From f28110ae949f1368d622021a0a08a23897bf4e76 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Mon, 29 Apr 2024 21:17:59 +0100 Subject: [PATCH] UniformDimensionedField: Added support for oldTime --- .../UniformDimensionedField.C | 40 ++++++++++++++++--- .../UniformDimensionedField.H | 25 +++++++++++- 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.C b/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.C index e25c65efcd..85fa2e401a 100644 --- a/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.C +++ b/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2023 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2024 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,7 +35,8 @@ Foam::UniformDimensionedField::UniformDimensionedField ) : regIOobject(io), - dimensioned(dt) + dimensioned(dt), + OldTimeField(this->time().timeIndex()) { // Read value if @@ -59,11 +60,12 @@ Foam::UniformDimensionedField::UniformDimensionedField template Foam::UniformDimensionedField::UniformDimensionedField ( - const UniformDimensionedField& rdt + const UniformDimensionedField& udt ) : - regIOobject(rdt), - dimensioned(rdt) + regIOobject(udt), + dimensioned(udt), + OldTimeField(udt) {} @@ -74,7 +76,8 @@ Foam::UniformDimensionedField::UniformDimensionedField ) : regIOobject(io), - dimensioned(regIOobject::name(), dimless, Zero) + dimensioned(regIOobject::name(), dimless, Zero), + OldTimeField(this->time().timeIndex()) { dictionary dict(readStream(typeName)); scalar multiplier; @@ -93,6 +96,21 @@ Foam::UniformDimensionedField::~UniformDimensionedField() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template +Type& Foam::UniformDimensionedField::value() +{ + this->storeOldTimes(); + return dimensioned::value(); +} + + +template +const Type& Foam::UniformDimensionedField::value() const +{ + return dimensioned::value(); +} + + template bool Foam::UniformDimensionedField::writeData(Ostream& os) const { @@ -107,6 +125,16 @@ bool Foam::UniformDimensionedField::writeData(Ostream& os) const // * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * * // +template +void Foam::UniformDimensionedField::operator== +( + const UniformDimensionedField& rhs +) +{ + dimensioned::operator=(rhs); +} + + template void Foam::UniformDimensionedField::operator= ( diff --git a/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.H b/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.H index 01c57206b9..fb1db6c075 100644 --- a/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.H +++ b/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2024 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,12 +40,15 @@ SourceFiles #include "regIOobject.H" #include "dimensionedType.H" #include "UniformField.H" +#include "OldTimeField.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { +template class UniformDimensionedField; + /*---------------------------------------------------------------------------*\ Class UniformDimensionedField Declaration \*---------------------------------------------------------------------------*/ @@ -54,7 +57,8 @@ template class UniformDimensionedField : public regIOobject, - public dimensioned + public dimensioned, + public OldTimeField> { public: @@ -103,6 +107,18 @@ public: return true; } + //- Dummy reference count uniqueness test + bool unique() const + { + return true; + } + + //- Return a reference to the value + Type& value(); + + //- Return a const-reference to the value + const Type& value() const; + //- Return the non-dimensioned field FieldType field() const { @@ -115,6 +131,7 @@ public: // Member Operators + void operator==(const UniformDimensionedField&); void operator=(const UniformDimensionedField&); void operator=(const dimensioned&); @@ -122,6 +139,10 @@ public: { return this->value(); } + + //- Dummy reference count decrement + void operator--() + {} };