main
History Download
Colby Knox adom-fields 0.10.6: grid covers the board (issue 27); one board thickness and solid-uncoupled (issue 28); decoupling co… cb236bf

Heat through the parts and the heatsink (solids)

Since 0.8.0 the heat solve does not stop at the board. A spec can add solid bodies, such as a power package's die, tab and moulding, an isolating pad, and a finned heatsink. They are solved in the same steady system as the copper, so the viewer shows where the heat goes: from the die into the tab, across the pad into the sink base, up the fins into the air, and down the leads into the board.

The model

  • Geometry. Each body is a union of axis-aligned boxes in board millimetres: x and y as in KiCad, z up from the top copper face. A body under the board uses z below minus the board thickness. The grid keeps every box edge and subdivides to pitchMm (1 mm by default), so a 0.6 mm pad or a 1.2 mm fin keeps its true thickness.
  • Conduction inside a body uses its conductivityWMk. Between two bodies there must be a declared contacts entry, with area resistance in m²K/W (0 means ideal). Two touching bodies with no contact are refused, and so are overlapping bodies.
  • Air. Every exposed face loses heat through hStillWM2k / hMovingWM2k, in series with half a cell of conduction. This is prescribed convection, not CFD, and there's no radiation.
  • The board. A face lying on the outer copper couples to it through boardContactM2kW: the bottom face of a body on top at z = 0, or the top face of a body under the board at z = minus board.thicknessMm in fields.json (every dielectric and every copper layer). The underside has a tolerance of 0.05 mm, and also accepts the older sum of the dielectrics and the two outer copper layers. A body with boardContactM2kW and no face on the copper, or a body with no heat and no path to the board, raises a solid-uncoupled issue; solids.still gives onCopper per body. boardLinks join a body to one board point with a resistance in K/W, for example a lead to its pad.
  • Heat. heatOf: "Q1" takes the spec's hot.Q1.watts and spreads them over the body's volume. The board then gets none of Q1's heat directly. watts sets a body's own heat instead. Don't use both, and don't use heatOf together with a packageCooling entry for the same part.

Calibrate, don't guess

A finned sink's real h depends on its fin spacing and the airflow, so calibrate it. Solve once, take the sink's mean base rise over its heat to air, and scale h until that matches the vendor's K/W. The R7 electronic-load example below converged in one step: 9.04 K/W against the vendor's 9.0 still, and 5.84 against 5.8 moving. Calibrate the package's junction-to-tab contact to the datasheet's RthJC, and the interface films to their K/W.

Fan levels

fanLevels: [0, 0.25, 0.5, 0.75, 1] solves each level as a full steady state. h on every exposed face (board, bodies, a packageCooling sink) follows Churchill's mixed-convection blend:

h(s) = (h_still³ + (h_forced · sⁿ)³)^⅓,  h_forced chosen so h(1) = h_moving

Here s is the fraction of full fan speed. The exponent n is fanExponent: 0.5 for laminar flow over plates and through fin channels, about 0.8 when turbulent. The fan is assumed to reach every face evenly; there's no duct or shadowing model. Each level writes its own board textures (T-fan50-*, q-fan50-*) and its bodies' cells (solids.json levels). fields.json airStates gives each level's h, chip rises and per-body results.

Example: the R7 electronic load

Q1 (IXTP15N50L2, TO-220, tab up) is pressed through an AlN pad into a 53 × 53 mm base with 20 fins. The model takes the boxes from the assembly GLB. At 5.5 W:

Fan Q1 die Heatsink peak
Off +56.9 °C +48.9 °C
25 % +52.0 °C +44.0 °C
50 % +46.6 °C +38.7 °C
75 % +42.5 °C +34.5 °C
100 % +39.4 °C +31.4 °C

These come from the 0.2 mm board solve; the 1 mm body grid is the same in both runs. Every number depends on the supplied interface, convection and lead resistances, so read them as screening estimates, not qualified ratings.

In the viewer

  • Heat view: each body's cells are coloured by heat flux in W/mm² (log, purple to yellow).
  • Temperature view: colour shows the rise.
  • Range: one colour range covers all the bodies and all fan levels, so the colours compare.
  • Display: the heatsink is see-through so the package under it shows, the bodies move with an exploded stack, and the default iso view frames everything in the scene.