From fbd7b78999cddccdacee4ab4e1a02ee149c4f714 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 23 Nov 2021 11:13:42 +0100 Subject: [PATCH] ENH: make expressions::FieldAssociation a common enum - use FACE_DATA (was SURFACE_DATA) for similarity with polySurface ENH: add expression value enumerations and traits - simple enumeration of standard types (bool, label, scalar, vector) that can be used as a value type-code for internal bookkeeping. GIT: relocate pTraits into general traits/ directory --- applications/test/exprTraits/Make/files | 3 + applications/test/exprTraits/Make/options | 2 + .../test/exprTraits/Test-exprTraits.C | 79 +++++++++ .../setExprFields/setExprFields.C | 9 +- src/OpenFOAM/Make/files | 2 + .../expressions/exprDriver/exprDriver.H | 4 +- .../expressions/exprResult/exprResult.H | 6 +- .../expressions/traits/exprFieldAssociation.H | 62 +++++++ src/OpenFOAM/expressions/traits/exprTraits.C | 96 +++++++++++ src/OpenFOAM/expressions/traits/exprTraits.H | 160 ++++++++++++++++++ .../primitives/{pTraits => traits}/pTraits.H | 0 .../expressions/patch/patchExprDriver.H | 1 + .../expressions/patch/patchExprDriverI.H | 8 +- .../expressions/patch/patchExprFwd.H | 13 +- .../expressions/volume/volumeExprDriver.H | 17 +- .../expressions/volume/volumeExprDriverI.H | 10 +- .../volume/volumeExprDriverTemplates.C | 4 +- .../expressions/volume/volumeExprFwd.H | 13 +- src/surfMesh/polySurface/polySurface.H | 8 +- 19 files changed, 442 insertions(+), 55 deletions(-) create mode 100644 applications/test/exprTraits/Make/files create mode 100644 applications/test/exprTraits/Make/options create mode 100644 applications/test/exprTraits/Test-exprTraits.C create mode 100644 src/OpenFOAM/expressions/traits/exprFieldAssociation.H create mode 100644 src/OpenFOAM/expressions/traits/exprTraits.C create mode 100644 src/OpenFOAM/expressions/traits/exprTraits.H rename src/OpenFOAM/primitives/{pTraits => traits}/pTraits.H (100%) diff --git a/applications/test/exprTraits/Make/files b/applications/test/exprTraits/Make/files new file mode 100644 index 0000000000..6ae37c355d --- /dev/null +++ b/applications/test/exprTraits/Make/files @@ -0,0 +1,3 @@ +Test-exprTraits.C + +EXE = $(FOAM_USER_APPBIN)/Test-exprTraits diff --git a/applications/test/exprTraits/Make/options b/applications/test/exprTraits/Make/options new file mode 100644 index 0000000000..18e6fe47af --- /dev/null +++ b/applications/test/exprTraits/Make/options @@ -0,0 +1,2 @@ +/* EXE_INC = */ +/* EXE_LIBS = */ diff --git a/applications/test/exprTraits/Test-exprTraits.C b/applications/test/exprTraits/Test-exprTraits.C new file mode 100644 index 0000000000..3dee3b436f --- /dev/null +++ b/applications/test/exprTraits/Test-exprTraits.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2021 OpenCFD Ltd. +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM, distributed under GPL-3.0-or-later. + +Description + Basic tests of expression traits + +\*---------------------------------------------------------------------------*/ + +#include "IOstreams.H" +#include "ITstream.H" +#include "exprTraits.H" +#include "uLabel.H" +#include "error.H" +#include "stringList.H" + +using namespace Foam; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +template +void printTraits() +{ + const auto typeCode = exprTypeTraits::value; + + Info<< "type " << pTraits::typeName + << " code:" << int(typeCode) + << " name:" << exprTypeTraits::name; + + if (pTraits::typeName != word(exprTypeTraits::name)) + { + Info<< " (UNSUPPORTED)"; + } + + Info << endl; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main() +{ + Info<< nl << "Traits:" << nl; + + printTraits(); + printTraits(); + printTraits(); + printTraits