ENH: use tmp field factory methods [3] (#2723)

- src/faOptions, src/fvOptions
This commit is contained in:
Mark Olesen 2024-01-23 09:50:54 +01:00
parent 092db087c9
commit 710eb5c142
17 changed files with 178 additions and 256 deletions

View File

@ -41,8 +41,8 @@ Foam::tmp<Foam::faMatrix<Type>> Foam::fa::optionList::source
{
checkApplied();
tmp<faMatrix<Type>> tmtx(new faMatrix<Type>(field, ds));
faMatrix<Type>& mtx = tmtx.ref();
auto tmtx = tmp<faMatrix<Type>>::New(field, ds);
auto& mtx = tmtx.ref();
for (fa::option& source : *this)
{
@ -132,8 +132,8 @@ Foam::tmp<Foam::faMatrix<Type>> Foam::fa::optionList::operator()
rho.dimensions()*field.dimensions()/dimTime*dimArea
);
tmp<faMatrix<Type>> tmtx(new faMatrix<Type>(field, ds));
faMatrix<Type>& mtx = tmtx.ref();
auto tmtx = tmp<faMatrix<Type>>::New(field, ds);
auto& mtx = tmtx.ref();
for (fa::option& source : *this)
{
@ -184,8 +184,8 @@ Foam::tmp<Foam::faMatrix<Type>> Foam::fa::optionList::operator()
const dimensionSet dsMat(ds*dimArea);
tmp<faMatrix<Type>> tmtx(new faMatrix<Type>(field, dsMat));
faMatrix<Type>& mtx = tmtx.ref();
auto tmtx = tmp<faMatrix<Type>>::New(field, dsMat);
auto& mtx = tmtx.ref();
for (fa::option& source : *this)
{

View File

@ -58,11 +58,12 @@ Foam::fa::jouleHeatingSource::jouleHeatingSource
(
IOobject
(
typeName + ":V_" + regionName_,
IOobject::scopedName(typeName, "V_" + regionName_),
regionMesh().thisDb().time().timeName(),
regionMesh().thisDb(),
IOobject::MUST_READ,
IOobject::AUTO_WRITE
IOobject::AUTO_WRITE,
IOobject::REGISTER
),
regionMesh()
),
@ -141,6 +142,11 @@ void Foam::fa::jouleHeatingSource::addSup
}
// Add the Joule heating contribution
const word sigmaName
(
IOobject::scopedName(typeName, "sigma_" + regionName_)
);
areaVectorField gradV("gradV", fac::grad(V_));
if (debug > 1 && mesh().time().writeTime())
@ -156,20 +162,14 @@ void Foam::fa::jouleHeatingSource::addSup
if (anisotropicElectricalConductivity_)
{
const auto& sigma =
obr.lookupObject<areaTensorField>
(
typeName + ":sigma_" + regionName_
);
obr.lookupObject<areaTensorField>(sigmaName);
tsource = (h*sigma & gradV) & gradV;
}
else
{
const auto& sigma =
obr.lookupObject<areaScalarField>
(
typeName + ":sigma_" + regionName_
);
obr.lookupObject<areaScalarField>(sigmaName);
tsource = (h*sigma*gradV) & gradV;
}

View File

@ -36,13 +36,13 @@ void Foam::fa::jouleHeatingSource::initialiseSigma
autoPtr<Function1<Type>>& sigmaVsTPtr
)
{
typedef GeometricField<Type, faPatchField, areaMesh> AreaFieldType;
typedef GeometricField<Type, faPatchField, areaMesh> FieldType;
auto& obr = regionMesh().thisDb();
IOobject io
(
typeName + ":sigma_" + regionName_,
IOobject::scopedName(typeName, "sigma_" + regionName_),
obr.time().timeName(),
obr,
IOobject::NO_READ,
@ -50,7 +50,7 @@ void Foam::fa::jouleHeatingSource::initialiseSigma
IOobject::REGISTER
);
tmp<AreaFieldType> tsigma;
autoPtr<FieldType> tsigma;
if (dict.found("sigma"))
{
@ -59,7 +59,7 @@ void Foam::fa::jouleHeatingSource::initialiseSigma
tsigma.reset
(
new AreaFieldType
new FieldType
(
io,
regionMesh(),
@ -76,7 +76,7 @@ void Foam::fa::jouleHeatingSource::initialiseSigma
// Sigma to be defined by user input
io.readOpt(IOobject::MUST_READ);
tsigma.reset(new AreaFieldType(io, regionMesh()));
tsigma.reset(new FieldType(io, regionMesh()));
Info<< " Conductivity 'sigma' read from file" << nl << endl;
}
@ -92,12 +92,15 @@ Foam::fa::jouleHeatingSource::updateSigma
const autoPtr<Function1<Type>>& sigmaVsTPtr
) const
{
typedef GeometricField<Type, faPatchField, areaMesh> AreaFieldType;
typedef GeometricField<Type, faPatchField, areaMesh> FieldType;
const auto& obr = regionMesh().thisDb();
auto& sigma =
obr.lookupObjectRef<AreaFieldType>(typeName + ":sigma_" + regionName_);
obr.lookupObjectRef<FieldType>
(
IOobject::scopedName(typeName, "sigma_" + regionName_)
);
if (!sigmaVsTPtr)
{

View File

@ -34,30 +34,23 @@ License
namespace Foam
{
namespace fv
{
static inline tmp<volScalarField> createField
(
const fvMesh& mesh,
const scalar val
)
{
return tmp<volScalarField>::New
return volScalarField::New
(
IOobject
(
polyMesh::defaultRegion,
mesh.time().timeName(),
mesh,
IOobjectOption::NO_READ,
IOobject::NO_WRITE,
IOobject::NO_REGISTER
),
polyMesh::defaultRegion,
IOobject::NO_REGISTER,
mesh,
dimensionedScalar(dimless, val)
val,
dimless
);
}
} // End namespace fv
} // End namespace Foam

View File

@ -87,19 +87,13 @@ Foam::tmp<Foam::volScalarField> Foam::fv::limitTurbulenceViscosity::nu() const
const auto* dictPtr = mesh_.cfindObject<dictionary>("transportProperties");
if (dictPtr)
{
return
tmp<volScalarField>::New
(
IOobject
(
"nu",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ
),
mesh_,
dimensionedScalar("nu", dimViscosity, *dictPtr)
);
return volScalarField::New
(
"nu",
IOobject::NO_REGISTER,
mesh_,
dimensionedScalar("nu", dimViscosity, *dictPtr)
);
}
FatalErrorInFunction

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2016-2021 OpenCFD Ltd.
Copyright (C) 2016-2023 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -87,23 +87,13 @@ Foam::fv::acousticDampingSource::acousticDampingSource
fv::cellSetOption(name, modelType, dict, mesh),
blendFactor_
(
volScalarField
(
IOobject
(
name_ + ":blend",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
scalar(1),
dimless,
fvPatchFieldBase::zeroGradientType()
)
mesh_.newIOobject(IOobject::scopedName(name_, "blend")),
mesh_,
scalar(1),
dimless,
fvPatchFieldBase::zeroGradientType()
),
frequency_("frequency", dimless/dimTime, 0),
frequency_("frequency", dimless/dimTime, Zero),
x0_(Zero),
r1_(0),
r2_(0),
@ -122,8 +112,15 @@ void Foam::fv::acousticDampingSource::addSup
const label fieldI
)
{
auto tcoeff = volScalarField::New
(
IOobject::scopedName(name_, "coeff"),
IOobject::NO_REGISTER,
w_*frequency_*blendFactor_
);
const auto& coeff = tcoeff();
const volVectorField& U = eqn.psi();
const volScalarField coeff(name_ + ":coeff", w_*frequency_*blendFactor_);
const auto& URef = mesh().lookupObject<volVectorField>(URefName_);
fvMatrix<vector> dampingEqn
@ -141,8 +138,15 @@ void Foam::fv::acousticDampingSource::addSup
const label fieldI
)
{
auto tcoeff = volScalarField::New
(
IOobject::scopedName(name_, "coeff"),
IOobject::NO_REGISTER,
w_*frequency_*blendFactor_
);
const auto& coeff = tcoeff();
const volVectorField& U = eqn.psi();
const volScalarField coeff(name_ + ":coeff", w_*frequency_*blendFactor_);
const auto& URef = mesh().lookupObject<volVectorField>(URefName_);
fvMatrix<vector> dampingEqn
@ -161,8 +165,15 @@ void Foam::fv::acousticDampingSource::addSup
const label fieldI
)
{
auto tcoeff = volScalarField::New
(
IOobject::scopedName(name_, "coeff"),
IOobject::NO_REGISTER,
w_*frequency_*blendFactor_
);
const auto& coeff = tcoeff();
const volVectorField& U = eqn.psi();
const volScalarField coeff(name_ + ":coeff", w_*frequency_*blendFactor_);
const auto& URef = mesh().lookupObject<volVectorField>(URefName_);
fvMatrix<vector> dampingEqn

View File

@ -148,7 +148,8 @@ void Foam::fv::directionalPressureGradientExplicitSource::writeProps
"uniform",
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
IOobject::NO_WRITE,
IOobject::NO_REGISTER
)
);
propsDict.add("gradient", gradP);
@ -463,23 +464,18 @@ void Foam::fv::directionalPressureGradientExplicitSource::addSup
const label fieldI
)
{
DimensionedField<vector, volMesh> Su
auto tSu = DimensionedField<vector, volMesh>::New
(
IOobject
(
name_ + fieldNames_[fieldI] + "Sup",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
name_ + fieldNames_[fieldI] + "Sup",
IOobject::NO_REGISTER,
mesh_,
dimensionedVector(eqn.dimensions()/dimVolume, Zero)
);
auto& Su = tSu.ref();
UIndirectList<vector>(Su, cells_) = gradP0_ + dGradP_ + gradPporous_;
eqn += Su;
eqn += tSu;
}
@ -506,14 +502,7 @@ void Foam::fv::directionalPressureGradientExplicitSource::constrain
(
new volScalarField
(
IOobject
(
name_ + ":invA",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_.newIOobject(IOobject::scopedName(name_, "invA")),
1.0/eqn.A()
)
);

View File

@ -44,8 +44,6 @@ namespace fv
}
}
const Foam::word Foam::fv::jouleHeatingSource::sigmaName(typeName + ":sigma");
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
@ -55,17 +53,10 @@ Foam::fv::jouleHeatingSource::transformSigma
const volVectorField& sigmaLocal
) const
{
auto tsigma = tmp<volSymmTensorField>::New
auto tsigma = volSymmTensorField::New
(
IOobject
(
sigmaName,
mesh_.time().timeName(),
mesh_.thisDb(),
IOobject::NO_READ,
IOobject::NO_WRITE,
IOobject::NO_REGISTER
),
IOobject::scopedName(typeName, "sigma"),
IOobject::NO_REGISTER,
mesh_,
dimensionedSymmTensor(sigmaLocal.dimensions(), Zero),
fvPatchFieldBase::zeroGradientType()
@ -115,11 +106,12 @@ Foam::fv::jouleHeatingSource::jouleHeatingSource
(
IOobject
(
typeName + ":V",
IOobject::scopedName(typeName, "V"),
mesh.time().timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
IOobject::AUTO_WRITE,
IOobject::REGISTER
),
mesh
),
@ -182,6 +174,10 @@ void Foam::fv::jouleHeatingSource::addSup
}
// Add the Joule heating contribution
const word sigmaName
(
IOobject::scopedName(typeName, "sigma")
);
const volVectorField gradV(fvc::grad(V_));
if (anisotropicElectricalConductivity_)

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2016-2020 OpenCFD Ltd.
Copyright (C) 2016-2023 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -179,9 +179,6 @@ class jouleHeatingSource
{
// Private Data
//- Name of electrical conductivity field
static const word sigmaName;
//- Name of temperature field
word TName_;

View File

@ -34,11 +34,11 @@ void Foam::fv::jouleHeatingSource::initialiseSigma
autoPtr<Function1<Type>>& sigmaVsTPtr
)
{
typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType;
typedef GeometricField<Type, fvPatchField, volMesh> FieldType;
IOobject io
(
typeName + ":sigma",
IOobject::scopedName(typeName, "sigma"),
mesh_.time().timeName(),
mesh_.thisDb(),
IOobject::NO_READ,
@ -46,7 +46,7 @@ void Foam::fv::jouleHeatingSource::initialiseSigma
IOobject::REGISTER
);
tmp<VolFieldType> tsigma;
autoPtr<FieldType> tsigma;
if (dict.found("sigma"))
{
@ -55,7 +55,7 @@ void Foam::fv::jouleHeatingSource::initialiseSigma
tsigma.reset
(
new VolFieldType
new FieldType
(
io,
mesh_,
@ -72,7 +72,7 @@ void Foam::fv::jouleHeatingSource::initialiseSigma
// Sigma to be defined by user input
io.readOpt(IOobject::MUST_READ);
tsigma.reset(new VolFieldType(io, mesh_));
tsigma.reset(new FieldType(io, mesh_));
Info<< " Conductivity 'sigma' read from file" << nl << endl;
}
@ -88,9 +88,12 @@ Foam::fv::jouleHeatingSource::updateSigma
const autoPtr<Function1<Type>>& sigmaVsTPtr
) const
{
typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType;
typedef GeometricField<Type, fvPatchField, volMesh> FieldType;
auto& sigma = mesh_.lookupObjectRef<VolFieldType>(typeName + ":sigma");
auto& sigma = mesh_.lookupObjectRef<FieldType>
(
IOobject::scopedName(typeName, "sigma")
);
if (!sigmaVsTPtr)
{

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2018-2021 OpenCFD Ltd.
Copyright (C) 2018-2023 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -63,7 +63,8 @@ void Foam::fv::meanVelocityForce::writeProps
"uniform",
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
IOobject::NO_WRITE,
IOobject::NO_REGISTER
)
);
propsDict.add("gradient", gradP);
@ -192,25 +193,20 @@ void Foam::fv::meanVelocityForce::addSup
const label fieldi
)
{
volVectorField::Internal Su
auto tSu = volVectorField::Internal::New
(
IOobject
(
name_ + fieldNames_[fieldi] + "Sup",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
name_ + fieldNames_[fieldi] + "Sup",
IOobject::NO_REGISTER,
mesh_,
dimensionedVector(eqn.dimensions()/dimVolume, Zero)
);
auto& Su = tSu.ref();
scalar gradP = gradP0_ + dGradP_;
UIndirectList<vector>(Su, cells_) = flowDir_*gradP;
eqn += Su;
eqn += tSu;
}
@ -237,14 +233,7 @@ void Foam::fv::meanVelocityForce::constrain
(
new volScalarField
(
IOobject
(
name_ + ":rA",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_.newIOobject(IOobject::scopedName(name_, "rA")),
1.0/eqn.A()
)
);

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2018-2022 OpenCFD Ltd.
Copyright (C) 2018-2023 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -238,23 +238,19 @@ void Foam::fv::rotorDiskSource::setFaceArea(vector& axis, const bool correct)
if (debug)
{
volScalarField area
auto tarea = volScalarField::New
(
IOobject
(
name_ + ":area",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
IOobject::scopedName(name_, "area"),
IOobject::NO_REGISTER,
mesh_,
dimensionedScalar(dimArea, Zero)
);
UIndirectList<scalar>(area.primitiveField(), cells_) = area_;
auto& area = tarea.ref();
Info<< type() << ": " << name_ << " writing field " << area.name()
<< endl;
UIndirectList<scalar>(area.primitiveFieldRef(), cells_) = area_;
Info<< type() << ": " << name_
<< " writing field " << area.name() << endl;
area.write();
}
@ -480,17 +476,14 @@ void Foam::fv::rotorDiskSource::addSup
const label fieldi
)
{
volVectorField force
auto tforce = volVectorField::New
(
IOobject
(
name_ + ":rotorForce",
mesh_.time().timeName(),
mesh_
),
IOobject::scopedName(name_, "rotorForce"),
IOobject::NO_REGISTER,
mesh_,
dimensionedVector(eqn.dimensions()/dimVolume, Zero)
);
auto& force = tforce.ref();
// Read the reference density for incompressible flow
coeffs_.readEntry("rhoRef", rhoRef_);
@ -516,17 +509,14 @@ void Foam::fv::rotorDiskSource::addSup
const label fieldi
)
{
volVectorField force
auto tforce = volVectorField::New
(
IOobject
(
name_ + ":rotorForce",
mesh_.time().timeName(),
mesh_
),
IOobject::scopedName(name_, "rotorForce"),
IOobject::NO_REGISTER,
mesh_,
dimensionedVector(eqn.dimensions()/dimVolume, Zero)
);
auto& force = tforce.ref();
const vectorField Uin(inflowVelocity(eqn.psi()));
trim_->correct(rho, Uin, force);

View File

@ -178,37 +178,28 @@ void Foam::fv::rotorDiskSource::writeField
const bool writeNow
) const
{
typedef GeometricField<Type, fvPatchField, volMesh> FieldType;
if (mesh_.time().writeTime() || writeNow)
{
auto tfield = tmp<FieldType>::New
if (cells_.size() != values.size())
{
FatalErrorInFunction
<< "Size mismatch. Number of cells "
<< cells_.size() << " != number of values "
<< values.size() << nl
<< abort(FatalError);
}
auto tfield = GeometricField<Type, fvPatchField, volMesh>::New
(
IOobject
(
name,
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
name,
IOobject::NO_REGISTER,
mesh_,
dimensioned<Type>(dimless, Zero)
);
auto& field = tfield.ref().primitiveFieldRef();
if (cells_.size() != values.size())
{
FatalErrorInFunction
<< abort(FatalError);
}
forAll(cells_, i)
{
const label celli = cells_[i];
field[celli] = values[i];
}
UIndirectList<Type>(field, cells_) = values;
tfield().write();
}

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2014-2017 OpenFOAM Foundation
Copyright (C) 2018-2021 OpenCFD Ltd.
Copyright (C) 2018-2023 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -78,16 +78,9 @@ Foam::fv::solidificationMeltingSource::Cp() const
{
const scalar CpRef = coeffs_.get<scalar>("CpRef");
return tmp<volScalarField>::New
return volScalarField::New
(
IOobject
(
name_ + ":Cp",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
IOobject::scopedName(name_, "Cp"),
mesh_,
dimensionedScalar
(
@ -184,11 +177,12 @@ Foam::fv::solidificationMeltingSource::solidificationMeltingSource
(
IOobject
(
name_ + ":alpha1",
IOobject::scopedName(name_, "alpha1"),
mesh.time().timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
IOobject::AUTO_WRITE,
IOobject::REGISTER
),
mesh,
dimensionedScalar(dimless, Zero),

View File

@ -47,16 +47,10 @@ namespace fv
Foam::tmp<Foam::volScalarField> Foam::fv::viscousDissipation::rho() const
{
auto trho = tmp<volScalarField>::New
auto trho = volScalarField::New
(
IOobject
(
"trho",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
"trho",
IOobject::NO_REGISTER,
mesh_,
rho_
);
@ -177,16 +171,10 @@ void Foam::fv::viscousDissipation::addSup
const word gradUName("grad(" + UName_ + ')');
auto tgradU = tmp<GradFieldType>::New
auto tgradU = GradFieldType::New
(
IOobject
(
"gradU",
mesh_.time().timeName(),
mesh_.time(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
"gradU",
IOobject::NO_REGISTER,
mesh_,
dimensionedTensor(inv(dimTime), Zero)
);

View File

@ -336,6 +336,7 @@ void Foam::fv::SemiImplicitSource<Type>::addSup
tsu = DimensionedField<Type, volMesh>::New
(
name_ + fieldName + "Su",
IOobject::NO_REGISTER,
mesh_,
dimensioned<Type>(SuDims, Zero)
);
@ -375,6 +376,7 @@ void Foam::fv::SemiImplicitSource<Type>::addSup
tsu = DimensionedField<Type, volMesh>::New
(
name_ + fieldName + "Su",
IOobject::NO_REGISTER,
mesh_,
dimensioned<Type>(SuDims, Zero)
);
@ -462,6 +464,7 @@ void Foam::fv::SemiImplicitSource<Type>::addSup
tsp = DimensionedField<scalar, volMesh>::New
(
name_ + fieldName + "Sp",
IOobject::NO_REGISTER,
mesh_,
dimensioned<scalar>(SpDims, Zero)
);
@ -501,6 +504,7 @@ void Foam::fv::SemiImplicitSource<Type>::addSup
tsp = DimensionedField<scalar, volMesh>::New
(
name_ + fieldName + "Sp",
IOobject::NO_REGISTER,
mesh_,
dimensioned<scalar>(SpDims, Zero)
);

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2012-2016 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
Copyright (C) 2020-2023 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -93,16 +93,16 @@ void Foam::fv::interRegionExplicitPorositySource::initialise()
<< abort(FatalError);
}
porosityPtr_.reset
(
porosityPtr_.reset(nullptr);
porosityPtr_ =
porosityModel::New
(
name_,
nbrMesh,
coeffs_,
zoneName
).ptr()
),
);
firstIter_ = false;
}
@ -146,19 +146,14 @@ void Foam::fv::interRegionExplicitPorositySource::addSup
const volVectorField& U = eqn.psi();
volVectorField UNbr
auto tUNbr = volVectorField::New
(
IOobject
(
name_ + ":UNbr",
nbrMesh.time().timeName(),
nbrMesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
IOobject::scopedName(name_, "UNbr"),
IOobject::NO_REGISTER,
nbrMesh,
dimensionedVector(U.dimensions(), Zero)
);
auto& UNbr = tUNbr.ref();
// Map local velocity onto neighbour region
meshInterp().mapSrcToTgt
@ -177,7 +172,7 @@ void Foam::fv::interRegionExplicitPorositySource::addSup
scalarField& Udiag = porosityEqn.diag();
vectorField& Usource = porosityEqn.source();
Udiag.setSize(eqn.diag().size(), 0.0);
Udiag.setSize(eqn.diag().size(), Zero);
Usource.setSize(eqn.source().size(), Zero);
meshInterp().mapTgtToSrc(nbrEqn.diag(), plusEqOp<scalar>(), Udiag);
@ -200,19 +195,14 @@ void Foam::fv::interRegionExplicitPorositySource::addSup
const volVectorField& U = eqn.psi();
volVectorField UNbr
auto tUNbr = volVectorField::New
(
IOobject
(
name_ + ":UNbr",
nbrMesh.time().timeName(),
nbrMesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
IOobject::scopedName(name_, "UNbr"),
IOobject::NO_REGISTER,
nbrMesh,
dimensionedVector(U.dimensions(), Zero)
);
auto& UNbr = tUNbr.ref();
// Map local velocity onto neighbour region
meshInterp().mapSrcToTgt
@ -224,33 +214,23 @@ void Foam::fv::interRegionExplicitPorositySource::addSup
fvMatrix<vector> nbrEqn(UNbr, eqn.dimensions());
volScalarField rhoNbr
auto trhoNbr = volScalarField::New
(
IOobject
(
"rho:UNbr",
nbrMesh.time().timeName(),
nbrMesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
IOobject::scopedName("rho", "UNbr"),
IOobject::NO_REGISTER,
nbrMesh,
dimensionedScalar(dimDensity, Zero)
);
auto& rhoNbr = trhoNbr.ref();
volScalarField muNbr
auto tmuNbr = volScalarField::New
(
IOobject
(
"mu:UNbr",
nbrMesh.time().timeName(),
nbrMesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
IOobject::scopedName("mu", "UNbr"),
IOobject::NO_REGISTER,
nbrMesh,
dimensionedScalar(dimViscosity, Zero)
);
auto& muNbr = tmuNbr.ref();
const auto& mu = mesh_.lookupObject<volScalarField>(muName_);
@ -277,7 +257,7 @@ void Foam::fv::interRegionExplicitPorositySource::addSup
scalarField& Udiag = porosityEqn.diag();
vectorField& Usource = porosityEqn.source();
Udiag.setSize(eqn.diag().size(), 0.0);
Udiag.setSize(eqn.diag().size(), Zero);
Usource.setSize(eqn.source().size(), Zero);
meshInterp().mapTgtToSrc(nbrEqn.diag(), plusEqOp<scalar>(), Udiag);