FieldField, DimensionedField, GeometricField: Simplified tmp reuse and cleanup

This commit is contained in:
Henry Weller
2016-02-25 18:29:00 +00:00
parent 85fa6c2649
commit e1405f2260
14 changed files with 318 additions and 434 deletions

View File

@ -88,7 +88,7 @@ pow
pow<Type, r, GeoMesh>(tPow().field(), df.field());
reuseTmpDimensionedField<powProductType, Type, GeoMesh>::clear(tdf);
tdf.clear();
return tPow;
}
@ -137,7 +137,7 @@ sqr(const tmp<DimensionedField<Type, GeoMesh>>& tdf)
sqr(tSqr().field(), df.field());
reuseTmpDimensionedField<outerProductType, Type, GeoMesh>::clear(tdf);
tdf.clear();
return tSqr;
}
@ -187,7 +187,7 @@ tmp<DimensionedField<scalar, GeoMesh>> magSqr
magSqr(tMagSqr().field(), df.field());
reuseTmpDimensionedField<scalar, Type, GeoMesh>::clear(tdf);
tdf.clear();
return tMagSqr;
}
@ -237,7 +237,7 @@ tmp<DimensionedField<scalar, GeoMesh>> mag
mag(tMag().field(), df.field());
reuseTmpDimensionedField<scalar, Type, GeoMesh>::clear(tdf);
tdf.clear();
return tMag;
}
@ -296,7 +296,7 @@ cmptAv(const tmp<DimensionedField<Type, GeoMesh>>& tdf)
cmptAv(CmptAv().field(), df.field());
reuseTmpDimensionedField<cmptType, Type, GeoMesh>::clear(tdf);
tdf.clear();
return CmptAv;
}
@ -417,7 +417,7 @@ operator op \
\
Foam::opFunc(tRes.ref().field(), df1.field(), df2.field()); \
\
reuseTmpDimensionedField<productType, Type2, GeoMesh>::clear(tdf2); \
tdf2.clear(); \
\
return tRes; \
} \
@ -444,7 +444,7 @@ operator op \
\
Foam::opFunc(tRes.ref().field(), df1.field(), df2.field()); \
\
reuseTmpDimensionedField<productType, Type1, GeoMesh>::clear(tdf1); \
tdf1.clear(); \
\
return tRes; \
} \
@ -474,8 +474,8 @@ operator op \
\
Foam::opFunc(tRes.ref().field(), df1.field(), df2.field()); \
\
reuseTmpTmpDimensionedField \
<productType, Type1, Type1, Type2, GeoMesh>::clear(tdf1, tdf2); \
tdf1.clear(); \
tdf2.clear(); \
\
return tRes; \
} \
@ -544,7 +544,7 @@ operator op \
\
Foam::opFunc(tRes.ref().field(), df1.field(), dvs.value()); \
\
reuseTmpDimensionedField<productType, Type, GeoMesh>::clear(tdf1); \
tdf1.clear(); \
\
return tRes; \
} \
@ -623,7 +623,7 @@ operator op \
\
Foam::opFunc(tRes.ref().field(), dvs.value(), df1.field()); \
\
reuseTmpDimensionedField<productType, Type, GeoMesh>::clear(tdf1); \
tdf1.clear(); \
\
return tRes; \
} \

View File

@ -75,7 +75,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
\
Func(tRes.ref().field(), df1.field()); \
\
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::clear(tdf1); \
tdf1.clear(); \
\
return tRes; \
}
@ -131,7 +131,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref().field(), df1.field()); \
\
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::clear(tdf1); \
tdf1.clear(); \
\
return tRes; \
}
@ -189,7 +189,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
\
Func(tRes.ref().field(), df1.field(), df2.field()); \
\
reuseTmpDimensionedField<ReturnType, Type2, GeoMesh>::clear(tdf2); \
tdf2.clear(); \
\
return tRes; \
} \
@ -215,7 +215,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
\
Func(tRes.ref().field(), df1.field(), df2.field()); \
\
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::clear(tdf1); \
tdf1.clear(); \
\
return tRes; \
} \
@ -244,8 +244,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
\
Func(tRes.ref().field(), df1.field(), df2.field()); \
\
reuseTmpTmpDimensionedField<ReturnType, Type1, Type1, Type2, GeoMesh> \
::clear(tdf1, tdf2); \
tdf1.clear(); \
tdf2.clear(); \
\
return tRes; \
}
@ -314,7 +314,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
\
Func(tRes.ref().field(), dt1.value(), df2.field()); \
\
reuseTmpDimensionedField<ReturnType, Type2, GeoMesh>::clear(tdf2); \
tdf2.clear(); \
\
return tRes; \
} \
@ -391,7 +391,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
\
Func(tRes.ref().field(), df1.field(), dt2.value()); \
\
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::clear(tdf1); \
tdf1.clear(); \
\
return tRes; \
} \
@ -464,7 +464,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \
\
reuseTmpDimensionedField<ReturnType, Type2, GeoMesh>::clear(tdf2); \
tdf2.clear(); \
\
return tRes; \
} \
@ -490,7 +490,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \
\
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::clear(tdf1); \
tdf1.clear(); \
\
return tRes; \
} \
@ -519,8 +519,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \
\
reuseTmpTmpDimensionedField<ReturnType, Type1, Type1, Type2, GeoMesh>:: \
clear(tdf1, tdf2); \
tdf1.clear(); \
tdf2.clear(); \
\
return tRes; \
}
@ -589,7 +589,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref().field(), dt1.value(), tdf2().field()); \
\
reuseTmpDimensionedField<ReturnType, Type2, GeoMesh>::clear(tdf2); \
tdf2.clear(); \
\
return tRes; \
} \
@ -666,7 +666,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref().field(), tdf1().field(), dt2.value()); \
\
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::clear(tdf1); \
tdf1.clear(); \
\
return tRes; \
} \

