diff --git a/applications/test/vectorTools/Test-vectorTools.C b/applications/test/vectorTools/Test-vectorTools.C index 85d18ed989..24f17b5660 100644 --- a/applications/test/vectorTools/Test-vectorTools.C +++ b/applications/test/vectorTools/Test-vectorTools.C @@ -31,8 +31,9 @@ void test(const vector& a, const vector& b, const scalar tolerance) int main() { - vector a(1.0, 1.0, 1.0); - vector b(2.0, 2.0, 2.0); + vector a(vector::uniform(1)); + vector b; + b.fill(2); test(a, b, 0.0); test(a, b, VSMALL); @@ -67,5 +68,9 @@ int main() test(a, b, 1e-3); test(a, b, 1e-1); + Info<< "\nEnd\n" << nl; + return 0; } + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/compat/Scalar.C b/src/OpenFOAM/compat/Scalar.C new file mode 100644 index 0000000000..7cec1b4541 --- /dev/null +++ b/src/OpenFOAM/compat/Scalar.C @@ -0,0 +1 @@ +#warning File removed - left for old dependency check only diff --git a/src/OpenFOAM/compat/Scalar.H b/src/OpenFOAM/compat/Scalar.H new file mode 100644 index 0000000000..7cec1b4541 --- /dev/null +++ b/src/OpenFOAM/compat/Scalar.H @@ -0,0 +1 @@ +#warning File removed - left for old dependency check only diff --git a/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.C b/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.C index a50db2bad3..9ce62af909 100644 --- a/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.C +++ b/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.C @@ -31,12 +31,12 @@ License #include "parsing.H" #include "IOstreams.H" -#include +#include // For string -> floating point conversions #include // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Scalar.C is used for template-like substitution +// scalarImpl.C is used for template-like substitution (but using macros) #define Scalar doubleScalar #define ScalarVGREAT doubleScalarVGREAT @@ -47,7 +47,9 @@ License // Convert using larger representation to properly capture underflow #define ScalarConvert ::strtold -#include "Scalar.C" +#define Foam_use_scalarImpl_code +#include "scalarImpl.C" +#undef Foam_use_scalarImpl_code #undef Scalar #undef ScalarVGREAT diff --git a/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.H b/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.H index fba14df589..1ecae4dbac 100644 --- a/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.H +++ b/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.H @@ -144,7 +144,11 @@ inline Scalar func(const Scalar s) \ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#include "Scalar.H" +// scalarImpl.H is used for template-like substitution (but using macros) + +#define Foam_use_scalarImpl_header +#include "scalarImpl.H" +#undef Foam_use_scalarImpl_header #undef Scalar #undef ScalarVGREAT diff --git a/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.C b/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.C index 8f36aee0da..4bf5d83478 100644 --- a/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.C +++ b/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.C @@ -31,11 +31,12 @@ License #include "parsing.H" #include "IOstreams.H" +#include // For string -> floating point conversions #include // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Scalar.C is used for template-like substitution +// scalarImpl.C is used for template-like substitution (but using macros) #define Scalar floatScalar #define ScalarVGREAT floatScalarVGREAT @@ -46,7 +47,9 @@ License // Convert using larger representation to properly capture underflow #define ScalarConvert ::strtod -#include "Scalar.C" +#define Foam_use_scalarImpl_code +#include "scalarImpl.C" +#undef Foam_use_scalarImpl_code #undef Scalar #undef ScalarVGREAT diff --git a/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H b/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H index 8d041a0111..d8024a2315 100644 --- a/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H +++ b/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H @@ -157,7 +157,11 @@ inline Scalar func(const Scalar s) \ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#include "Scalar.H" +// scalarImpl.H is used for template-like substitution (but using macros) + +#define Foam_use_scalarImpl_header +#include "scalarImpl.H" +#undef Foam_use_scalarImpl_header #undef Scalar #undef ScalarVGREAT diff --git a/src/OpenFOAM/primitives/Scalar/Scalar.C b/src/OpenFOAM/primitives/Scalar/scalarImpl.C similarity index 97% rename from src/OpenFOAM/primitives/Scalar/Scalar.C rename to src/OpenFOAM/primitives/Scalar/scalarImpl.C index bba2f8fd12..37ebc9e840 100644 --- a/src/OpenFOAM/primitives/Scalar/Scalar.C +++ b/src/OpenFOAM/primitives/Scalar/scalarImpl.C @@ -26,6 +26,11 @@ License \*---------------------------------------------------------------------------*/ +// Could also check if 'Scalar' is defined... +#ifndef Foam_use_scalarImpl_code +#error "scalarImpl.C" is only to be included internally +#endif + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam diff --git a/src/OpenFOAM/primitives/Scalar/Scalar.H b/src/OpenFOAM/primitives/Scalar/scalarImpl.H similarity index 98% rename from src/OpenFOAM/primitives/Scalar/Scalar.H rename to src/OpenFOAM/primitives/Scalar/scalarImpl.H index fbd89c4308..2517aa0aef 100644 --- a/src/OpenFOAM/primitives/Scalar/Scalar.H +++ b/src/OpenFOAM/primitives/Scalar/scalarImpl.H @@ -51,10 +51,16 @@ Note \endcode SourceFiles - Scalar.C + scalarImpl.C \*---------------------------------------------------------------------------*/ +// Could also check if 'Scalar' is defined... +#ifndef Foam_use_scalarImpl_header +#error "scalarImpl.H" is only to be included internally +#endif + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam diff --git a/src/OpenFOAM/primitives/VectorSpace/VectorSpace.H b/src/OpenFOAM/primitives/VectorSpace/VectorSpace.H index 814769e795..048f49bb40 100644 --- a/src/OpenFOAM/primitives/VectorSpace/VectorSpace.H +++ b/src/OpenFOAM/primitives/VectorSpace/VectorSpace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2019-2021 OpenCFD Ltd. + Copyright (C) 2019-2025 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -191,6 +191,9 @@ public: //- Return pointer to the first data element inline Cmpt* data() noexcept; + //- Assign all components to given value + inline void fill(const Cmpt& s); + //- Return a VectorSpace with all elements = s inline static Form uniform(const Cmpt& s); diff --git a/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H b/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H index 812b369986..7f8bbd46dc 100644 --- a/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H +++ b/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2019-2022 OpenCFD Ltd. + Copyright (C) 2019-2025 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -160,6 +160,13 @@ inline void Foam::VectorSpace::replace } +template +inline void Foam::VectorSpace::fill(const Cmpt& s) +{ + VectorSpaceOps::eqOpS(*this, s, eqOp()); +} + + template inline Form Foam::VectorSpace::uniform(const Cmpt& s) {