Commit 27981d42 authored by Mark Olesen's avatar Mark Olesen
Browse files

ENH: add clip() method to GeometricField

parent c6ee663e
...@@ -692,7 +692,7 @@ void Foam::multiphaseSystem::solve() ...@@ -692,7 +692,7 @@ void Foam::multiphaseSystem::solve()
phase.alphaRhoPhi() = fvc::interpolate(phase.rho())*phase.alphaPhi(); phase.alphaRhoPhi() = fvc::interpolate(phase.rho())*phase.alphaPhi();
// Ensure the phase-fractions are bounded // Ensure the phase-fractions are bounded
phase.maxMin(0, 1); phase.clip(0, 1);
} }
calcAlphas(); calcAlphas();
......
...@@ -403,7 +403,7 @@ void Foam::twoPhaseSystem::solve() ...@@ -403,7 +403,7 @@ void Foam::twoPhaseSystem::solve()
<< endl; << endl;
// Ensure the phase-fractions are bounded // Ensure the phase-fractions are bounded
alpha1.maxMin(0, 1); alpha1.clip(0, 1);
// Update the phase-fraction of the other phase // Update the phase-fraction of the other phase
alpha2 = scalar(1) - alpha1; alpha2 = scalar(1) - alpha1;
......
...@@ -1095,6 +1095,17 @@ void Foam::GeometricField<Type, PatchField, GeoMesh>::replace ...@@ -1095,6 +1095,17 @@ void Foam::GeometricField<Type, PatchField, GeoMesh>::replace
} }
template<class Type, template<class> class PatchField, class GeoMesh>
void Foam::GeometricField<Type, PatchField, GeoMesh>::min
(
const dimensioned<Type>& dt
)
{
Foam::min(primitiveFieldRef(), primitiveField(), dt.value());
Foam::min(boundaryFieldRef(), boundaryField(), dt.value());
}
template<class Type, template<class> class PatchField, class GeoMesh> template<class Type, template<class> class PatchField, class GeoMesh>
void Foam::GeometricField<Type, PatchField, GeoMesh>::max void Foam::GeometricField<Type, PatchField, GeoMesh>::max
( (
...@@ -1107,27 +1118,38 @@ void Foam::GeometricField<Type, PatchField, GeoMesh>::max ...@@ -1107,27 +1118,38 @@ void Foam::GeometricField<Type, PatchField, GeoMesh>::max
template<class Type, template<class> class PatchField, class GeoMesh> template<class Type, template<class> class PatchField, class GeoMesh>
void Foam::GeometricField<Type, PatchField, GeoMesh>::min void Foam::GeometricField<Type, PatchField, GeoMesh>::clip
( (
const dimensioned<Type>& dt const dimensioned<MinMax<Type>>& range
) )
{ {
Foam::min(primitiveFieldRef(), primitiveField(), dt.value()); Foam::clip(primitiveFieldRef(), primitiveField(), range.value());
Foam::min(boundaryFieldRef(), boundaryField(), dt.value()); Foam::clip(boundaryFieldRef(), boundaryField(), range.value());
}
template<class Type, template<class> class PatchField, class GeoMesh>
void Foam::GeometricField<Type, PatchField, GeoMesh>::clip
(
const dimensioned<Type>& minVal,
const dimensioned<Type>& maxVal
)
{
MinMax<Type> range(minVal.value(), maxVal.value());
Foam::clip(primitiveFieldRef(), primitiveField(), range);
Foam::clip(boundaryFieldRef(), boundaryField(), range);
} }
template<class Type, template<class> class PatchField, class GeoMesh> template<class Type, template<class> class PatchField, class GeoMesh>
void Foam::GeometricField<Type, PatchField, GeoMesh>::maxMin void Foam::GeometricField<Type, PatchField, GeoMesh>::maxMin
( (
const dimensioned<Type>& minDt, const dimensioned<Type>& minVal,
const dimensioned<Type>& maxDt const dimensioned<Type>& maxVal
) )
{ {
Foam::max(primitiveFieldRef(), primitiveField(), minDt.value()); this->clip(minVal, maxVal);
Foam::max(boundaryFieldRef(), boundaryField(), minDt.value());
Foam::min(primitiveFieldRef(), primitiveField(), maxDt.value());
Foam::min(boundaryFieldRef(), boundaryField(), maxDt.value());
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd. \\/ M anipulation | Copyright (C) 2015-2019 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
...@@ -598,12 +598,24 @@ public: ...@@ -598,12 +598,24 @@ public:
// This sets the \em floor on the field values // This sets the \em floor on the field values
void max(const dimensioned<Type>& dt); void max(const dimensioned<Type>& dt);
void maxMin //- Clip the field to be bounded within the specified range
void clip(const dimensioned<MinMax<Type>>& range);
//- Clip the field to be bounded within the specified range
void clip
( (
const dimensioned<Type>& minDt, const dimensioned<Type>& minVal,
const dimensioned<Type>& maxDt const dimensioned<Type>& maxVal
); );
//- Deprecated(2019-01) identical to clip()
// \deprecated(2019-01) identical to clip()
void maxMin
(
const dimensioned<Type>& minVal,
const dimensioned<Type>& maxVal
) FOAM_DEPRECATED_FOR(2019-01, "clip() method");
// Member Operators // Member Operators
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment