## Tuesday, September 1, 2015

### Easy and True solutions of Colebrook-White

This will be easy and true Colebrook-White solution in Excel.

There are about six different equations for Colebrook-White. The six equations are different for different types of designs.  The first one is the maid type of Colebrook-White, but some folks have asked for different equations.  Her are the six different equations. The mode shows some numbers.

1  mode 2.51...   1/sqrt(f)=-2*Log(Rr/3.7+2.51/(Re*sqrt(f)))
2  mode 1.74...   1/sqrt(f)=1.74-2*Log(2*Rr+18.7/(Re*sqrt(f)))
3  mode 1.14...  1/sqrt(f)=1.14+2*Log(1/Rr)-2*Log(1+(9.3/(Re*Rr*sqrt(f)))
4  mode 9.35...   1/sqrt(f)=1.14-2*Log(Rr+9.35/(Re*sqrt(f)))
5  mode 3.71...   1/sqrt(f)=-2*Log(Rr/3.71+2.51/(Re*sqrt(f)))
6  mode 3.72...   1/sqrt(f)=-2*Log(Rr/3.72+2.51/(Re*sqrt(f)))

Now to compute f  not  the "1/sqrt(f)"  just add  "f=1/(" at the first and ")^2 and the end for all of the six equations.  Example of the main mode, I call  "mode 2.51" the first one. It will be...

f= 1/(-2*Log(Rr/3.7+2.51/(Re*sqrt(f))))^2  (this mode 2.51, but you can use all 6 modes)

In Excel the first Guess f number can be 1 or up to 1000, and the Guess can be changed, but the final f solution will not change.  For this test I am entering the guess in Cell B3  as 100, but 1 might save a loop. But you can change the Guess to see the changes.

The in Cell B1 enter the Rr and Cell B2 enter the Re and in Cell B3 there the Guess f.

And in Cell C4 there   =B4=B3   and it will enter True or False to the B4=B3

But enter the number of Rr and Re and for the f, enter the Cell number that is above, I said that my Guess was in Cell B3.    For this example, I am using  Rr= 0.01954 and the Re = 611,040 and the guess as 100 in cell B3

Her is the Excel picture for the first cells from A1 to C4.
-----A------|----------B-----------------|-----C------|
1          Rr =           0.01954
2          Re =          611,040
3  Guess f =             100
4           f1 =  0.0482082215337859    FALSE
===============================================
Then below the guess enter of 100 is this, in Cell B4 ...            =1/(-2*LOG(\$B\$1/3.7+2.51/(\$B\$2*SQRT(B3))))^2
And C4 is....       =B4=B3
(Note: the two \$'s will not let the cope's change,  but with out the \$, like the B3, it will change the f per cells copied.

Then copy Cells B4 and C4 down to about 20 or more cells. And in Cells A4 to A23 I enter "f1=" to "f20=", but when the C cells say to TRUE then the f is right, and does not change.

Rr =           0.01954
Re =           611,040
Guess f =            100
f1=       0.0482082215337859 FALSE
f2= 0.0482718790546499 FALSE
f3= 0.0482718361564094 FALSE
f4= 0.0482718361852896 FALSE
f5= 0.0482718361852702 FALSE
f6= 0.0482718361852702 TRUE
f7= 0.0482718361852702 TRUE
f8= 0.0482718361852702 TRUE
f9= 0.0482718361852702 TRUE
f10= 0.0482718361852702 TRUE
f11= 0.0482718361852702 TRUE
f12= 0.0482718361852702 TRUE
f13= 0.0482718361852702 TRUE
f14= 0.0482718361852702 TRUE
f15= 0.0482718361852702 TRUE
f16= 0.0482718361852702 TRUE
f17= 0.0482718361852702 TRUE
f18= 0.0482718361852702 TRUE
f19= 0.0482718361852702 TRUE
f20= 0.0482718361852702 TRUE

Now you can change the Rr and Re to compute the mode 2.51
But the cell B4 will change for each modes.

This will be the equations in B4 for different modes...
1 'mode 2.51   =1/(-2*Log(\$B\$1/3.7+2.51/(\$B\$2*sqrt(B3))))^2
2 'mode 1.74   =1/(1.74-2*Log(2*\$B\$1+18.7/(\$B\$2*sqrt(B3))))^2
3 'mode 1.14 =1/(1.14+2*Log(1/\$B\$1)-2*Log(1+(9.3/(\$B\$2*\$B\$1)*1/sqrt(B3))))^2
4 'mode 9.35   =1/(1.14-2*Log(\$B\$1+9.35/(\$B\$2*sqrt(B3))))^2
5 'mode 3.71   =1/(-2*Log(\$B\$1/3.71+2.51/(\$B\$2*sqrt(B3))))^2
6 'mode 3.72   =1/(-2*LOG(\$B\$1/3.72+2.51/(\$B\$2*SQRT(B3))))^2

After you enter B4 cells, then copy the B4 down to the 20 cells.

Then to test it, just compute the 1/sqrt(f) and then compute the right side of this equation using Rr and Re and f  to see if they are te same.
1  mode 2.51...   1/sqrt(f)=-2*Log(Rr/3.7+2.51/(Re*sqrt(f)))
2  mode 1.74...   1/sqrt(f)=1.74-2*Log(2*Rr+18.7/(Re*sqrt(f)))
3  mode 1.14...  1/sqrt(f)=1.14+2*Log(1/Rr)-2*Log(1+(9.3/(Re*Rr*sqrt(f)))
4  mode 9.35...   1/sqrt(f)=1.14-2*Log(Rr+9.35/(Re*sqrt(f)))
5  mode 3.71...   1/sqrt(f)=-2*Log(Rr/3.71+2.51/(Re*sqrt(f)))
6  mode 3.72...   1/sqrt(f)=-2*Log(Rr/3.72+2.51/(Re*sqrt(f)))

## Friday, June 26, 2015

### The Easy and True solution to Colebrook-White in Excel

I discovered the Easy and True solution to Colebrook-White equation a long time ago. It is not an approximation, it is true to as many digits as you can compute.  In Excel you can compute 15 digits.

The Easy and True equation can be solved with the Colebrook-White Equation. It is not an "Approximation", it is a true solution.  There are two numbers. Rr and Re to enter in to the Colebrook-White equation. The solution will be the f.  The main Colebrook-White equation is

1/sqrt(f)=-2*Log(Rr/3.7+2.51/(Re*sqrt(f)))

But the Rr can also be changed to the e/D.
================================================================

Then to computer the Colebrook-White equation in Excel...

To compute the equation, just change the 1/sqrt(f) to an X, and the right section is section 2.51/(Re*sqrt(f)) can be correctly entered as 2.51/Re*1/sqrt(f) then to use the X it will be 2.51/Re+X And the Easy and True solution will be X=-2*Log(Rr/3.7+2.51/Rr+X), Then when it X is solved the f can be solved easy.

So in Excel, just enter a guess number in a cell, (maybe 1 to 10, might be closer) and below the guess number, enter the equation =-2*Log(Rr/3.7+2.51/Rr+X) but for the X just point the Excel to the guess number, and format the equation to 15 digits.  Then copy the equation to below to about 20 cells below, and the X will be changed to the previous cell. And the loops will stop changing to 15 digits. If bottom cells are not the same, just copy the bottom cell to some more loops, but 20 cells in usually more then needed. You can change the top guess number to a closer number like the bottom solution.

Then below the bottom cell enter =1/X/X, where the X's are just pointed to the previous number. This will be the correct solution to f.   You use the f to compute...

=1/Sqrt(f)     and the          =-2*Log(Rr/3.7+2.51/(Re*Sqrt(f)))

you will see both computations are to the X.  This is a right computation not an approximation.  If there last digits are off some, it is because Excel could not round the last few digits right.

Then you can compute some of the approximation to find the f, and the best approximation will be the Goudar–Sonnad equation that is mostly the correct approximation. Most of the time it is right to the 15 digits, but the "e/D" is the "Rr" in the made equation.

Now if you want more than 15 digits, you can compute at this web site....      keisan.casio.com/exec/system/1380521258

Folks learned this solution was right and not an approximation in the the year 2013.  The USA does not what to publish my free correct solution, because the it would stop the selling of many approximations.

Here is a easy but true solution in Excel.

In cell A1 enter "Rr=" and in cell B1 enter "0.04" , then in cell B1 rename the cell to "Rr".
In cell A2 enter "Re=" and in cell B2 enter "5000", then in cell B2 rename the cell to "Re".

Then at cell B3 enter the name "Guess first X="  Then in cells C3 enter the guess number of "10".
Then from Cell B4 enter "Loop 1=" Then enter the cells from B5 to B23 an "Loop 2" to Loop 20"
Then in cell C4 enter  "=-2*LOG(Rr/3.7+2.51/Re*C3)" , and format the cell to 15 digits. It will give
the solution of ...   "3.600993682386060". Then copy the cell of C3 down to cell C23. And then you should notice the cells from Loop 11 to Loop 20 are the same numbers are "3.791428222675950".
Then in cell B24 type "f=", then in cell C24 enter the equation "=1/C23/C23" and the f number will be...  "0.069565565980345" Then at the top left of the cell C24, rename the C24 to f.

The in Cell C26 type... "1/sqrt(f)=" and in cell D26 type "=1/sqrt(f)" and it will show the bottom X
The in Cell C27 type... "-2*Log(Rr/3.7+2.51/(Re*sqrt(f)))" and in cell D27 type "-2*Log(Rr/3.7+2.51/(Re*sqrt(f)))" and it will show the bottom X.  Resent each of these to 15 digits.

Then you can change the Rr and Re in cells B1 and B2 and see the f will automatically compute.
When cells D26 and D27 are the same then it is right, but if the last digits are a little different then it was because Excel could not compute more than 15 digits and maybe it round the ends a little different.

## Tuesday, January 8, 2013

### A simple, true, easy solution to Colebrook-White

Simple and TRUE... It has been proved to be right.  It has been compared to Newton's version. My Simple and True version is now shown not to be an approximation but a real solution.  Newton's approximation is usually right, but sometime it is wrong by a few decimals.  Each of those approximations are usually complex.  This Simple and TRUE is simple and true.  LOL

Info:
When the f is own both sides of the equation, but one is in a Log, then f can be solved. To solve it easily, let 1/Sqrt(f) be X.   Rr  is the relative roughness,  (which is the actual roughness divided by the inside diameter) and Re is the Reynolds Number.  Make A=Rr/3.7 and B=2.51/Re, then X= -2*Log(A+B*X).  Use X=3 (or any number you want to test, different starting number will still always solve it).  For the first loop use the selected X to solve the right side for a new X.  After about 7 loops the X will stop changing to the number of decimals in your calculator. Then f will be 1 divided by X squared. To check, compute both sides with the f, and you will see both sides for the main equation will equal the X. So the f is right to as many decimals as your calculator can figure. This method has been shared with the whole world for 4 years, and everyone has found it to be correct.

To test this method before learning it, you can see the very bottom to completely test my method from the country of Japan!   / Harrell

The Colebrook-White equation written in Excel is....

1/sqrt(f) = -2* Log(Rr/3.7+ 2.51/Re*1/sqrt(f))

Where Rr  is the relative roughness,  (which is the actual roughness divided by the inside diameter) and Re is the Reynolds Number.  I can solve this. I will show you how in a simple way. Let's call the "1/sqrt(f)", X at first, then solve for X.  ("TRUE" means 14 or 15 digits because Excel will only go that far. If your program can go 100 or 1000 digits, this solution will prove that many digits.)

X = -2* Log(Rr/3.7+ 2.51/Re*X)

When we find the true X, we can solve for f, which is the Darcy Friction Factor.

#### Example: (in an Excel worksheet)

Enter Rr in cell D1  as   0.015
Enter Re in cell D2 as   200,000

#### Enter an initial value of  X in cell D5 as 3 (or you may use a large number to see the initial X still works.  Example 1000, but it might take an extra loop)Enter this equation in the cell D6 for the next X....

=-2*Log(D\$1/3.7+2.51/D\$2*D5)
For Cell D6, you should have 4.78, but reformat  to "Number, 15 decimals".
It should then be... 4.776191571199940 if you type the equations and variables right, if you started with 3. (if you started with 1000, it would be 3.559571722914280, which will take one extra loop.)

In Cell E6  type... =D6=D5 .   It  will say "False", meaning "Not Solved" which means this X is not right yet.   Copy cells D6 and E6 and paste into cells from D7 to E25.  Cell E12 will say now say "TRUE" for 15 decimals.

You should know this about copying and pasting Excel equations, the variable that says D5 (without the \$) increases to the next cell.  So that D5 converts to D6, D7, D8, etc. as it is pasted down.  So the value of the equation is used as the next X in the next equation.

Into cell D26 write the equation   =1/D25^2  and that will be.. 0.043923090770254  , which is the Darcy F friction factor to 15 decimals!!

You can change that initial value of 3 to 1000 and you will see the DarcyF does not change, it may only take one step more to compute X. Also you change the Rr and Re for different solutions. If you are experienced in Excel you should be able move the computations around. Also you can compare this TRUE DarcyF to other approximations and see how close they are.

If you want to test this method for thousands of variables, change
D1 to  =RANDBETWEEN(2500,10000000)
D2 to  =RANDBETWEEN(4,5000)/100000)
then press or press and hold F9
If you to know the actual roughness and internal diameter, instead of relative roughness then divide the actual roughness by the inside diameter (in same units) to know the "relative" roughness, (Rr).

The Goudar–Sonnad method is good, it averages 14.9 of 15 correct decimal places. The Serghides's approximation averages 14.8 correct decimal places. But Haaland's method only average 2 correct decimals. Other approximations methods  average from 3 to 7 correct decimal places.
==============================================================

This is the example....(showing row numbers on far left)...(blue is just notes)
1          Rr= 0.015                                                       D1
2          Re= 200,000                                                  D2
3                           False means the right side of the equation is not equal to the left side
4
5    Initial X =                       3                               put in cell   D5
6             4.776191571199940 FALSE                =-2*LOG(D\$1/3.7+2.51/D\$2*D5)
7              4.771472426404240 FALSE               =-2*LOG(D\$1/3.7+2.51/D\$2*D6)
8              4.771484930741390 FALSE               =-2*LOG(D\$1/3.7+2.51/D\$2*D7)
9              4.771484897608350 FALSE                =-2*LOG(D\$1/3.7+2.51/D\$2*D8)
10            4.771484897696150 FALSE                =-2*LOG(D\$1/3.7+2.51/D\$2*D9)
11            4.771484897695920 FALSE                =-2*LOG(D\$1/3.7+2.51/D\$2*D10)
12            4.771484897695920 TRUE                  =-2*LOG(D\$1/3.7+2.51/D\$2*D11)
13            4.771484897695920 TRUE                  =-2*LOG(D\$1/3.7+2.51/D\$2*D12)
14            4.771484897695920 TRUE                  =-2*LOG(D\$1/3.7+2.51/D\$2*D13)
15            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D14)
16            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D15)
17            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D16)
18            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D17)
19            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D18)
20            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D19)
21            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D20)
22            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D21)
23            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D22)
24            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D23)
25            4.771484897695920 TRUE                   =-2*LOG(D\$1/3.7+2.51/D\$2*D24)
26 DarcyF   0.043923090770254                           =1/D25^2

