
    h                         S r SrSrSrSSKrSSKrSS jrSS jrSS jrSS	 jr	SS
 jr
SS jrS r\S:X  a  \" 5         gg)zProvides various functions for calculating the Darcy friction factor based on Colebrook-White approximations.
https://en.wikipedia.org/wiki/Darcy_friction_factor_formulae

zRob Markoski, IME ConsultantsDevelopment20190215    Nc                 h    S[         R                  " US-  SU S-  -  -   5      S-  -  n[        X25      $ )z
Model: Swamee, Jain
Year: 1976
Paper: https://cedb.asce.org/CEDBsearch/record.jsp?dockey=0006693
Suitable Range:
    5000 < Reyonolds < 10^8 and e/D = 0.00001 - 0.5
g      ?g@g(\@g?   mathlog10roundreynolds	roughnesssigfigfrictions       E/var/www/html/env/lib/python3.13/site-packages/colebrook/colebrook.py
sjFrictionr      s9     tzz)c/DHcM4J"JKaOOH""    c                 "   SU-  nSSU S-  S-  -   -  nSSU SU-  -  S-  -   -  nSUS-
  -  U-  nSUS-
  -  SU-
  -  nSU -  U-  S[         R                  " U S	-  5      -  U-  -  S
[         R                  " SU-  5      -  U-  -  n[        X5      $ )z
Model: Bellos, Nalbantis, Tsakris
Year: 2018
Paper: https://www.sciencedirect.com/science/article/pii/S0029549311000173
Suitable Range:
    All Flow Regimes
   i
  g @   g?r   @   g      ?g{Gz@g)\(?gHzG@r   logr
   )	r   r   r   inv_roughnessparam_aparam_b
exponent_a
exponent_br   s	            r   bntFrictionr      s     	MM14#--.G1C-$783>>?Ggk"W,Jgk"a'k2JX'4$((8d?2K+Kj*XX\`cgckcklprl  dA  ]A  DN  \N  NH""r   c                     S[         R                  " SUS-  -  SU S-  -  -
  SU S-  -  -   5      S-  -  n[        X25      $ )	z
Model: Fang
Year: 2011
Paper: https://www.sciencedirect.com/science/article/pii/S0029549311000173
Suitable Range:
    Reynolds > 2300 (I.E. Turbulent and Transition Range only)
g+?gʡE?gPkw?g33333CN@gS㥛?gh|?%L@gkw#?r   r   s       r   fngFrictionr!   *   sT     f)<!<vRXHX?X!X[adlntdt[t!tuxzzzH""r   c                     SSS[         R                  " U 5      -
  S-  -  -
  [         R                  " US-  SU S-  -  -   5      S-  -  n[        X25      $ )	z
Model: Evangelides, Papaevangelou, Tzimopoulos
Year: 2010
Paper: http://blogs.sch.gr/geopapaevan/files/2010/07/full-paper_pre1128act.pdf
Suitable Range:
    Reynolds > 2300 (I.E. Turbulent and Transition Range only)

Rel
gV/?g5?      gQ@gX9v@g7[ A?r   r   r   s       r   eptFrictionr%   7   si     a$**X*>&>%BBBtzzR[^cRcfknvx~n~f~R~G  CD  GD  DH""r   c                     S[         R                  " U 5      [         R                  " SSU -  U-  SS[         R                  " U5      -  -   -  -   5      -
  S-  -  n[        X25      $ )z
Model: Avci, Kargoz
Year: 2009
Paper: http://dx.doi.org/10.1115/1.3129132
Suitable Range:
    Reynolds > 2300 (I.E. Turbulent and Transition Range only)

g@r   g{Gz?
   g333333@)r   r   sqrtr
   r   s       r   
akFrictionr)   E   sb     dhhx(488Ax)8SWX[]`d`i`ijs`t[tWt8u4u+vvy|||H""r   c                    [         R                  " U S[         R                  " SU -  [         R                  " SSU -  -   5      -  5      -  -  5      nS[         R                  " SU-  U -  US-  -   5      -  S-  n[        XB5      $ )z
Model: Brkic
Year: 2011
Paper: https://doi.org/10.1080%2F10916461003620453
Suitable Range:
    Reynolds > 2300 (I.E. Turbulent and Transition Range only)
guV?g?r   r    gq=
ףp@gGz@)r   r   r	   r
   )r   r   r   betar   s        r   bkcFrictionr,   R   sy     88H#.DHHQQTW_Q_M_D`1`(a abcDTZZ 89t;K KLLrQH""r   c                     [         R                  " 5       n U R                  SS[        S9  U R                  SS[        S9  U R                  SSSS	[        S
9  U R                  5       nUR                  nUR                  nSnSS/n/ nUR                  S[        X#5      /5        UR                  S[        X#5      /5        UR                  S[        X#5      /5        UR                  S[        X#5      /5        UR                  S[        X#5      /5        UR                  S[        X#5      /5        [        S5        [        UR                   " U6 5        [        S5        U H  n[        UR                   " U6 5        M     [        S5        g )Nr   zReynolds Number)helptyperelroughnesszRelative Roughness of piper   ?z4OPTIONAL - Number of Significant Figures (Default=4)r$   )nargsr.   defaultr/   z|{:<15} | {:<7}|METHODVALUEr   r   r!   r)   r,   r%   zrEnsure values are within range of applicability for equations (specifically around transition and laminar region)!z---------------------------z@DISCLAIMER: Use secondary verification. No guarantee of accuracy)argparseArgumentParseradd_argumentintfloat
parse_argsr   r0   appendr   r   r!   r)   r,   r%   printformat)parserargsr   r   table_formatfric_headersfactorsrows           r   mainrE   _   s^   $$&F

):E
-IPUV
2hrsz}~D}}H!!I%Lg&LGNNL*X"ABCNNM;x#CDENNM;x#CDENNL*X"ABCNNM;x#CDENNM;x#CDE	
~	,

|
,-	
'(l!!3'( 	
LMr   __main__)r$   )__doc__
__author__
__status____version__r   r6   r   r   r!   r%   r)   r,   rE   __name__ r   r   <module>rM      sY    -

  	##"
##
#
#N6 zF r   