**Colebrook Puzzle**

In my introduction to fluid dynamics class (ME331) at OSU. I encountered a pesky implicit formula called the Colebrook equation [1] which is important to solve friction factor in turbulent flows, defined as

.

I put it in the back of my mind and forget about it. This is my first principle of problem-solving, if it’s too troublesome and not urgent, ignore it for a while. In other words, let the subconscious do it for you.

Then after a few weeks, I googled LambertW Wk(x) [2] function as I was thinking I have seen it somewhere. By this point, I have all the tools necessary to solve the Colebrook equation, but I still didn’t realize it. Until in my procrastination I meet a cousin of LambertW function, the Wright Omega ω(x) [3] function defined as the solution to

.

But this is very close to the form of which Colebrook equation is presented, and I was ready to solve the equation. The first thing that I think about was how to make the Colebrook equation in a similar form to the above. Getting *Y* is the hard part because I have to sync both the expression inside the log and an additive term. The* X* is easy, it’s just whatever multiplicative term is leftover after the process of “syncing” the *Y* has succeeded.

The first step is to rearrange the equation so that all *f* variable is on one side and ln(10) factor is pulled out so that

becomes

.

Now the solution looks closer, and I have to sync the variable inside the natural logarithm with the additive term. Here we exploit the fact that multiplying an expression in a logarithm yields an addition outside of it, and thus both expression is almost exactly of the same form minus an additive term that we can dump into *X*.

Thus the form that we wanted is finally in sight, the Wright Omega solution in the form of

.

Which by definition yields to

.

After further simplifications, the closed form of the friction factor in terms of Wright Omega is

.

As a bonus, using the definition of Wright Omega function in terms of LambertW function expressed as

.

We can write the solution using the principal branch of LambertW as

.

I never really looked if anyone had done this before, and did not want to find spoilers because it is such a perfect puzzle. Not too easy, not too hard.

Now I have finished the puzzle, I think it is decent to acknowledge prior works that do the similar/same approach to derivation. So today I delved into Google scholar to find who did it using a similar approach.

The earliest analytical solution of Colebrook equation that uses Wright Omega is a paper by Clamond in 2008 [4], this paper actually discussed the iterative solution in depth and compared different speed using different derivations. In order of rapidness, from the most to the least is a shifted Wright Omega, Wright Omega, and principal branch LambertW function.

Edit: Just to be sure, I did some test on the function using some random numbers on MATLAB iterative solver and the difference magnitude is much lower (~1e-11) than FSOLVE tolerance (1e-6). Which is good.

a = 3.7; b = 2.51; iterative_colebrook = @(Re,rf) fsolve(@(f) (-2.*log10(rf./a+b./(Re.*sqrt(f)))-1./sqrt(f)),0.02,optimset('Display','off')); wright_colebrook = @(Re,rf) (2/log(10)*wrightOmega(log(10)*Re*rf/(2*a*b)-log(2*b/(log(10)*Re)))-Re*rf/(a*b))^-2; lambert_colebrook = @(Re,rf) (2/log(10)*lambertw(exp(log(10)*Re*rf/(2*a*b)-log(2*b/(log(10)*Re))))-Re*rf/(a*b))^-2; wright_log_error = @(Re,rf) log10(abs(wright_colebrook(Re,rf)-iterative_colebrook(Re,rf))); lambert_log_error = @(Re,rf) log10(abs(lambert_colebrook(Re,rf)-iterative_colebrook(Re,rf)));

I wrote this for a sort of fun writing and math practice. But if anyone happens to read this and have any corrections/questions/clarifications please email me at agustinuslaw@gmail.com.

**References**

[1] C. F. Colebrook, “Turbulent Flow in Pipes, with Particular Reference to the Transition between the Smooth and Rough Pipe Laws,” J. Inst. Civ. Eng. Lond., vol. 11, 1938–1939, pp. 133–156.

[2] Corless, R. M., Gonnet, G. H., Hare, D. E. G., Jeffrey, D. J., and Knuth, D. E.,1996, “On the LambertW Function,” Adv Comput Math, 5(1), pp. 329–359. https://www.researchgate.net/publication/2458364_On_the_Lambert_W_Function

[3] Corless, R., and Jeffrey, D., 2002, “The Wright Omega Function.,” pp. 76–89. https://www.researchgate.net/publication/221352071_The_Wright_omega_Function

[4] Clamond, D., 2008, “Efficient Resolution of the Colebrook Equation,” arXiv:0810.5564 [physics].