=======================================================

On an average of random values of Re and Rr, the funnel will take you to an accuracy of 15 decimal places in seven loops for any of the different Colebrook equations.  But for some values of Re and Rr it may take 20 loops.

If your computing method could take you to 1000 decimals, the funnel would take you to 1000 decimals for X.  and computing Darcyf  from f=1/X/X  (or 1 / (X)^2) it will take you to another decimal place accuracy.

==========================================================
A similar way this  works
A very simple prove this works.  Try this equation,  X=Log(X)+9  Guess a value for X and you should understand this works very cool.  For and example, lets guess the X as 20 and solve,.. Log(20)+9= ?  about 10.3, then use 10.3 for X and you will get about 10.01, then Log(10.01)+9= about 10.0004, Wow, lets try 10...

Log(10)+9 = 10... Exactly, right!  The Log of 10 is 1, and 1+9 =10
So no matter what you first guess, this solution will quickly get the right answer.
If the first guess was 1000.  Then Log(1000)+9 = 12.  The way the solution works is to get you close very quickly.   Using all the decimals in Excel it will take 11 loops.

X=Log(X)+9
Guess 20 then next is... 10.3010299956640, next is...
10.0128806517992, next is... 10.0005590396375, next is...
10.0000242781044, next is... 10.0000010543834, next is...
10.0000000457913, next is... 10.0000000019887, next is...
10.0000000000864, next is... 10.0000000000038, next is...
10.0000000000002, next is... 10.0000000000000
==========================================================

