---
title: "Estimate PCB component temperatures by solving a thermal resistance network (thermal↔electrical analogy) with the built-in MNA solver. Each component gets a junction node (package θjb from a typical-datasheet table), a local board node coupled to its neighbours through in-plane FR4/copper conduction, and convection to ambient. Computes per-component junction and case temperatures, board extremes, and flags max-junction violations. Runs instantly in-worker; mesh-level CFD via container backend is planned."
method: POST
path: "/api/pcb_thermal"
tags: ["homelab"]
---

# Estimate PCB component temperatures by solving a thermal resistance network (thermal↔electrical analogy) with the built-in MNA solver. Each component gets a junction node (package θjb from a typical-datasheet table), a local board node coupled to its neighbours through in-plane FR4/copper conduction, and convection to ambient. Computes per-component junction and case temperatures, board extremes, and flags max-junction violations. Runs instantly in-worker; mesh-level CFD via container backend is planned.

`POST /api/pcb_thermal`

## Request

- Base URL: `https://calc.engineer`
- URL: `https://calc.engineer/api/pcb_thermal`
- Auth: none declared

## Request body

- object
  - `board_length_m` number, required: Board length in metres
  - `board_width_m` number, required: Board width in metres
  - `board_thickness_m` number: Board thickness in metres (default 1.6mm FR4)
  - `components` object[], required: Components on the board
    - `x_m` number, required: X position on board in metres
    - `y_m` number, required: Y position on board in metres
    - `footprint` string, required: Package footprint (e.g. QFP-48, BGA-256, SOT-23, TO-220)
    - `tdp_w` number, required: Thermal design power in watts
    - `label` string: Component label (e.g. 'U1', 'CPU')
    - `max_junction_temp_c` number: Maximum junction temperature (°C) for violation checking
  - `airflow_velocity_ms` number: Airflow velocity in m/s (0 = natural convection)
  - `ambient_temp_c` number: Ambient temperature in Celsius
  - `mesh_density` 'coarse' | 'medium' | 'fine': Mesh density

## Response `200`

Computed result for pcb_thermal

- object
  - `result` object, required
    - `max_board_temp_c` number, required: Maximum board surface temperature (°C)
    - `avg_board_temp_c` number, required: Average board temperature (°C)
    - `component_temps` object[], required: Per-component thermal results
      - `label` string, required: Component label
      - `junction_temp_c` number, required: Estimated junction temperature (°C)
      - `case_temp_c` number, required: Case/surface temperature (°C)
      - `violation` boolean, required: True if junction temp exceeds max_junction_temp_c
    - `total_heat_w` number, required: Total heat dissipation (W)
    - `violations` number, required: Number of components exceeding thermal limits
    - `mesh_cells` number, required: Mesh cell count
    - `runtime_ms` number, required: Simulation time in ms
    - `warnings` string[], required: Solver warnings
  - `tool` string, required
  - `version` string, required
  - `computed_at` string, date-time, required
  - `chain` object, required
    - `feeds` unknown[]
      - unknown
    - `accepts_from` unknown[]
      - unknown

## Other responses

- `400`: Validation error or invalid JSON
- `404`: Tool not found

---

[API](https://skmtc.dev/calc/apis/calc-engineer-api.md) · [All operations](https://skmtc.dev/calc/apis/calc-engineer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/calc/apis/calc-engineer-api/revisions/8830480ec488?raw)
