Skip to content

Commit

Permalink
feat: more dimensionless numbers and pipe friction models (#273)
Browse files Browse the repository at this point in the history
* Added more dimensionless numbers and pipeline friction calculations
Added Froude numbers, Weber numbers
Added Darcy friction factor calculations, pipe wall shear stress, pressure gradient and pressure drop calculations
Added autalignement for nonaligned timeseries + added tests for such situations

---------

Co-authored-by: Vebjørn Gilberg <[email protected]>
Co-authored-by: Neringa Altanaite <[email protected]>
  • Loading branch information
3 people authored Sep 16, 2024
1 parent 03749d6 commit f6869de
Show file tree
Hide file tree
Showing 9 changed files with 2,133 additions and 22 deletions.
63 changes: 61 additions & 2 deletions docs-source/source/fluid_dynamics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,65 @@ Reynolds Number
---------------
.. autofunction:: indsl.fluid_dynamics.Re

Friction Factor: Haaland equation
---------------------------------
Weber Number
------------
.. autofunction:: indsl.fluid_dynamics.We

Froude Number
-------------
.. autofunction:: indsl.fluid_dynamics.Fr

Density scaled Froude Number
----------------------------
.. autofunction:: indsl.fluid_dynamics.Fr_density_scaled

2 phase Froude Number
---------------------
.. autofunction:: indsl.fluid_dynamics.Fr_2phase

Inviscid Kelvin Helmholtz Froude Number
---------------------------------------
.. autofunction:: indsl.fluid_dynamics.Fr_inviscid_kelvin_helmholtz

Scaled pressure gradient
------------------------
.. autofunction:: indsl.fluid_dynamics.Pressure_scaled

Scaled pipe roughness
---------------------
.. autofunction:: indsl.fluid_dynamics.Roughness_scaled



Pressure drop in pipes
======================

Haaland equation
----------------
.. autofunction:: indsl.fluid_dynamics.Haaland

Fast Colebrook approximation
----------------------------
.. autofunction:: indsl.fluid_dynamics.Colebrook

Laminar flow friction factor
----------------------------
.. autofunction:: indsl.fluid_dynamics.friction_factor_laminar

Darcy friction factor
---------------------
.. autofunction:: indsl.fluid_dynamics.Darcy_friction_factor

Single phase wall shear stress
------------------------------
.. autofunction:: indsl.fluid_dynamics.pipe_wall_shear_stress

Single phase pressure gradient
------------------------------
.. autofunction:: indsl.fluid_dynamics.pipe_pressure_gradient

Single phase pressure drop
--------------------------
.. autofunction:: indsl.fluid_dynamics.pipe_pressure_drop


4 changes: 4 additions & 0 deletions examples/fluid_dynamics/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Fluid Dynamics
______________

Examples on how to use the fluid dynamics functionality.
38 changes: 38 additions & 0 deletions examples/fluid_dynamics/plot_darcy_friction_factor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Copyright 2024 Cognite AS
"""
================================
Darcy Friction Factor
================================
This example generates a Moody diagram using the Darcy friction factor function
"""
import warnings

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

from indsl.fluid_dynamics import Darcy_friction_factor

# suppress "No frequency information was given" warning - Frequency information is derived from datetime index
warnings.filterwarnings("ignore")

n = 1000
Re = pd.Series(np.power(10, np.linspace(2, 8, n)))


roughness_scaled_parameters = [0, 1e-6, 1e-5, 1e-4, 1e-3]

fig = plt.figure(figsize=(10, 8))
for roughness_scaled_parameter in roughness_scaled_parameters:
roughness_scaled = pd.Series(roughness_scaled_parameter * np.ones(n))
friction_factor = Darcy_friction_factor(Re, roughness_scaled, laminar_limit=2300.0, turbulent_limit=4000.0)
plt.loglog(Re.array, friction_factor.array, "-", label=r"$\epsilon$=%1.2g" % (roughness_scaled_parameter))
plt.xlabel("Reynolds number [-]")
plt.ylabel("Friction factor [-]")
plt.grid(1)
plt.xlim([min(Re.array), max(Re.array)])
plt.legend(loc=0, title="Relative wall roughness")
plt.title("Moody diagram")
plt.tight_layout()
plt.show()
57 changes: 53 additions & 4 deletions indsl/fluid_dynamics/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,59 @@
# Copyright 2023 Cognite AS
from .dimensionless import Re
from .friction import Haaland
from .dimensionless import (
Fr,
Fr_2phase,
Fr_density_scaled,
Fr_inviscid_kelvin_helmholtz,
Pressure_scaled,
Re,
Roughness_scaled,
We,
)
from .friction import (
Colebrook,
Darcy_friction_factor,
Haaland,
friction_factor_laminar,
pipe_pressure_drop,
pipe_pressure_gradient,
pipe_wall_shear_stress,
)


TOOLBOX_NAME = "Fluid Dynamics"

__all__ = ["Re", "Haaland"]
__all__ = [
"Re",
"Fr",
"Fr_density_scaled",
"Fr_2phase",
"Fr_inviscid_kelvin_helmholtz",
"We",
"Pressure_scaled",
"Roughness_scaled",
"Haaland",
"Colebrook",
"friction_factor_laminar",
"Darcy_friction_factor",
"pipe_wall_shear_stress",
"pipe_pressure_gradient",
"pipe_pressure_drop",
]

__cognite__ = ["Re", "Haaland"]
__cognite__ = [
"Re",
"Fr",
"Fr_density_scaled",
"Fr_2phase",
"Fr_inviscid_kelvin_helmholtz",
"We",
"Pressure_scaled",
"Roughness_scaled",
"Haaland",
"Colebrook",
"friction_factor_laminar",
"Darcy_friction_factor",
"pipe_wall_shear_stress",
"pipe_pressure_gradient",
"pipe_pressure_drop",
]
1 change: 1 addition & 0 deletions indsl/fluid_dynamics/constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
acceleration_gravity = 9.81 # acceleration due to gravity [m/s2]
Loading

0 comments on commit f6869de

Please sign in to comment.