STYLE: modernize code for DimensionedFieldFunctions (#1160)

- use forwarding tmp factory methods, auto types
This commit is contained in:
Mark Olesen
2019-01-10 17:06:04 +01:00
parent 3019f30b12
commit 6365560956
2 changed files with 219 additions and 280 deletions

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2019 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -45,9 +45,8 @@ pow
{
typedef typename powProduct<Type, r>::type powProductType;
tmp<DimensionedField<powProductType, GeoMesh>> tPow
(
new DimensionedField<powProductType, GeoMesh>
auto tres =
tmp<DimensionedField<powProductType, GeoMesh>>::New
(
IOobject
(
@ -57,12 +56,11 @@ pow
),
df.mesh(),
pow(df.dimensions(), r)
)
);
);
pow<Type, r, GeoMesh>(tPow.ref().field(), df.field());
pow<Type, r, GeoMesh>(tres.ref().field(), df.field());
return tPow;
return tres;
}
@ -78,7 +76,7 @@ pow
const DimensionedField<Type, GeoMesh>& df = tdf();
tmp<DimensionedField<powProductType, GeoMesh>> tPow =
auto tres =
reuseTmpDimensionedField<powProductType, Type, GeoMesh>::New
(
tdf,
@ -86,22 +84,21 @@ pow
pow(df.dimensions(), r)
);
pow<Type, r, GeoMesh>(tPow.ref().field(), df.field());
pow<Type, r, GeoMesh>(tres.ref().field(), df.field());
tdf.clear();
return tPow;
return tres;
}
template<class Type, class GeoMesh>
tmp<DimensionedField<typename outerProduct<Type, Type>::type, GeoMesh>>
sqr(const DimensionedField<Type, GeoMesh>& df)
{
typedef typename outerProduct<Type, Type>::type outerProductType;
tmp<DimensionedField<outerProductType, GeoMesh>> tSqr
(
new DimensionedField<outerProductType, GeoMesh>
auto tres =
tmp<DimensionedField<outerProductType, GeoMesh>>::New
(
IOobject
(
@ -111,12 +108,11 @@ sqr(const DimensionedField<Type, GeoMesh>& df)
),
df.mesh(),
sqr(df.dimensions())
)
);
);
sqr(tSqr.ref().field(), df.field());
sqr(tres.ref().field(), df.field());
return tSqr;
return tres;
}
template<class Type, class GeoMesh>
@ -127,7 +123,7 @@ sqr(const tmp<DimensionedField<Type, GeoMesh>>& tdf)
const DimensionedField<Type, GeoMesh>& df = tdf();
tmp<DimensionedField<outerProductType, GeoMesh>> tSqr =
auto tres =
reuseTmpDimensionedField<outerProductType, Type, GeoMesh>::New
(
tdf,
@ -135,11 +131,10 @@ sqr(const tmp<DimensionedField<Type, GeoMesh>>& tdf)
sqr(df.dimensions())
);
sqr(tSqr.ref().field(), df.field());
sqr(tres.ref().field(), df.field());
tdf.clear();
return tSqr;
return tres;
}
@ -149,9 +144,8 @@ tmp<DimensionedField<scalar, GeoMesh>> magSqr
const DimensionedField<Type, GeoMesh>& df
)
{
tmp<DimensionedField<scalar, GeoMesh>> tMagSqr
(
new DimensionedField<scalar, GeoMesh>
auto tres =
tmp<DimensionedField<scalar, GeoMesh>>::New
(
IOobject
(
@ -161,12 +155,11 @@ tmp<DimensionedField<scalar, GeoMesh>> magSqr
),
df.mesh(),
sqr(df.dimensions())
)
);
);
magSqr(tMagSqr.ref().field(), df.field());
magSqr(tres.ref().field(), df.field());
return tMagSqr;
return tres;
}
template<class Type, class GeoMesh>
@ -177,7 +170,7 @@ tmp<DimensionedField<scalar, GeoMesh>> magSqr
{
const DimensionedField<Type, GeoMesh>& df = tdf();
tmp<DimensionedField<scalar, GeoMesh>> tMagSqr =
auto tres =
reuseTmpDimensionedField<scalar, Type, GeoMesh>::New
(
tdf,
@ -185,11 +178,10 @@ tmp<DimensionedField<scalar, GeoMesh>> magSqr
sqr(df.dimensions())
);
magSqr(tMagSqr.ref().field(), df.field());
magSqr(tres.ref().field(), df.field());
tdf.clear();
return tMagSqr;
return tres;
}
@ -199,9 +191,8 @@ tmp<DimensionedField<scalar, GeoMesh>> mag
const DimensionedField<Type, GeoMesh>& df
)
{
tmp<DimensionedField<scalar, GeoMesh>> tMag
(
new DimensionedField<scalar, GeoMesh>
auto tres =
tmp<DimensionedField<scalar, GeoMesh>>::New
(
IOobject
(
@ -211,12 +202,11 @@ tmp<DimensionedField<scalar, GeoMesh>> mag
),
df.mesh(),
df.dimensions()
)
);
);
mag(tMag.ref().field(), df.field());
mag(tres.ref().field(), df.field());
return tMag;
return tres;
}
template<class Type, class GeoMesh>
@ -227,7 +217,7 @@ tmp<DimensionedField<scalar, GeoMesh>> mag
{
const DimensionedField<Type, GeoMesh>& df = tdf();
tmp<DimensionedField<scalar, GeoMesh>> tMag =
auto tres =
reuseTmpDimensionedField<scalar, Type, GeoMesh>::New
(
tdf,
@ -235,11 +225,10 @@ tmp<DimensionedField<scalar, GeoMesh>> mag
df.dimensions()
);
mag(tMag.ref().field(), df.field());
mag(tres.ref().field(), df.field());
tdf.clear();
return tMag;
return tres;
}
@ -247,15 +236,16 @@ template<class Type, class GeoMesh>
tmp
<
DimensionedField
<typename DimensionedField<Type, GeoMesh>::cmptType, GeoMesh>
<
typename DimensionedField<Type, GeoMesh>::cmptType, GeoMesh
>
>
cmptAv(const DimensionedField<Type, GeoMesh>& df)
{
typedef typename DimensionedField<Type, GeoMesh>::cmptType cmptType;
tmp<DimensionedField<cmptType, GeoMesh>> CmptAv
(
new DimensionedField<scalar, GeoMesh>
auto tres =
tmp<DimensionedField<cmptType, GeoMesh>>::New
(
IOobject
(
@ -265,28 +255,29 @@ cmptAv(const DimensionedField<Type, GeoMesh>& df)
),
df.mesh(),
df.dimensions()
)
);
);
cmptAv(CmptAv.ref().field(), df.field());
cmptAv(tres.ref().field(), df.field());
return CmptAv;
return tres;
}
template<class Type, class GeoMesh>
tmp
<
DimensionedField
<typename DimensionedField<Type, GeoMesh>::cmptType, GeoMesh>
<
typename DimensionedField<Type, GeoMesh>::cmptType, GeoMesh
>
>
cmptAv(const tmp<DimensionedField<Type, GeoMesh>>& tdf)
{
typedef typename DimensionedField<Type, GeoMesh>::cmptType
cmptType;
typedef typename DimensionedField<Type, GeoMesh>::cmptType cmptType;
const DimensionedField<Type, GeoMesh>& df = tdf();
tmp<DimensionedField<cmptType, GeoMesh>> CmptAv =
auto tres =
reuseTmpDimensionedField<cmptType, Type, GeoMesh>::New
(
tdf,
@ -294,13 +285,13 @@ cmptAv(const tmp<DimensionedField<Type, GeoMesh>>& tdf)
df.dimensions()
);
cmptAv(CmptAv.ref().field(), df.field());
cmptAv(tres.ref().field(), df.field());
tdf.clear();
return CmptAv;
return tres;
}
#define UNARY_REDUCTION_FUNCTION(returnType, func, dfunc) \
\
template<class Type, class GeoMesh> \
@ -375,9 +366,9 @@ operator op \
) \
{ \
typedef typename product<Type1, Type2>::type productType; \
tmp<DimensionedField<productType, GeoMesh>> tRes \
( \
new DimensionedField<productType, GeoMesh> \
\
auto tres = \
tmp<DimensionedField<productType, GeoMesh>>::New \
( \
IOobject \
( \
@ -387,14 +378,14 @@ operator op \
), \
df1.mesh(), \
df1.dimensions() op df2.dimensions() \
) \
); \
); \
\
Foam::opFunc(tRes.ref().field(), df1.field(), df2.field()); \
Foam::opFunc(tres.ref().field(), df1.field(), df2.field()); \
\
return tRes; \
return tres; \
} \
\
\
template<class Type1, class Type2, class GeoMesh> \
tmp<DimensionedField<typename product<Type1, Type2>::type, GeoMesh>> \
operator op \
@ -407,7 +398,7 @@ operator op \
\
const DimensionedField<Type2, GeoMesh>& df2 = tdf2(); \
\
tmp<DimensionedField<productType, GeoMesh>> tRes = \
auto tres = \
reuseTmpDimensionedField<productType, Type2, GeoMesh>::New \
( \
tdf2, \
@ -415,13 +406,13 @@ operator op \
df1.dimensions() op df2.dimensions() \
); \
\
Foam::opFunc(tRes.ref().field(), df1.field(), df2.field()); \
Foam::opFunc(tres.ref().field(), df1.field(), df2.field()); \
\
tdf2.clear(); \
\
return tRes; \
return tres; \
} \
\
\
template<class Type1, class Type2, class GeoMesh> \
tmp<DimensionedField<typename product<Type1, Type2>::type, GeoMesh>> \
operator op \
@ -434,7 +425,7 @@ operator op \
\
const DimensionedField<Type1, GeoMesh>& df1 = tdf1(); \
\
tmp<DimensionedField<productType, GeoMesh>> tRes = \
auto tres = \
reuseTmpDimensionedField<productType, Type1, GeoMesh>::New \
( \
tdf1, \
@ -442,13 +433,13 @@ operator op \
df1.dimensions() op df2.dimensions() \
); \
\
Foam::opFunc(tRes.ref().field(), df1.field(), df2.field()); \
Foam::opFunc(tres.ref().field(), df1.field(), df2.field()); \
\
tdf1.clear(); \
\
return tRes; \
return tres; \
} \
\
\
template<class Type1, class Type2, class GeoMesh> \
tmp<DimensionedField<typename product<Type1, Type2>::type, GeoMesh>> \
operator op \
@ -462,7 +453,7 @@ operator op \
const DimensionedField<Type1, GeoMesh>& df1 = tdf1(); \
const DimensionedField<Type2, GeoMesh>& df2 = tdf2(); \
\
tmp<DimensionedField<productType, GeoMesh>> tRes = \
auto tres = \
reuseTmpTmpDimensionedField \
<productType, Type1, Type1, Type2, GeoMesh>::New \
( \
@ -472,14 +463,14 @@ operator op \
df1.dimensions() op df2.dimensions() \
); \
\
Foam::opFunc(tRes.ref().field(), df1.field(), df2.field()); \
Foam::opFunc(tres.ref().field(), df1.field(), df2.field()); \
\
tdf1.clear(); \
tdf2.clear(); \
\
return tRes; \
return tres; \
} \
\
\
template<class Form, class Type, class GeoMesh> \
tmp<DimensionedField<typename product<Type, Form>::type, GeoMesh>> \
operator op \
@ -490,9 +481,8 @@ operator op \
{ \
typedef typename product<Type, Form>::type productType; \
\
tmp<DimensionedField<productType, GeoMesh>> tRes \
( \
new DimensionedField<productType, GeoMesh> \
auto tres = \
tmp<DimensionedField<productType, GeoMesh>>::New \
( \
IOobject \
( \
@ -502,14 +492,14 @@ operator op \
), \
df1.mesh(), \
df1.dimensions() op dvs.dimensions() \
) \
); \
); \
\
Foam::opFunc(tRes.ref().field(), df1.field(), dvs.value()); \
Foam::opFunc(tres.ref().field(), df1.field(), dvs.value()); \
\
return tRes; \
return tres; \
} \
\
\
template<class Form, class Cmpt, direction nCmpt, class Type, class GeoMesh> \
tmp<DimensionedField<typename product<Form, Type>::type, GeoMesh>> \
operator op \
@ -534,7 +524,7 @@ operator op \
\
const DimensionedField<Type, GeoMesh>& df1 = tdf1(); \
\
tmp<DimensionedField<productType, GeoMesh>> tRes = \
auto tres = \
reuseTmpDimensionedField<productType, Type, GeoMesh>::New \
( \
tdf1, \
@ -542,13 +532,13 @@ operator op \
df1.dimensions() op dvs.dimensions() \
); \
\
Foam::opFunc(tRes.ref().field(), df1.field(), dvs.value()); \
Foam::opFunc(tres.ref().field(), df1.field(), dvs.value()); \
\
tdf1.clear(); \
\
return tRes; \
return tres; \
} \
\
\
template<class Form, class Cmpt, direction nCmpt, class Type, class GeoMesh> \
tmp<DimensionedField<typename product<Form, Type>::type, GeoMesh>> \
operator op \
@ -570,9 +560,9 @@ operator op \
) \
{ \
typedef typename product<Form, Type>::type productType; \
tmp<DimensionedField<productType, GeoMesh>> tRes \
( \
new DimensionedField<productType, GeoMesh> \
\
auto tres = \
tmp<DimensionedField<productType, GeoMesh>>::New \
( \
IOobject \
( \
@ -582,14 +572,14 @@ operator op \
), \
df1.mesh(), \
dvs.dimensions() op df1.dimensions() \
) \
); \
); \
\
Foam::opFunc(tRes.ref().field(), dvs.value(), df1.field()); \
Foam::opFunc(tres.ref().field(), dvs.value(), df1.field()); \
\
return tRes; \
return tres; \
} \
\
\
template<class Form, class Cmpt, direction nCmpt, class Type, class GeoMesh> \
tmp<DimensionedField<typename product<Form, Type>::type, GeoMesh>> \
operator op \
@ -601,6 +591,7 @@ operator op \
return dimensioned<Form>(static_cast<const Form&>(vs)) op df1; \
} \
\
\
template<class Form, class Type, class GeoMesh> \
tmp<DimensionedField<typename product<Form, Type>::type, GeoMesh>> \
operator op \
@ -613,7 +604,7 @@ operator op \
\
const DimensionedField<Type, GeoMesh>& df1 = tdf1(); \
\
tmp<DimensionedField<productType, GeoMesh>> tRes = \
auto tres = \
reuseTmpDimensionedField<productType, Type, GeoMesh>::New \
( \
tdf1, \
@ -621,13 +612,13 @@ operator op \
dvs.dimensions() op df1.dimensions() \
); \
\
Foam::opFunc(tRes.ref().field(), dvs.value(), df1.field()); \
Foam::opFunc(tres.ref().field(), dvs.value(), df1.field()); \
\
tdf1.clear(); \
\
return tRes; \
return tres; \
} \
\
\
template<class Form, class Cmpt, direction nCmpt, class Type, class GeoMesh> \
tmp<DimensionedField<typename product<Form, Type>::type, GeoMesh>> \
operator op \
@ -639,6 +630,7 @@ operator op \
return dimensioned<Form>(static_cast<const Form&>(vs)) op tdf1; \
}
PRODUCT_OPERATOR(typeOfSum, +, add)
PRODUCT_OPERATOR(typeOfSum, -, subtract)

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2019 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -35,9 +35,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
const DimensionedField<Type1, GeoMesh>& df1 \
) \
{ \
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
new DimensionedField<ReturnType, GeoMesh> \
auto tres = \
tmp<DimensionedField<ReturnType, GeoMesh>>::New \
( \
IOobject \
( \
@ -47,16 +46,15 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
), \
df1.mesh(), \
Dfunc(df1.dimensions()) \
) \
); \
); \
\
Func(tRes.ref().field(), df1.field()); \
Func(tres.ref().field(), df1.field()); \
tres.ref().oriented() = Dfunc(df1.oriented()); \
\
tRes.ref().oriented() = Dfunc(df1.oriented()); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> Func \
( \
@ -65,23 +63,19 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
{ \
const DimensionedField<Type1, GeoMesh>& df1 = tdf1(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::New \
( \
tdf1, \
#Func "(" + df1.name() + ')', \
Dfunc(df1.dimensions()) \
) \
); \
); \
\
Func(tRes.ref().field(), df1.field()); \
\
tRes.ref().oriented() = Dfunc(df1.oriented()); \
Func(tres.ref().field(), df1.field()); \
tres.ref().oriented() = Dfunc(df1.oriented()); \
\
tdf1.clear(); \
\
return tRes; \
return tres; \
}
@ -95,9 +89,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
const DimensionedField<Type1, GeoMesh>& df1 \
) \
{ \
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
new DimensionedField<ReturnType, GeoMesh> \
auto tres = \
tmp<DimensionedField<ReturnType, GeoMesh>>::New \
( \
IOobject \
( \
@ -107,16 +100,15 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
), \
df1.mesh(), \
Dfunc(df1.dimensions()) \
) \
); \
); \
\
Foam::OpFunc(tRes.ref().field(), df1.field()); \
Foam::OpFunc(tres.ref().field(), df1.field()); \
tres.ref().oriented() = Dfunc(df1.oriented()); \
\
tRes.ref().oriented() = Dfunc(df1.oriented()); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
( \
@ -125,23 +117,19 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
{ \
const DimensionedField<Type1, GeoMesh>& df1 = tdf1(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::New \
( \
tdf1, \
#Op + df1.name(), \
Dfunc(df1.dimensions()) \
) \
); \
); \
\
Foam::OpFunc(tRes.ref().field(), df1.field()); \
\
tRes.ref().oriented() = Dfunc(df1.oriented()); \
Foam::OpFunc(tres.ref().field(), df1.field()); \
tres.ref().oriented() = Dfunc(df1.oriented()); \
\
tdf1.clear(); \
\
return tRes; \
return tres; \
}
@ -156,9 +144,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
const DimensionedField<Type2, GeoMesh>& df2 \
) \
{ \
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
new DimensionedField<ReturnType, GeoMesh> \
auto tres = \
tmp<DimensionedField<ReturnType, GeoMesh>>::New \
( \
IOobject \
( \
@ -168,16 +155,15 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
), \
df1.mesh(), \
Func(df1.dimensions(), df2.dimensions()) \
) \
); \
); \
\
Func(tRes.ref().field(), df1.field(), df2.field()); \
Func(tres.ref().field(), df1.field(), df2.field()); \
tres.ref().oriented() = Func(df1.oriented(), df2.oriented()); \
\
tRes.ref().oriented() = Func(df1.oriented(), df2.oriented()); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> Func \
( \
@ -187,25 +173,22 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
{ \
const DimensionedField<Type2, GeoMesh>& df2 = tdf2(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpDimensionedField<ReturnType, Type2, GeoMesh>::New \
( \
tdf2, \
#Func "(" + df1.name() + ',' + df2.name() + ')', \
Func(df1.dimensions(), df2.dimensions()) \
) \
); \
); \
\
Func(tRes.ref().field(), df1.field(), df2.field()); \
\
tRes.ref().oriented() = Func(df1.oriented(), df2.oriented()); \
Func(tres.ref().field(), df1.field(), df2.field()); \
tres.ref().oriented() = Func(df1.oriented(), df2.oriented()); \
\
tdf2.clear(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> Func \
( \
@ -215,7 +198,7 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
{ \
const DimensionedField<Type1, GeoMesh>& df1 = tdf1(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
tmp<DimensionedField<ReturnType, GeoMesh>> tres \
( \
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::New \
( \
@ -225,15 +208,14 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
) \
); \
\
Func(tRes.ref().field(), df1.field(), df2.field()); \
\
tRes.ref().oriented() = Func(df1.oriented(), df2.oriented()); \
Func(tres.ref().field(), df1.field(), df2.field()); \
tres.ref().oriented() = Func(df1.oriented(), df2.oriented()); \
\
tdf1.clear(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> Func \
( \
@ -244,26 +226,22 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
const DimensionedField<Type1, GeoMesh>& df1 = tdf1(); \
const DimensionedField<Type2, GeoMesh>& df2 = tdf2(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpTmpDimensionedField \
<ReturnType, Type1, Type1, Type2, GeoMesh>::New \
<ReturnType, Type1, Type1, Type2, GeoMesh>::New \
( \
tdf1, \
tdf2, \
#Func "(" + df1.name() + ',' + df2.name() + ')', \
Func(df1.dimensions(), df2.dimensions()) \
) \
); \
); \
\
Func(tRes.ref().field(), df1.field(), df2.field()); \
\
tRes.ref().oriented() = Func(df1.oriented(), df2.oriented()); \
Func(tres.ref().field(), df1.field(), df2.field()); \
tres.ref().oriented() = Func(df1.oriented(), df2.oriented()); \
\
tdf1.clear(); \
tdf2.clear(); \
\
return tRes; \
return tres; \
}
@ -278,9 +256,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
const DimensionedField<Type2, GeoMesh>& df2 \
) \
{ \
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
new DimensionedField<ReturnType, GeoMesh> \
auto tres = \
tmp<DimensionedField<ReturnType, GeoMesh>>::New \
( \
IOobject \
( \
@ -290,16 +267,15 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
), \
df2.mesh(), \
Func(dt1.dimensions(), df2.dimensions()) \
) \
); \
); \
\
Func(tRes.ref().field(), dt1.value(), df2.field()); \
Func(tres.ref().field(), dt1.value(), df2.field()); \
tres.ref().oriented() = df2.oriented(); \
\
tRes.ref().oriented() = df2.oriented(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> Func \
( \
@ -320,25 +296,22 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
{ \
const DimensionedField<Type2, GeoMesh>& df2 = tdf2(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpDimensionedField<ReturnType, Type2, GeoMesh>::New \
( \
tdf2, \
#Func "(" + dt1.name() + ',' + df2.name() + ')', \
Func(dt1.dimensions(), df2.dimensions()) \
) \
); \
); \
\
Func(tRes.ref().field(), dt1.value(), df2.field()); \
\
tRes.ref().oriented() = df2.oriented(); \
Func(tres.ref().field(), dt1.value(), df2.field()); \
tres.ref().oriented() = df2.oriented(); \
\
tdf2.clear(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> Func \
( \
@ -359,9 +332,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
const dimensioned<Type2>& dt2 \
) \
{ \
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
new DimensionedField<ReturnType, GeoMesh> \
auto tres = \
tmp<DimensionedField<ReturnType, GeoMesh>>::New \
( \
IOobject \
( \
@ -371,16 +343,15 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
), \
df1.mesh(), \
Func(df1.dimensions(), dt2.dimensions()) \
) \
); \
); \
\
Func(tRes.ref().field(), df1.field(), dt2.value()); \
Func(tres.ref().field(), df1.field(), dt2.value()); \
tres.ref().oriented() = df1.oriented(); \
\
tRes.ref().oriented() = df1.oriented(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> Func \
( \
@ -401,25 +372,22 @@ tmp<DimensionedField<ReturnType, GeoMesh>> Func \
{ \
const DimensionedField<Type1, GeoMesh>& df1 = tdf1(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::New \
( \
tdf1, \
#Func "(" + df1.name() + ',' + dt2.name() + ')', \
Func(df1.dimensions(), dt2.dimensions()) \
) \
); \
); \
\
Func(tRes.ref().field(), df1.field(), dt2.value()); \
\
tRes.ref().oriented() = df1.oriented(); \
Func(tres.ref().field(), df1.field(), dt2.value()); \
tres.ref().oriented() = df1.oriented(); \
\
tdf1.clear(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> Func \
( \
@ -447,9 +415,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
const DimensionedField<Type2, GeoMesh>& df2 \
) \
{ \
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
new DimensionedField<ReturnType, GeoMesh> \
auto tres = \
tmp<DimensionedField<ReturnType, GeoMesh>>::New \
( \
IOobject \
( \
@ -459,16 +426,15 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
), \
df1.mesh(), \
df1.dimensions() Op df2.dimensions() \
) \
); \
); \
\
Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \
Foam::OpFunc(tres.ref().field(), df1.field(), df2.field()); \
tres.ref().oriented() = df1.oriented() Op df2.oriented(); \
\
tRes.ref().oriented() = df1.oriented() Op df2.oriented(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
( \
@ -478,25 +444,22 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
{ \
const DimensionedField<Type2, GeoMesh>& df2 = tdf2(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpDimensionedField<ReturnType, Type2, GeoMesh>::New \
( \
tdf2, \
'(' + df1.name() + OpName + df2.name() + ')', \
df1.dimensions() Op df2.dimensions() \
) \
); \
); \
\
Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \
\
tRes.ref().oriented() = df1.oriented() Op df2.oriented(); \
Foam::OpFunc(tres.ref().field(), df1.field(), df2.field()); \
tres.ref().oriented() = df1.oriented() Op df2.oriented(); \
\
tdf2.clear(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
( \
@ -506,25 +469,22 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
{ \
const DimensionedField<Type1, GeoMesh>& df1 = tdf1(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::New \
( \
tdf1, \
'(' + df1.name() + OpName + df2.name() + ')', \
df1.dimensions() Op df2.dimensions() \
) \
); \
); \
\
Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \
\
tRes.ref().oriented() = df1.oriented() Op df2.oriented(); \
Foam::OpFunc(tres.ref().field(), df1.field(), df2.field()); \
tres.ref().oriented() = df1.oriented() Op df2.oriented(); \
\
tdf1.clear(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
( \
@ -535,26 +495,22 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
const DimensionedField<Type1, GeoMesh>& df1 = tdf1(); \
const DimensionedField<Type2, GeoMesh>& df2 = tdf2(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpTmpDimensionedField \
<ReturnType, Type1, Type1, Type2, GeoMesh>::New \
<ReturnType, Type1, Type1, Type2, GeoMesh>::New \
( \
tdf1, \
tdf2, \
'(' + df1.name() + OpName + df2.name() + ')', \
df1.dimensions() Op df2.dimensions() \
) \
); \
); \
\
Foam::OpFunc(tRes.ref().field(), df1.field(), df2.field()); \
\
tRes.ref().oriented() = df1.oriented() Op df2.oriented(); \
Foam::OpFunc(tres.ref().field(), df1.field(), df2.field()); \
tres.ref().oriented() = df1.oriented() Op df2.oriented(); \
\
tdf1.clear(); \
tdf2.clear(); \
\
return tRes; \
return tres; \
}
@ -569,9 +525,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
const DimensionedField<Type2, GeoMesh>& df2 \
) \
{ \
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
new DimensionedField<ReturnType, GeoMesh> \
auto tres = \
tmp<DimensionedField<ReturnType, GeoMesh>>::New \
( \
IOobject \
( \
@ -581,16 +536,16 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
), \
df2.mesh(), \
dt1.dimensions() Op df2.dimensions() \
) \
); \
); \
\
tRes.ref().oriented() = df2.oriented(); \
tres.ref().oriented() = df2.oriented(); \
\
Foam::OpFunc(tRes.ref().field(), dt1.value(), df2.field()); \
Foam::OpFunc(tres.ref().field(), dt1.value(), df2.field()); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
( \
@ -611,25 +566,22 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
{ \
const DimensionedField<Type2, GeoMesh>& df2 = tdf2(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpDimensionedField<ReturnType, Type2, GeoMesh>::New \
( \
tdf2, \
'(' + dt1.name() + OpName + df2.name() + ')', \
dt1.dimensions() Op df2.dimensions() \
) \
); \
); \
\
Foam::OpFunc(tRes.ref().field(), dt1.value(), tdf2().field()); \
\
tRes.ref().oriented() = df2.oriented(); \
Foam::OpFunc(tres.ref().field(), dt1.value(), tdf2().field()); \
tres.ref().oriented() = df2.oriented(); \
\
tdf2.clear(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
( \
@ -650,9 +602,8 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
const dimensioned<Type2>& dt2 \
) \
{ \
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
new DimensionedField<ReturnType, GeoMesh> \
auto tres = \
tmp<DimensionedField<ReturnType, GeoMesh>>::New \
( \
IOobject \
( \
@ -662,16 +613,15 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
), \
df1.mesh(), \
df1.dimensions() Op dt2.dimensions() \
) \
); \
); \
\
Foam::OpFunc(tRes.ref().field(), df1.field(), dt2.value()); \
Foam::OpFunc(tres.ref().field(), df1.field(), dt2.value()); \
tres.ref().oriented() = df1.oriented(); \
\
tRes.ref().oriented() = df1.oriented(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
( \
@ -692,25 +642,22 @@ tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
{ \
const DimensionedField<Type1, GeoMesh>& df1 = tdf1(); \
\
tmp<DimensionedField<ReturnType, GeoMesh>> tRes \
( \
auto tres = \
reuseTmpDimensionedField<ReturnType, Type1, GeoMesh>::New \
( \
tdf1, \
'(' + df1.name() + OpName + dt2.name() + ')', \
df1.dimensions() Op dt2.dimensions() \
) \
); \
); \
\
Foam::OpFunc(tRes.ref().field(), tdf1().field(), dt2.value()); \
\
tRes.ref().oriented() = df1.oriented(); \
Foam::OpFunc(tres.ref().field(), tdf1().field(), dt2.value()); \
tres.ref().oriented() = df1.oriented(); \
\
tdf1.clear(); \
\
return tRes; \
return tres; \
} \
\
\
TEMPLATE \
tmp<DimensionedField<ReturnType, GeoMesh>> operator Op \
( \