View File

@ -33,6 +33,43 @@ namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
template<class TypeR, class GeoMesh>
tmp<DimensionedField<TypeR, GeoMesh>> New
(
const tmp<DimensionedField<TypeR, GeoMesh>>& tdf1,
const word& name,
const dimensionSet& dimensions
)
{
DimensionedField<TypeR, GeoMesh>& df1 =
const_cast<DimensionedField<TypeR, GeoMesh>& >(tdf1());
if (tdf1.isTmp())
{
df1.rename(name);
df1.dimensions().reset(dimensions);
return tdf1;
}
else
{
return tmp<DimensionedField<TypeR, GeoMesh>>
(
new DimensionedField<TypeR, GeoMesh>
(
IOobject
(
name,
df1.instance(),
df1.db()
),
df1.mesh(),
dimensions
)
);
}
}
template<class TypeR, class Type1, class GeoMesh>
class reuseTmpDimensionedField
{
@ -62,11 +99,6 @@ public:
)
);
}
static void clear(const tmp<DimensionedField<Type1, GeoMesh>>& tdf1)
{
tdf1.clear();
}
};
@ -109,11 +141,6 @@ public:
);
}
}
static void clear(const tmp<DimensionedField<TypeR, GeoMesh>>& tdf1)
{
tdf1.clear();
}
};
@ -147,16 +174,6 @@ public:
)
);
}
static void clear
(
const tmp<DimensionedField<Type1, GeoMesh>>& tdf1,
const tmp<DimensionedField<Type2, GeoMesh>>& tdf2
)
{
tdf1.clear();
tdf2.clear();
}
};
@ -201,16 +218,6 @@ public:
);
}
}
static void clear
(
const tmp<DimensionedField<Type1, GeoMesh>>& tdf1,
const tmp<DimensionedField<TypeR, GeoMesh>>& tdf2
)
{
tdf1.clear();
tdf2.clear();
}
};
@ -254,16 +261,6 @@ public:
);
}
}
static void clear
(
const tmp<DimensionedField<TypeR, GeoMesh>>& tdf1,
const tmp<DimensionedField<Type2, GeoMesh>>& tdf2
)
{
tdf1.clear();
tdf2.clear();
}
};
@ -315,16 +312,6 @@ public:
);
}
}
static void clear
(
const tmp<DimensionedField<TypeR, GeoMesh>>& tdf1,
const tmp<DimensionedField<TypeR, GeoMesh>>& tdf2
)
{
tdf1.clear();
tdf2.clear();
}
};

View File

