How to compute kinematic viscosity in Python using UliEngineering

You can easily compute kinematic viscosity from dynamic viscosity and density using the UliEngineering Python library:

kinematic_viscosity.py
from UliEngineering.Physics.Viscosity import kinematic_viscosity
from UliEngineering.EngineerIO import *

# Compute kinematic viscosity of water
dynamic_viscosity = 0.001  # Pa·s
density = 998.2  # kg/m³
nu = kinematic_viscosity(dynamic_viscosity, density)
print(f"Kinematic viscosity: {format_value(nu, 'm²/s')}")

# Compute kinematic viscosity of air
dynamic_viscosity = 1.8e-5  # Pa·s
density = 1.225  # kg/m³
nu = kinematic_viscosity(dynamic_viscosity, density)
print(f"Air kinematic viscosity: {format_value(nu, 'm²/s')}")

# Compute kinematic viscosity of glycerol
dynamic_viscosity = 1.412  # Pa·s at 20°C
density = 1261.0  # kg/m³
nu = kinematic_viscosity(dynamic_viscosity, density)
print(f"Glycerol kinematic viscosity: {format_value(nu, 'm²/s')}")

Example output

kinematic_viscosity_output.txt
Kinematic viscosity: 1.00 mm²/s
Air kinematic viscosity: 14.7 mm²/s
Glycerol kinematic viscosity: 1.12 cm²/s

kinematic viscosity plot.svg

Kinematic viscosity is given by:

$$ \nu = \frac{\eta}{\rho} $$

where $\nu$ is the kinematic viscosity, $\eta$ is the dynamic viscosity, and $\rho$ is the density.

Kinematic viscosity represents the ratio of viscous forces to inertial forces in a fluid and is commonly used in fluid dynamics calculations, particularly for determining the Reynolds number. While dynamic viscosity describes a fluid’s internal resistance to flow, kinematic viscosity also accounts for the fluid’s density.

The plot above shows the linear relationship between dynamic viscosity and kinematic viscosity for a fixed density of 1000 kg/m³ (approximately water). The slope of this line is equal to the reciprocal of the density.

Kinematic viscosity is particularly useful in problems involving fluid motion and momentum transfer, such as in boundary layer analysis, pipe flow calculations, and aerodynamics. It has units of m²/s, which are the same as diffusivity, reflecting its role in the diffusion of momentum.


Plot generation script

plot_kinematic_viscosity.py
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import numpy as np
import sys
sys.path.insert(0, '/home/uli/dev/UliEngineering')

from UliEngineering.Physics.Viscosity import kinematic_viscosity

# Dynamic viscosity range for plotting
eta = np.linspace(1e-4, 1e-2, 100)  # 0.1 to 10 mPa·s

# Create plot
plt.figure(figsize=(10, 6))

# Fixed density (water-like)
rho = 1000.0  # kg/m³

# Calculate kinematic viscosity
nu = kinematic_viscosity(eta, rho) * 1e6  # Convert to mm²/s

plt.plot(eta * 1000, nu, color='blue', linewidth=2)
plt.xlabel('Dynamic Viscosity (mPa·s)', fontsize=12)
plt.ylabel('Kinematic Viscosity (mm²/s)', fontsize=12)
plt.title('Kinematic Viscosity vs Dynamic Viscosity (ρ = 1000 kg/m³)', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('kinematic_viscosity_plot.svg', format='svg', dpi=300)
print("Plot saved to kinematic_viscosity_plot.svg")

Check out similar posts by category: Physics, Python