Run thermal analysis
run_thermal_analysisRun a full PCB thermal analysis: via array Rth, junction-to-ambient stack, Kennedy spreading, Coffin-Manson barrel stress, Timoshenko warpage, and resin-flow estimation. Mirrors POST /api/stackups/{id}/thermal-analysis. Call with no arguments once a design exists: the server takes power_w from the designed chain's dissipated power and defaults ambient_c to 25 C. The result carries recommendations (thermal vias, copper, plating) — answer adjustment questions from those entries. If the user states a heatsink or airframe spreader, pass heatsink (θcs, θsa and mount, all three as stated — never guessed); Tj is then computed through it instead of still-air convection.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| heatsink | No | Optional user-STATED heatsink (or drone airframe spreader) the part is mounted to. ALL THREE properties are required together and NONE is ever defaulted — if the user has not stated one, ask; a partial object is rejected naming the missing field. When given it REPLACES still-air convection; the result echoes it with source 'user_supplied' and a heat_path. | |
| delta_t_c | No | Thermal-cycling ΔT in °C for Coffin-Manson fatigue analysis (e.g. 100 °C from −40 to +60 °C operating swing). | |
| via_config | No | Optional thermal via array. ALL SEVEN properties are required together — a partial object is rejected — and plating_thickness_mm must be < via_diameter_mm / 2. | |
| layer_count | No | Total copper layer count (even number, typically 2–32). Used to scale per-layer thermal contributions. | |
| user_request | No | The end user's own words that prompted this call, verbatim. Used to verify that the figures you pass were stated by your user rather than inferred. Omit it and the results will be labelled caller-asserted. | |
| pour_area_mm2 | No | Total copper-pour spreader area in mm² on the heat-sink side; larger pours reduce the spreading-Rth term. | |
| analysis_input | No | Optional once a design exists. {power_w, ambient_c} are BOTH optional: the server fills power_w from the designed chain's dissipated power and defaults ambient_c to 25 C. Omit this entirely to run thermal on the current design. | |
| board_width_mm | No | Overall PCB width in mm (warpage / CTE inputs). | |
| stackup_layers | No | Optional per-layer thermal contributions. | |
| board_length_mm | No | Overall PCB length in mm — used for Timoshenko warpage and CTE-mismatch curvature estimates. | |
| source_area_mm2 | No | Heat source footprint area in mm² — typically the IC die or package pad footprint. Used for Kennedy spreading resistance. | |
| theta_jc_c_per_w | No | Device junction-to-case thermal resistance in °C/W (datasheet R_θJC). Optional — the server derives it from the designed chain's PA record when available. | |
| copper_thickness_mm | No | Plane/pour copper thickness in mm (e.g. 0.035 for 1 oz, 0.070 for 2 oz). Drives the lateral spreading conductance. | |
| effective_cte_z_ppm | No | Effective z-axis CTE in ppm/°C — input to Coffin-Manson barrel-stress life estimation. Typical 40–70 ppm/°C for FR4. | |
| copper_coverage_top_pct | No | Fractional copper coverage on the top side (0–100 %). Used for warpage symmetry and effective-CTE calculations. | |
| copper_coverage_bottom_pct | No | Fractional copper coverage on the bottom side (0–100 %). Asymmetry vs. top drives warpage predictions. |