ENH: additional in-place clamp_min(), clamp_max() field methods

- these already existed for a single value, but now handle the full
  field. This is more memory-friendly.

      fld.clamp_min(lower);  OLD: fld = max(fld, lower);
      fld.clamp_max(upper);  OLD: fld = min(fld, upper);
This commit is contained in:
Mark Olesen
2025-04-02 11:19:04 +02:00
parent 80d7fe97f0
commit 6c20df2808
18 changed files with 258 additions and 103 deletions

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2019-2023 OpenCFD Ltd.
Copyright (C) 2019-2025 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -175,6 +175,36 @@ int main(int argc, char *argv[])
<< nl;
}
{
scalarField field1(10);
scalarField field2(10);
scalarField work;
Random rnd(4567);
for (scalar& val : field1)
{
val = rnd.position(scalar(-0.2), scalar(1.2));
}
for (scalar& val : field2)
{
val = rnd.position(scalar(-0.1), scalar(1.1));
}
Info<< nl
<< "field1: " << flatOutput(field1) << nl
<< "field2: " << flatOutput(field2) << nl;
work = field1;
work.clamp_min(field2);
Info<< "clamp_min: " << flatOutput(work) << nl;
work = field1;
work.clamp_max(field2);
Info<< "clamp_max: " << flatOutput(work) << nl;
}
Info<< nl << "\nDone\n" << endl;
return 0;
}