mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: add VectorSpace component fill() method
- as per std::array and FixedList STYLE: rename Scalar.[CH] -> scalarImpl.[CH] (these are internal files) - added inclusion guards to protect against bad use
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
1
src/OpenFOAM/compat/Scalar.C
Normal file
1
src/OpenFOAM/compat/Scalar.C
Normal file
@ -0,0 +1 @@
|
||||
#warning File removed - left for old dependency check only
|
||||
1
src/OpenFOAM/compat/Scalar.H
Normal file
1
src/OpenFOAM/compat/Scalar.H
Normal file
@ -0,0 +1 @@
|
||||
#warning File removed - left for old dependency check only
|
||||
@ -31,12 +31,12 @@ License
|
||||
#include "parsing.H"
|
||||
#include "IOstreams.H"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <cstdlib> // For string -> floating point conversions
|
||||
#include <sstream>
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// 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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -31,11 +31,12 @@ License
|
||||
#include "parsing.H"
|
||||
#include "IOstreams.H"
|
||||
|
||||
#include <cstdlib> // For string -> floating point conversions
|
||||
#include <sstream>
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// 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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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<Form, Cmpt, Ncmpts>::replace
|
||||
}
|
||||
|
||||
|
||||
template<class Form, class Cmpt, Foam::direction Ncmpts>
|
||||
inline void Foam::VectorSpace<Form, Cmpt, Ncmpts>::fill(const Cmpt& s)
|
||||
{
|
||||
VectorSpaceOps<Ncmpts,0>::eqOpS(*this, s, eqOp<Cmpt>());
|
||||
}
|
||||
|
||||
|
||||
template<class Form, class Cmpt, Foam::direction Ncmpts>
|
||||
inline Form Foam::VectorSpace<Form, Cmpt, Ncmpts>::uniform(const Cmpt& s)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user