2016-09-25 20:19 BST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0000112OpenFOAM[All Projects] Bugpublic2011-03-17 15:54
Assigned Tohenry 
StatusclosedResolutionno change required 
Product Version 
Target VersionFixed in Version 
Summary0000112: bug in calculating wallShearStress
DescriptionIn all OF (> 1.5) versions are the wall shear stresses calculated from sufaceNormalVektor & Reff.boundaryField()[patchI] with Reff = nuEff()*dev(twoSymm(fvc::grad(U))).
However the wall shear stress is defined by nu()*(-U.boundaryField()[patchI].snGrad())

Both definitions are equal only if rot(U)=skew(grad(U))=0.

In my experience the wall shear stresses are overpredicted by using sufaceNormalVektor & Reff.boundaryField()[patchI] instead of u()*(-U.boundaryField()[patchI].snGrad())
TagsNo tags attached.
Attached Files




henry (manager)

Are you considering a laminar or turbulent case, i.e. are you expecting nu() and nuEff() to be the same?


klosterm (reporter)

My considerations were only done for laminar cases. I expect nuEff()=nu()+nuT(), with nuT()=0, so that nuEff()=nu() should be true.


henry (manager)

Can you provide a small case which demonstrated the issue?


klosterm (reporter)

I just uploaded a small case where the flow field is precalculated and a small (case specific) tool dragNearAndFarField2. The tool calculates the momentum and (pressure + viscous) force balance for the near and far field. I this case the near field are wall patches and the far field are cyclic patches. The viscous forces (which only appear in the near field) are calculated on the tow approaches based on Reff and based on the snGrad. Looking on the allover balances (comparing the sum of near field and far field approach) suggests that the snGrad based approach gives the right result for this case. Keeping this in mind shows that the Reff based approach is almost 10 % of the snGrad approach.

PS The comment: "Both definitions are equal only if rot(U)=skew(grad(U))=0." is of course nonsense!


henry (manager)

nu()*(-U.boundaryField()[patchI].snGrad()) will provide an accurate value for the wall shear-stress in the case of a flat wall with a uniform velocity otherwise grad(U)().T() would be non-zero on the wall and should be accounted for. However, with the way grad(U) is currently evaluated on the wall grad(U)().T() will not be exactly zero on the wall even for the case of a flat wall with a uniform velocity but it will approach zero with mesh refinement.


klosterm (reporter)

What do you mean by accurate? nu()*(-U.boundaryField()[patchI].snGrad()) will provide an value for the wall shear-stress in the case of a NON flat wall with a NON uniform velocity, which satisfies the allover momentum change/force balance. whereas the Reff approach doesn't. This is still true if I perform a mesh refinement (cell size 8x smaller). However the change for the pressure force and the nu()*(-U.boundaryField()[patchI].snGrad()) approach is higher than the Reff approach. One could be interpret that the Reff approach is closer to the final solution on the coarse grid already?! Maybe this is meant by accurate?


henry (manager)

By accurate I mean representative of the physics. snGrad() does not include the influence of the transpose term for the cases for which it is non-zero on the wall.

-Issue History
Date Modified Username Field Change
2010-12-17 07:02 klosterm New Issue
2010-12-17 08:48 henry Note Added: 0000185
2010-12-17 21:49 klosterm Note Added: 0000189
2010-12-17 22:40 henry Note Added: 0000190
2010-12-21 16:29 klosterm File Added: veryCoarse.tar.gz
2010-12-21 16:47 klosterm Note Added: 0000196
2010-12-22 17:05 henry Note Added: 0000197
2010-12-24 00:06 klosterm Note Added: 0000201
2010-12-24 00:23 henry Note Added: 0000202
2011-03-17 15:54 user2 Status new => closed
2011-03-17 15:54 user2 Assigned To => henry
2011-03-17 15:54 user2 Resolution open => no change required
+Issue History