From a870be6511ad9c66881d4deb643be30548f4f392 Mon Sep 17 00:00:00 2001 From: Kutalmis Bercin <kutalmis.bercin@esi-group.com> Date: Mon, 7 Jun 2021 13:37:25 +0100 Subject: [PATCH] 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. --- src/functionObjects/forces/forces/forces.C | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/functionObjects/forces/forces/forces.C b/src/functionObjects/forces/forces/forces.C index e3dbc07f1f9..70a34aba187 100644 --- a/src/functionObjects/forces/forces/forces.C +++ b/src/functionObjects/forces/forces/forces.C @@ -350,27 +350,27 @@ Foam::functionObjects::forces::devRhoReff() const typedef compressible::turbulenceModel cmpTurbModel; typedef incompressible::turbulenceModel icoTurbModel; + const auto& U = lookupObject<volVectorField>(UName_); + if (foundObject<cmpTurbModel>(cmpTurbModel::propertiesName)) { const cmpTurbModel& turb = lookupObject<cmpTurbModel>(cmpTurbModel::propertiesName); - return turb.devRhoReff(); + return turb.devRhoReff(U); } else if (foundObject<icoTurbModel>(icoTurbModel::propertiesName)) { const incompressible::turbulenceModel& turb = lookupObject<icoTurbModel>(icoTurbModel::propertiesName); - return rho()*turb.devReff(); + return rho()*turb.devReff(U); } else if (foundObject<fluidThermo>(fluidThermo::dictName)) { const fluidThermo& thermo = lookupObject<fluidThermo>(fluidThermo::dictName); - const volVectorField& U = lookupObject<volVectorField>(UName_); - return -thermo.mu()*dev(twoSymm(fvc::grad(U))); } else if (foundObject<transportModel>("transportProperties")) @@ -378,8 +378,6 @@ Foam::functionObjects::forces::devRhoReff() const const transportModel& laminarT = lookupObject<transportModel>("transportProperties"); - const volVectorField& U = lookupObject<volVectorField>(UName_); - return -rho()*laminarT.nu()*dev(twoSymm(fvc::grad(U))); } else if (foundObject<dictionary>("transportProperties")) @@ -389,8 +387,6 @@ Foam::functionObjects::forces::devRhoReff() const dimensionedScalar nu("nu", dimViscosity, transportProperties); - const volVectorField& U = lookupObject<volVectorField>(UName_); - return -rho()*nu*dev(twoSymm(fvc::grad(U))); } else -- GitLab