@ -72,8 +72,7 @@ tmp<DimensionedField<scalar, GeoMesh>> stabilise
{
const DimensionedField<scalar, GeoMesh>& dsf = tdsf();
tmp<DimensionedField<scalar, GeoMesh>> tRes =
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::New
tmp<DimensionedField<scalar, GeoMesh>> tRes = New
(
tdsf,
"stabilise(" + dsf.name() + ',' + ds.name() + ')',
@ -82,7 +81,7 @@ tmp<DimensionedField<scalar, GeoMesh>> stabilise
stabilise(tRes.ref().field(), dsf.field(), ds.value());
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::clear(tdsf);
tdsf.clear();
return tRes;
}
@ -141,8 +140,7 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
{
const DimensionedField<scalar, GeoMesh>& dsf1 = tdsf1();
tmp<DimensionedField<scalar, GeoMesh>> tPow =
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::New
tmp<DimensionedField<scalar, GeoMesh>> tPow = New
(
tdsf1,
"pow(" + dsf1.name() + ',' + dsf2.name() + ')',
@ -155,7 +153,7 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
pow(tPow.ref().field(), dsf1.field(), dsf2.field());
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::clear(tdsf1);
tdsf1.clear();
return tPow;
}
@ -170,8 +168,7 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
{
const DimensionedField<scalar, GeoMesh>& dsf2 = tdsf2();
tmp<DimensionedField<scalar, GeoMesh>> tPow =
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::New
tmp<DimensionedField<scalar, GeoMesh>> tPow = New
(
tdsf2,
"pow(" + dsf1.name() + ',' + dsf2.name() + ')',
@ -184,7 +181,7 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
pow(tPow.ref().field(), dsf1.field(), dsf2.field());
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::clear(tdsf2);
tdsf2.clear();
return tPow;
}
@ -215,11 +212,8 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
pow(tPow.ref().field(), dsf1.field(), dsf2.field());
reuseTmpTmpDimensionedField<scalar, scalar, scalar, scalar, GeoMesh>::clear
(
tdsf1,
tdsf2
);
tdsf1.clear();
tdsf2.clear();
return tPow;
}
@ -261,8 +255,7 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
{
const DimensionedField<scalar, GeoMesh>& dsf = tdsf();
tmp<DimensionedField<scalar, GeoMesh>> tPow =
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::New
tmp<DimensionedField<scalar, GeoMesh>> tPow = New
(
tdsf,
"pow(" + dsf.name() + ',' + ds.name() + ')',
@ -271,7 +264,7 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
pow(tPow.ref().field(), dsf.field(), ds.value());
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::clear(tdsf);
tdsf.clear();
return tPow;
}
@ -334,8 +327,7 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
{
const DimensionedField<scalar, GeoMesh>& dsf = tdsf();
tmp<DimensionedField<scalar, GeoMesh>> tPow =
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::New
tmp<DimensionedField<scalar, GeoMesh>> tPow = New
(
tdsf,
"pow(" + ds.name() + ',' + dsf.name() + ')',
@ -344,7 +336,7 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
pow(tPow.ref().field(), ds.value(), dsf.field());
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::clear(tdsf);
tdsf.clear();
return tPow;
}
@ -409,8 +401,7 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
{
const DimensionedField<scalar, GeoMesh>& dsf1 = tdsf1();
tmp<DimensionedField<scalar, GeoMesh>> tAtan2 =
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::New
tmp<DimensionedField<scalar, GeoMesh>> tAtan2 = New
(
tdsf1,
"atan2(" + dsf1.name() + ',' + dsf2.name() + ')',
@ -419,7 +410,7 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
atan2(tAtan2.ref().field(), dsf1.field(), dsf2.field());
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::clear(tdsf1);
tdsf1.clear();
return tAtan2;
}
@ -434,8 +425,7 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
{
const DimensionedField<scalar, GeoMesh>& dsf2 = tdsf2();
tmp<DimensionedField<scalar, GeoMesh>> tAtan2 =
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::New
tmp<DimensionedField<scalar, GeoMesh>> tAtan2 = New
(
tdsf2,
"atan2(" + dsf1.name() + ',' + dsf2.name() + ')',
@ -444,7 +434,7 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
atan2(tAtan2.ref().field(), dsf1.field(), dsf2.field());
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::clear(tdsf2);
tdsf2.clear();
return tAtan2;
}
@ -471,11 +461,8 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
atan2(tAtan2.ref().field(), dsf1.field(), dsf2.field());
reuseTmpTmpDimensionedField<scalar, scalar, scalar, scalar, GeoMesh>::clear
(
tdsf1,
tdsf2
);
tdsf1.clear();
tdsf2.clear();
return tAtan2;
}
@ -517,8 +504,7 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
{
const DimensionedField<scalar, GeoMesh>& dsf = tdsf();
tmp<DimensionedField<scalar, GeoMesh>> tAtan2 =
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::New
tmp<DimensionedField<scalar, GeoMesh>> tAtan2 = New
(
tdsf,
"atan2(" + dsf.name() + ',' + ds.name() + ')',
@ -527,7 +513,7 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
atan2(tAtan2.ref().field(), dsf.field(), ds.value());
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::clear(tdsf);
tdsf.clear();
return tAtan2;
}
@ -590,8 +576,7 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
{
const DimensionedField<scalar, GeoMesh>& dsf = tdsf();
tmp<DimensionedField<scalar, GeoMesh>> tAtan2 =
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::New
tmp<DimensionedField<scalar, GeoMesh>> tAtan2 = New
(
tdsf,
"atan2(" + ds.name() + ',' + dsf.name() + ')',
@ -600,7 +585,7 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
atan2(tAtan2.ref().field(), ds.value(), dsf.field());
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::clear(tdsf);
tdsf.clear();
return tAtan2;
}
@ -721,7 +706,7 @@ tmp<DimensionedField<scalar, GeoMesh>> func \
\
tmp<DimensionedField<scalar, GeoMesh>> tFunc \
( \
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::New \
New \
( \
tdsf, \
#func "(" + name(n) + ',' + dsf.name() + ')', \
@ -731,7 +716,7 @@ tmp<DimensionedField<scalar, GeoMesh>> func \
\
func(tFunc.ref().field(), n, dsf.field()); \
\
reuseTmpDimensionedField<scalar, scalar, GeoMesh>::clear(tdsf); \
tdsf.clear(); \
\
return tFunc; \
}

View File

@ -103,7 +103,7 @@ pow
reuseTmpFieldField<Field, powProductType, Type>::New(tf)
);
pow<Type, r>(tRes.ref(), tf());
reuseTmpFieldField<Field, powProductType, Type>::clear(tf);
tf.clear();
return tRes;
}
@ -144,7 +144,7 @@ sqr(const tmp<FieldField<Field, Type>>& tf)
reuseTmpFieldField<Field, outerProductType, Type>::New(tf)
);
sqr(tRes.ref(), tf());
reuseTmpFieldField<Field, outerProductType, Type>::clear(tf);
tf.clear();
return tRes;
}
@ -179,7 +179,7 @@ tmp<FieldField<Field, scalar>> magSqr(const tmp<FieldField<Field, Type>>& tf)
);
magSqr(tRes.ref(), tf());
reuseTmpFieldField<Field, scalar, Type>::clear(tf);
tf.clear();
return tRes;
}
@ -214,7 +214,7 @@ tmp<FieldField<Field, scalar>> mag(const tmp<FieldField<Field, Type>>& tf)
);
mag(tRes.ref(), tf());
reuseTmpFieldField<Field, scalar, Type>::clear(tf);
tf.clear();
return tRes;
}
@ -259,7 +259,7 @@ tmp<FieldField<Field, typename FieldField<Field, Type>::cmptType>> cmptMax
reuseTmpFieldField<Field, cmptType, Type>::New(tf)
);
cmptMax(tRes.ref(), tf());
reuseTmpFieldField<Field, cmptType, Type>::clear(tf);
tf.clear();
return tRes;
}
@ -304,7 +304,7 @@ tmp<FieldField<Field, typename FieldField<Field, Type>::cmptType>> cmptMin
reuseTmpFieldField<Field, cmptType, Type>::New(tf)
);
cmptMin(tRes.ref(), tf());
reuseTmpFieldField<Field, cmptType, Type>::clear(tf);
tf.clear();
return tRes;
}
@ -349,7 +349,7 @@ tmp<FieldField<Field, typename FieldField<Field, Type>::cmptType>> cmptAv
reuseTmpFieldField<Field, cmptType, Type>::New(tf)
);
cmptAv(tRes.ref(), tf());
reuseTmpFieldField<Field, cmptType, Type>::clear(tf);
tf.clear();
return tRes;
}
@ -387,12 +387,9 @@ tmp<FieldField<Field, Type>> cmptMag
const tmp<FieldField<Field, Type>>& tf
)
{
tmp<FieldField<Field, Type>> tRes
(
reuseTmpFieldField<Field, Type, Type>::New(tf)
);
tmp<FieldField<Field, Type>> tRes(New(tf));
cmptMag(tRes.ref(), tf());
reuseTmpFieldField<Field, Type, Type>::clear(tf);
tf.clear();
return tRes;
}
@ -685,7 +682,7 @@ operator op \
reuseTmpFieldField<Field, productType, Type2>::New(tf2) \
); \
opFunc(tRes.ref(), f1, tf2()); \
reuseTmpFieldField<Field, productType, Type2>::clear(tf2); \
tf2.clear(); \
return tRes; \
} \
\
@ -733,7 +730,7 @@ operator op \
reuseTmpFieldField<Field1, productType, Type1>::New(tf1) \
); \
opFunc(tRes.ref(), tf1(), f2); \
reuseTmpFieldField<Field1, productType, Type1>::clear(tf1); \
tf1.clear(); \
return tRes; \
} \
\
@ -758,8 +755,8 @@ operator op \
(tf1, tf2) \
); \
opFunc(tRes.ref(), tf1(), tf2()); \
reuseTmpTmpFieldField<Field1, productType, Type1, Type1, Type2>::clear \
(tf1, tf2); \
tf1.clear(); \
tf2.clear(); \
return tRes; \
} \
\
@ -811,7 +808,7 @@ operator op \
reuseTmpFieldField<Field, productType, Type>::New(tf1) \
); \
opFunc(tRes.ref(), tf1(), static_cast<const Form&>(vs)); \
reuseTmpFieldField<Field, productType, Type>::clear(tf1); \
tf1.clear(); \
return tRes; \
} \
\
@ -863,7 +860,7 @@ operator op \
reuseTmpFieldField<Field, productType, Type>::New(tf1) \
); \
opFunc(tRes.ref(), static_cast<const Form&>(vs), tf1()); \
reuseTmpFieldField<Field, productType, Type>::clear(tf1); \
tf1.clear(); \
return tRes; \
}