Now, lets return to the (above) Colebrook Equation.
This is a little similar to the Colebrook Equation.  The Log function works like what I call a funnel to project each step toward the correct answer by about two more decimal places in each step.  An average of seven steps makes the true, absolute value found.  Excel can only do 14 or 15 decimal places so Excel holds off more accuracy.   To solve this test, write into Excel  an initial guess. Enter a  5 or 1000 for a for first step in Excel's cell D5.  It will still give the right answer.

How can this work?   Test?: solve this...  X=10+Log(X)
In a cell D6, enter the equation  =10+Log(D5).  It should answer 10.6989...  Enter into cell E6 this =D6=D5   Copy the cells D6 and E6  down into to about 20 rows. Cell E16 should say TRUE. This the equation has been solved because the left side equals the right side.

The answer to X should be    11.043090636672800   when displayed as 15 decimals.

To understand this, this method works easily when a variable like X is on both sides of an equation, but on one side it is in a Log function. Since the Log makes the section much smaller than the section not with Log.   You can test other equations like ....
X=Log(4*X)+5
X=Log(40+X/3)
X=-2*Log(0.04/3.7+2.51/10000*X)
The method of starting with a "guess" of X and computing the right side of the equation will give a new X that is from one to three more correct digits, then
recompute the right in Excel will give 15 digits, but sometimes Excel might round the last digit(s) wrong because it did not go to more than 15 digits.  Here are the
answers for those 3 equations.  The 3rd is almost like the Colebrook equation.

