4 Hydrostatics
Hydrostatics is the branch of fluid mechanics that studies fluids at rest and the forces and pressures they exert on immersed or containing surfaces. Key principles include Pascal’s law (pressure applied to an enclosed fluid is transmitted undiminished in all directions), Archimedes’ principle (buoyant force on a submerged body equals the weight of displaced fluid), and the hydrostatic pressure distribution in a fluid column, expressed as \(p = \rho g h\), where \(p\) is gauge pressure, \(\rho\) is fluid density, \(g\) is gravitational acceleration, and \(h\) is depth below the free surface.
4.1 Pressure Head
In fluid mechanics, pressure head is the height of a fluid column that corresponds to a specific pressure at a given point, assuming the fluid is static. It’s expressed as \(h_p = \frac{p}{\rho g}\), where \(p\) is the pressure above atmospheric, \(\rho\) is the fluid density, and \(g\) is the acceleration due to gravity. The unit is typically meters (or feet) of the fluid column. Pressure head represents the potential energy per unit weight due to pressure and is a component of the total hydraulic head, which is the sum of pressure head and elevation head.
4.2 Load On Immersed Surfaces
The load on an immersed surface is the total hydrostatic force exerted by a fluid on a surface submerged in a static fluid. This force arises from the pressure variation with depth, governed by the hydrostatic pressure equation \(p = \rho g h\), where \(\rho\) is fluid density, \(g\) is gravitational acceleration, and \(h\) is the depth below the free surface.
The pressure acts perpendicular to the surface, resulting in a distributed load. The total force \(F\) is calculated as \(F = \rho g A \bar{h}\), where \(A\) is the surface area and \(\bar{h}\) is the depth of the centroid of the area.
Example 4.1 A vertical rectangular bulkhead is 7 m wide and extends over the full height of the water column. Fresh water stands 6 m deep on one side and is assumed to be at zero level on the other side. Calculate the total hydrostatic load (thrust) on the bulkhead. Density of fresh water = 1000 kg/m³.
# Given
width = 7.0 # m (horizontal width of bulkhead)
height_water = 6.0 # m (water depth on one side)
rho_water = 1000.0 # kg/m³ (fresh water)
g = 9.81 # m/s²
# Calculations
area = width * height_water # m²
h_centroid = height_water / 2 # m (from free surface)
force_N = rho_water * g * h_centroid * area # Newtons
force_kN = force_N / 1000
print("=== Hydrostatic Load on Bulkhead ===")
print(f"Bulkhead width : {width} m")
print(f"Water depth : {height_water} m")
print(f"Submerged area : {area:.1f} m²")
print(f"Depth of centroid : {h_centroid} m")
print(f"Total water load : {force_kN:,.0f} kN ({force_kN/1000:.3f} MN)")Example 4.2 A 10-meter-long, 4-meter-wide, and 6-meter-high tank is filled with oil (specific gravity = 0.9). The oil rises 5 meters up a vent pipe above the tank’s top. Calculate the load on one end plate and the bottom of the tank.
# -----------------------------
# Given data
# -----------------------------
tank_length = 10.0 # m
tank_width = 4.0 # m
tank_height = 6.0 # m
sounding_pipe = 5.0 # m (oil rises 5 m above the tank top in vent/pipe)
specific_gravity = 0.9
rho_oil = specific_gravity * 1000 # kg/m³
g = 9.81 # m/s²
# -----------------------------
# Calculated values
# -----------------------------
total_head = tank_height + sounding_pipe # from bottom to oil surface
# End plate dimensions and force
end_height = tank_height # m
end_width = tank_width # m
area_end = end_height * end_width # m²
# Depth of centroid of end plate below oil surface
h_centroid_end = sounding_pipe + (tank_height / 2) # m
# Hydrostatic force on end plate
force_end_plate = rho_oil * g * h_centroid_end * area_end
# Bottom plate force
area_bottom = tank_length * tank_width # m²
force_bottom = rho_oil * g * total_head * area_bottom
# -----------------------------
# Output results
# -----------------------------
print("=== Hydrostatic Loads on Oil Tank ===")
print(
f"Tank dimensions : {tank_length} m × {tank_width} m × "
f"{tank_height} m (L×W×H)"
)
print(f"Oil rise in sounding pipe : {sounding_pipe} m")
print(f"Oil density : {rho_oil} kg/m³")
print()
print(
f"End plate (one wall) : {end_height} m high × {end_width} m "
f"wide = {area_end} m²"
)
print(
f"Horizontal load on one end plate : {force_end_plate:,.0f} N = "
f"{force_end_plate/1000:.0f} kN"
)
print()
print(
f"Bottom plate : {tank_length} m × {tank_width} m = "
f"{area_bottom} m²"
)
print(
f"Vertical load on bottom : {force_bottom:,.0f} N = "
f"{force_bottom/1000:.0f} kN"
)Example 4.3 A rectangular dock gate measures 4 meters wide. If the water level is 5.5 meters high on one side and 3.5 meters high on the other, what horizontal thrust will act on the gate? Assume the water density is 1000 kg/m³.
# Given
width = 4.0 # gate width in meters
h1 = 5.5 # water depth on higher side (m
h2 = 3.5 # water depth on lower side (m)
rho = 1000.0 # density of water (kg/m³)
g = 9.81 # acceleration due to gravity (m/s²)
# Hydrostatic force on higher side
A1 = h1 * width
h_c1 = h1 / 2
F1 = rho * g * h_c1 * A1
# Hydrostatic force on lower side
A2 = h2 * width
h_c2 = h2 / 2
F2 = rho * g * h_c2 * A2
# Net horizontal thrust (from higher to lower side)
F_net = F1 - F2
print("=== Hydrostatic Thrust Calculation ===")
print(f"Force from higher side (5.5 m): {F1:.0f} N")
print(f"Force from lower side (3.5 m): {F2:.0f} N")
print(f"Net horizontal thrust on gate: {F_net:.0f} N")Example 4.4 A rectangular dock gate measures 12 meters wide. When the sea is 9 meters deep on one side and 4.5 meters deep on the other, what horizontal thrust will act on the gate? Assume the density of seawater is 1025 kg/m³.
# -----------------------------
# Given data
# -----------------------------
width = 12.0 # width of gate (m)
h1 = 9.0 # deeper side water depth (m)
h2 = 4.5 # shallower side water depth (m)
rho = 1025.0 # density of seawater (kg/m³)
g = 9.81 # acceleration due to gravity (m/s²)
# -----------------------------
# Hydrostatic force on deeper side
# -----------------------------
A1 = h1 * width # area of gate submerged
h_c1 = h1 / 2 # depth of centroid
F1 = rho * g * h_c1 * A1 # hydrostatic force
# -----------------------------
# Hydrostatic force on shallower side
# -----------------------------
A2 = h2 * width # area of gate submerged
h_c2 = h2 / 2 # depth of centroid
F2 = rho * g * h_c2 * A2 # hydrostatic force
# -----------------------------
# Net horizontal thrust
# -----------------------------
F_net = F1 - F2
# -----------------------------
# Output results
# -----------------------------
print("=== Dock Gate Hydrostatic Thrust Calculation ===")
print(f"Force from {h1} m side : {F1:,.0f} N ({F1/1e6:.3f} MN)")
print(f"Force from {h2} m side : {F2:,.0f} N ({F2/1e6:.3f} MN)")
print(
f"Resultant horizontal thrust: {F_net:,.0f} N "
f"({F_net/1000:.1f} kN or {F_net/1e6:.3f} MN)"
)Example 4.5 A vertical rectangular bulkhead, 2 meters wide, divides two liquids in a tank. On one side, oil with a density of 850 kg/m³ stands 4 meters deep. On the other side, fresh water with a density of 1000 kg/m³ is 6 meters deep. The bottom of the bulkhead rests on the tank bottom, and both liquids are open to the atmosphere at the top, resulting in zero gauge pressure at the free surfaces. Calculate the magnitude and direction of the net hydrostatic thrust on the bulkhead.
# -----------------------------
# Given data
# -----------------------------
width = 2.0 # m (width of bulkhead)
h_oil = 4.0 # m (oil depth)
h_water = 6.0 # m (water depth)
rho_oil = 850.0 # kg/m³
rho_water = 1000.0 # kg/m³
g = 9.81 # m/s²
# -----------------------------
# Display input parameters
# -----------------------------
print("Bulkhead Separating Oil and Water")
print(f"Bulkhead width : {width} m")
print(f"Oil side : {h_oil} m deep, ρ = {rho_oil} kg/m³")
print(f"Water side : {h_water} m deep, ρ = {rho_water} kg/m³")
print()
# -----------------------------
# Hydrostatic force on oil side
# -----------------------------
A_oil = width * h_oil
h_c_oil = h_oil / 2
F_oil = rho_oil * g * h_c_oil * A_oil
# -----------------------------
# Hydrostatic force on water side
# -----------------------------
A_water = width * h_water
h_c_water = h_water / 2
F_water = rho_water * g * h_c_water * A_water
# -----------------------------
# Net horizontal thrust
# -----------------------------
F_net_N = F_water - F_oil # positive towards oil side
F_net_kN = F_net_N / 1000
# -----------------------------
# Output results
# -----------------------------
print(f"Force from oil side : {F_oil:8.0f} N = {F_oil/1000:6.1f} kN")
print(f"Force from water side : {F_water:8.0f} N = {F_water/1000:6.1f} kN")
print()
print(f"NET THRUST : {F_net_N:8.0f} N = {F_net_kN:6.1f} kN")
print("Direction : Towards the oil side")Example 4.6 Seawater has flooded an oil tanker’s oil tank to a depth of 4 meters, and a 10-meter layer of oil sits atop the seawater. Calculate the pressure at the bottom of the tank. Note: The density of oil is 0.85 g/cm³, the density of seawater is 1.02 t/m³, and the atmospheric pressure is 101.3 kPa.
# -----------------------------
# Given data
# -----------------------------
oil_density_g_per_cm3 = 0.85 # Density of oil in g/cm³
oil_height_m = 10.0 # Height of oil layer in meters
seawater_density_t_per_m3 = 1.02 # Density of seawater in t/m³
seawater_height_m = 4.0 # Height of seawater layer in meters
atmospheric_pressure_kPa = 101.3 # Atmospheric pressure in kPa
g = 9.81 # Acceleration due to gravity (m/s²)
# -----------------------------
# Convert densities to kg/m³
# -----------------------------
oil_density = oil_density_g_per_cm3 * 1000 # g/cm³ → kg/m³
seawater_density = seawater_density_t_per_m3 * 1000 # t/m³ → kg/m³
# -----------------------------
# Hydrostatic pressure calculations
# -----------------------------
pressure_oil_kPa = (oil_density * g * oil_height_m) / 1000
pressure_seawater_kPa = (seawater_density * g * seawater_height_m) / 1000
# Total gauge and absolute pressure
gauge_pressure_kPa = pressure_oil_kPa + pressure_seawater_kPa
absolute_pressure_kPa = atmospheric_pressure_kPa + gauge_pressure_kPa
# -----------------------------
# Output results
# -----------------------------
print(f"Pressure due to oil layer : {pressure_oil_kPa:.4f} kPa")
print(f"Pressure due to seawater layer : {pressure_seawater_kPa:.4f} kPa")
print(f"Total gauge pressure : {gauge_pressure_kPa:.4f} kPa")
print(f"Absolute pressure at the bottom : {absolute_pressure_kPa:.4f} kPa")4.3 Hydraulic Jacks
Hydraulic jacks use Pascal’s law to lift heavy loads with minimal input force. Pascal’s law states that pressure applied to an enclosed fluid is transmitted equally in all directions. In a hydraulic jack, two pistons of different sizes are connected by a confined fluid. Applying an effort force to the smaller piston generates a pressure that is transmitted to the larger piston, producing an output force. Calculations involving hydraulic jacks, such as determining system pressure, required input force, or lifted load, rely on this principle under ideal conditions, neglecting friction and fluid compressibility.
Example 4.7 A force of 150 N is transmitted from a piston of 25 mm² to one of 100 mm². Determine the system pressure and the load carried by the larger piston.
# -----------------------------
# Given parameters
# -----------------------------
area_small_mm2 = 25.0 # mm² (small piston)
area_large_mm2 = 100.0 # mm² (large piston)
force_small = 150.0 # N (force applied to small piston)
# -----------------------------
# Convert areas to SI units (m²)
# -----------------------------
area_small = area_small_mm2 * 1e-6 # 1 mm² = 10^-6 m²
area_large = area_large_mm2 * 1e-6
# -----------------------------
# System pressure and load on large piston
# -----------------------------
pressure = force_small / area_small # Pa
load_large = pressure * area_large # N
# -----------------------------
# Output results
# -----------------------------
print(f"System pressure: {pressure:.2f} Pa " f"(or {pressure / 1e6:.1f} MPa)")
print(f"Load carried by larger piston: {load_large:.1f} N")Example 4.8 A simple hydraulic jack consists of a small effort plunger with a diameter of 25 mm and a large load piston with a diameter of 70 mm. The jack lifts a load of 5.88 kN. Calculate:
The pressure in the hydraulic fluid (system pressure).
The force exerted on the small plunger (load on the small plunger) required to support the given load, assuming ideal conditions (no losses).
import math
# -----------------------------
# Given data
# -----------------------------
diameter_small = 0.025 # m (effort plunger)
diameter_large = 0.070 # m (load piston)
load = 5880.0 # N (equivalent to 5.88 kN)
# -----------------------------
# Calculate radii and cross-sectional areas
# -----------------------------
radius_small = diameter_small / 2
radius_large = diameter_large / 2
area_small = math.pi * (radius_small**2) # m²
area_large = math.pi * (radius_large**2) # m²
# -----------------------------
# System pressure and ideal force on small plunger
# -----------------------------
pressure = load / area_large # Pa
force_small = pressure * area_small # N
# -----------------------------
# Output results
# -----------------------------
print(f"System pressure: {pressure:.2f} Pa " f"(or {pressure / 1e6:.3f} MPa)")
print(f"Ideal force on small plunger: {force_small:.1f} N")