View File

@ -63,12 +63,9 @@ tmp<FieldField<Field, ReturnType>> Func \
const tmp<FieldField<Field, Type>>& tf \
) \
{ \
tmp<FieldField<Field, ReturnType>> tRes \
( \
reuseTmpFieldField<Field, Type, Type>::New(tf) \
); \
tmp<FieldField<Field, ReturnType>> tRes(New(tf)); \
Func(tRes.ref(), tf()); \
reuseTmpFieldField<Field, Type, Type>::clear(tf); \
tf.clear(); \
return tRes; \
}
@ -110,12 +107,9 @@ tmp<FieldField<Field, ReturnType>> operator Op \
const tmp<FieldField<Field, Type>>& tf \
) \
{ \
tmp<FieldField<Field, ReturnType>> tRes \
( \
reuseTmpFieldField<Field, Type, Type>::New(tf) \
); \
tmp<FieldField<Field, ReturnType>> tRes(New(tf)); \
OpFunc(tRes.ref(), tf()); \
reuseTmpFieldField<Field, Type, Type>::clear(tf); \
tf.clear(); \
return tRes; \
}
@ -165,7 +159,7 @@ tmp<FieldField<Field, ReturnType>> Func \
reuseTmpFieldField<Field, ReturnType, Type2>::New(tf2) \
); \
Func(tRes.ref(), f1, tf2()); \
reuseTmpFieldField<Field, ReturnType, Type2>::clear(tf2); \
tf2.clear(); \
return tRes; \
} \
\
@ -181,7 +175,7 @@ tmp<FieldField<Field, ReturnType>> Func \
reuseTmpFieldField<Field, ReturnType, Type1>::New(tf1) \
); \
Func(tRes.ref(), tf1(), f2); \
reuseTmpFieldField<Field, ReturnType, Type1>::clear(tf1); \
tf1.clear(); \
return tRes; \
} \
\
@ -198,8 +192,8 @@ tmp<FieldField<Field, ReturnType>> Func \
New(tf1, tf2) \
); \
Func(tRes.ref(), tf1(), tf2()); \
reuseTmpTmpFieldField<Field, ReturnType, Type1, Type1, Type2>:: \
clear(tf1, tf2); \
tf1.clear(); \
tf2.clear(); \
return tRes; \
}
@ -249,7 +243,7 @@ tmp<FieldField<Field, ReturnType>> Func \
reuseTmpFieldField<Field, ReturnType, Type1>::New(tf1) \
); \
Func(tRes.ref(), tf1(), s); \
reuseTmpFieldField<Field, ReturnType, Type1>::clear(tf1); \
tf1.clear(); \
return tRes; \
}
@ -297,7 +291,7 @@ tmp<FieldField<Field, ReturnType>> Func \
reuseTmpFieldField<Field, ReturnType, Type2>::New(tf2) \
); \
Func(tRes.ref(), s, tf2()); \
reuseTmpFieldField<Field, ReturnType, Type2>::clear(tf2); \
tf2.clear(); \
return tRes; \
}
@ -352,7 +346,7 @@ tmp<FieldField<Field, ReturnType>> operator Op \
reuseTmpFieldField<Field, ReturnType, Type2>::New(tf2) \
); \
OpFunc(tRes.ref(), f1, tf2()); \
reuseTmpFieldField<Field, ReturnType, Type2>::clear(tf2); \
tf2.clear(); \
return tRes; \
} \
\
@ -368,7 +362,7 @@ tmp<FieldField<Field, ReturnType>> operator Op \
reuseTmpFieldField<Field, ReturnType, Type1>::New(tf1) \
); \
OpFunc(tRes.ref(), tf1(), f2); \
reuseTmpFieldField<Field, ReturnType, Type1>::clear(tf1); \
tf1.clear(); \
return tRes; \
} \
\
@ -385,8 +379,8 @@ tmp<FieldField<Field, ReturnType>> operator Op \
New(tf1, tf2) \
); \
OpFunc(tRes.ref(), tf1(), tf2()); \
reuseTmpTmpFieldField<Field, ReturnType, Type1, Type1, Type2>:: \
clear(tf1, tf2); \
tf1.clear(); \
tf2.clear(); \
return tRes; \
}
@ -436,7 +430,7 @@ tmp<FieldField<Field, ReturnType>> operator Op \
reuseTmpFieldField<Field, ReturnType, Type2>::New(tf2) \
); \
OpFunc(tRes.ref(), s, tf2()); \
reuseTmpFieldField<Field, ReturnType, Type2>::clear(tf2); \
tf2.clear(); \
return tRes; \
}
@ -484,7 +478,7 @@ tmp<FieldField<Field, ReturnType>> operator Op \
reuseTmpFieldField<Field, ReturnType, Type1>::New(tf1) \
); \
OpFunc(tRes.ref(), tf1(), s); \
reuseTmpFieldField<Field, ReturnType, Type1>::clear(tf1); \
tf1.clear(); \
return tRes; \
}