X=6.40883937854878
X=1.60784032102619
X=3.85777487509132

Another thing to understand is the "FUNNEL".  To plot a funnel to see how this works is to make a large and a small initial X and plot steps. Each additional computation takes the value to toward the True computation.
See the funnel plotted here...   http://hjgeron.blogspot.com/

==================================================

The "Funnel" works in Colebrook-White, because of the Log function.

Of course it won't work on Log() alone, but it works on other math with a Log. Like something as simple as this...  X=10+Log(X).  The Log(X) will be a lot smaller than X, and that's what make the "funnel".

Say for example...  What's the Log(1000), the Log(100) and the Log(10)?  Well, if you don't know, the answers are 3, 2, and 1.  The answers are 1 apart, not 10 times apart as 1000. 100, and 10.  This is why the graph makes a funnel shape.

So lets look at the test for X=10+Log(X) again.
If you guess the X in the equation as 3, the answer would be 10.47.
If you guess the first X as 1000, you would get 13.
If you guess the first X as 20, you would get 11.30

Graph this... in step 1, the  difference between 3 and 1000 was 997! The second different is 13 - 10.47 = 2.53.  So the funnel top was 997 going down to a  narrow step 2 as 2.53.  If you take one more loop, both will give you 11.04.  In an average of many different equations you will find each loop takes you about 2 more decimals of accuracy.  If you graph this, you will see the "Funnel" taking to a solution on each loop.
 This is a graph starting at 3 and 20, (the 1000 was to big in the graph). This shows 3 steps.   At 12 steps the accuracy is for 13 decimals, just because Excel will only get 15 digits. 11.0431=10+Log(11.0431)     See a funnel?... taking your estimate to a quick, accurate solution.  Actually.it is...11.0430906366728 to 15 digits. If you zoom into each pair of loops, you will see each loop  has another funnel shape reducing from very wide to very narrow.

How simple?  If you can take a PC calculator, try it this way.
Guess a number for X to use in the equation  X=10+Log(X)
Enter the guessed value of X,
1. Press [LOG]
2. Press [Plus] 10 then Equals
3. That gives you the first loop, go back to step 1.
After several times looping you will have 11.0430... and each loop will improve the decimal accuracy by and average of two decimal places.  That is how the Log funnel works,

When Mathematicians understand my funnel, they will agree that this is a Math solution to the Colebrook equations. Because of the Log each loop averages about 2 or 3 digits closer.  Since Excel will only show 15 digits, the average is about 7 loops.

