mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
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:
committed by
Andrew Heather
parent
3207e315b2
commit
a870be6511
@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user