View File

@ -33,40 +33,13 @@ namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
template<template<class> class Field, class TypeR, class Type1>
class reuseTmpFieldField
{
public:
static tmp<FieldField<Field, TypeR>> New
(
const tmp<FieldField<Field, Type1>>& tf1
)
{
return tmp<FieldField<Field, TypeR>>
(
FieldField<Field, TypeR>::NewCalculatedType(tf1())
);
}
static void clear(const tmp<FieldField<Field, Type1>>& tf1)
{
tf1.clear();
}
};
template<template<class> class Field, class TypeR>
class reuseTmpFieldField<Field, TypeR, TypeR>
{
public:
static tmp<FieldField<Field, TypeR>> New
(
tmp<FieldField<Field, TypeR>> New
(
const tmp<FieldField<Field, TypeR>>& tf1,
const bool initRet = false
)
{
)
{
if (tf1.isTmp())
{
return tf1;
@ -85,11 +58,48 @@ public:
return rtf;
}
}
}
static void clear(const tmp<FieldField<Field, TypeR>>& tf1)
template<template<class> class Field, class TypeR, class Type1>
class reuseTmpFieldField
{
public:
static tmp<FieldField<Field, TypeR>> New
(
const tmp<FieldField<Field, Type1>>& tf1
)
{
tf1.clear();
return tmp<FieldField<Field, TypeR>>
(
FieldField<Field, TypeR>::NewCalculatedType(tf1())
);
}
};
template<template<class> class Field, class TypeR>
class reuseTmpFieldField<Field, TypeR, TypeR>
{
public:
static tmp<FieldField<Field, TypeR>> New
(
const tmp<FieldField<Field, TypeR>>& tf1
)
{
if (tf1.isTmp())
{
return tf1;
}
else
{
return tmp<FieldField<Field, TypeR>>
(
FieldField<Field, TypeR>::NewCalculatedType(tf1())
);
}
}
};
@ -117,16 +127,6 @@ public:
FieldField<Field, TypeR>::NewCalculatedType(tf1())
);
}
static void clear
(
const tmp<FieldField<Field, Type1>>& tf1,
const tmp<FieldField<Field, Type2>>& tf2
)
{
tf1.clear();
tf2.clear();
}
};
@ -153,16 +153,6 @@ public:
);
}
}
static void clear
(
const tmp<FieldField<Field, Type1>>& tf1,
const tmp<FieldField<Field, TypeR>>& tf2
)
{
tf1.clear();
tf2.clear();
}
};
@ -189,16 +179,6 @@ public:
);
}
}
static void clear
(
const tmp<FieldField<Field, TypeR>>& tf1,
const tmp<FieldField<Field, Type2>>& tf2
)
{
tf1.clear();
tf2.clear();
}
};
@ -229,16 +209,6 @@ public:
);
}
}
static void clear
(
const tmp<FieldField<Field, TypeR>>& tf1,
const tmp<FieldField<Field, TypeR>>& tf2
)
{
tf1.clear();
tf2.clear();
}
};

