BUG: forces: ensure UName entry can be used (fixes #2093)

Previously, for basic incompressible and compressible simulations,
the "force" function object has not been using the user-specified "UName"
for the "devRhoReff" computation (affecting the tangential component),
but using the "U" of the latest available step. In contrast,
the user-specified "pName" has always been being used correctly.

This has been causing issues for users when they wish to use a specific
"UMean" field in various force and forceCoeff function object computations.
This commit is contained in:
Kutalmis Bercin
2021-06-07 13:37:25 +01:00
committed by Andrew Heather
parent 3207e315b2
commit a870be6511

View File

@ -350,27 +350,27 @@ Foam::functionObjects::forces::devRhoReff() const
typedef compressible::turbulenceModel cmpTurbModel; typedef compressible::turbulenceModel cmpTurbModel;
typedef incompressible::turbulenceModel icoTurbModel; typedef incompressible::turbulenceModel icoTurbModel;
const auto& U = lookupObject<volVectorField>(UName_);
if (foundObject<cmpTurbModel>(cmpTurbModel::propertiesName)) if (foundObject<cmpTurbModel>(cmpTurbModel::propertiesName))
{ {
const cmpTurbModel& turb = const cmpTurbModel& turb =
lookupObject<cmpTurbModel>(cmpTurbModel::propertiesName); lookupObject<cmpTurbModel>(cmpTurbModel::propertiesName);
return turb.devRhoReff(); return turb.devRhoReff(U);
} }
else if (foundObject<icoTurbModel>(icoTurbModel::propertiesName)) else if (foundObject<icoTurbModel>(icoTurbModel::propertiesName))
{ {
const incompressible::turbulenceModel& turb = const incompressible::turbulenceModel& turb =
lookupObject<icoTurbModel>(icoTurbModel::propertiesName); lookupObject<icoTurbModel>(icoTurbModel::propertiesName);
return rho()*turb.devReff(); return rho()*turb.devReff(U);
} }
else if (foundObject<fluidThermo>(fluidThermo::dictName)) else if (foundObject<fluidThermo>(fluidThermo::dictName))
{ {
const fluidThermo& thermo = const fluidThermo& thermo =
lookupObject<fluidThermo>(fluidThermo::dictName); lookupObject<fluidThermo>(fluidThermo::dictName);
const volVectorField& U = lookupObject<volVectorField>(UName_);
return -thermo.mu()*dev(twoSymm(fvc::grad(U))); return -thermo.mu()*dev(twoSymm(fvc::grad(U)));
} }
else if (foundObject<transportModel>("transportProperties")) else if (foundObject<transportModel>("transportProperties"))
@ -378,8 +378,6 @@ Foam::functionObjects::forces::devRhoReff() const
const transportModel& laminarT = const transportModel& laminarT =
lookupObject<transportModel>("transportProperties"); lookupObject<transportModel>("transportProperties");
const volVectorField& U = lookupObject<volVectorField>(UName_);
return -rho()*laminarT.nu()*dev(twoSymm(fvc::grad(U))); return -rho()*laminarT.nu()*dev(twoSymm(fvc::grad(U)));
} }
else if (foundObject<dictionary>("transportProperties")) else if (foundObject<dictionary>("transportProperties"))
@ -389,8 +387,6 @@ Foam::functionObjects::forces::devRhoReff() const
dimensionedScalar nu("nu", dimViscosity, transportProperties); dimensionedScalar nu("nu", dimViscosity, transportProperties);
const volVectorField& U = lookupObject<volVectorField>(UName_);
return -rho()*nu*dev(twoSymm(fvc::grad(U))); return -rho()*nu*dev(twoSymm(fvc::grad(U)));
} }
else else