diff --git a/src/OpenFOAM/meshes/primitiveShapes/plane/plane.C b/src/OpenFOAM/meshes/primitiveShapes/plane/plane.C index a6d05b7f73..5f22c04431 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/plane/plane.C +++ b/src/OpenFOAM/meshes/primitiveShapes/plane/plane.C @@ -129,23 +129,29 @@ Foam::plane::plane(const vector& normalVector) } -Foam::plane::plane(const point& basePoint, const vector& normalVector) +Foam::plane::plane +( + const point& basePoint, + const vector& normalVector, + const bool normalise +) : unitVector_(normalVector), basePoint_(basePoint) { - scalar magUnitVector(mag(unitVector_)); + scalar magSqrUnitVector(magSqr(unitVector_)); - if (magUnitVector > VSMALL) - { - unitVector_ /= magUnitVector; - } - else + if (magSqrUnitVector < VSMALL) { FatalErrorInFunction << "plane normal has zero length. basePoint:" << basePoint_ << abort(FatalError); } + + if (normalise) + { + unitVector_ /= Foam::sqrt(magSqrUnitVector); + } } diff --git a/src/OpenFOAM/meshes/primitiveShapes/plane/plane.H b/src/OpenFOAM/meshes/primitiveShapes/plane/plane.H index 44564fa92a..6645fb1b95 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/plane/plane.H +++ b/src/OpenFOAM/meshes/primitiveShapes/plane/plane.H @@ -131,7 +131,12 @@ public: plane(const vector& normalVector); //- Construct from normal vector and point in plane - plane(const point& basePoint, const vector& normalVector); + plane + ( + const point& basePoint, + const vector& normalVector, + const bool normalise = true + ); //- Construct from three points in plane plane(const point& point1, const point& point2, const point& point3);