View File

@ -173,12 +173,9 @@ tmp<FieldField<Field, scalar>> func \
const tmp<FieldField<Field, scalar>>& tsf \
) \
{ \
tmp<FieldField<Field, scalar>> tRes \
( \
reuseTmpFieldField<Field, scalar, scalar>::New(tsf) \
); \
tmp<FieldField<Field, scalar>> tRes(New(tsf)); \
func(tRes(), n, tsf()); \
reuseTmpFieldField<Field, scalar, scalar>::clear(tsf); \
tsf.clear(); \
return tRes; \
}

View File

@ -646,8 +646,7 @@ operator op \
\
Foam::opFunc(tRes.ref(), gf1, gf2); \
\
reuseTmpGeometricField<productType, Type2, PatchField, GeoMesh> \
::clear(tgf2); \
tgf2.clear(); \
\
return tRes; \
} \
@ -678,8 +677,7 @@ operator op \
\
Foam::opFunc(tRes.ref(), gf1, gf2); \
\
reuseTmpGeometricField<productType, Type1, PatchField, GeoMesh> \
::clear(tgf1); \
tgf1.clear(); \
\
return tRes; \
} \
@ -713,9 +711,8 @@ operator op \
\
Foam::opFunc(tRes.ref(), gf1, gf2); \
\
reuseTmpTmpGeometricField \
<productType, Type1, Type1, Type2, PatchField, GeoMesh> \
::clear(tgf1, tgf2); \
tgf1.clear(); \
tgf2.clear(); \
\
return tRes; \
} \
@ -809,8 +806,7 @@ operator op \
\
Foam::opFunc(tRes.ref(), gf1, dvs); \
\
reuseTmpGeometricField<productType, Type, PatchField, GeoMesh> \
::clear(tgf1); \
tgf1.clear(); \
\
return tRes; \
} \
@ -921,8 +917,7 @@ operator op \
\
Foam::opFunc(tRes.ref(), dvs, gf1); \
\
reuseTmpGeometricField<productType, Type, PatchField, GeoMesh> \
::clear(tgf1); \
tgf1.clear(); \
\
return tRes; \
} \

View File

@ -93,8 +93,7 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> Func \
\
Foam::Func(tRes.ref(), gf1); \
\
reuseTmpGeometricField \
<ReturnType, Type1, PatchField, GeoMesh>::clear(tgf1); \
tgf1.clear(); \
\
return tRes; \
}
@ -163,8 +162,7 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref(), gf1); \
\
reuseTmpGeometricField \
<ReturnType, Type1, PatchField, GeoMesh>::clear(tgf1); \
tgf1.clear(); \
\
return tRes; \
}
@ -236,8 +234,7 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> Func \
\
Foam::Func(tRes.ref(), gf1, gf2); \
\
reuseTmpGeometricField \
<ReturnType, Type2, PatchField, GeoMesh>::clear(tgf2); \
tgf2.clear(); \
\
return tRes; \
} \
@ -263,8 +260,7 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> Func \
\
Foam::Func(tRes.ref(), gf1, gf2); \
\
reuseTmpGeometricField \
<ReturnType, Type1, PatchField, GeoMesh>::clear(tgf1); \
tgf1.clear(); \
\
return tRes; \
} \
@ -294,9 +290,8 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> Func \
\
Foam::Func(tRes.ref(), gf1, gf2); \
\
reuseTmpTmpGeometricField \
<ReturnType, Type1, Type1, Type2, PatchField, GeoMesh> \
::clear(tgf1, tgf2); \
tgf1.clear(); \
tgf2.clear(); \
\
return tRes; \
}
@ -378,8 +373,7 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> Func \
\
Foam::Func(tRes.ref(), dt1, gf2); \
\
reuseTmpGeometricField \
<ReturnType, Type2, PatchField, GeoMesh>::clear(tgf2); \
tgf2.clear(); \
\
return tRes; \
} \
@ -470,8 +464,7 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> Func \
\
Foam::Func(tRes.ref(), gf1, dt2); \
\
reuseTmpGeometricField \
<ReturnType, Type1, PatchField, GeoMesh>::clear(tgf1); \
tgf1.clear(); \
\
return tRes; \
} \
@ -560,8 +553,7 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref(), gf1, gf2); \
\
reuseTmpGeometricField \
<ReturnType, Type2, PatchField, GeoMesh>::clear(tgf2); \
tgf2.clear(); \
\
return tRes; \
} \
@ -587,8 +579,7 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref(), gf1, gf2); \
\
reuseTmpGeometricField \
<ReturnType, Type1, PatchField, GeoMesh>::clear(tgf1); \
tgf1.clear(); \
\
return tRes; \
} \
@ -617,9 +608,8 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref(), gf1, gf2); \
\
reuseTmpTmpGeometricField \
<ReturnType, Type1, Type1, Type2, PatchField, GeoMesh> \
::clear(tgf1, tgf2); \
tgf1.clear(); \
tgf2.clear(); \
\
return tRes; \
}
@ -702,8 +692,7 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref(), dt1, gf2); \
\
reuseTmpGeometricField<ReturnType, Type2, PatchField, GeoMesh> \
::clear(tgf2); \
tgf2.clear(); \
\
return tRes; \
} \
@ -794,8 +783,7 @@ tmp<GeometricField<ReturnType, PatchField, GeoMesh>> operator Op \
\
Foam::OpFunc(tRes.ref(), gf1, dt2); \
\
reuseTmpGeometricField<ReturnType, Type1, PatchField, GeoMesh> \
::clear(tgf1); \
tgf1.clear(); \
\
return tRes; \
} \

