From 85fa6c2649535b78b502fa35ca62b77905b028f3 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Thu, 25 Feb 2016 15:07:14 +0000 Subject: [PATCH] Field: Simplified tmp reuse and cleanup --- .../fields/Fields/Field/FieldFunctions.C | 29 +++--- .../fields/Fields/Field/FieldFunctionsM.C | 26 +++--- .../fields/Fields/Field/FieldReuseFunctions.H | 90 ++++++------------- .../fields/Fields/scalarField/scalarField.C | 8 +- .../Fields/symmTensorField/symmTensorField.C | 4 +- .../symmTransformField/symmTransformField.C | 12 +-- .../fields/Fields/tensorField/tensorField.C | 4 +- .../Fields/transformField/transformField.C | 8 +- .../transformField/transformFieldTemplates.C | 12 +-- .../cfdTools/general/MRF/MRFZoneList.C | 7 +- 10 files changed, 82 insertions(+), 118 deletions(-) diff --git a/src/OpenFOAM/fields/Fields/Field/FieldFunctions.C b/src/OpenFOAM/fields/Fields/Field/FieldFunctions.C index f927266195..d2b3e2d6b1 100644 --- a/src/OpenFOAM/fields/Fields/Field/FieldFunctions.C +++ b/src/OpenFOAM/fields/Fields/Field/FieldFunctions.C @@ -102,7 +102,7 @@ pow typedef typename powProduct::type powProductType; tmp> tRes = reuseTmp::New(tf); pow(tRes.ref(), tf()); - reuseTmp::clear(tf); + tf.clear(); return tRes; } @@ -139,7 +139,7 @@ sqr(const tmp>& tf) tmp> tRes = reuseTmp::New(tf); sqr(tRes.ref(), tf()); - reuseTmp::clear(tf); + tf.clear(); return tRes; } @@ -163,7 +163,7 @@ tmp> magSqr(const tmp>& tf) { tmp> tRes = reuseTmp::New(tf); magSqr(tRes.ref(), tf()); - reuseTmp::clear(tf); + tf.clear(); return tRes; } @@ -187,7 +187,7 @@ tmp> mag(const tmp>& tf) { tmp> tRes = reuseTmp::New(tf); mag(tRes.ref(), tf()); - reuseTmp::clear(tf); + tf.clear(); return tRes; } @@ -214,7 +214,7 @@ tmp::cmptType>> cmptMax(const tmp>& tf) typedef typename Field::cmptType cmptType; tmp> tRes = reuseTmp::New(tf); cmptMax(tRes.ref(), tf()); - reuseTmp::clear(tf); + tf.clear(); return tRes; } @@ -241,7 +241,7 @@ tmp::cmptType>> cmptMin(const tmp>& tf) typedef typename Field::cmptType cmptType; tmp> tRes = reuseTmp::New(tf); cmptMin(tRes.ref(), tf()); - reuseTmp::clear(tf); + tf.clear(); return tRes; } @@ -268,7 +268,7 @@ tmp::cmptType>> cmptAv(const tmp>& tf) typedef typename Field::cmptType cmptType; tmp> tRes = reuseTmp::New(tf); cmptAv(tRes.ref(), tf()); - reuseTmp::clear(tf); + tf.clear(); return tRes; } @@ -290,9 +290,9 @@ tmp> cmptMag(const UList& f) template tmp> cmptMag(const tmp>& tf) { - tmp> tRes = reuseTmp::New(tf); + tmp> tRes = New(tf); cmptMag(tRes.ref(), tf()); - reuseTmp::clear(tf); + tf.clear(); return tRes; } @@ -664,7 +664,7 @@ operator Op(const UList& f1, const tmp>& tf2) \ typedef typename product::type productType; \ tmp> tRes = reuseTmp::New(tf2); \ OpFunc(tRes.ref(), f1, tf2()); \ - reuseTmp::clear(tf2); \ + tf2.clear(); \ return tRes; \ } \ \ @@ -675,7 +675,7 @@ operator Op(const tmp>& tf1, const UList& f2) \ typedef typename product::type productType; \ tmp> tRes = reuseTmp::New(tf1); \ OpFunc(tRes.ref(), tf1(), f2); \ - reuseTmp::clear(tf1); \ + tf1.clear(); \ return tRes; \ } \ \ @@ -687,7 +687,8 @@ operator Op(const tmp>& tf1, const tmp>& tf2) \ tmp> tRes = \ reuseTmpTmp::New(tf1, tf2); \ OpFunc(tRes.ref(), tf1(), tf2()); \ - reuseTmpTmp::clear(tf1, tf2); \ + tf1.clear(); \ + tf2.clear(); \ return tRes; \ } \ \ @@ -725,7 +726,7 @@ operator Op \ typedef typename product::type productType; \ tmp> tRes = reuseTmp::New(tf1); \ OpFunc(tRes.ref(), tf1(), static_cast(vs)); \ - reuseTmp::clear(tf1); \ + tf1.clear(); \ return tRes; \ } \ \ @@ -762,7 +763,7 @@ operator Op \ typedef typename product::type productType; \ tmp> tRes = reuseTmp::New(tf1); \ OpFunc(tRes.ref(), static_cast(vs), tf1()); \ - reuseTmp::clear(tf1); \ + tf1.clear(); \ return tRes; \ } diff --git a/src/OpenFOAM/fields/Fields/Field/FieldFunctionsM.C b/src/OpenFOAM/fields/Fields/Field/FieldFunctionsM.C index c4a7ff6c03..f286d319f0 100644 --- a/src/OpenFOAM/fields/Fields/Field/FieldFunctionsM.C +++ b/src/OpenFOAM/fields/Fields/Field/FieldFunctionsM.C @@ -49,7 +49,7 @@ tmp> Func(const tmp>& tf) \ { \ tmp> tRes = reuseTmp::New(tf); \ Func(tRes.ref(), tf()); \ - reuseTmp::clear(tf); \ + tf.clear(); \ return tRes; \ } @@ -77,7 +77,7 @@ tmp> operator Op(const tmp>& tf) \ { \ tmp> tRes = reuseTmp::New(tf); \ OpFunc(tRes.ref(), tf()); \ - reuseTmp::clear(tf); \ + tf.clear(); \ return tRes; \ } @@ -121,7 +121,7 @@ tmp> Func \ { \ tmp> tRes = reuseTmp::New(tf2); \ Func(tRes.ref(), f1, tf2()); \ - reuseTmp::clear(tf2); \ + tf2.clear(); \ return tRes; \ } \ \ @@ -134,7 +134,7 @@ tmp> Func \ { \ tmp> tRes = reuseTmp::New(tf1); \ Func(tRes.ref(), tf1(), f2); \ - reuseTmp::clear(tf1); \ + tf1.clear(); \ return tRes; \ } \ \ @@ -148,7 +148,8 @@ tmp> Func \ tmp> tRes = \ reuseTmpTmp::New(tf1, tf2); \ Func(tRes.ref(), tf1(), tf2()); \ - reuseTmpTmp::clear(tf1, tf2); \ + tf1.clear(); \ + tf2.clear(); \ return tRes; \ } @@ -192,7 +193,7 @@ tmp> Func \ { \ tmp> tRes = reuseTmp::New(tf2); \ Func(tRes.ref(), s1, tf2()); \ - reuseTmp::clear(tf2); \ + tf2.clear(); \ return tRes; \ } @@ -234,7 +235,7 @@ tmp> Func \ { \ tmp> tRes = reuseTmp::New(tf1); \ Func(tRes.ref(), tf1(), s2); \ - reuseTmp::clear(tf1); \ + tf1.clear(); \ return tRes; \ } @@ -280,7 +281,7 @@ tmp> operator Op \ { \ tmp> tRes = reuseTmp::New(tf2); \ OpFunc(tRes.ref(), f1, tf2()); \ - reuseTmp::clear(tf2); \ + tf2.clear(); \ return tRes; \ } \ \ @@ -293,7 +294,7 @@ tmp> operator Op \ { \ tmp> tRes = reuseTmp::New(tf1); \ OpFunc(tRes.ref(), tf1(), f2); \ - reuseTmp::clear(tf1); \ + tf1.clear(); \ return tRes; \ } \ \ @@ -307,7 +308,8 @@ tmp> operator Op \ tmp> tRes = \ reuseTmpTmp::New(tf1, tf2); \ OpFunc(tRes.ref(), tf1(), tf2()); \ - reuseTmpTmp::clear(tf1, tf2); \ + tf1.clear(); \ + tf2.clear(); \ return tRes; \ } @@ -348,7 +350,7 @@ tmp> operator Op \ { \ tmp> tRes = reuseTmp::New(tf2); \ OpFunc(tRes.ref(), s1, tf2()); \ - reuseTmp::clear(tf2); \ + tf2.clear(); \ return tRes; \ } @@ -387,7 +389,7 @@ tmp> operator Op \ { \ tmp> tRes = reuseTmp::New(tf1); \ OpFunc(tRes.ref(), tf1(), s2); \ - reuseTmp::clear(tf1); \ + tf1.clear(); \ return tRes; \ } diff --git a/src/OpenFOAM/fields/Fields/Field/FieldReuseFunctions.H b/src/OpenFOAM/fields/Fields/Field/FieldReuseFunctions.H index 4eedccdc43..fac9e9a51c 100644 --- a/src/OpenFOAM/fields/Fields/Field/FieldReuseFunctions.H +++ b/src/OpenFOAM/fields/Fields/Field/FieldReuseFunctions.H @@ -33,6 +33,31 @@ namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +template +tmp> New +( + const tmp>& tf1, + const bool initRet = false +) +{ + if (tf1.isTmp()) + { + return tf1; + } + else + { + tmp> rtf(new Field(tf1().size())); + + if (initRet) + { + rtf.ref() = tf1(); + } + + return rtf; + } +} + + template class reuseTmp { @@ -42,11 +67,6 @@ public: { return tmp>(new Field(tf1().size())); } - - static void clear(const tmp>& tf1) - { - tf1.clear(); - } }; @@ -55,11 +75,7 @@ class reuseTmp { public: - static tmp> New - ( - const tmp>& tf1, - const bool initRet = false - ) + static tmp> New(const tmp>& tf1) { if (tf1.isTmp()) { @@ -67,21 +83,9 @@ public: } else { - tmp> rtf(new Field(tf1().size())); - - if (initRet) - { - rtf.ref() = tf1(); - } - - return rtf; + return tmp>(new Field(tf1().size())); } } - - static void clear(const tmp>& tf1) - { - tf1.clear(); - } }; @@ -98,16 +102,6 @@ public: { return tmp>(new Field(tf1().size())); } - - static void clear - ( - const tmp>& tf1, - const tmp>& tf2 - ) - { - tf1.clear(); - tf2.clear(); - } }; @@ -131,16 +125,6 @@ public: return tmp>(new Field(tf1().size())); } } - - static void clear - ( - const tmp>& tf1, - const tmp>& tf2 - ) - { - tf1.clear(); - tf2.clear(); - } }; @@ -164,16 +148,6 @@ public: return tmp>(new Field(tf1().size())); } } - - static void clear - ( - const tmp>& tf1, - const tmp>& tf2 - ) - { - tf1.clear(); - tf2.clear(); - } }; @@ -201,16 +175,6 @@ public: return tmp>(new Field(tf1().size())); } } - - static void clear - ( - const tmp>& tf1, - const tmp>& tf2 - ) - { - tf1.clear(); - tf2.clear(); - } }; diff --git a/src/OpenFOAM/fields/Fields/scalarField/scalarField.C b/src/OpenFOAM/fields/Fields/scalarField/scalarField.C index 875e610cb7..0aac998c8d 100644 --- a/src/OpenFOAM/fields/Fields/scalarField/scalarField.C +++ b/src/OpenFOAM/fields/Fields/scalarField/scalarField.C @@ -80,9 +80,9 @@ tmp stabilise(const UList& sf, const scalar s) tmp stabilise(const tmp& tsf, const scalar s) { - tmp tRes = reuseTmp::New(tsf); + tmp tRes = New(tsf); stabilise(tRes.ref(), tsf(), s); - reuseTmp::clear(tsf); + tsf.clear(); return tRes; } @@ -179,9 +179,9 @@ tmp func(const int n, const UList& sf) \ \ tmp func(const int n, const tmp& tsf) \ { \ - tmp tRes = reuseTmp::New(tsf); \ + tmp tRes = New(tsf); \ func(tRes.ref(), n, tsf()); \ - reuseTmp::clear(tsf); \ + tsf.clear(); \ return tRes; \ } diff --git a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C index 6304130a71..c50ab3daa4 100644 --- a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C +++ b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C @@ -114,9 +114,9 @@ tmp inv(const UList& tf) tmp inv(const tmp& tf) { - tmp tRes = reuseTmp::New(tf); + tmp tRes = New(tf); inv(tRes.ref(), tf()); - reuseTmp::clear(tf); + tf.clear(); return tRes; } diff --git a/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C b/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C index 1b6c52bb14..e1b19cf8df 100644 --- a/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C +++ b/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C @@ -75,9 +75,9 @@ tmp> transform const tmp>& ttf ) { - tmp> tranf = reuseTmp::New(ttf); + tmp> tranf = New(ttf); transform(tranf.ref(), trf, ttf()); - reuseTmp::clear(ttf); + ttf.clear(); return tranf; } @@ -103,9 +103,9 @@ tmp> transform const tmp>& ttf ) { - tmp> tranf = reuseTmp::New(ttf); + tmp> tranf = New(ttf); transform(tranf.ref(), ttrf(), ttf()); - reuseTmp::clear(ttf); + ttf.clear(); ttrf.clear(); return tranf; } @@ -143,9 +143,9 @@ tmp> transform const tmp>& ttf ) { - tmp> tranf = reuseTmp::New(ttf); + tmp> tranf = New(ttf); transform(tranf.ref(), t, ttf()); - reuseTmp::clear(ttf); + ttf.clear(); return tranf; } diff --git a/src/OpenFOAM/fields/Fields/tensorField/tensorField.C b/src/OpenFOAM/fields/Fields/tensorField/tensorField.C index a85f6052ea..45ea27e12c 100644 --- a/src/OpenFOAM/fields/Fields/tensorField/tensorField.C +++ b/src/OpenFOAM/fields/Fields/tensorField/tensorField.C @@ -112,9 +112,9 @@ tmp inv(const UList& tf) tmp inv(const tmp& tf) { - tmp tRes = reuseTmp::New(tf); + tmp tRes = New(tf); inv(tRes.ref(), tf()); - reuseTmp::clear(tf); + tf.clear(); return tRes; } diff --git a/src/OpenFOAM/fields/Fields/transformField/transformField.C b/src/OpenFOAM/fields/Fields/transformField/transformField.C index d548c90260..4d35792d73 100644 --- a/src/OpenFOAM/fields/Fields/transformField/transformField.C +++ b/src/OpenFOAM/fields/Fields/transformField/transformField.C @@ -59,9 +59,9 @@ Foam::tmp Foam::transform const tmp& ttf ) { - tmp tranf = reuseTmp::New(ttf); + tmp tranf = New(ttf); transform(tranf.ref(), q, ttf()); - reuseTmp::clear(ttf); + ttf.clear(); return tranf; } @@ -117,9 +117,9 @@ Foam::tmp Foam::transform const tmp& ttf ) { - tmp tranf = reuseTmp::New(ttf); + tmp tranf = New(ttf); transform(tranf.ref(), tr, ttf()); - reuseTmp::clear(ttf); + ttf.clear(); return tranf; } diff --git a/src/OpenFOAM/fields/Fields/transformField/transformFieldTemplates.C b/src/OpenFOAM/fields/Fields/transformField/transformFieldTemplates.C index 985054bede..7e87d7af92 100644 --- a/src/OpenFOAM/fields/Fields/transformField/transformFieldTemplates.C +++ b/src/OpenFOAM/fields/Fields/transformField/transformFieldTemplates.C @@ -75,9 +75,9 @@ tmp> transform const tmp>& ttf ) { - tmp> tranf = reuseTmp::New(ttf); + tmp> tranf = New(ttf); transform(tranf.ref(), trf, ttf()); - reuseTmp::clear(ttf); + ttf.clear(); return tranf; } @@ -103,9 +103,9 @@ tmp> transform const tmp>& ttf ) { - tmp> tranf = reuseTmp::New(ttf); + tmp> tranf = New(ttf); transform(tranf.ref(), ttrf(), ttf()); - reuseTmp::clear(ttf); + ttf.clear(); ttrf.clear(); return tranf; } @@ -143,9 +143,9 @@ tmp> transform const tmp>& ttf ) { - tmp> tranf = reuseTmp::New(ttf); + tmp> tranf = New(ttf); transform(tranf.ref(), t, ttf()); - reuseTmp::clear(ttf); + ttf.clear(); return tranf; } diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.C b/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.C index a4b099b6cb..5e31ac1269 100644 --- a/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.C +++ b/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.C @@ -290,17 +290,14 @@ Foam::MRFZoneList::relative { if (size()) { - tmp> rphi - ( - reuseTmp::New(tphi, true) - ); + tmp> rphi(New(tphi, true)); forAll(*this, i) { operator[](i).makeRelative(rphi.ref(), patchi); } - reuseTmp::clear(tphi); + tphi.clear(); return rphi; }