ENH: UniformList to wrap a single value into a list-like container

- refactor UniformField accordingly
This commit is contained in:
Mark Olesen
2020-09-11 13:18:43 +02:00
parent 0d08942bf3
commit bf3b4fabb4
4 changed files with 201 additions and 58 deletions

View File

@ -1,15 +1,73 @@
#include "UniformField.H"
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
Application
Test-UniformField
Description
Test uniform list/field
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "vector.H"
#include "IOstreams.H"
#include "UniformField.H"
using namespace Foam;
int main()
template<class T>
void printInfo(const UniformList<T>& list, const label i=0)
{
UniformField<scalar> uf1(13.1);
UniformField<vector> uf2(vector(1, 2, 3));
Info<< nl
<< "value: " << list.value() << nl
<< "cast: " << static_cast<const T&>(list) << nl
<< "[" << i << "] = " << list[i] << nl;
}
Info<< "uf1 = " << uf1[22] << "; uf2 = " << uf2[1002] << endl;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Main program:
int main(int argc, char *argv[])
{
{
UniformField<scalar> fld(3.14159);
printInfo(fld, -100);
// Change value
fld.value() *= 0.5;
Info<< nl << "/= 2 " << nl;
printInfo(fld, -100);
}
{
UniformField<vector> fld(vector(1, 2, -1));
printInfo(fld);
// Change value
fld.value() *= 0.5;
Info<< nl << "/= 2 " << nl;
printInfo(fld);
}
Info<< "\nEnd\n" << endl;
return 0;
}
// ************************************************************************* //