diff --git a/src/OpenFOAM/primitives/Scalar/Scalar.H b/src/OpenFOAM/primitives/Scalar/Scalar.H index 4d8f29ff54b8bffc2b9dbec835de118bd570bdab..d3cf2beca4e22e9b78890787ba9a2f2f9deb0665 100644 --- a/src/OpenFOAM/primitives/Scalar/Scalar.H +++ b/src/OpenFOAM/primitives/Scalar/Scalar.H @@ -302,11 +302,18 @@ inline Scalar cmptAv(const Scalar s) } +inline Scalar cmptSqr(const Scalar s) +{ + return sqr(s); +} + + inline Scalar cmptMag(const Scalar s) { return mag(s); } + inline Scalar sqrtSumSqr(const Scalar a, const Scalar b) { Scalar maga = mag(a); @@ -323,7 +330,7 @@ inline Scalar sqrtSumSqr(const Scalar a, const Scalar b) } -// Stabilisation around zero for division +//- Stabilisation around zero for division inline Scalar stabilise(const Scalar s, const Scalar small) { if (s >= 0) diff --git a/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H b/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H index f90adbb0ff27888fa99f97e17a17d2a249123918..1a9f5de226dbb5397474836533b16bbad8bef98f 100644 --- a/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H +++ b/src/OpenFOAM/primitives/VectorSpace/VectorSpaceI.H @@ -537,6 +537,18 @@ inline Cmpt cmptProduct } +template<class Form, class Cmpt, direction Ncmpts> +inline Form cmptSqr +( + const VectorSpace<Form, Cmpt, Ncmpts>& vs +) +{ + Form v; + VectorSpaceOps<Ncmpts,0>::eqOp(v, vs, eqSqrOp<Cmpt>()); + return v; +} + + template<class Form, class Cmpt, direction Ncmpts> inline Form cmptMag ( diff --git a/src/OpenFOAM/primitives/ops/ops.H b/src/OpenFOAM/primitives/ops/ops.H index 0db26d0026109fe49f2e008d85aa96de1c3c88a8..664947870ec9efdaa9244734ac9d440c5cec2e7f 100644 --- a/src/OpenFOAM/primitives/ops/ops.H +++ b/src/OpenFOAM/primitives/ops/ops.H @@ -72,6 +72,7 @@ EqOp(plusEq, x += y) EqOp(minusEq, x -= y) EqOp(multiplyEq, x *= y) EqOp(divideEq, x /= y) +EqOp(eqSqr, x = sqr(y)) EqOp(eqMag, x = mag(y)) EqOp(plusEqMagSqr, x += magSqr(y)) EqOp(maxEq, x = max(x, y))