From 1ae1b9f1d81fba07c8ec3cd7e6244ccac986a7d1 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Wed, 6 Apr 2016 14:21:04 +0100 Subject: [PATCH] geometricOneField: Enhanced to provide better correspondence to GeometricField --- .../fields/Fields/oneField/oneField.H | 2 +- .../fields/Fields/oneField/oneFieldI.H | 4 +- .../geometricOneField/geometricOneField.H | 13 ++++- .../geometricOneField/geometricOneFieldI.H | 15 ++++-- src/OpenFOAM/primitives/one/one.H | 30 ++++++++++- src/OpenFOAM/primitives/one/oneI.H | 14 +++++ src/OpenFOAM/primitives/zero/zero.H | 52 +++++++++++-------- 7 files changed, 98 insertions(+), 32 deletions(-) diff --git a/src/OpenFOAM/fields/Fields/oneField/oneField.H b/src/OpenFOAM/fields/Fields/oneField/oneField.H index 1dbf352756..8c6fb16b7a 100644 --- a/src/OpenFOAM/fields/Fields/oneField/oneField.H +++ b/src/OpenFOAM/fields/Fields/oneField/oneField.H @@ -64,7 +64,7 @@ public: // Member Operators - inline scalar operator[](const label) const; + inline one operator[](const label) const; inline oneField field() const; }; diff --git a/src/OpenFOAM/fields/Fields/oneField/oneFieldI.H b/src/OpenFOAM/fields/Fields/oneField/oneFieldI.H index 3fe8085a2f..35b84a546f 100644 --- a/src/OpenFOAM/fields/Fields/oneField/oneFieldI.H +++ b/src/OpenFOAM/fields/Fields/oneField/oneFieldI.H @@ -27,9 +27,9 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -inline Foam::scalar Foam::oneField::operator[](const label) const +inline Foam::one Foam::oneField::operator[](const label) const { - return scalar(1); + return one(); } diff --git a/src/OpenFOAM/fields/GeometricFields/geometricOneField/geometricOneField.H b/src/OpenFOAM/fields/GeometricFields/geometricOneField/geometricOneField.H index d57bfbea91..23c368b300 100644 --- a/src/OpenFOAM/fields/GeometricFields/geometricOneField/geometricOneField.H +++ b/src/OpenFOAM/fields/GeometricFields/geometricOneField/geometricOneField.H @@ -57,6 +57,13 @@ class geometricOneField public: + // Public typedefs + + typedef oneField InternalField; + typedef oneField PatchFieldType; + typedef oneFieldField GeometricBoundaryField; + typedef one cmptType; + // Constructors //- Construct null @@ -68,13 +75,15 @@ public: inline const dimensionSet& dimensions() const; - inline scalar operator[](const label) const; + inline one operator[](const label) const; inline oneField field() const; inline oneField oldTime() const; - inline oneFieldField boundaryField() const; + inline InternalField internalField() const; + + inline GeometricBoundaryField boundaryField() const; }; diff --git a/src/OpenFOAM/fields/GeometricFields/geometricOneField/geometricOneFieldI.H b/src/OpenFOAM/fields/GeometricFields/geometricOneField/geometricOneFieldI.H index eafebe4b01..8274367d45 100644 --- a/src/OpenFOAM/fields/GeometricFields/geometricOneField/geometricOneFieldI.H +++ b/src/OpenFOAM/fields/GeometricFields/geometricOneField/geometricOneFieldI.H @@ -32,9 +32,9 @@ inline const Foam::dimensionSet& Foam::geometricOneField::dimensions() const return dimless; } -inline Foam::scalar Foam::geometricOneField::operator[](const label) const +inline Foam::one Foam::geometricOneField::operator[](const label) const { - return scalar(1); + return one(); } inline Foam::oneField Foam::geometricOneField::field() const @@ -47,9 +47,16 @@ inline Foam::oneField Foam::geometricOneField::oldTime() const return oneField(); } -inline Foam::oneFieldField Foam::geometricOneField::boundaryField() const +inline Foam::geometricOneField::InternalField +Foam::geometricOneField::internalField() const { - return oneFieldField(); + return InternalField(); +} + +inline Foam::geometricOneField::GeometricBoundaryField +Foam::geometricOneField::boundaryField() const +{ + return GeometricBoundaryField(); } diff --git a/src/OpenFOAM/primitives/one/one.H b/src/OpenFOAM/primitives/one/one.H index 28b7f487ab..a184af000d 100644 --- a/src/OpenFOAM/primitives/one/one.H +++ b/src/OpenFOAM/primitives/one/one.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,11 +29,16 @@ Description unnecessary manipulations for objects which are known to be one at compile-time. +SourceFiles + oneI.H + \*---------------------------------------------------------------------------*/ #ifndef one_H #define one_H +#include "label.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam @@ -47,11 +52,34 @@ class one { public: + typedef one value_type; + // Constructors //- Construct null one() {} + + + // Member operators + + //- Return 1 for label + inline operator label() const + { + return 1; + } + + //- Return 1 for float + inline operator float() const + { + return 1; + } + + //- Return 1 for double + inline operator double() const + { + return 1; + } }; diff --git a/src/OpenFOAM/primitives/one/oneI.H b/src/OpenFOAM/primitives/one/oneI.H index 69a8f685f4..a8e0405876 100644 --- a/src/OpenFOAM/primitives/one/oneI.H +++ b/src/OpenFOAM/primitives/one/oneI.H @@ -24,6 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "one.H" +#include "scalar.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -32,6 +33,14 @@ namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +template +class innerProduct +{ +public: + + typedef arg2 type; +}; + inline const one& operator*(const one& o, const one&) { return o; @@ -49,6 +58,11 @@ inline const Type& operator*(const one&, const Type& t) return t; } +template +inline const Type& operator&(const one&, const Type& t) +{ + return t; +} inline const one& operator/(const one& o, const one&) { diff --git a/src/OpenFOAM/primitives/zero/zero.H b/src/OpenFOAM/primitives/zero/zero.H index 1bd5f43807..b0156929b6 100644 --- a/src/OpenFOAM/primitives/zero/zero.H +++ b/src/OpenFOAM/primitives/zero/zero.H @@ -51,32 +51,40 @@ class zero { public: - zero() - {} + typedef zero value_type; - //- Return 0 for bool - inline operator bool() const - { - return 0; - } + // Constructors - //- Return 0 for label - inline operator label() const - { - return 0; - } + //- Construct null + zero() + {} - //- Return 0 for float - inline operator float() const - { - return 0; - } - //- Return 0 for double - inline operator double() const - { - return 0; - } + // Member operators + + //- Return 0 for bool + inline operator bool() const + { + return 0; + } + + //- Return 0 for label + inline operator label() const + { + return 0; + } + + //- Return 0 for float + inline operator float() const + { + return 0; + } + + //- Return 0 for double + inline operator double() const + { + return 0; + } };