From 3adf33da5446c34adcc3f4c8164aaa756a5f3c61 Mon Sep 17 00:00:00 2001 From: Henry Weller <http://cfd.direct> Date: Fri, 3 Jul 2015 18:02:24 +0100 Subject: [PATCH] src/OpenFOAM: Added posPart and negPart functions posPart returns a value or field in which the value or values are set to 0 if negative negPart returns a value or field in which the value or values are set to 0 if positive --- src/OpenFOAM/dimensionSet/dimensionSet.C | 14 ++++++++++- src/OpenFOAM/dimensionSet/dimensionSet.H | 4 +++- .../dimensionedScalar/dimensionedScalar.C | 24 ++++++++++++++++++- .../dimensionedScalar/dimensionedScalar.H | 4 +++- .../DimensionedScalarField.C | 4 +++- .../DimensionedScalarField.H | 4 +++- .../scalarFieldField/scalarFieldField.C | 4 +++- .../scalarFieldField/scalarFieldField.H | 4 +++- .../fields/Fields/scalarField/scalarField.C | 4 +++- .../fields/Fields/scalarField/scalarField.H | 4 +++- .../GeometricScalarField.C | 4 +++- .../GeometricScalarField.H | 4 +++- src/OpenFOAM/primitives/Scalar/Scalar.H | 12 ++++++++++ .../primitives/ints/label/labelSpecific.H | 13 +++++++++- 14 files changed, 90 insertions(+), 13 deletions(-) diff --git a/src/OpenFOAM/dimensionSet/dimensionSet.C b/src/OpenFOAM/dimensionSet/dimensionSet.C index de1b547681f..c289689ce97 100644 --- a/src/OpenFOAM/dimensionSet/dimensionSet.C +++ b/src/OpenFOAM/dimensionSet/dimensionSet.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -417,6 +417,18 @@ Foam::dimensionSet Foam::neg(const dimensionSet&) } +Foam::dimensionSet Foam::posPart(const dimensionSet& ds) +{ + return ds; +} + + +Foam::dimensionSet Foam::negPart(const dimensionSet& ds) +{ + return ds; +} + + Foam::dimensionSet Foam::inv(const dimensionSet& ds) { return dimless/ds; diff --git a/src/OpenFOAM/dimensionSet/dimensionSet.H b/src/OpenFOAM/dimensionSet/dimensionSet.H index 105ea879a53..b4af80416b2 100644 --- a/src/OpenFOAM/dimensionSet/dimensionSet.H +++ b/src/OpenFOAM/dimensionSet/dimensionSet.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -82,6 +82,8 @@ dimensionSet mag(const dimensionSet&); dimensionSet sign(const dimensionSet&); dimensionSet pos(const dimensionSet&); dimensionSet neg(const dimensionSet&); +dimensionSet posPart(const dimensionSet&); +dimensionSet negPart(const dimensionSet&); dimensionSet inv(const dimensionSet&); // Function to check the argument is dimensionless diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedScalar/dimensionedScalar.C b/src/OpenFOAM/dimensionedTypes/dimensionedScalar/dimensionedScalar.C index c1b00f52da6..fee971a8e85 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedScalar/dimensionedScalar.C +++ b/src/OpenFOAM/dimensionedTypes/dimensionedScalar/dimensionedScalar.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -209,6 +209,28 @@ dimensionedScalar neg(const dimensionedScalar& ds) } +dimensionedScalar posPart(const dimensionedScalar& ds) +{ + return dimensionedScalar + ( + "posPart(" + ds.name() + ')', + posPart(ds.dimensions()), + ::Foam::pos(ds.value()) + ); +} + + +dimensionedScalar negPart(const dimensionedScalar& ds) +{ + return dimensionedScalar + ( + "negPart(" + ds.name() + ')', + negPart(ds.dimensions()), + ::Foam::neg(ds.value()) + ); +} + + #define transFunc(func) \ dimensionedScalar func(const dimensionedScalar& ds) \ { \ diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedScalar/dimensionedScalar.H b/src/OpenFOAM/dimensionedTypes/dimensionedScalar/dimensionedScalar.H index 96854aecfb4..d1f618c2de5 100644 --- a/src/OpenFOAM/dimensionedTypes/dimensionedScalar/dimensionedScalar.H +++ b/src/OpenFOAM/dimensionedTypes/dimensionedScalar/dimensionedScalar.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -69,6 +69,8 @@ dimensionedScalar hypot(const dimensionedScalar&, const dimensionedScalar&); dimensionedScalar sign(const dimensionedScalar&); dimensionedScalar pos(const dimensionedScalar&); dimensionedScalar neg(const dimensionedScalar&); +dimensionedScalar posPart(const dimensionedScalar&); +dimensionedScalar negPart(const dimensionedScalar&); dimensionedScalar exp(const dimensionedScalar&); dimensionedScalar log(const dimensionedScalar&); diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.C index fd0967da810..019991ea994 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.C +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -638,6 +638,8 @@ UNARY_FUNCTION(scalar, scalar, cbrt, cbrt) UNARY_FUNCTION(scalar, scalar, sign, sign) UNARY_FUNCTION(scalar, scalar, pos, pos) UNARY_FUNCTION(scalar, scalar, neg, neg) +UNARY_FUNCTION(scalar, scalar, posPart, posPart) +UNARY_FUNCTION(scalar, scalar, negPart, negPart) UNARY_FUNCTION(scalar, scalar, exp, trans) UNARY_FUNCTION(scalar, scalar, log, trans) diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.H b/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.H index d5e1e54680b..1734c9dde06 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.H +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -92,6 +92,8 @@ UNARY_FUNCTION(scalar, scalar, cbrt, cbrt) UNARY_FUNCTION(scalar, scalar, sign, sign) UNARY_FUNCTION(scalar, scalar, pos, pos) UNARY_FUNCTION(scalar, scalar, neg, neg) +UNARY_FUNCTION(scalar, scalar, posPart, posPart) +UNARY_FUNCTION(scalar, scalar, negPart, negPart) UNARY_FUNCTION(scalar, scalar, exp, trans) UNARY_FUNCTION(scalar, scalar, log, trans) diff --git a/src/OpenFOAM/fields/FieldFields/scalarFieldField/scalarFieldField.C b/src/OpenFOAM/fields/FieldFields/scalarFieldField/scalarFieldField.C index 4132ba79f3c..4f4ddcb429d 100644 --- a/src/OpenFOAM/fields/FieldFields/scalarFieldField/scalarFieldField.C +++ b/src/OpenFOAM/fields/FieldFields/scalarFieldField/scalarFieldField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -109,6 +109,8 @@ UNARY_FUNCTION(scalar, scalar, cbrt) UNARY_FUNCTION(scalar, scalar, sign) UNARY_FUNCTION(scalar, scalar, pos) UNARY_FUNCTION(scalar, scalar, neg) +UNARY_FUNCTION(scalar, scalar, posPart) +UNARY_FUNCTION(scalar, scalar, negPart) UNARY_FUNCTION(scalar, scalar, exp) UNARY_FUNCTION(scalar, scalar, log) UNARY_FUNCTION(scalar, scalar, log10) diff --git a/src/OpenFOAM/fields/FieldFields/scalarFieldField/scalarFieldField.H b/src/OpenFOAM/fields/FieldFields/scalarFieldField/scalarFieldField.H index f6fcc4c901a..0af7ac39d43 100644 --- a/src/OpenFOAM/fields/FieldFields/scalarFieldField/scalarFieldField.H +++ b/src/OpenFOAM/fields/FieldFields/scalarFieldField/scalarFieldField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -102,6 +102,8 @@ UNARY_FUNCTION(scalar, scalar, cbrt) UNARY_FUNCTION(scalar, scalar, sign) UNARY_FUNCTION(scalar, scalar, pos) UNARY_FUNCTION(scalar, scalar, neg) +UNARY_FUNCTION(scalar, scalar, posPart) +UNARY_FUNCTION(scalar, scalar, negPart) UNARY_FUNCTION(scalar, scalar, exp) UNARY_FUNCTION(scalar, scalar, log) UNARY_FUNCTION(scalar, scalar, log10) diff --git a/src/OpenFOAM/fields/Fields/scalarField/scalarField.C b/src/OpenFOAM/fields/Fields/scalarField/scalarField.C index 7ae37531de2..e7400669af4 100644 --- a/src/OpenFOAM/fields/Fields/scalarField/scalarField.C +++ b/src/OpenFOAM/fields/Fields/scalarField/scalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -133,6 +133,8 @@ UNARY_FUNCTION(scalar, scalar, cbrt) UNARY_FUNCTION(scalar, scalar, sign) UNARY_FUNCTION(scalar, scalar, pos) UNARY_FUNCTION(scalar, scalar, neg) +UNARY_FUNCTION(scalar, scalar, posPart) +UNARY_FUNCTION(scalar, scalar, negPart) UNARY_FUNCTION(scalar, scalar, exp) UNARY_FUNCTION(scalar, scalar, log) UNARY_FUNCTION(scalar, scalar, log10) diff --git a/src/OpenFOAM/fields/Fields/scalarField/scalarField.H b/src/OpenFOAM/fields/Fields/scalarField/scalarField.H index f30938e9b68..4d85eece112 100644 --- a/src/OpenFOAM/fields/Fields/scalarField/scalarField.H +++ b/src/OpenFOAM/fields/Fields/scalarField/scalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -107,6 +107,8 @@ UNARY_FUNCTION(scalar, scalar, cbrt) UNARY_FUNCTION(scalar, scalar, sign) UNARY_FUNCTION(scalar, scalar, pos) UNARY_FUNCTION(scalar, scalar, neg) +UNARY_FUNCTION(scalar, scalar, posPart) +UNARY_FUNCTION(scalar, scalar, negPart) UNARY_FUNCTION(scalar, scalar, exp) UNARY_FUNCTION(scalar, scalar, log) UNARY_FUNCTION(scalar, scalar, log10) diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricScalarField/GeometricScalarField.C b/src/OpenFOAM/fields/GeometricFields/GeometricScalarField/GeometricScalarField.C index 79e253d9f7c..eb160c0e74c 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricScalarField/GeometricScalarField.C +++ b/src/OpenFOAM/fields/GeometricFields/GeometricScalarField/GeometricScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -762,6 +762,8 @@ UNARY_FUNCTION(scalar, scalar, cbrt, cbrt) UNARY_FUNCTION(scalar, scalar, sign, sign) UNARY_FUNCTION(scalar, scalar, pos, pos) UNARY_FUNCTION(scalar, scalar, neg, neg) +UNARY_FUNCTION(scalar, scalar, posPart, posPart) +UNARY_FUNCTION(scalar, scalar, negPart, negPart) UNARY_FUNCTION(scalar, scalar, exp, trans) UNARY_FUNCTION(scalar, scalar, log, trans) diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricScalarField/GeometricScalarField.H b/src/OpenFOAM/fields/GeometricFields/GeometricScalarField/GeometricScalarField.H index a7bc057e9eb..78dc2e1d30e 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricScalarField/GeometricScalarField.H +++ b/src/OpenFOAM/fields/GeometricFields/GeometricScalarField/GeometricScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -100,6 +100,8 @@ UNARY_FUNCTION(scalar, scalar, cbrt, cbrt) UNARY_FUNCTION(scalar, scalar, sign, sign) UNARY_FUNCTION(scalar, scalar, pos, pos) UNARY_FUNCTION(scalar, scalar, neg, neg) +UNARY_FUNCTION(scalar, scalar, posPart, posPart) +UNARY_FUNCTION(scalar, scalar, negPart, negPart) UNARY_FUNCTION(scalar, scalar, exp, trans) UNARY_FUNCTION(scalar, scalar, log, trans) diff --git a/src/OpenFOAM/primitives/Scalar/Scalar.H b/src/OpenFOAM/primitives/Scalar/Scalar.H index 49f4072dd92..f0c38d6d6a2 100644 --- a/src/OpenFOAM/primitives/Scalar/Scalar.H +++ b/src/OpenFOAM/primitives/Scalar/Scalar.H @@ -131,6 +131,18 @@ inline Scalar neg(const Scalar s) } +inline Scalar posPart(const Scalar s) +{ + return (s > 0)? s: 0; +} + + +inline Scalar negPart(const Scalar s) +{ + return (s < 0)? s: 0; +} + + inline bool equal(const Scalar& s1, const Scalar& s2) { return mag(s1 - s2) <= ScalarVSMALL; diff --git a/src/OpenFOAM/primitives/ints/label/labelSpecific.H b/src/OpenFOAM/primitives/ints/label/labelSpecific.H index f6b9fd5dd90..21e5c7aec24 100644 --- a/src/OpenFOAM/primitives/ints/label/labelSpecific.H +++ b/src/OpenFOAM/primitives/ints/label/labelSpecific.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -60,6 +60,17 @@ inline label neg(const label s) return (s < 0)? 1: 0; } +inline label posPart(const label s) +{ + return (s > 0)? s: 0; +} + +inline label negPart(const label s) +{ + return (s < 0)? s: 0; +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam -- GitLab