Eddy viscosity of smagorinsky LES model


I am trying to understand static Smagorinsky model implemented in Palabos. As described in the documentation:

I could understand this from the relationship between the stress tensor and strain rate: Pi[sup]neq[/sup]=-2c[sub]s[/sub][sup]2[/sup]rhotau*S.

However, when I look at the file /complexDynamics/smagorinskyDynamics.hh: , I could not understand how the function computeOmega calculates the omega_{total} where the code is

static T computeOmega(T omega0, T preFactor, T rhoBar, Array<T,SymmetricTensor<T,Descriptor>::n> const& PiNeq)
T PiNeqNormSqr = SymmetricTensor<T,Descriptor>::tensorNormSqr(PiNeq);
T PiNeqNorm = std::sqrt(PiNeqNormSqr);
T alpha = preFactor * Descriptor::invRho(rhoBar);
T linearTerm = alphaPiNeqNorm;
T squareTerm = (T)2
// In the following formula, the square-root appearing in the explicit form of
// omega is developed to second-order.
return omega0*(1-linearTerm+squareTerm);


This calculation seems to be a different form compared to the one in the paper by Hou, et al. (1994)[sup][1][/sup] or the one by Krafczyk 2003[sup][2][/sup]. If so, what is the benefits of this form?

Could anyone help explain this or provide any reference? 

Thank you in advance.

With best,

[1] Hou, et al. 1994, "A lattice Boltzmann subgrid model for high Reynolds number flows"

Hi, I am just a beginner in LBM and Palabos. I have the same problem for computing omega in LES. I read some paper and try to answer the topic. The main reference is user guide of Palabos and “Lattice Boltzmann large eddy simulation of subcritical flows around a sphere on non-uniform grids”(https://doi.org/10.1016/j.camwa.2011.03.063).

1 Like

I still have question. Why is the omega computed like this? Is it just for avoiding the dividing operation?