# Thermal

`THERMAL` solves steady-state heat conduction, in 3D under a solid frame, on the r-z half-plane under an axisymmetric frame and on a planar section under a Cartesian 2D frame. See [Conditions and physics](<https://docs.femforge.io/user-guide/conditions/index.md>) for how conditions attach and where they land.

| Frame | Solves as | Solver stack |
| --- | --- | --- |
| [Solid](<https://docs.femforge.io/user-guide/frames/solid/index.md>) | `THERMAL` | HeatSolver, SaveScalarsSolver, ResultOutputSolver |
| [Axisymmetric](<https://docs.femforge.io/user-guide/frames/axisymmetric/index.md>) | `THERMAL` | HeatSolver, SaveScalarsSolver, ResultOutputSolver |
| [Cartesian2D](<https://docs.femforge.io/user-guide/frames/cartesian-2d/index.md>) | `THERMAL` | HeatSolver, SaveScalarsSolver, ResultOutputSolver |

## Boundary conditions

| Condition | Target | Sets | Frames |
| --- | --- | --- | --- |
| [`FixedTemperature`](<https://docs.femforge.io/user-guide/conditions/thermal/#fixedtemperature>) | boundary | `value` \[K\] | [Solid](<https://docs.femforge.io/user-guide/frames/solid/index.md>), [Axisymmetric](<https://docs.femforge.io/user-guide/frames/axisymmetric/index.md>), [Cartesian2D](<https://docs.femforge.io/user-guide/frames/cartesian-2d/index.md>) |
| [`HeatFlux`](<https://docs.femforge.io/user-guide/conditions/thermal/#heatflux>) | boundary | `value` \[W/m²\] | [Solid](<https://docs.femforge.io/user-guide/frames/solid/index.md>), [Axisymmetric](<https://docs.femforge.io/user-guide/frames/axisymmetric/index.md>), [Cartesian2D](<https://docs.femforge.io/user-guide/frames/cartesian-2d/index.md>) |
| [`Convection`](<https://docs.femforge.io/user-guide/conditions/thermal/#convection>) | outer shell | `coefficient` \[W/(m²·K)\], `ext_temperature` \[K\] | [Solid](<https://docs.femforge.io/user-guide/frames/solid/index.md>), [Axisymmetric](<https://docs.femforge.io/user-guide/frames/axisymmetric/index.md>), [Cartesian2D](<https://docs.femforge.io/user-guide/frames/cartesian-2d/index.md>) |

A thermal solve needs at least one boundary condition, or the sif writer warns that the solve is likely ill-posed.

### FixedTemperature

**Physics** `THERMAL` · **Target** boundary · **Section** Boundary Condition · **Kind** `fixed_temperature` · **API** FixedTemperature

A fixed temperature on a boundary.

| Field | Symbol | Unit | Meaning | Sif keyword | Default |
| --- | --- | --- | --- | --- | --- |
| `value` | `T` | K | Fixed temperature imposed on the boundary. | `Temperature` | required |

### HeatFlux

**Physics** `THERMAL` · **Target** boundary · **Section** Boundary Condition · **Kind** `heat_flux` · **API** HeatFlux

A prescribed heat flux through a boundary.

| Field | Symbol | Unit | Meaning | Sif keyword | Default |
| --- | --- | --- | --- | --- | --- |
| `value` | `q_s` | W/m² | Heat flux through the boundary. | `Heat Flux` | required |

### Convection

**Physics** `THERMAL` · **Target** outer shell · **Section** Boundary Condition · **Kind** `convection` · **API** Convection

Newton cooling of an outer surface to an ambient temperature.

| Field | Symbol | Unit | Meaning | Sif keyword | Default |
| --- | --- | --- | --- | --- | --- |
| `coefficient` | `h` | W/(m²·K) | Convective heat-transfer coefficient. | `Heat Transfer Coefficient` | required |
| `ext_temperature` | `T_amb` | K | External (ambient) temperature the boundary exchanges with. | `External Temperature` | required |

## Body forces

| Condition | Target | Sets | Frames |
| --- | --- | --- | --- |
| [`HeatSource`](<https://docs.femforge.io/user-guide/conditions/thermal/#heatsource>) | body | `power_density` \[W/m³\], `temperature_coefficient` \[1/K\], `reference_temperature` \[K\] | [Solid](<https://docs.femforge.io/user-guide/frames/solid/index.md>), [Axisymmetric](<https://docs.femforge.io/user-guide/frames/axisymmetric/index.md>), [Cartesian2D](<https://docs.femforge.io/user-guide/frames/cartesian-2d/index.md>) |

### HeatSource

**Physics** `THERMAL` · **Target** body · **Section** Body Force · **Kind** `heat_source` · **API** HeatSource

A volumetric heat source in a body.

| Field | Symbol | Unit | Meaning | Sif keyword | Default |
| --- | --- | --- | --- | --- | --- |
| `power_density` | `q` | W/m³ | Heat generation density at `reference_temperature` when a coefficient is set, else the constant source. | `Volumetric Heat Source` | required |
| `temperature_coefficient` | `α` | 1/K | Linear coefficient in q(T) = power\_density·(1 + α·(T − reference\_temperature)); None emits the constant. |  | `None` |
| `reference_temperature` | `T_ref` | K | The temperature `power_density` holds at; required with `temperature_coefficient`. |  | `None` |

Writes: The `Volumetric Heat Source` keyword, a MATC expression in temperature when `temperature_coefficient` is set.