Sample-------------------------------------------------------------------------------------
Started with 10, see 32 digits done with desktop calculator.
Red shows unchanged digits
10   Started with this as the "guess" that might save one loop.
11                                                                                   One digit did not change
11.041392685158225040750199971243 Two digits did not change, 2 more were added.
11.043023855760277278908417779052 4 digits did not change, 2 more were added.
11.043088010354671000395276406585 6 digits did not change, 2 more were added.
11.043090533386927914699790684320 6 digits did not change, 0 more was added.
11.043090632610882359484124482596 8 digits did not change, 2 more were added.
11.043090636513088500429056209373 10 digits did not change, 2 more were added.
11.043090636666551570718217687700 11 digits did not change, 1 more was added.
11.043090636672586852578685610125 12 digits did not change, 1 more was added.
11.043090636672824203669514154799 14 digits did not change, 2 more were added.
11.043090636672833538037257025437 15 digits did not change, 1 more was added.
11.043090636672833905132351701379 17 digits did not change, 2 more were added.
11.043090636672833919569195443481 18 digits did not change, 1 more was added.
11.043090636672833920136956931599 18 digits did not change, 0 more was added.
11.043090636672833920159285434501 21 digits did not change, 3 more were added.
11.043090636672833920160163553310 21 digits did not change, 0 more was added.
11.043090636672833920160198087315 24 digits did not change, 3 more were added.
11.043090636672833920160199445443 25 digits did not change, 1 more was added.
11.043090636672833920160199498855 27 digits did not change, 2 more were added.
11.043090636672833920160199500955 26 digits did not change, 1 reduced, 9498 changed to 9500
11.043090636672833920160199501038 28 digits did not change, 2 more were added.
11.043090636672833920160199501041 30 digits did not change, 2 more were added.
11.043090636672833920160199501041 32 digits did not change, 2 more were added.
11.043090636672833920160199501041 32 digits did not change,  none was  added because it has reached as many digits as program can compute.  This averages about 1.5 more extra correct digits per loop

Information, if you must have 10 correct digits, you should loop about two more than 10, just because it might be a change bcause of rounding.  If your program can compute hundreds or thousands of digits, you will see the results are the same.  So if you need 50 correct digits, you should go to 52 just to make sure the 50th is right.
This computation is just like solving each of the Colebrook-White equations.

===========================================================

This is a graph of the Simple and True Solution to the Colebrook equation.

This graph shows some first guess for X...0 to 8 at step 1. Each step goes about 2 decimals closer.. 8 was high and 0 was to low, and you can see where they (Red vs Black) crossed at step 2. To get 15 decimals correct, it takes about seven steps.
I just call it a funnel, because of the shape. Each step zooms in much closer, just like the graph from step 1 to 2, To graph step 2 to 3 they vertical side should go from 4.1 to 4.3.

===========================================================
A few people asked how I figured out how to do this TRUE solution.

When I first began to use approximations, I tested them and found most of them were good enough for actual design. But I wanted to know the TRUE solution to test each approximation. This was before I learned the "Funnel" would take me quickly to the accurate point.

I knew that using Excel that can run fast steps, I could find the TRUE value.  Here's a sample of how I could solve for a TRUE solution, but usually it took over a hundred steps, but the time uses was very quick.  I fixed the main equation to find X first where X is substituted for "1/sqrt(f)". X is normally somewhere between 2 and 5, so I would start with X=1 and take one step further until the solution of the equation gave me ax X  (answer) that was larger that the X used in the equation. Then I would reverse one step and reduce the step size.    After 100 steps the TRUE solution would be found where the right side X would compute to the same left side X.

==================================================
Several Colebrook-White equations

Why should the public learn this more accurate solution?  Ordinary approximations try to solve the main Colebrook-White solution, as shown in these methods.  But as time has pasted many specific types of material and fluids make slight changes in the Colebrook-White equation to more accuracy.  My methods can be easily changed by updating the specific equation. Here are six different Colebrook versions.  The public approximations only go toward first version listed.  Many of the designs we do say the version 4 is the specific equation we should use.  But none of the public approximations are very good for it. But I can put that equation into my method and it will get the TRUE solution. All the public approximations fail to be good for those different Colebrook equations.

1/sqrt(f)=-2*Log(Rr/3.7+2.51/Re*1/sqrt(f))             (this is the main one, shown above)
1/sqrt(f)=1.74-2*Log(2*Rr+18.7/Re*1/sqrt(f))
1/sqrt(f)=1.14+2*Log(1/Rr)-2*Log(1+(9.3/(Re*Rr)*1/sqrt(f)))
1/sqrt(f)=1.14-2*Log(Rr+9.35/Re*1/sqrt(f))
1/sqrt(f)=-2*Log(Rr/3.71+2.51/Re*1/sqrt(f))
1/sqrt(f)=-2*Log(Rr/3.72+2.51/Re*1/sqrt(f))

To use these in my method, just first use the RED parts as X, then when X is solved,
compute f  is this...   f =1/X^2 but I like the "simple" which is f =1/X/X (easier to type).

VBA programming===============

1/sqrt(f)=-2*Log(Rr/3.7+2.51/Re*1/sqrt(f))                                    mode 2.51
1/sqrt(f)=1.74-2*Log(2*Rr+18.7/Re*1/sqrt(f))                               mode 1.74
1/sqrt(f)=1.14+2*Log(1/Rr)-2*Log(1+(9.3/(Re*Rr)*1/sqrt(f)))      mode 1.14
1/sqrt(f)=1.14-2*Log(Rr+9.35/Re*1/sqrt(f))                                   mode 9.35
1/sqrt(f)=-2*Log(Rr/3.71+2.51/Re*1/sqrt(f))                                  mode 3.71
1/sqrt(f)=-2*Log(Rr/3.72+2.51/Re*1/sqrt(f))                                  mode 3.72

