diff --git a/src/OpenFOAM/fields/Fields/Field/Field.H b/src/OpenFOAM/fields/Fields/Field/Field.H index dd5f559b2e..55f11617b8 100644 --- a/src/OpenFOAM/fields/Fields/Field/Field.H +++ b/src/OpenFOAM/fields/Fields/Field/Field.H @@ -47,10 +47,10 @@ SourceFiles #include "tmp.H" #include "direction.H" -#include "VectorSpace.H" -#include "scalarList.H" #include "labelList.H" +#include "scalarList.H" #include "FieldBase.H" +#include "VectorSpace.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -92,11 +92,8 @@ public: // Static Member Functions - //- Return nullObject reference field - inline static const Field& null() - { - return NullObjectRef>(); - } + //- Return nullObject reference Field + inline static const Field& null(); // Constructors diff --git a/src/OpenFOAM/fields/Fields/Field/FieldBase.H b/src/OpenFOAM/fields/Fields/Field/FieldBase.H index 33626fdeed..c603acd311 100644 --- a/src/OpenFOAM/fields/Fields/Field/FieldBase.H +++ b/src/OpenFOAM/fields/Fields/Field/FieldBase.H @@ -27,7 +27,7 @@ Class Foam::FieldBase Description - Template invariant parts for Field + Template invariant parts for Field and SubField SourceFiles FieldBase.C @@ -54,17 +54,19 @@ class FieldBase { public: - // Static data members + // Static Data Members //- Typename for Field static const char* const typeName; + //- Permit read construct from a larger size. + // Mostly required for things like column mesh, for example. static bool allowConstructFromLargerSize; // Constructors - //- Construct null, with refCount zero + //- Default construct, refCount zero constexpr FieldBase() noexcept : refCount() diff --git a/src/OpenFOAM/fields/Fields/Field/FieldI.H b/src/OpenFOAM/fields/Fields/Field/FieldI.H index 7cfd44d6f9..08eb5de948 100644 --- a/src/OpenFOAM/fields/Fields/Field/FieldI.H +++ b/src/OpenFOAM/fields/Fields/Field/FieldI.H @@ -25,6 +25,15 @@ License \*---------------------------------------------------------------------------*/ +// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // + +template +inline const Foam::Field& Foam::Field::null() +{ + return NullObjectRef>(); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template diff --git a/src/OpenFOAM/fields/Fields/Field/SubField.H b/src/OpenFOAM/fields/Fields/Field/SubField.H index e2f668bd50..90a0482490 100644 --- a/src/OpenFOAM/fields/Fields/Field/SubField.H +++ b/src/OpenFOAM/fields/Fields/Field/SubField.H @@ -28,11 +28,9 @@ Class Foam::SubField Description - SubField is a Field obtained as a section of another Field. - - Thus it is itself unallocated so that no storage is allocated or - deallocated during its use. To achieve this behaviour, SubField is - derived from a SubList rather than a List. + SubField is a Field obtained as a section of another Field, + without its own allocation. + SubField is derived from a SubList rather than a List. SourceFiles SubFieldI.H @@ -42,17 +40,15 @@ SourceFiles #ifndef SubField_H #define SubField_H -#include "SubList.H" #include "Field.H" -#include "VectorSpace.H" +#include "SubList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -// Forward declarations -template class Field; +// Forward Declarations template class SubField; /*---------------------------------------------------------------------------*\ @@ -62,7 +58,7 @@ template class SubField; template class SubField : - public refCount, + public FieldBase, public SubList { public: @@ -71,6 +67,12 @@ public: typedef typename pTraits::cmptType cmptType; + // Static Member Functions + + //- Return nullObject reference SubField + inline static const SubField& null(); + + // Constructors //- Default construct, zero-sized and nullptr @@ -120,9 +122,6 @@ public: // Member Functions - //- Return a null SubField - static inline const SubField& null(); - //- Return a component field of the field inline tmp> component(const direction) const; diff --git a/src/OpenFOAM/fields/Fields/Field/SubFieldI.H b/src/OpenFOAM/fields/Fields/Field/SubFieldI.H index 8d574359da..6b42e8d91f 100644 --- a/src/OpenFOAM/fields/Fields/Field/SubFieldI.H +++ b/src/OpenFOAM/fields/Fields/Field/SubFieldI.H @@ -26,6 +26,15 @@ License \*---------------------------------------------------------------------------*/ +// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // + +template +inline const Foam::SubField& Foam::SubField::null() +{ + return NullObjectRef>(); +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template @@ -105,13 +114,6 @@ inline Foam::SubField::SubField // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -inline const Foam::SubField& Foam::SubField::null() -{ - return NullObjectRef>(); -} - - template inline Foam::tmp::cmptType>> Foam::SubField::component