From ac7a88034e130b5b220aa1efd732074312cdc12d Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Thu, 10 Jan 2019 17:06:04 +0100 Subject: [PATCH] STYLE: modernize code for concrete Fields (#1160) - use forwarding tmp factory methods, auto types --- .../DimensionedScalarField.C | 171 ++++++++---------- .../fields/Fields/scalarField/scalarField.C | 32 ++-- .../Fields/symmTensorField/symmTensorField.C | 12 +- .../symmTransformField/symmTransformField.C | 38 ++-- .../fields/Fields/tensorField/tensorField.C | 18 +- .../Fields/vector2DField/vector2DField.C | 6 +- .../fields/Fields/vectorField/vectorField.C | 6 +- 7 files changed, 134 insertions(+), 149 deletions(-) diff --git a/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.C b/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.C index 88bbc16b6b..15b1075bba 100644 --- a/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.C +++ b/src/OpenFOAM/fields/DimensionedFields/DimensionedScalarField/DimensionedScalarField.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -42,9 +42,8 @@ tmp> stabilise const dimensioned& ds ) { - tmp> tRes - ( - new DimensionedField + auto tres = + tmp>::New ( IOobject ( @@ -54,12 +53,11 @@ tmp> stabilise ), dsf.mesh(), dsf.dimensions() + ds.dimensions() - ) - ); + ); - stabilise(tRes.ref().field(), dsf.field(), ds.value()); + stabilise(tres.ref().field(), dsf.field(), ds.value()); - return tRes; + return tres; } @@ -72,18 +70,18 @@ tmp> stabilise { const DimensionedField& dsf = tdsf(); - tmp> tRes = New + tmp> tres = New ( tdsf, "stabilise(" + dsf.name() + ',' + ds.name() + ')', dsf.dimensions() + ds.dimensions() ); - stabilise(tRes.ref().field(), dsf.field(), ds.value()); + stabilise(tres.ref().field(), dsf.field(), ds.value()); tdsf.clear(); - return tRes; + return tres; } @@ -120,9 +118,8 @@ tmp> pow << exit(FatalError); } - tmp> tPow - ( - new DimensionedField + auto tres = + tmp>::New ( IOobject ( @@ -132,12 +129,11 @@ tmp> pow ), dsf1.mesh(), dimless - ) - ); + ); - pow(tPow.ref().field(), dsf1.field(), dsf2.field()); + pow(tres.ref().field(), dsf1.field(), dsf2.field()); - return tPow; + return tres; } @@ -164,18 +160,18 @@ tmp> pow << exit(FatalError); } - tmp> tPow = New + tmp> tres = New ( tdsf1, "pow(" + dsf1.name() + ',' + dsf2.name() + ')', dimless ); - pow(tPow.ref().field(), dsf1.field(), dsf2.field()); + pow(tres.ref().field(), dsf1.field(), dsf2.field()); tdsf1.clear(); - return tPow; + return tres; } @@ -202,18 +198,18 @@ tmp> pow << exit(FatalError); } - tmp> tPow = New + tmp> tres = New ( tdsf2, "pow(" + dsf1.name() + ',' + dsf2.name() + ')', dimless ); - pow(tPow.ref().field(), dsf1.field(), dsf2.field()); + pow(tres.ref().field(), dsf1.field(), dsf2.field()); tdsf2.clear(); - return tPow; + return tres; } @@ -241,7 +237,7 @@ tmp> pow << exit(FatalError); } - tmp> tPow = + auto tres = reuseTmpTmpDimensionedField:: New ( @@ -251,12 +247,12 @@ tmp> pow dimless ); - pow(tPow.ref().field(), dsf1.field(), dsf2.field()); + pow(tres.ref().field(), dsf1.field(), dsf2.field()); tdsf1.clear(); tdsf2.clear(); - return tPow; + return tres; } @@ -274,9 +270,8 @@ tmp> pow << exit(FatalError); } - tmp> tPow - ( - new DimensionedField + auto tres = + tmp>::New ( IOobject ( @@ -286,12 +281,11 @@ tmp> pow ), dsf.mesh(), pow(dsf.dimensions(), ds) - ) - ); + ); - pow(tPow.ref().field(), dsf.field(), ds.value()); + pow(tres.ref().field(), dsf.field(), ds.value()); - return tPow; + return tres; } @@ -311,18 +305,18 @@ tmp> pow const DimensionedField& dsf = tdsf(); - tmp> tPow = New + tmp> tres = New ( tdsf, "pow(" + dsf.name() + ',' + ds.name() + ')', pow(dsf.dimensions(), ds) ); - pow(tPow.ref().field(), dsf.field(), ds.value()); + pow(tres.ref().field(), dsf.field(), ds.value()); tdsf.clear(); - return tPow; + return tres; } @@ -369,9 +363,8 @@ tmp> pow << exit(FatalError); } - tmp> tPow - ( - new DimensionedField + auto tres = + tmp>::New ( IOobject ( @@ -381,12 +374,11 @@ tmp> pow ), dsf.mesh(), dimless - ) - ); + ); - pow(tPow.ref().field(), ds.value(), dsf.field()); + pow(tres.ref().field(), ds.value(), dsf.field()); - return tPow; + return tres; } @@ -413,18 +405,18 @@ tmp> pow << exit(FatalError); } - tmp> tPow = New + tmp> tres = New ( tdsf, "pow(" + ds.name() + ',' + dsf.name() + ')', dimless ); - pow(tPow.ref().field(), ds.value(), dsf.field()); + pow(tres.ref().field(), ds.value(), dsf.field()); tdsf.clear(); - return tPow; + return tres; } template @@ -457,9 +449,8 @@ tmp> atan2 const DimensionedField& dsf2 ) { - tmp> tAtan2 - ( - new DimensionedField + auto tres = + tmp>::New ( IOobject ( @@ -469,12 +460,11 @@ tmp> atan2 ), dsf1.mesh(), atan2(dsf1.dimensions(), dsf2.dimensions()) - ) - ); + ); - atan2(tAtan2.ref().field(), dsf1.field(), dsf2.field()); + atan2(tres.ref().field(), dsf1.field(), dsf2.field()); - return tAtan2; + return tres; } @@ -487,18 +477,18 @@ tmp> atan2 { const DimensionedField& dsf1 = tdsf1(); - tmp> tAtan2 = New + tmp> tres = New ( tdsf1, "atan2(" + dsf1.name() + ',' + dsf2.name() + ')', atan2(dsf1.dimensions(), dsf2.dimensions()) ); - atan2(tAtan2.ref().field(), dsf1.field(), dsf2.field()); + atan2(tres.ref().field(), dsf1.field(), dsf2.field()); tdsf1.clear(); - return tAtan2; + return tres; } @@ -511,18 +501,18 @@ tmp> atan2 { const DimensionedField& dsf2 = tdsf2(); - tmp> tAtan2 = New + tmp> tres = New ( tdsf2, "atan2(" + dsf1.name() + ',' + dsf2.name() + ')', atan2(dsf1.dimensions(), dsf2.dimensions()) ); - atan2(tAtan2.ref().field(), dsf1.field(), dsf2.field()); + atan2(tres.ref().field(), dsf1.field(), dsf2.field()); tdsf2.clear(); - return tAtan2; + return tres; } template @@ -535,7 +525,7 @@ tmp> atan2 const DimensionedField& dsf1 = tdsf1(); const DimensionedField& dsf2 = tdsf2(); - tmp> tAtan2 = + auto tres = reuseTmpTmpDimensionedField:: New ( @@ -545,12 +535,12 @@ tmp> atan2 atan2(dsf1.dimensions(), dsf2.dimensions()) ); - atan2(tAtan2.ref().field(), dsf1.field(), dsf2.field()); + atan2(tres.ref().field(), dsf1.field(), dsf2.field()); tdsf1.clear(); tdsf2.clear(); - return tAtan2; + return tres; } @@ -561,9 +551,8 @@ tmp> atan2 const dimensionedScalar& ds ) { - tmp> tAtan2 - ( - new DimensionedField + auto tres = + tmp>::New ( IOobject ( @@ -573,12 +562,11 @@ tmp> atan2 ), dsf.mesh(), atan2(dsf.dimensions(), ds) - ) - ); + ); - atan2(tAtan2.ref().field(), dsf.field(), ds.value()); + atan2(tres.ref().field(), dsf.field(), ds.value()); - return tAtan2; + return tres; } template @@ -590,18 +578,18 @@ tmp> atan2 { const DimensionedField& dsf = tdsf(); - tmp> tAtan2 = New + tmp> tres = New ( tdsf, "atan2(" + dsf.name() + ',' + ds.name() + ')', atan2(dsf.dimensions(), ds) ); - atan2(tAtan2.ref().field(), dsf.field(), ds.value()); + atan2(tres.ref().field(), dsf.field(), ds.value()); tdsf.clear(); - return tAtan2; + return tres; } template @@ -632,9 +620,8 @@ tmp> atan2 const DimensionedField& dsf ) { - tmp> tAtan2 - ( - new DimensionedField + auto tres = + tmp>::New ( IOobject ( @@ -644,12 +631,11 @@ tmp> atan2 ), dsf.mesh(), atan2(ds, dsf.dimensions()) - ) - ); + ); - atan2(tAtan2.ref().field(), ds.value(), dsf.field()); + atan2(tres.ref().field(), ds.value(), dsf.field()); - return tAtan2; + return tres; } @@ -662,18 +648,18 @@ tmp> atan2 { const DimensionedField& dsf = tdsf(); - tmp> tAtan2 = New + tmp> tres = New ( tdsf, "atan2(" + ds.name() + ',' + dsf.name() + ')', atan2(ds, dsf.dimensions()) ); - atan2(tAtan2.ref().field(), ds.value(), dsf.field()); + atan2(tres.ref().field(), ds.value(), dsf.field()); tdsf.clear(); - return tAtan2; + return tres; } template @@ -756,9 +742,8 @@ tmp> func \ << abort(FatalError); \ } \ \ - tmp> tFunc \ - ( \ - new DimensionedField \ + auto tres = \ + tmp>::New \ ( \ IOobject \ ( \ @@ -768,14 +753,14 @@ tmp> func \ ), \ dsf.mesh(), \ dimless \ - ) \ - ); \ + ); \ \ - func(tFunc.ref().field(), n, dsf.field()); \ + func(tres.ref().field(), n, dsf.field()); \ \ - return tFunc; \ + return tres; \ } \ \ + \ template \ tmp> func \ ( \ @@ -792,7 +777,7 @@ tmp> func \ << abort(FatalError); \ } \ \ - tmp> tFunc \ + tmp> tres \ ( \ New \ ( \ @@ -802,11 +787,11 @@ tmp> func \ ) \ ); \ \ - func(tFunc.ref().field(), n, dsf.field()); \ + func(tres.ref().field(), n, dsf.field()); \ \ tdsf.clear(); \ \ - return tFunc; \ + return tres; \ } BesselFunc(jn) diff --git a/src/OpenFOAM/fields/Fields/scalarField/scalarField.C b/src/OpenFOAM/fields/Fields/scalarField/scalarField.C index ba4d14c175..5f3f48c6d4 100644 --- a/src/OpenFOAM/fields/Fields/scalarField/scalarField.C +++ b/src/OpenFOAM/fields/Fields/scalarField/scalarField.C @@ -73,17 +73,17 @@ void stabilise(scalarField& res, const UList& sf, const scalar s) tmp stabilise(const UList& sf, const scalar s) { - tmp tRes(new scalarField(sf.size())); - stabilise(tRes.ref(), sf, s); - return tRes; + auto tresult = tmp::New(sf.size()); + stabilise(tresult.ref(), sf, s); + return tresult; } tmp stabilise(const tmp& tsf, const scalar s) { - tmp tRes = New(tsf); - stabilise(tRes.ref(), tsf(), s); + tmp tresult = New(tsf); + stabilise(tresult.ref(), tsf(), s); tsf.clear(); - return tRes; + return tresult; } @@ -92,16 +92,12 @@ tmp stabilise(const tmp& tsf, const scalar s) template<> scalar sumProd(const UList& f1, const UList& f2) { + scalar SumProd = 0.0; if (f1.size() && (f1.size() == f2.size())) { - scalar SumProd = 0.0; TFOR_ALL_S_OP_F_OP_F(scalar, SumProd, +=, scalar, f1, *, scalar, f2) - return SumProd; - } - else - { - return 0.0; } + return SumProd; } @@ -174,17 +170,17 @@ void func(scalarField& res, const int n, const UList& sf) \ \ tmp func(const int n, const UList& sf) \ { \ - tmp tRes(new scalarField(sf.size())); \ - func(tRes.ref(), n, sf); \ - return tRes; \ + auto tresult = tmp::New(sf.size()); \ + func(tresult.ref(), n, sf); \ + return tresult; \ } \ \ tmp func(const int n, const tmp& tsf) \ { \ - tmp tRes = New(tsf); \ - func(tRes.ref(), n, tsf()); \ + tmp tresult = New(tsf); \ + func(tresult.ref(), n, tsf()); \ tsf.clear(); \ - return tRes; \ + return tresult; \ } BesselFunc(jn) diff --git a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C index c50ab3daa4..10bc2087c4 100644 --- a/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C +++ b/src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C @@ -107,17 +107,17 @@ void inv(Field& tf, const UList& tf1) tmp inv(const UList& tf) { - tmp result(new symmTensorField(tf.size())); - inv(result.ref(), tf); - return result; + auto tresult = tmp::New(tf.size()); + inv(tresult.ref(), tf); + return tresult; } tmp inv(const tmp& tf) { - tmp tRes = New(tf); - inv(tRes.ref(), tf()); + tmp tresult = New(tf); + inv(tresult.ref(), tf()); tf.clear(); - return tRes; + return tresult; } diff --git a/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C b/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C index e1b19cf8df..659a892cfa 100644 --- a/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C +++ b/src/OpenFOAM/fields/Fields/symmTransformField/symmTransformField.C @@ -31,7 +31,7 @@ License namespace Foam { -// * * * * * * * * * * * * * * * global functions * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // template void transform @@ -62,9 +62,9 @@ tmp> transform const Field& tf ) { - tmp> tranf(new Field (tf.size())); - transform(tranf.ref(), trf, tf); - return tranf; + auto tresult = tmp>::New(tf.size()); + transform(tresult.ref(), trf, tf); + return tresult; } @@ -75,10 +75,10 @@ tmp> transform const tmp>& ttf ) { - tmp> tranf = New(ttf); - transform(tranf.ref(), trf, ttf()); + tmp> tresult = New(ttf); + transform(tresult.ref(), trf, ttf()); ttf.clear(); - return tranf; + return tresult; } @@ -89,10 +89,10 @@ tmp> transform const Field& tf ) { - tmp> tranf(new Field (tf.size())); - transform(tranf.ref(), ttrf(), tf); + auto tresult = tmp>::New(tf.size()); + transform(tresult.ref(), ttrf(), tf); ttrf.clear(); - return tranf; + return tresult; } @@ -103,11 +103,11 @@ tmp> transform const tmp>& ttf ) { - tmp> tranf = New(ttf); - transform(tranf.ref(), ttrf(), ttf()); + tmp> tresult = New(ttf); + transform(tresult.ref(), ttrf(), ttf()); ttf.clear(); ttrf.clear(); - return tranf; + return tresult; } @@ -130,9 +130,9 @@ tmp> transform const Field& tf ) { - tmp> tranf(new Field(tf.size())); - transform(tranf.ref(), t, tf); - return tranf; + auto tresult = tmp>::New(tf.size()); + transform(tresult.ref(), t, tf); + return tresult; } @@ -143,10 +143,10 @@ tmp> transform const tmp>& ttf ) { - tmp> tranf = New(ttf); - transform(tranf.ref(), t, ttf()); + tmp> tresult = New(ttf); + transform(tresult.ref(), t, ttf()); ttf.clear(); - return tranf; + return tresult; } diff --git a/src/OpenFOAM/fields/Fields/tensorField/tensorField.C b/src/OpenFOAM/fields/Fields/tensorField/tensorField.C index 45ea27e12c..ac07e657e2 100644 --- a/src/OpenFOAM/fields/Fields/tensorField/tensorField.C +++ b/src/OpenFOAM/fields/Fields/tensorField/tensorField.C @@ -105,17 +105,17 @@ void inv(Field& tf, const UList& tf1) tmp inv(const UList& tf) { - tmp result(new tensorField(tf.size())); - inv(result.ref(), tf); - return result; + auto tres = tmp::New(tf.size()); + inv(tres.ref(), tf); + return tres; } tmp inv(const tmp& tf) { - tmp tRes = New(tf); - inv(tRes.ref(), tf()); + auto tres = New(tf); + inv(tres.ref(), tf()); tf.clear(); - return tRes; + return tres; } UNARY_FUNCTION(vector, tensor, eigenValues) @@ -131,10 +131,10 @@ tmp> transformFieldMask const symmTensorField& stf ) { - tmp tRes(new tensorField(stf.size())); - tensorField& res = tRes.ref(); + auto tres = tmp::New(stf.size()); + auto& res = tres.ref(); TFOR_ALL_F_OP_F(tensor, res, =, symmTensor, stf) - return tRes; + return tres; } template<> diff --git a/src/OpenFOAM/fields/Fields/vector2DField/vector2DField.C b/src/OpenFOAM/fields/Fields/vector2DField/vector2DField.C index edacb39cbe..f19be6d1c8 100644 --- a/src/OpenFOAM/fields/Fields/vector2DField/vector2DField.C +++ b/src/OpenFOAM/fields/Fields/vector2DField/vector2DField.C @@ -33,10 +33,12 @@ Foam::tmp Foam::zip const tmp& y ) { - tmp txy(new vector2DField(x->size())); - vector2DField& xy = txy.ref(); + auto txy = tmp::New(x->size()); + auto& xy = txy.ref(); + xy.replace(0, x); xy.replace(1, y); + return txy; } diff --git a/src/OpenFOAM/fields/Fields/vectorField/vectorField.C b/src/OpenFOAM/fields/Fields/vectorField/vectorField.C index 078381d8ec..012fccdf62 100644 --- a/src/OpenFOAM/fields/Fields/vectorField/vectorField.C +++ b/src/OpenFOAM/fields/Fields/vectorField/vectorField.C @@ -34,11 +34,13 @@ Foam::tmp Foam::zip const tmp& z ) { - tmp txyz(new vectorField(x->size())); - vectorField& xyz = txyz.ref(); + auto txyz = tmp::New(x->size()); + auto& xyz = txyz.ref(); + xyz.replace(0, x); xyz.replace(1, y); xyz.replace(2, z); + return txyz; }