The symbol x is the left side of the Colebrook Equation, a number that is made by the right side of the equation. the symbol d will be a guess or a re-evaluated value of x.  The symbol "A" should be part of the convergence and it is a number that will be multiplied by d on the right side.  The symbol "B" should be part of the convergence and it is a number that will be added  to "A *d" on the right side.

The symbol "C" should be part of the convergence and it is a number that will be multiplied to the "LOG( B+A*d)" on the right side. The C might be =1/log(10) to convert LN to LOG10, but it might have another part that will be multiplied to the  "LOG( B+A*d)" on the right side, like 2 so it would be C=2/Log(10)
Another new part, test for x=d to end the convergence, but if the convergence changes the last decimals back and forth then,  use L to count the loops and quit if  x<>d.

Note:  the variable "a" will be value of a number divided by the Reynolds Number,  (for example 2.51/Re)  "b" will be Relative Roughness divided by a number (for example Rr/3.7). "c" will be the value to convert Ln() to Log10, and include the multiplier, usually 2, (for example 2*Log(10) ).  "d" will be the number moving toward the true value of "x".  And the Darcy Factor will be 1/x/x.
The equation like "x = Abs(c * Log(b + a * d))" will be the simplified equation of a Colebrook-White mode.  For each different modes, these variables will be changed to match the mode. To solve for x, estimate a value for d, then solve for x, then use the x for the next value of d. Solve for x again and again until x does not change (usually 7 loops for 14 or 15 decimals of accuracy.).  Then the Darcy factor will then be 1 / x  / x.

New VBA Function updated Oct, 2013,
=================================================================
Option Explicit
Dim L As Integer
Dim mode As String
Function Easy(re As Double, rr As Double, Optional mode, Optional Find As String) As Double
'mode 2.51  1/sqrt(f)=-2*Log(Rr/3.7+2.51/Re*1/sqrt(f))
'mode 1.74  1/sqrt(f)=1.74-2*Log(2*Rr+18.7/Re*1/sqrt(f))
'mode 1.14  1/sqrt(f)=1.14+2*Log(1/Rr)-2*Log(1+(9.3/(Re*Rr)*1/sqrt(f)))
'mode 9.35  1/sqrt(f)=1.14-2*Log(Rr+9.35/Re*1/sqrt(f))
'mode 3.71  1/sqrt(f)=-2*Log(Rr/3.71+2.51/Re*1/sqrt(f))
'mode 3.72  1/sqrt(f)=-2*Log(Rr/3.72+2.51/Re*1/sqrt(f))
Dim A As Double, B As Double, D As Double, X As Double, F As Double, Left As Double, Right As Double
If IsMissing(mode) Then mode = 2.51
If IsMissing(Find) Then Find = ""
If rr > re Then Exit Function
If re < 2000 Then
Easy = 64 / re
Exit Function
End If
L = 0
D = 3
Select Case mode
Case 2.51
A = 2.51 / re
B = rr / 3.7
While X <> D
X = -2 * Log10(B + A * D)
D = -2 * Log10(B + A * X)
L = L + 1: If L > 20 Then X = D 'Excel can't go to more digits, each loop adds about two more correct digits
Wend
F = 1 / X / X
Easy = F
If Find = "Left" Then Easy = 1 / Sqr(F)
If Find = "Right" Then Easy = -2 * Log10(rr / 3.7 + 2.51 / re * 1 / Sqr(F))
Case 1.74
A = 18.7 / re
B = 2 * rr
While X <> D
X = 1.74 - 2 * Log10(B + A * D)
D = 1.74 - 2 * Log10(B + A * X)
L = L + 1: If L > 20 Then X = D
Wend
F = 1 / X / X
Easy = F
If Find = "Left" Then Easy = 1 / Sqr(F)
If Find = "Right" Then Easy = 1.74 - 2 * Log10(2 * rr + 18.7 / re * 1 / Sqr(F))
Case 1.14:
A = 9.3 / (re * rr)
B = 1.14 + 2 * Log10(1 / rr)
While X <> D
X = B - 2 * Log10(1 + (A * D))
D = B - 2 * Log10(1 + (A * X))
L = L + 1: If L > 20 Then X = D
Wend
F = 1 / X / X
Easy = F
If Find = "Left" Then Easy = 1 / Sqr(F)
If Find = "Right" Then Easy = 1.14 + 2 * Log10(1 / rr) - 2 * Log10(1 + (9.3 / (re * rr) * 1 / Sqr(F)))
Case 9.35
A = 9.35 / re
B = rr
While X <> D
X = Abs(1.14 - 2 * Log10(B + A * D))
D = Abs(1.14 - 2 * Log10(B + A * X))
L = L + 1: If L > 20 Then X = D
Wend
F = 1 / X / X
Easy = F
If Find = "Left" Then Easy = 1 / Sqr(F)
If Find = "Right" Then Easy = 1.14 - 2 * Log10(rr + 9.35 / re * 1 / Sqr(F))
Case 3.71
A = 2.51 / re
B = rr / 3.71
While X <> D
X = -2 * Log10(B + A * D)
D = -2 * Log10(B + A * X)
L = L + 1: If L > 20 Then X = D
Wend
F = 1 / X / X
Easy = F
If Find = "Left" Then Easy = 1 / Sqr(F)
If Find = "Right" Then Easy = -2 * Log10(rr / 3.71 + 2.51 / re * 1 / Sqr(F))
Case 3.72
A = 2.51 / re
B = rr / 3.72
While X <> D
X = -2 * Log10(B + A * D)
D = -2 * Log10(B + A * X)
L = L + 1: If L > 20 Then X = D
Wend
F = 1 / X / X
Easy = F
If Find = "Left" Then Easy = 1 / Sqr(F)
If Find = "Right" Then Easy = -2 * Log10(rr / 3.72 + 2.51 / re * 1 / Sqr(F))
Case Else
Easy = 0
End Select
End Function