View File

@ -75,6 +75,51 @@ bool reusable(const tmp<GeometricField<Type, PatchField, GeoMesh>>& tgf)
}
template<class TypeR, template<class> class PatchField, class GeoMesh>
tmp<GeometricField<TypeR, PatchField, GeoMesh>> New
(
const tmp<GeometricField<TypeR, PatchField, GeoMesh>>& tgf1,
const word& name,
const dimensionSet& dimensions,
const bool initRet = false
)
{
GeometricField<TypeR, PatchField, GeoMesh>& gf1 =
const_cast<GeometricField<TypeR, PatchField, GeoMesh>& >(tgf1());
if (reusable(tgf1))
{
gf1.rename(name);
gf1.dimensions().reset(dimensions);
return tgf1;
}
else
{
tmp<GeometricField<TypeR, PatchField, GeoMesh>> rtgf
(
new GeometricField<TypeR, PatchField, GeoMesh>
(
IOobject
(
name,
gf1.instance(),
gf1.db()
),
gf1.mesh(),
dimensions
)
);
if (initRet)
{
rtgf.ref() == tgf1();
}
return rtgf;
}
}
template
<
class TypeR,
@ -110,14 +155,6 @@ public:
)
);
}
static void clear
(
const tmp<GeometricField<Type1, PatchField, GeoMesh>>& tgf1
)
{
tgf1.clear();
}
};
@ -130,8 +167,7 @@ public:
(
const tmp<GeometricField<TypeR, PatchField, GeoMesh>>& tgf1,
const word& name,
const dimensionSet& dimensions,
const bool initRet = false
const dimensionSet& dimensions
)
{
GeometricField<TypeR, PatchField, GeoMesh>& gf1 =
@ -145,7 +181,7 @@ public:
}
else
{
tmp<GeometricField<TypeR, PatchField, GeoMesh>> rtgf
return tmp<GeometricField<TypeR, PatchField, GeoMesh>>
(
new GeometricField<TypeR, PatchField, GeoMesh>
(
@ -159,22 +195,7 @@ public:
dimensions
)
);
if (initRet)
{
rtgf.ref() == tgf1();
}
return rtgf;
}
}
static void clear
(
const tmp<GeometricField<TypeR, PatchField, GeoMesh>>& tgf1
)
{
tgf1.clear();
}
};
@ -217,16 +238,6 @@ public:
)
);
}
static void clear
(
const tmp<GeometricField<Type1, PatchField, GeoMesh>>& tgf1,
const tmp<GeometricField<Type2, PatchField, GeoMesh>>& tgf2
)
{
tgf1.clear();
tgf2.clear();
}
};
@ -279,16 +290,6 @@ public:
);
}
}
static void clear
(
const tmp<GeometricField<Type1, PatchField, GeoMesh>>& tgf1,
const tmp<GeometricField<TypeR, PatchField, GeoMesh>>& tgf2
)
{
tgf1.clear();
tgf2.clear();
}
};
@ -338,16 +339,6 @@ public:
);
}
}
static void clear
(
const tmp<GeometricField<TypeR, PatchField, GeoMesh>>& tgf1,
const tmp<GeometricField<Type2, PatchField, GeoMesh>>& tgf2
)
{
tgf1.clear();
tgf2.clear();
}
};
@ -399,16 +390,6 @@ public:
);
}
}
static void clear
(
const tmp<GeometricField<TypeR, PatchField, GeoMesh>>& tgf1,
const tmp<GeometricField<TypeR, PatchField, GeoMesh>>& tgf2
)
{
tgf1.clear();
tgf2.clear();
}
};

View File

