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.
The 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.
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.
The setup
| 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) |
Solving it over MCP
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.
Results
| 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%.
Inside the fin
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.
Takeaways
- Across 10 cases of a 6 mm pin fin, Studio's heat flow matched the fin equation to within 0.3%
- Stainless reaches 95% of its limit at 40 mm and aluminum 97% at 160 mm; beyond that, more length adds very little
- mL ≈ 2 is a good rule of thumb for fin length, and lower-conductivity materials level off at shorter lengths
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.
- Overview and download: https://novasolver.jp/studio/
- Source code: https://github.com/novasolver/novasolver-studio


Top comments (0)