mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
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
This commit is contained in:
3
applications/test/exprTraits/Make/files
Normal file
3
applications/test/exprTraits/Make/files
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Test-exprTraits.C
|
||||||
|
|
||||||
|
EXE = $(FOAM_USER_APPBIN)/Test-exprTraits
|
||||||
2
applications/test/exprTraits/Make/options
Normal file
2
applications/test/exprTraits/Make/options
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/* EXE_INC = */
|
||||||
|
/* EXE_LIBS = */
|
||||||
79
applications/test/exprTraits/Test-exprTraits.C
Normal file
79
applications/test/exprTraits/Test-exprTraits.C
Normal file
@ -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<class T>
|
||||||
|
void printTraits()
|
||||||
|
{
|
||||||
|
const auto typeCode = exprTypeTraits<T>::value;
|
||||||
|
|
||||||
|
Info<< "type " << pTraits<T>::typeName
|
||||||
|
<< " code:" << int(typeCode)
|
||||||
|
<< " name:" << exprTypeTraits<T>::name;
|
||||||
|
|
||||||
|
if (pTraits<T>::typeName != word(exprTypeTraits<T>::name))
|
||||||
|
{
|
||||||
|
Info<< " (UNSUPPORTED)";
|
||||||
|
}
|
||||||
|
|
||||||
|
Info << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
Info<< nl << "Traits:" << nl;
|
||||||
|
|
||||||
|
printTraits<word>();
|
||||||
|
printTraits<string>();
|
||||||
|
printTraits<bool>();
|
||||||
|
printTraits<label>();
|
||||||
|
printTraits<scalar>();
|
||||||
|
printTraits<vector>();
|
||||||
|
printTraits<tensor>();
|
||||||
|
printTraits<symmTensor>();
|
||||||
|
printTraits<sphericalTensor>();
|
||||||
|
|
||||||
|
const auto getName = nameOp<expressions::valueTypeCode>();
|
||||||
|
|
||||||
|
Info<< nl;
|
||||||
|
|
||||||
|
Info<< "Name of typeCode: "
|
||||||
|
<< Foam::name(expressions::valueTypeCode::type_scalar) << nl;
|
||||||
|
|
||||||
|
Info<< "Name of typeCode: "
|
||||||
|
<< getName(expressions::valueTypeCode::type_bool) << nl;
|
||||||
|
|
||||||
|
|
||||||
|
Info<< nl << "Done" << nl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -53,15 +53,15 @@ Note
|
|||||||
|
|
||||||
using namespace Foam;
|
using namespace Foam;
|
||||||
|
|
||||||
using FieldAssociation = expressions::volumeExpr::FieldAssociation;
|
using FieldAssociation = expressions::FieldAssociation;
|
||||||
|
|
||||||
word fieldGeoType(const FieldAssociation geoType)
|
word fieldGeoType(const FieldAssociation geoType)
|
||||||
{
|
{
|
||||||
switch (geoType)
|
switch (geoType)
|
||||||
{
|
{
|
||||||
case FieldAssociation::VOLUME_DATA : return "cells"; break;
|
|
||||||
case FieldAssociation::SURFACE_DATA : return "faces"; break;
|
|
||||||
case FieldAssociation::POINT_DATA : return "points"; break;
|
case FieldAssociation::POINT_DATA : return "points"; break;
|
||||||
|
case FieldAssociation::FACE_DATA : return "faces"; break;
|
||||||
|
case FieldAssociation::VOLUME_DATA : return "cells"; break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,6 +356,7 @@ void evaluate
|
|||||||
if (ptr)
|
if (ptr)
|
||||||
{
|
{
|
||||||
conditionField = ptr->internalField();
|
conditionField = ptr->internalField();
|
||||||
|
// VOLUME_DATA
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -366,7 +367,7 @@ void evaluate
|
|||||||
if (ptr)
|
if (ptr)
|
||||||
{
|
{
|
||||||
conditionField = ptr->internalField();
|
conditionField = ptr->internalField();
|
||||||
conditionDataType = FieldAssociation::SURFACE_DATA;
|
conditionDataType = FieldAssociation::FACE_DATA;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -163,6 +163,8 @@ $(expr)/exprResult/exprResultStoredStack.C
|
|||||||
$(expr)/exprString/exprString.C
|
$(expr)/exprString/exprString.C
|
||||||
$(expr)/exprTools/exprTools.C
|
$(expr)/exprTools/exprTools.C
|
||||||
|
|
||||||
|
$(expr)/traits/exprTraits.C
|
||||||
|
|
||||||
$(expr)/exprDriver/exprDriver.C
|
$(expr)/exprDriver/exprDriver.C
|
||||||
$(expr)/exprDriver/exprDriverFields.C
|
$(expr)/exprDriver/exprDriverFields.C
|
||||||
$(expr)/exprDriver/exprDriverIO.C
|
$(expr)/exprDriver/exprDriverIO.C
|
||||||
|
|||||||
@ -59,10 +59,12 @@ SourceFiles
|
|||||||
#ifndef expressions_exprDriver_H
|
#ifndef expressions_exprDriver_H
|
||||||
#define expressions_exprDriver_H
|
#define expressions_exprDriver_H
|
||||||
|
|
||||||
#include "exprString.H"
|
|
||||||
#include "exprResult.H"
|
#include "exprResult.H"
|
||||||
|
#include "exprString.H"
|
||||||
|
#include "exprTraits.H"
|
||||||
#include "pointField.H"
|
#include "pointField.H"
|
||||||
#include "primitiveFields.H"
|
#include "primitiveFields.H"
|
||||||
|
#include "objectRegistry.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|||||||
@ -57,12 +57,8 @@ SourceFiles
|
|||||||
#ifndef expressions_exprResult_H
|
#ifndef expressions_exprResult_H
|
||||||
#define expressions_exprResult_H
|
#define expressions_exprResult_H
|
||||||
|
|
||||||
#include "vector.H"
|
#include "exprTraits.H"
|
||||||
#include "tensor.H"
|
|
||||||
#include "sphericalTensor.H"
|
|
||||||
#include "symmTensor.H"
|
|
||||||
#include "dimensionedType.H"
|
#include "dimensionedType.H"
|
||||||
#include "IOField.H"
|
|
||||||
#include "runTimeSelectionTables.H"
|
#include "runTimeSelectionTables.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|||||||
62
src/OpenFOAM/expressions/traits/exprFieldAssociation.H
Normal file
62
src/OpenFOAM/expressions/traits/exprFieldAssociation.H
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | www.openfoam.com
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Copyright (C) 2019-2021 OpenCFD Ltd.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::expressions::FieldAssociation
|
||||||
|
|
||||||
|
Description
|
||||||
|
The field association for mesh (patch/volume) values.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef expressions_FieldAssociation_H
|
||||||
|
#define expressions_FieldAssociation_H
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace expressions
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
enum FieldAssociation : unsigned char
|
||||||
|
{
|
||||||
|
NO_DATA = 0, //!< No data
|
||||||
|
POINT_DATA = 1, //!< Point data
|
||||||
|
FACE_DATA = 2, //!< Face data
|
||||||
|
VOLUME_DATA = 4 //!< Volume data
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace expressions
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
96
src/OpenFOAM/expressions/traits/exprTraits.C
Normal file
96
src/OpenFOAM/expressions/traits/exprTraits.C
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / 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.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "exprTraits.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::expressions::valueTypeCode
|
||||||
|
Foam::expressions::valueTypeCodeOf(const word& dataTypeName)
|
||||||
|
{
|
||||||
|
#undef stringToTypeCode
|
||||||
|
#define stringToTypeCode(Type) \
|
||||||
|
\
|
||||||
|
if (dataTypeName == exprTypeTraits<Type>::name) \
|
||||||
|
{ \
|
||||||
|
return expressions::valueTypeCode::type_##Type; \
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dataTypeName.empty())
|
||||||
|
{
|
||||||
|
stringToTypeCode(bool);
|
||||||
|
stringToTypeCode(label);
|
||||||
|
stringToTypeCode(scalar);
|
||||||
|
stringToTypeCode(vector);
|
||||||
|
stringToTypeCode(tensor);
|
||||||
|
stringToTypeCode(sphericalTensor);
|
||||||
|
stringToTypeCode(symmTensor);
|
||||||
|
}
|
||||||
|
#undef stringToTypeCode
|
||||||
|
|
||||||
|
return expressions::valueTypeCode::INVALID;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::word Foam::name(const expressions::valueTypeCode typeCode)
|
||||||
|
{
|
||||||
|
#undef case_typeCodeToString
|
||||||
|
#define case_typeCodeToString(Type) \
|
||||||
|
\
|
||||||
|
case expressions::valueTypeCode::type_##Type : \
|
||||||
|
{ \
|
||||||
|
return exprTypeTraits<Type>::name; \
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (typeCode)
|
||||||
|
{
|
||||||
|
case expressions::valueTypeCode::NONE :
|
||||||
|
{
|
||||||
|
return "none";
|
||||||
|
}
|
||||||
|
|
||||||
|
case expressions::valueTypeCode::INVALID :
|
||||||
|
{
|
||||||
|
// ie, ""
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case_typeCodeToString(bool);
|
||||||
|
case_typeCodeToString(label);
|
||||||
|
case_typeCodeToString(scalar);
|
||||||
|
case_typeCodeToString(vector);
|
||||||
|
case_typeCodeToString(tensor);
|
||||||
|
case_typeCodeToString(sphericalTensor);
|
||||||
|
case_typeCodeToString(symmTensor);
|
||||||
|
}
|
||||||
|
#undef case_typeCodeToString
|
||||||
|
|
||||||
|
return word();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
160
src/OpenFOAM/expressions/traits/exprTraits.H
Normal file
160
src/OpenFOAM/expressions/traits/exprTraits.H
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / 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.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::exprTypeTraits
|
||||||
|
|
||||||
|
Description
|
||||||
|
Simple type identifiers for polymorphic expression values.
|
||||||
|
|
||||||
|
The definitions are similar to std::integral_constant in that they
|
||||||
|
provide value, value_type (and name).
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef expressions_exprTraits_H
|
||||||
|
#define expressions_exprTraits_H
|
||||||
|
|
||||||
|
// Regular field types
|
||||||
|
#include "label.H"
|
||||||
|
#include "scalar.H"
|
||||||
|
#include "vector.H"
|
||||||
|
#include "sphericalTensor.H"
|
||||||
|
#include "symmTensor.H"
|
||||||
|
#include "tensor.H"
|
||||||
|
#include "word.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace expressions
|
||||||
|
{
|
||||||
|
|
||||||
|
//- An enumeration of known and expected expression value types.
|
||||||
|
// Do not rely on the enumeration values for any direct coding.
|
||||||
|
//
|
||||||
|
// \note NONE use used when initializing types, whereas INVALID is used
|
||||||
|
// for unsupported types (never as a stored type).
|
||||||
|
// This avoids false positives when testing.
|
||||||
|
//
|
||||||
|
// Except NONE and INVALID, the enumerations will mostly not be used
|
||||||
|
// directly, but through exprTypeTraits :: value
|
||||||
|
|
||||||
|
enum class valueTypeCode : unsigned char
|
||||||
|
{
|
||||||
|
NONE = 0, //!< No type, or default initialized type
|
||||||
|
INVALID, //!< Invalid/unknown/error type
|
||||||
|
|
||||||
|
// Rank 0 types
|
||||||
|
type_bool, //!< Type is 'bool'
|
||||||
|
type_label, //!< Type is 'label'
|
||||||
|
type_scalar, //!< Type is 'scalar'
|
||||||
|
|
||||||
|
// Rank 1 types
|
||||||
|
type_vector, //!< Type is 'vector'
|
||||||
|
|
||||||
|
// Rank 2 types
|
||||||
|
type_sphericalTensor, //!< Type is 'sphericalTensor'
|
||||||
|
type_symmTensor, //!< Type is 'symmTensor'
|
||||||
|
type_tensor //!< Type is 'tensor'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Global Functions
|
||||||
|
|
||||||
|
//- From string to valueTypeCode (if any)
|
||||||
|
valueTypeCode valueTypeCodeOf(const word& dataTypeName);
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace expressions
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class exprTypeTraits Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
// Generic enumerated traits is INVALID (unknown)
|
||||||
|
template<class Type>
|
||||||
|
struct exprTypeTraits
|
||||||
|
{
|
||||||
|
typedef Type value_type;
|
||||||
|
static constexpr const char* const name = "";
|
||||||
|
static constexpr
|
||||||
|
::Foam::expressions::valueTypeCode value =
|
||||||
|
::Foam::expressions::valueTypeCode::INVALID;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#undef defineExprTypeTraits
|
||||||
|
#define defineExprTypeTraits(Type, Name) \
|
||||||
|
template<> \
|
||||||
|
struct exprTypeTraits<Type> \
|
||||||
|
{ \
|
||||||
|
typedef Type value_type; \
|
||||||
|
static constexpr const char* const name = #Name; \
|
||||||
|
static constexpr \
|
||||||
|
::Foam::expressions::valueTypeCode value = \
|
||||||
|
::Foam::expressions::valueTypeCode::type_##Name; \
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Define with "name" to match regular pTraits typeName
|
||||||
|
defineExprTypeTraits(bool, bool);
|
||||||
|
defineExprTypeTraits(::Foam::label, label);
|
||||||
|
defineExprTypeTraits(::Foam::scalar, scalar);
|
||||||
|
defineExprTypeTraits(::Foam::vector, vector);
|
||||||
|
defineExprTypeTraits(::Foam::tensor, tensor);
|
||||||
|
defineExprTypeTraits(::Foam::sphericalTensor, sphericalTensor);
|
||||||
|
defineExprTypeTraits(::Foam::symmTensor, symmTensor);
|
||||||
|
|
||||||
|
#undef defineExprTypeTraits
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
//- A word representation of a valueTypeCode. Empty for INVALID
|
||||||
|
word name(const expressions::valueTypeCode typeCode);
|
||||||
|
|
||||||
|
|
||||||
|
//- A word representation of a valueTypeCode. Empty for INVALID
|
||||||
|
template<>
|
||||||
|
struct nameOp<expressions::valueTypeCode>
|
||||||
|
{
|
||||||
|
word operator()(const expressions::valueTypeCode typeCode) const
|
||||||
|
{
|
||||||
|
return Foam::name(typeCode);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// No IOstream Operators for valueTypeCode at the moment (Nov 2021)
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -67,6 +67,7 @@ SourceFiles
|
|||||||
|
|
||||||
#include "patchExprFwd.H"
|
#include "patchExprFwd.H"
|
||||||
#include "fvExprDriver.H"
|
#include "fvExprDriver.H"
|
||||||
|
#include "exprFieldAssociation.H"
|
||||||
#include "Enum.H"
|
#include "Enum.H"
|
||||||
#include "volFields.H"
|
#include "volFields.H"
|
||||||
#include "surfaceFields.H"
|
#include "surfaceFields.H"
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2019 OpenCFD Ltd.
|
Copyright (C) 2019-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -36,10 +36,10 @@ inline Foam::label Foam::expressions::patchExpr::parseDriver::size
|
|||||||
{
|
{
|
||||||
case FieldAssociation::POINT_DATA :
|
case FieldAssociation::POINT_DATA :
|
||||||
return patch_.patch().nPoints();
|
return patch_.patch().nPoints();
|
||||||
break;
|
|
||||||
case FieldAssociation::SURFACE_DATA :
|
case FieldAssociation::FACE_DATA :
|
||||||
return patch_.patch().size();
|
return patch_.patch().size();
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2019 OpenCFD Ltd.
|
Copyright (C) 2019-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -52,16 +52,6 @@ union scanToken;
|
|||||||
//- Static debugging option
|
//- Static debugging option
|
||||||
extern int debug;
|
extern int debug;
|
||||||
|
|
||||||
|
|
||||||
//- The field association for patch expressions (mutually exclusive)
|
|
||||||
enum FieldAssociation : unsigned char
|
|
||||||
{
|
|
||||||
NO_DATA = 0, //!< No data
|
|
||||||
POINT_DATA = 1, //!< Point data
|
|
||||||
SURFACE_DATA = 2 //!< Surface data
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
} // End namespace patchExpr
|
} // End namespace patchExpr
|
||||||
@ -73,6 +63,7 @@ typedef patchExpr::parseDriver patchExprDriver;
|
|||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
} // End namespace expressions
|
} // End namespace expressions
|
||||||
} // End namespace Foam
|
} // End namespace Foam
|
||||||
|
|
||||||
|
|||||||
@ -84,6 +84,7 @@ SourceFiles
|
|||||||
|
|
||||||
#include "volumeExprFwd.H"
|
#include "volumeExprFwd.H"
|
||||||
#include "fvExprDriver.H"
|
#include "fvExprDriver.H"
|
||||||
|
#include "exprFieldAssociation.H"
|
||||||
#include "volFields.H"
|
#include "volFields.H"
|
||||||
#include "surfaceFields.H"
|
#include "surfaceFields.H"
|
||||||
#include "pointFields.H"
|
#include "pointFields.H"
|
||||||
@ -126,7 +127,7 @@ protected:
|
|||||||
bool isLogical_;
|
bool isLogical_;
|
||||||
|
|
||||||
//- A volume/surface/point field
|
//- A volume/surface/point field
|
||||||
enum FieldAssociation fieldGeoType_;
|
expressions::FieldAssociation fieldGeoType_;
|
||||||
|
|
||||||
//- The result dimensions
|
//- The result dimensions
|
||||||
dimensionSet resultDimension_;
|
dimensionSet resultDimension_;
|
||||||
@ -259,37 +260,37 @@ public:
|
|||||||
//- The result type-name.
|
//- The result type-name.
|
||||||
// Normally volScalarField, surfaceVectorField etc,
|
// Normally volScalarField, surfaceVectorField etc,
|
||||||
// but Scalar is modified for logical as volScalarField etc
|
// but Scalar is modified for logical as volScalarField etc
|
||||||
const word& resultType() const
|
const word& resultType() const noexcept
|
||||||
{
|
{
|
||||||
return resultType_;
|
return resultType_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- The geometric field association
|
//- The geometric field association
|
||||||
FieldAssociation fieldAssociation() const
|
FieldAssociation fieldAssociation() const noexcept
|
||||||
{
|
{
|
||||||
return fieldGeoType_;
|
return fieldGeoType_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- A logical (bool-like) field. Actually stored as a scalar.
|
//- A logical (bool-like) field. Actually stored as a scalar.
|
||||||
bool isLogical() const
|
bool isLogical() const noexcept
|
||||||
{
|
{
|
||||||
return isLogical_;
|
return isLogical_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- A volume field
|
//- A volume field
|
||||||
bool isVolumeData() const
|
bool isVolumeData() const noexcept
|
||||||
{
|
{
|
||||||
return fieldGeoType_ == FieldAssociation::VOLUME_DATA;
|
return fieldGeoType_ == FieldAssociation::VOLUME_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- A surface field
|
//- A surface field
|
||||||
bool isSurfaceData() const
|
bool isFaceData() const noexcept
|
||||||
{
|
{
|
||||||
return fieldGeoType_ == FieldAssociation::SURFACE_DATA;
|
return fieldGeoType_ == FieldAssociation::FACE_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- A point field
|
//- A point field
|
||||||
bool isPointData() const
|
bool isPointData() const noexcept
|
||||||
{
|
{
|
||||||
return fieldGeoType_ == FieldAssociation::POINT_DATA;
|
return fieldGeoType_ == FieldAssociation::POINT_DATA;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2019 OpenCFD Ltd.
|
Copyright (C) 2019-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -36,13 +36,13 @@ inline Foam::label Foam::expressions::volumeExpr::parseDriver::size
|
|||||||
{
|
{
|
||||||
case FieldAssociation::POINT_DATA :
|
case FieldAssociation::POINT_DATA :
|
||||||
return mesh_.nPoints();
|
return mesh_.nPoints();
|
||||||
break;
|
|
||||||
case FieldAssociation::SURFACE_DATA :
|
case FieldAssociation::FACE_DATA :
|
||||||
return mesh_.nInternalFaces();
|
return mesh_.nInternalFaces();
|
||||||
break;
|
|
||||||
case FieldAssociation::VOLUME_DATA :
|
case FieldAssociation::VOLUME_DATA :
|
||||||
return mesh_.nCells();
|
return mesh_.nCells();
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2019 OpenCFD Ltd.
|
Copyright (C) 2019-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -102,7 +102,7 @@ void Foam::expressions::volumeExpr::parseDriver::setResult
|
|||||||
// Characteristics
|
// Characteristics
|
||||||
resultType_ = pTraits<fieldType>::typeName;
|
resultType_ = pTraits<fieldType>::typeName;
|
||||||
isLogical_ = logical;
|
isLogical_ = logical;
|
||||||
fieldGeoType_ = SURFACE_DATA;
|
fieldGeoType_ = FACE_DATA;
|
||||||
|
|
||||||
// Always strip out dimensions?
|
// Always strip out dimensions?
|
||||||
if (!resultDimension_.dimensionless())
|
if (!resultDimension_.dimensionless())
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2019 OpenCFD Ltd.
|
Copyright (C) 2019-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -40,6 +40,7 @@ namespace expressions
|
|||||||
{
|
{
|
||||||
namespace volumeExpr
|
namespace volumeExpr
|
||||||
{
|
{
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Forward Declarations
|
// Forward Declarations
|
||||||
@ -51,16 +52,6 @@ union scanToken;
|
|||||||
//- Static debugging option
|
//- Static debugging option
|
||||||
extern int debug;
|
extern int debug;
|
||||||
|
|
||||||
//- The field association for volume expressions (mutually exclusive)
|
|
||||||
enum FieldAssociation : unsigned char
|
|
||||||
{
|
|
||||||
NO_DATA = 0, //!< No data
|
|
||||||
POINT_DATA = 1, //!< Point data
|
|
||||||
SURFACE_DATA = 2, //!< Surface data
|
|
||||||
VOLUME_DATA = 3 //!< Volume data
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
} // End namespace volumeExpr
|
} // End namespace volumeExpr
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2019-2020 OpenCFD Ltd.
|
Copyright (C) 2019-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -77,9 +77,9 @@ public:
|
|||||||
enum FieldAssociation
|
enum FieldAssociation
|
||||||
{
|
{
|
||||||
NO_DATA = 0, //!< No associated data
|
NO_DATA = 0, //!< No associated data
|
||||||
FACE_DATA = 0x1, //!< Data associated with faces
|
FACE_DATA = 1, //!< Data associated with faces
|
||||||
POINT_DATA = 0x2, //!< Data associated with points
|
POINT_DATA = 2, //!< Data associated with points
|
||||||
FACE_POINT_DATA = 0x3 //!< Data associated with faces and points
|
FACE_OR_POINT_DATA = 3 //!< Data associated with faces or points
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user