@ -89,7 +89,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> stabilise
tmp<GeometricField<scalar, PatchField, GeoMesh>> tRes
(
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::New
New
(
tgsf,
"stabilise(" + gsf.name() + ',' + ds.name() + ')',
@ -99,7 +99,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> stabilise
stabilise(tRes.ref(), gsf, ds);
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::clear(tgsf);
tgsf.clear();
return tRes;
}
@ -176,7 +176,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
tmp<GeometricField<scalar, PatchField, GeoMesh>> tPow
(
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::New
New
(
tgsf1,
"pow(" + gsf1.name() + ',' + gsf2.name() + ')',
@ -190,7 +190,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
pow(tPow.ref(), gsf1, gsf2);
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::clear(tgsf1);
tgsf1.clear();
return tPow;
}
@ -207,7 +207,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
tmp<GeometricField<scalar, PatchField, GeoMesh>> tPow
(
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::New
New
(
tgsf2,
"pow(" + gsf1.name() + ',' + gsf2.name() + ')',
@ -221,7 +221,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
pow(tPow.ref(), gsf1, gsf2);
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::clear(tgsf2);
tgsf2.clear();
return tPow;
}
@ -254,9 +254,8 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
pow(tPow.ref(), gsf1, gsf2);
reuseTmpTmpGeometricField
<scalar, scalar, scalar, scalar, PatchField, GeoMesh>
::clear(tgsf1, tgsf2);
tgsf1.clear();
tgsf2.clear();
return tPow;
}
@ -315,7 +314,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
tmp<GeometricField<scalar, PatchField, GeoMesh>> tPow
(
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::New
New
(
tgsf,
"pow(" + gsf.name() + ',' + ds.name() + ')',
@ -325,7 +324,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
pow(tPow.ref(), gsf, ds);
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::clear(tgsf);
tgsf.clear();
return tPow;
}
@ -405,7 +404,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
tmp<GeometricField<scalar, PatchField, GeoMesh>> tPow
(
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::New
New
(
tgsf,
"pow(" + ds.name() + ',' + gsf.name() + ')',
@ -415,7 +414,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
pow(tPow.ref(), ds, gsf);
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::clear(tgsf);
tgsf.clear();
return tPow;
}
@ -497,7 +496,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
tmp<GeometricField<scalar, PatchField, GeoMesh>> tAtan2
(
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::New
New
(
tgsf1,
"atan2(" + gsf1.name() + ',' + gsf2.name() + ')',
@ -507,7 +506,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
atan2(tAtan2.ref(), gsf1, gsf2);
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::clear(tgsf1);
tgsf1.clear();
return tAtan2;
}
@ -524,7 +523,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
tmp<GeometricField<scalar, PatchField, GeoMesh>> tAtan2
(
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::New
New
(
tgsf2,
"atan2(" + gsf1.name() + ',' + gsf2.name() + ')',
@ -534,7 +533,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
atan2(tAtan2.ref(), gsf1, gsf2);
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::clear(tgsf2);
tgsf2.clear();
return tAtan2;
}
@ -563,9 +562,8 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
atan2(tAtan2.ref(), gsf1, gsf2);
reuseTmpTmpGeometricField
<scalar, scalar, scalar, scalar, PatchField, GeoMesh>
::clear(tgsf1, tgsf2);
tgsf1.clear();
tgsf2.clear();
return tAtan2;
}
@ -624,7 +622,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
tmp<GeometricField<scalar, PatchField, GeoMesh>> tAtan2
(
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::New
New
(
tgsf,
"atan2(" + gsf.name() + ',' + ds.name() + ')',
@ -634,7 +632,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
atan2(tAtan2.ref(), gsf, ds);
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::clear(tgsf);
tgsf.clear();
return tAtan2;
}
@ -714,7 +712,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
tmp<GeometricField<scalar, PatchField, GeoMesh>> tAtan2
(
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::New
New
(
tgsf,
"atan2(" + ds.name() + ',' + gsf.name() + ')',
@ -724,7 +722,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
atan2(tAtan2.ref(), ds, gsf);
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::clear(tgsf);
tgsf.clear();
return tAtan2;
}
@ -859,7 +857,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> func \
\
tmp<GeometricField<scalar, PatchField, GeoMesh>> tFunc \
( \
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh>::New \
New \
( \
tgsf, \
#func "(" + gsf.name() + ')', \
@ -869,8 +867,7 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> func \
\
func(tFunc.ref(), n, gsf); \
\
reuseTmpGeometricField<scalar, scalar, PatchField, GeoMesh> \
::clear(tgsf); \
tgsf.clear(); \
\
return tFunc; \
}

View File

@ -81,17 +81,18 @@ inline Foam::tmp<T>::tmp(const tmp<T>& t, bool allowTransfer)
ptr_(t.ptr_)
{
if (isTmp())
{
if (ptr_)
{
if (allowTransfer)
{
const_cast<tmp<T>&>(t).ptr_ = 0;
t.ptr_ = 0;
}
else
{
if (ptr_)
{
ptr_->operator++();
}
}
else
{
FatalErrorInFunction
@ -99,7 +100,6 @@ inline Foam::tmp<T>::tmp(const tmp<T>& t, bool allowTransfer)
<< abort(FatalError);
}
}
}
}

View File

@ -228,8 +228,7 @@ Foam::tmp<Foam::surfaceScalarField> Foam::MRFZoneList::relative
{
tmp<surfaceScalarField> rphi
(
reuseTmpGeometricField<scalar, scalar, fvsPatchField, surfaceMesh>
::New
New
(
tphi,
"relative(" + tphi().name() + ')',
@ -240,8 +239,7 @@ Foam::tmp<Foam::surfaceScalarField> Foam::MRFZoneList::relative
makeRelative(rphi.ref());
reuseTmpGeometricField<scalar, scalar, fvsPatchField, surfaceMesh>
::clear(tphi);
tphi.clear();
return rphi;
}
@ -260,17 +258,14 @@ Foam::MRFZoneList::relative
{
if (size())
{
tmp<FieldField<fvsPatchField, scalar>> rphi
(
reuseTmpFieldField<fvsPatchField, scalar, scalar>::New(tphi, true)
);
tmp<FieldField<fvsPatchField, scalar>> rphi(New(tphi, true));
forAll(*this, i)
{
operator[](i).makeRelative(rphi.ref());
}
reuseTmpFieldField<fvsPatchField, scalar, scalar>::clear(tphi);
tphi.clear();
return rphi;
}
@ -348,8 +343,7 @@ Foam::tmp<Foam::surfaceScalarField> Foam::MRFZoneList::absolute
{
tmp<surfaceScalarField> rphi
(
reuseTmpGeometricField<scalar, scalar, fvsPatchField, surfaceMesh>
::New
New
(
tphi,
"absolute(" + tphi().name() + ')',
@ -360,8 +354,7 @@ Foam::tmp<Foam::surfaceScalarField> Foam::MRFZoneList::absolute
makeAbsolute(rphi.ref());
reuseTmpGeometricField<scalar, scalar, fvsPatchField, surfaceMesh>
::clear(tphi);
tphi.clear();
return rphi;
}