ENH: use New factory methods for Dimensioned/Geometric functions (#2723)

This commit is contained in:
Mark Olesen
2023-03-17 15:35:38 +01:00
parent 1685e8e418
commit dfa5c05a16
7 changed files with 95 additions and 333 deletions

View File

@ -391,14 +391,9 @@ Foam::DimensionedField<Type, GeoMesh>::component
const direction d
) const
{
auto tresult = tmp<DimensionedField<cmptType, GeoMesh>>::New
auto tresult = DimensionedField<cmptType, GeoMesh>::New
(
IOobject
(
name() + ".component(" + ::Foam::name(d) + ')',
instance(),
db()
),
name() + ".component(" + ::Foam::name(d) + ')',
mesh_,
dimensions_
);
@ -445,14 +440,9 @@ template<class Type, class GeoMesh>
Foam::tmp<Foam::DimensionedField<Type, GeoMesh>>
Foam::DimensionedField<Type, GeoMesh>::T() const
{
auto tresult = tmp<DimensionedField<Type, GeoMesh>>::New
auto tresult = DimensionedField<Type, GeoMesh>::New
(
IOobject
(
name() + ".T()",
instance(),
db()
),
name() + ".T()",
mesh_,
dimensions_
);

View File

@ -48,14 +48,9 @@ struct reuseTmpDimensionedField
const dimensionSet& dimensions
)
{
return tmp<DimensionedField<TypeR, GeoMesh>>::New
return DimensionedField<TypeR, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
@ -71,14 +66,9 @@ struct reuseTmpDimensionedField
{
const auto& f1 = tf1();
return tmp<DimensionedField<TypeR, GeoMesh>>::New
return DimensionedField<TypeR, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
@ -110,21 +100,16 @@ struct reuseTmpDimensionedField<TypeR, TypeR, GeoMesh>
const auto& f1 = tf1();
auto tresult = tmp<DimensionedField<TypeR, GeoMesh>>::New
auto tresult = DimensionedField<TypeR, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
if (initCopy)
{
tresult.ref().field() = tf1().field();
tresult.ref().field() = f1.field();
}
return tresult;
@ -165,14 +150,9 @@ struct reuseTmpTmpDimensionedField
{
const auto& f1 = tf1();
return tmp<DimensionedField<TypeR, GeoMesh>>::New
return DimensionedField<TypeR, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
@ -202,14 +182,9 @@ struct reuseTmpTmpDimensionedField<TypeR, Type1, Type12, TypeR, GeoMesh>
const auto& f1 = tf1();
return tmp<DimensionedField<TypeR, GeoMesh>>::New
return DimensionedField<TypeR, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
@ -239,14 +214,9 @@ struct reuseTmpTmpDimensionedField<TypeR, TypeR, TypeR, Type2, GeoMesh>
const auto& f1 = tf1();
return tmp<DimensionedField<TypeR, GeoMesh>>::New
return DimensionedField<TypeR, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
@ -284,14 +254,9 @@ struct reuseTmpTmpDimensionedField<TypeR, TypeR, TypeR, TypeR, GeoMesh>
const auto& f1 = tf1();
return tmp<DimensionedField<TypeR, GeoMesh>>::New
return DimensionedField<TypeR, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);

View File

@ -46,14 +46,9 @@ tmp<DimensionedField<scalar, GeoMesh>> stabilise
)
{
auto tres =
tmp<DimensionedField<scalar, GeoMesh>>::New
DimensionedField<scalar, GeoMesh>::New
(
IOobject
(
"stabilise(" + dsf.name() + ',' + ds.name() + ')',
dsf.instance(),
dsf.db()
),
"stabilise(" + dsf.name() + ',' + ds.name() + ')',
dsf.mesh(),
dsf.dimensions() + ds.dimensions()
);
@ -130,14 +125,9 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
}
auto tresult =
tmp<DimensionedField<scalar, GeoMesh>>::New
DimensionedField<scalar, GeoMesh>::New
(
IOobject
(
"pow(" + f1.name() + ',' + f2.name() + ')',
f1.instance(),
f1.db()
),
"pow(" + f1.name() + ',' + f2.name() + ')',
f1.mesh(),
dimless
);
@ -311,14 +301,9 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
}
auto tresult =
tmp<DimensionedField<scalar, GeoMesh>>::New
DimensionedField<scalar, GeoMesh>::New
(
IOobject
(
"pow(" + f1.name() + ',' + ds.name() + ')',
f1.instance(),
f1.db()
),
"pow(" + f1.name() + ',' + ds.name() + ')',
f1.mesh(),
pow(f1.dimensions(), ds)
);
@ -417,14 +402,9 @@ tmp<DimensionedField<scalar, GeoMesh>> pow
}
auto tresult =
tmp<DimensionedField<scalar, GeoMesh>>::New
DimensionedField<scalar, GeoMesh>::New
(
IOobject
(
"pow(" + ds.name() + ',' + f2.name() + ')',
f2.instance(),
f2.db()
),
"pow(" + ds.name() + ',' + f2.name() + ')',
f2.mesh(),
dimless
);
@ -512,14 +492,9 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
)
{
auto tres =
tmp<DimensionedField<scalar, GeoMesh>>::New
DimensionedField<scalar, GeoMesh>::New
(
IOobject
(
"atan2(" + dsf1.name() + ',' + dsf2.name() + ')',
dsf1.instance(),
dsf1.db()
),
"atan2(" + dsf1.name() + ',' + dsf2.name() + ')',
dsf1.mesh(),
atan2(dsf1.dimensions(), dsf2.dimensions())
);
@ -614,14 +589,9 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
)
{
auto tres =
tmp<DimensionedField<scalar, GeoMesh>>::New
DimensionedField<scalar, GeoMesh>::New
(
IOobject
(
"atan2(" + dsf.name() + ',' + ds.name() + ')',
dsf.instance(),
dsf.db()
),
"atan2(" + dsf.name() + ',' + ds.name() + ')',
dsf.mesh(),
atan2(dsf.dimensions(), ds)
);
@ -683,14 +653,9 @@ tmp<DimensionedField<scalar, GeoMesh>> atan2
)
{
auto tres =
tmp<DimensionedField<scalar, GeoMesh>>::New
DimensionedField<scalar, GeoMesh>::New
(
IOobject
(
"atan2(" + ds.name() + ',' + dsf.name() + ')',
dsf.instance(),
dsf.db()
),
"atan2(" + ds.name() + ',' + dsf.name() + ')',
dsf.mesh(),
atan2(ds, dsf.dimensions())
);
@ -805,14 +770,9 @@ tmp<DimensionedField<scalar, GeoMesh>> func \
} \
\
auto tres = \
tmp<DimensionedField<scalar, GeoMesh>>::New \
DimensionedField<scalar, GeoMesh>::New \
( \
IOobject \
( \
#func "(" + name(n) + ',' + dsf.name() + ')', \
dsf.instance(), \
dsf.db() \
), \
#func "(" + name(n) + ',' + dsf.name() + ')', \
dsf.mesh(), \
dimless \
); \

