# A longer fin eventually stops helping: checking tanh(mL) saturation with 10 FEM cases

> Source: <https://dev.to/01888927bd0e8aa92caca/a-longer-fin-eventually-stops-helping-checking-tanhml-saturation-with-10-fem-cases-dbf>
> Published: 2026-11-10 00:17:02+00:00

Make a heat sink fin longer and you add surface area, so it sheds more heat. That is only true up to a point. Further along the fin, the metal gets closer to air temperature, and the extra length does almost nothing.

I solved a 6 mm diameter pin fin in NovaSolver Studio's heat conduction solver, in aluminum and stainless steel, at lengths from 10 to 160 mm, and compared all 10 cases with the fin equation.

Hold the base of a thin rod at temperature T_b and let it lose heat to surrounding air (temperature T_∞, heat transfer coefficient h). The temperature along the rod approaches air temperature exponentially, at a rate set by

where P is the perimeter, A the cross-sectional area and k the thermal conductivity. With heat also leaving the tip, the heat entering at the base is

As L grows, the fraction approaches 1 and Q levels off at √(hPkA)·θ_b. If you ignore the tip, the fraction is tanh(mL), which is 96% of the limit at mL = 2.

``` python
import math

h, D, Tb, Tinf = 50.0, 0.006, 60.0, 25.0     # W/m2K, m, degC, degC
P, A, th = math.pi * D, math.pi * D**2 / 4, Tb - Tinf

for name, k in (("Aluminum", 200.0), ("Stainless", 16.0)):
    m = math.sqrt(h * P / (k * A))
    M = math.sqrt(h * P * k * A) * th            # heat flow of an infinitely long fin
    g = h / (m * k)
    print(f"{name}: m = {m:.1f} 1/m, limit {M:.3f} W")
    for L in (0.01, 0.02, 0.04, 0.08, 0.16):
        q = M * (math.sinh(m*L) + g*math.cosh(m*L)) / (math.cosh(m*L) + g*math.sinh(m*L))
        print(f"  L = {L*1000:3.0f} mm  mL = {m*L:4.2f}  Q = {q:.4f} W ({q/M:4.0%})")
# Aluminum: m = 12.9 1/m, limit 2.555 W
#   L =  10 mm  mL = 0.13  Q = 0.3766 W ( 15%)
#   L =  20 mm  mL = 0.26  Q = 0.6916 W ( 27%)
#   L =  40 mm  mL = 0.52  Q = 1.2514 W ( 49%)
#   L =  80 mm  mL = 1.03  Q = 1.9998 W ( 78%)
#   L = 160 mm  mL = 2.07  Q = 2.4774 W ( 97%)
# Stainless: m = 45.6 1/m, limit 0.723 W
#   L =  10 mm  mL = 0.46  Q = 0.3480 W ( 48%)
#   L =  20 mm  mL = 0.91  Q = 0.5447 W ( 75%)
#   L =  40 mm  mL = 1.83  Q = 0.6907 W ( 96%)
#   L =  80 mm  mL = 3.65  Q = 0.7219 W (100%)
#   L = 160 mm  mL = 7.30  Q = 0.7227 W (100%)
```

This is a 1D model that ignores temperature differences across the section. The radial Biot number hr/k is 0.00075 for aluminum and 0.0094 for stainless, small enough for that assumption to hold.

| Item | Value | 
|---|---|
| Shape | Cylinder, 6 mm diameter, length 10 / 20 / 40 / 80 / 160 mm | 
| Material | Aluminum (k = 200 W/mK), stainless (k = 16 W/mK) | 
| Base face | Fixed at 60 °C | 
| Side and tip | Air at 25 °C, h = 50 W/m²K (roughly fan-driven air) | 

The setup and solve went through Studio's MCP tools, which an AI client can call. Here is an excerpt from the 80 mm aluminum case, with Studio's replies after each arrow. These runs used a local development build after v0.7.6 (2026-11-08).