Static Function Log10(X)
Log10 = Log(X) / Log(10#)
End Function

'============================

'Public Approximate methods
Function fSerg(Re As Double, Rr As Double, mode) As Double
If mode <> 2.51 Then Exit Function
'Friction Factor calculated by T.K. Serghide's implementation of Steffenson
'RefeRence Chemical Engineering March 5, 1984
Dim a As Single
Dim b As Single
Dim c As Single
Dim x As Double
'Note that in Visual Basic "Log" stands for Natural Log, ie. Ln()    x = -0.86858896
x = -0.868588963806504
a = x * Log(Rr / 3.7 + 12 / Re)
b = x * Log(Rr / 3.7 + (2.51 * a / Re))
c = x * Log(Rr / 3.7 + (2.51 * b / Re))
fSerg = (a - ((b - a) ^ 2) / (c - (2 * b) + a)) ^ -2
End Function

Function Serghide(Re As Double, Rr As Double, mode) As Double
If mode <> 2.51 Then Exit Function
Dim a As Double, b As Double, c As Double
a = -2 * Log10(Rr / 3.7 + 12 / Re)
b = -2 * Log10(Rr / 3.7 + 2.51 * a / Re)
c = -2 * Log10(Rr / 3.7 + 2.51 * b / Re)
Serghide = (a - ((b - a) ^ 2) / (c - 2 * b + a)) ^ -2
End Function

Function Swamee(Re As Double, Rr As Double, mode) As Double
'Swamee and Jain approximation to the Colebrook-White equation for Re>4,000(Bhave, 1991)
If mode <> 2.51 Then Exit Function
Dim f, dh, k As Double
On Error GoTo SwameeEr
dh = 1: k = Rr
'Hagen – Poiseuille formula for Re < 2,000 (Bhave, 1991):
If Re < 2000 Then
f = 64 / Re
Swamee = f
Exit Function
End If
Swamee = 1.325 / (Log(Rr / 3.7 + (5.74 / (Re ^ 0.9)))) ^ 2
Exit Function
SwameeEr: Swamee = 9999
End Function

Function Haaland(Re As Double, Rr As Double, mode) As Double
If mode <> 2.51 Then Exit Function
Haaland = 0.308642 / (Log10((Rr / 3.7) ^ 1.11 + 6.9 / Re)) ^ 2
End Function

Function Goudar_Sonnad(Re As Double, Rr As Double, mode) As Double
If mode <> 2.51 Then Exit Function
Dim a As Double, b As Double, d As Double, G As Double, s As Double, Q As Double, Z As Double, Dla As Double, Dcfa As Double, f As Double, x As Double
On Error GoTo quit
a = 2 / Log(10)
b = Rr / 3.7
d = Log(10) * Re / 5.02
s = b * d + Log(d)
Q = s ^ (s / (s + 1))
G = b * d + Log(d / Q)
Z = Log(Q / G)
Dla = Z * (G / (G + 1))
Dcfa = Dla * (1 + (Z / 2) / ((G + 1) ^ 2 + (Z / 3) * (2 * G - 1)))
x = a * (Log(d / Q) + Dcfa)
Goudar_Sonnad = (1 / x) ^ 2
Exit Function
quit: Goudar_Sonnad = 9999
End Function

Function Zigrang(Re As Double, Rr As Double, mode) As Double
'Zigrang_and_Sylvester Solution
If mode <> 2.51 Then Exit Function
Zigrang = 1 / (-2 * Log10(Rr / 3.7 - 5.02 / Re * Log10(Rr / 3.77 - 5.02 / Re * Log10(Rr / 3.77 + 13 / Re)))) ^ 2
End Function
Function Altshul(Re As Double, Rr As Double, mode) As Double
'Altshul-Tsal6
If mode <> 2.51 Then Exit Function
Dim fp, f As Double
fp = 0.11 * (Rr + 68 / Re) ^ 0.25
If fp < 0.018 Then
f = 0.85 * fp + 0.0028
Else
f = fp
End If
Altshul = f
End Function

Function Brkic(Re As Double, Rr As Double, mode) As Double
If mode <> 2.51 Then Exit Function
Dim s As Double, x As Double
s = Log(Re / (1.1816 * Log(1.1 * Re / (Log(1 + 1.1 * Re)))))
x = -2 * Log10((Rr / 3.71) + 2.18 * s / Re)
Brkic = 1 / x ^ 2
End Function

Function DecCorr(x As Double, y As Double) As Integer
'decimals correct, compares upto 15 decimals places
Dim L As Integer
x = Round(x, 15 ): y = Round(y, 15)
For L = 1 To 15
If Round(x, L) = Round(y, L) Then DecCorr = L Else Exit For
Next L
End Function

'==================================================

Static Function Log10(x)  'Vba's Log() is actually Ln(), and this is just to
'convert VBA's "Log" to "Log10"
'Converts VBA Ln( to Log10()
Log10 = Log(x) / Log(10#)
End Function

'==================================================

'

More info:  a true solution?   Well engineers should understand more about the Colebrook equations. Each of it's "parts" are estimated to be close enough for a design. Even the 3.7 and the 2.51 have been "rounded" to be close enough for most designs.   What about values of Rr and Re? If you can compute those to within 1% then it will be good enough for almost all friction factors.  With this "true" solution for Excel, this computation will be accepted each part to be true and will give you the Darcy Friction to 15 decimal places which will be more accurate that each of the separate variables used in the equation.
===========================================================
===========================================================

Would you prefer to TEST my Simple, True, Easy Solution?

If you want to check out my method, here's a simple way where you can compute the check to 50 decimals places.

A new Japan web site ...
http://keisan.casio.com/exec/system/1381988562

(older) Go to this web site ....     keisan.casio.com
And enter a Reynolds Number as Rn because "Re" is something else at that site.   Copy the Computation Lines and enter a Rn and a Rr that you want to use, follow each with a " ; " to end the line.

The Left and Right are the main Colebrook-White equation. Left is  1/sqrt(f) and the Right is -2*log(Rr/3.7+2.51/Rn/sqrt(f)) If this gives the same Left and Right then this is TRUE!

This uses D=3 and the initial 1/sqrt(f) and computes X and D until the are equal.
The is solves f as  1/X/X  which is  1/(X^2) When the left and right side are equal, then the Colebrook-White equation has been solved perfectly with a True and Easy solution.   The last three lines gives the answers.

Go to keisan.casio.com      Note each line ends with a ";" to help the PC computation. With this you can choose 50 digits and you will notice that the left side of the equation is exactly the same as the right side.
This is for the Mode 2.51  ... 1/sqrt(f) = -2* Log(Rr/3.7+ 2.51/Re*1/sqrt(f))
=========================================================
=========================================================

 Rn=2525; Rr=0.01824; A=Rr/3.7; B=2.51/Rn; D=3; do {X=-2*log(A+B*D); D=-2*log(A+B*X);} while (X<>D); f=1/X/X; Left=1/sqrt(f); Right=-2*log(Rr/3.7+2.51/Rn/sqrt(f)); f; Left; Right;

=========================================================
Today, Oct,3, 2013 I found a tested a special Colebrook solution, called Newton's computation (that you can buy for about \$40).  I tested and compared many values of the Reynolds Number and relative roughness with my simple, True, and easy solution vs the Newton computation. I learned by testing thousands of random Re and Rr that the Newton is just a good approximation. It's last digit is usually wrong. But about 50% of it's approximations are right.  It's crazy, why should users pay for an approximation when the True solution is easy now that you can study this web site!

I did them all with 50 digits.  Many times the Newton computations only had 49 digits right.  But a few times Newton had all 50 digits right.  To tell if a computation is right, you should figure both the...
Left_Side = 1/sqrt(f)
Right_Side = -2*log(Rr/3.7+2.51/Rn/sqrt(f))
to check to see if they are exactly the same.

If you are using Excel, all computation can only have 15 digits correct, and if those 15 digits are used for another computation, then because of wrong rounding of the 15 digit, then maybe only 14 digits or less will be right.

The Newton computation is very complex, but mine is simple.
Rn=2525;       (Reynolds Number)
Rr=0.01824;   (Relative Roughness,  which is roughness divide by the inside diameter)
A=Rr/3.7;
B=2.51/Rn;
D=3 ; (a starting guess of X, but you can use other positive number to begin with)

'start loops
X=-2*log(A+B*D)   (both D and X will change until the X is right.)
D=X                         (if X <> D the change D to the X and continue the loop)...

continue loops until X = D, then  (each loop with make 2 or 3 more digits to be right.
f =   1/X/X;   (same as 1/sqrt(f) )

Then you can test the f in the Colebrook equation.
Left = 1/sqrt(f)
Right = -2*log(Rr/3.7+2.51/Rn/sqrt(f))

Excel's rounding of 15 digits for f, may cause the 14th and/or 15th digits to be different.

-----------

This type of equation can be computed accuracy. If a number is in a Log() with other numbers, and without numbers other side, it can be solved easily. My training years ago what X=Log(5+X*10). You can guess an X and compute the right side, and use the solution for the next X. Because the Log() makes the compute much smaller, it makes the correct solution quick. In the Colebrook-White equation can have the 1/Sqrt(f) changed to X, and since the right side has a number divided by sqrt(f) it can be changed to *X. So the equation will be X=-2*Log(e/(3.7*Dh)+(2.51/Re)*X). To make the solution easier, compute the e/(3.7*Dh) as A... and compute the 2.51/Re as B. Then the easy solution will be X=-2*Log(A+B*X). Usually in about 5 loops the X will stop changing will about 15 decimals not changing. But some times it may take 10 loops to get 15 decimals. The the f will be the X ... 1/X/X (one divided by the X twice). There are a few approximations that are right to 15 decimals. But if can compute to 50 digits you will see that all the approximation are not right. To check the solution, both the left and right sides will both be the X you computed. See the web site ... keisan.casio.com/exec/system/1381988562 .... that is shearing the whole world with this solution. (There you will see who I am).

----------