View File

@ -1214,14 +1214,9 @@ template<class Type, template<class> class PatchField, class GeoMesh>
Foam::tmp<Foam::GeometricField<Type, PatchField, GeoMesh>>
Foam::GeometricField<Type, PatchField, GeoMesh>::T() const
{
auto tresult = tmp<GeometricField<Type, PatchField, GeoMesh>>::New
auto tresult = GeometricField<Type, PatchField, GeoMesh>::New
(
IOobject
(
this->name() + ".T()",
this->instance(),
this->db()
),
this->name() + ".T()",
this->mesh(),
this->dimensions()
);
@ -1248,14 +1243,9 @@ Foam::GeometricField<Type, PatchField, GeoMesh>::component
const direction d
) const
{
auto tresult = tmp<GeometricField<cmptType, PatchField, GeoMesh>>::New
auto tresult = GeometricField<cmptType, PatchField, GeoMesh>::New
(
IOobject
(
this->name() + ".component(" + Foam::name(d) + ')',
this->instance(),
this->db()
),
this->name() + ".component(" + Foam::name(d) + ')',
this->mesh(),
this->dimensions()
);

View File

@ -95,14 +95,9 @@ struct reuseTmpGeometricField
const dimensionSet& dimensions
)
{
return tmp<GeometricField<TypeR, PatchField, GeoMesh>>::New
return GeometricField<TypeR, PatchField, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
@ -118,14 +113,9 @@ struct reuseTmpGeometricField
{
const auto& f1 = tf1();
return tmp<GeometricField<TypeR, PatchField, GeoMesh>>::New
return GeometricField<TypeR, PatchField, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
@ -157,21 +147,16 @@ struct reuseTmpGeometricField<TypeR, TypeR, PatchField, GeoMesh>
const auto& f1 = tf1();
auto tresult = tmp<GeometricField<TypeR, PatchField, GeoMesh>>::New
auto tresult = GeometricField<TypeR, PatchField, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
if (initCopy)
{
tresult.ref() == f1;
tresult.ref() == tf1();
}
return tresult;
@ -223,14 +208,9 @@ struct reuseTmpTmpGeometricField
{
const auto& f1 = tf1();
return tmp<GeometricField<TypeR, PatchField, GeoMesh>>::New
return GeometricField<TypeR, PatchField, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
@ -270,14 +250,9 @@ struct reuseTmpTmpGeometricField
const auto& f1 = tf1();
return tmp<GeometricField<TypeR, PatchField, GeoMesh>>::New
return GeometricField<TypeR, PatchField, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
@ -316,14 +291,9 @@ struct reuseTmpTmpGeometricField
const auto& f1 = tf1();
return tmp<GeometricField<TypeR, PatchField, GeoMesh>>::New
return GeometricField<TypeR, PatchField, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);
@ -364,14 +334,9 @@ struct reuseTmpTmpGeometricField
const auto& f1 = tf1();
return tmp<GeometricField<TypeR, PatchField, GeoMesh>>::New
return GeometricField<TypeR, PatchField, GeoMesh>::New
(
IOobject
(
name,
f1.instance(),
f1.db()
),
name,
f1.mesh(),
dimensions
);

View File

@ -58,21 +58,11 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> stabilise
const dimensioned<scalar>& ds
)
{
tmp<GeometricField<scalar, PatchField, GeoMesh>> tRes
auto tRes = GeometricField<scalar, PatchField, GeoMesh>::New
(
new GeometricField<scalar, PatchField, GeoMesh>
(
IOobject
(
"stabilise(" + gsf.name() + ',' + ds.name() + ')',
gsf.instance(),
gsf.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
gsf.mesh(),
ds.dimensions() + gsf.dimensions()
)
"stabilise(" + gsf.name() + ',' + ds.name() + ')',
gsf.mesh(),
ds.dimensions() + gsf.dimensions()
);
stabilise(tRes.ref(), gsf, ds);
@ -163,21 +153,11 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
FatalError << exit(FatalError);
}
tmp<GeometricField<scalar, PatchField, GeoMesh>> tresult
auto tresult = GeometricField<scalar, PatchField, GeoMesh>::New
(
new GeometricField<scalar, PatchField, GeoMesh>
(
IOobject
(
"pow(" + f1.name() + ',' + f2.name() + ')',
f1.instance(),
f1.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
f1.mesh(),
dimless
)
"pow(" + f1.name() + ',' + f2.name() + ')',
f1.mesh(),
dimless
);
pow(tresult.ref(), f1, f2);
@ -368,21 +348,11 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
<< exit(FatalError);
}
tmp<GeometricField<scalar, PatchField, GeoMesh>> tresult
auto tresult = GeometricField<scalar, PatchField, GeoMesh>::New
(
new GeometricField<scalar, PatchField, GeoMesh>
(
IOobject
(
"pow(" + f1.name() + ',' + ds.name() + ')',
f1.instance(),
f1.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
f1.mesh(),
pow(f1.dimensions(), ds)
)
"pow(" + f1.name() + ',' + ds.name() + ')',
f1.mesh(),
pow(f1.dimensions(), ds)
);
pow(tresult.ref(), f1, ds);
@ -491,21 +461,11 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> pow
FatalError << exit(FatalError);
}
tmp<GeometricField<scalar, PatchField, GeoMesh>> tresult
auto tresult = GeometricField<scalar, PatchField, GeoMesh>::New
(
new GeometricField<scalar, PatchField, GeoMesh>
(
IOobject
(
"pow(" + ds.name() + ',' + f2.name() + ')',
f2.instance(),
f2.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
f2.mesh(),
dimless
)
"pow(" + ds.name() + ',' + f2.name() + ')',
f2.mesh(),
dimless
);
pow(tresult.ref(), ds, f2);
@ -615,21 +575,11 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
const GeometricField<scalar, PatchField, GeoMesh>& gsf2
)
{
tmp<GeometricField<scalar, PatchField, GeoMesh>> tAtan2
auto tAtan2 = GeometricField<scalar, PatchField, GeoMesh>::New
(
new GeometricField<scalar, PatchField, GeoMesh>
(
IOobject
(
"atan2(" + gsf1.name() + ',' + gsf2.name() + ')',
gsf1.instance(),
gsf1.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
gsf1.mesh(),
atan2(gsf1.dimensions(), gsf2.dimensions())
)
"atan2(" + gsf1.name() + ',' + gsf2.name() + ')',
gsf1.mesh(),
atan2(gsf1.dimensions(), gsf2.dimensions())
);
atan2(tAtan2.ref(), gsf1, gsf2);
@ -742,21 +692,11 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
const dimensionedScalar& ds
)
{
tmp<GeometricField<scalar, PatchField, GeoMesh>> tAtan2
auto tAtan2 = GeometricField<scalar, PatchField, GeoMesh>::New
(
new GeometricField<scalar, PatchField, GeoMesh>
(
IOobject
(
"atan2(" + gsf.name() + ',' + ds.name() + ')',
gsf.instance(),
gsf.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
gsf.mesh(),
atan2(gsf.dimensions(), ds)
)
"atan2(" + gsf.name() + ',' + ds.name() + ')',
gsf.mesh(),
atan2(gsf.dimensions(), ds)
);
atan2(tAtan2.ref(), gsf, ds);
@ -831,21 +771,11 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> atan2
const GeometricField<scalar, PatchField, GeoMesh>& gsf
)
{
tmp<GeometricField<scalar, PatchField, GeoMesh>> tAtan2
auto tAtan2 = GeometricField<scalar, PatchField, GeoMesh>::New
(
new GeometricField<scalar, PatchField, GeoMesh>
(
IOobject
(
"atan2(" + ds.name() + ',' + gsf.name() + ')',
gsf.instance(),
gsf.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
gsf.mesh(),
atan2(ds, gsf.dimensions())
)
"atan2(" + ds.name() + ',' + gsf.name() + ')',
gsf.mesh(),
atan2(ds, gsf.dimensions())
);
atan2(tAtan2.ref(), ds, gsf);
@ -972,21 +902,11 @@ tmp<GeometricField<scalar, PatchField, GeoMesh>> func \
<< abort(FatalError); \
} \
\
tmp<GeometricField<scalar, PatchField, GeoMesh>> tFunc \
auto tFunc = GeometricField<scalar, PatchField, GeoMesh>::New \
( \
new GeometricField<scalar, PatchField, GeoMesh> \
( \
IOobject \
( \
#func "(" + gsf.name() + ')', \
gsf.instance(), \
gsf.db(), \
IOobject::NO_READ, \
IOobject::NO_WRITE \
), \
gsf.mesh(), \
dimless \
) \
#func "(" + gsf.name() + ')', \
gsf.mesh(), \
dimless \
); \
\
func(tFunc.ref(), n, gsf); \

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2018 OpenCFD Ltd.
Copyright (C) 2018-2023 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -90,16 +90,9 @@ Foam::transform
const GeometricField<Type, PatchField, GeoMesh>& fld
)
{
auto tresult = tmp<GeometricField<Type, PatchField, GeoMesh>>::New
auto tresult = GeometricField<Type, PatchField, GeoMesh>::New
(
IOobject
(
"transform(" + rot.name() + ',' + fld.name() + ')',
fld.instance(),
fld.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
"transform(" + rot.name() + ',' + fld.name() + ')',
fld.mesh(),
fld.dimensions()
);
@ -161,16 +154,9 @@ Foam::transform
const GeometricField<Type, PatchField, GeoMesh>& fld
)
{
auto tresult = tmp<GeometricField<Type, PatchField, GeoMesh>>::New
auto tresult = GeometricField<Type, PatchField, GeoMesh>::New
(
IOobject
(
"transform(" + rot.name() + ',' + fld.name() + ')',
fld.instance(),
fld.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
"transform(" + rot.name() + ',' + fld.name() + ')',
fld.mesh(),
fld.dimensions()
);
@ -251,16 +237,9 @@ Foam::invTransform
const GeometricField<Type, PatchField, GeoMesh>& fld
)
{
auto tresult = tmp<GeometricField<Type, PatchField, GeoMesh>>::New
auto tresult = GeometricField<Type, PatchField, GeoMesh>::New
(
IOobject
(
"invTransform(" + rot.name() + ',' + fld.name() + ')',
fld.instance(),
fld.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
"invTransform(" + rot.name() + ',' + fld.name() + ')',
fld.mesh(),
fld.dimensions()
);
@ -322,16 +301,9 @@ Foam::invTransform
const GeometricField<Type, PatchField, GeoMesh>& fld
)
{
auto tresult = tmp<GeometricField<Type, PatchField, GeoMesh>>::New
auto tresult = GeometricField<Type, PatchField, GeoMesh>::New
(
IOobject
(
"invTransform(" + rot.name() + ',' + fld.name() + ')',
fld.instance(),
fld.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
"invTransform(" + rot.name() + ',' + fld.name() + ')',
fld.mesh(),
fld.dimensions()
);