```
import_geometry  fin80.step (thermal)
→ Imported fin80.step as c_20261108_194155_bdcb (rev 1): 3 faces, ...
  f1 [insulated] Cylinder, area 1507.96 mm2, centroid [0.0, 0.0, 40.0] mm
  f2 [insulated] Plane normal [0.0, 0.0, 1.0], area 28.27 mm2, centroid [-0.0, -0.0, 80.0] mm
  f3 [insulated] Plane normal [0.0, 0.0, -1.0], area 28.27 mm2, centroid [-0.0, -0.0, 0.0] mm

update_case  f3 = 60 degC / f1, f2 = convection 50 W/m2K, 25 degC / k = 200 W/mK / mesh.refine.f1 = 0.75 mm
validate_case
→ GREEN
  f1 (Face 1): convection h 50 W/m²K to 25 °C.
  f2 (Face 2): convection h 50 W/m²K to 25 °C.
  f3 (Face 3): 60 °C.
  Material: Custom, conductivity 200 W/mK.

check_convergence  (re-solves on coarse, normal and fine meshes)

get_results
→ ran=yes / converged=yes / mesh convergence (GCI) passed
  Max temperature: 60.0 °C
  Min temperature: 46.8 °C
  Heat flow in: 1.998 W

verify_case
→ Mesh convergence (temperature rise, GCI): finest mesh 13.204 K, Richardson extrapolation 13.213 K, GCI 0.08% (tolerance 5.0%) -> PASS
```

The base (the face at z = 0), the tip and the side were picked out from the face orientations and positions.

`mesh.refine.f1` sets the mesh size on the side face. My first run left it out, and on fins of 40 mm and longer at least one adjacent pair of mesh levels did not refine enough for the study, so Studio warned that it could not judge how reliable the answer was. I re-solved all 10 cases with the side at 0.75 mm, and every case then passed the mesh convergence check, which looks at the temperature difference inside the fin.

| Material | Length | mL | Studio | Fin equation | Diff. | 
|---|---|---|---|---|---|
| Aluminum | 10 mm | 0.13 | 0.3762 W | 0.3766 W | −0.12% | 
| Aluminum | 20 mm | 0.26 | 0.6908 W | 0.6916 W | −0.11% | 
| Aluminum | 40 mm | 0.52 | 1.250 W | 1.251 W | −0.09% | 
| Aluminum | 80 mm | 1.03 | 1.998 W | 2.000 W | −0.07% | 
| Aluminum | 160 mm | 2.07 | 2.476 W | 2.477 W | −0.05% | 
| Stainless | 10 mm | 0.46 | 0.3471 W | 0.3480 W | −0.27% | 
| Stainless | 20 mm | 0.91 | 0.5434 W | 0.5447 W | −0.24% | 
| Stainless | 40 mm | 1.83 | 0.6895 W | 0.6907 W | −0.18% | 
| Stainless | 80 mm | 3.65 | 0.7208 W | 0.7219 W | −0.15% | 
| Stainless | 160 mm | 7.30 | 0.7216 W | 0.7227 W | −0.15% | 

In all 10 cases, the heat entering at the base matched the equation to within 0.3%.

Stainless reaches 95% of its limit at 40 mm. Stretching it four times longer, to 160 mm, only raises the heat flow from 0.6895 W to 0.7216 W, a 5% gain. Aluminum is at 97% of its limit at 160 mm, and going from 80 mm to 160 mm adds 24%.

This is the temperature along the axis of the 80 mm fin. Stainless is at 30.8 °C just 40 mm from the base, where its excess over air has shrunk to about one sixth of the base value. Further out, that excess keeps shrinking and so does the heat lost per unit length. Aluminum is still at 46.8 °C at the tip, so the whole fin is working.

How long a fin is worth making comes down roughly to mL. Past mL = 2, added length costs material and weight while adding little heat flow. Under these conditions, that is about 155 mm for aluminum and about 44 mm for stainless.

NovaSolver Studio is free and open source (GPL-3.0). It solves structural, thermal and flow problems in one app and can be driven from MCP clients such as Claude Desktop.
