From 8563f892a91330bb9eb300ccb342b1901a74cf8f Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Fri, 2 Dec 2016 08:48:01 +0100
Subject: [PATCH] ENH: provide a 'dimensioned' null-like constructor for
 dimensionedType

- The null constructor already creates a dimensionless Zero,
  but named "undefined".

  Provide an constructor for a dimensioned Zero,
  but named "0" for universal clarity to its value.
---
 .../test/dimensionedType/Test-dimensionedType.C    |  4 ++++
 .../dimensionedType/dimensionedType.C              | 14 +++++++++++++-
 .../dimensionedType/dimensionedType.H              |  7 +++++--
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/applications/test/dimensionedType/Test-dimensionedType.C b/applications/test/dimensionedType/Test-dimensionedType.C
index 965de25ead7..892552fa708 100644
--- a/applications/test/dimensionedType/Test-dimensionedType.C
+++ b/applications/test/dimensionedType/Test-dimensionedType.C
@@ -81,6 +81,10 @@ int main(int argc, char *argv[])
     }
 
 
+    Pout<< "zero scalar (time): " << dimensionedScalar(dimTime) << endl;
+    Pout<< "zero vector: " << dimensionedVector(dimLength) << endl;
+    Pout<< "zero tensor: " << dimensionedTensor(dimLength) << endl;
+
     Info<< "End\n" << endl;
 
     return 0;
diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C
index f5381ef91e0..dca595c6a3e 100644
--- a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C
+++ b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -169,6 +169,18 @@ Foam::dimensioned<Type>::dimensioned
 {}
 
 
+template<class Type>
+Foam::dimensioned<Type>::dimensioned
+(
+    const dimensionSet& dimSet
+)
+:
+    name_("0"),
+    dimensions_(dimSet),
+    value_(Zero)
+{}
+
+
 // * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
 
 template<class Type>
diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H
index fe817e4afec..fde67a1fc1e 100644
--- a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H
+++ b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -117,9 +117,12 @@ public:
         //- Construct from dictionary lookup with a given name and dimensions
         dimensioned(const word&, const dimensionSet&, const dictionary&);
 
-        //- Null constructor
+        //- Null constructor - a dimensionless Zero, named "undefined"
         dimensioned();
 
+        //- A dimensioned Zero, named "0"
+        explicit dimensioned(const dimensionSet&);
+
 
     // Static member functions
 
-- 
GitLab