HeatNode#

Module: maddening.nodes.heat Stability: stable Algorithm ID: MADD-NODE-005 Version: 1.0.0

Summary#

1D heat diffusion on a uniform rod with Dirichlet boundary conditions, solved using explicit finite differences [@Crank1975; @LeVeque2007].

Governing Equations#

\[ \frac{\partial T}{\partial t} = \alpha \nabla^2 T + S \]

where \(T\) is temperature, \(\alpha\) is thermal diffusivity, and \(S\) is a volumetric heat source term.

Discretization#

Explicit finite difference on a uniform grid of \(N\) cells spanning a rod of length \(L\):

  • Space: 2nd-order central difference: \(\nabla^2 T_i \approx \frac{T_{i+1} - 2T_i + T_{i-1}}{\Delta x^2}\)

  • Time: Forward Euler (1st-order explicit): \(T_i^{n+1} = T_i^n + \Delta t \cdot [\alpha \frac{T_{i+1}^n - 2T_i^n + T_{i-1}^n}{\Delta x^2} + S_i]\)

  • Boundary conditions: Dirichlet at both ends, enforced by ghost cells and overwriting boundary values

Implementation Mapping#

Equation Term

Implementation

Notes

\(\alpha \nabla^2 T\) (diffusion)

maddening.nodes.heat.HeatNode.update

2nd-order central FD stencil via jnp.concatenate padding + array slicing

\(S\) (source term)

maddening.nodes.heat.HeatNode.update

Added as source * dt after diffusion step

Time integration (\(\partial T / \partial t\))

maddening.nodes.heat.HeatNode.update

Forward Euler: T + coeff * laplacian + source * dt

Left Dirichlet BC

maddening.nodes.heat.HeatNode.update

T_new.at[0].set(T_left) — JAX primitive jax.numpy.ndarray.at[].set()

Right Dirichlet BC

maddening.nodes.heat.HeatNode.update

T_new.at[-1].set(T_right) — JAX primitive jax.numpy.ndarray.at[].set()

Assumptions and Simplifications#

  1. Uniform grid spacing (\(\Delta x = L / N\))

  2. Constant thermal diffusivity (no temperature dependence)

  3. 1D geometry (rod)

  4. Dirichlet boundary conditions at both ends

  5. No convection or radiation terms

Validated Physical Regimes#

Parameter

Verified Range

Notes

thermal_diffusivity

\(10^{-6}\)\(1.0\) m²/s

n_cells

4 – 1000

Convergence verified

CFL number

\(< 0.5\)

\(\Delta t \cdot \alpha / \Delta x^2 < 0.5\) for stability

Known Limitations and Failure Modes#

  1. CFL stability limit: \(\Delta t < \frac{\Delta x^2}{2\alpha}\) — violating this produces silently incorrect results (MADD-ANO-002). Runtime enforcement not yet implemented.

  2. 1st-order in time: temporal accuracy is \(O(\Delta t)\)

  3. No convection: pure diffusion only

  4. No radiation: no radiative heat transfer

Stability Conditions#

\[ \Delta t < \frac{\Delta x^2}{2 \alpha d} \]

where \(d = 1\) is the spatial dimension. For the explicit scheme, the CFL number \(\text{CFL} = \frac{\alpha \Delta t}{\Delta x^2}\) must satisfy \(\text{CFL} < 0.5\).

State Variables#

Field

Shape

Units

Description

temperature

(n_cells,)

K

Nodal temperatures

Parameters#

Parameter

Type

Default

Units

Description

n_cells

int

10

Number of grid cells

length

float

1.0

m

Physical length of the rod

thermal_diffusivity

float

0.01

m²/s

Thermal diffusivity \(\alpha\)

initial_temperature

float

0.0

K

Uniform initial temperature

Boundary Inputs#

Field

Shape

Default

Description

left_temperature

scalar

T[0]

Dirichlet BC at left end

right_temperature

scalar

T[-1]

Dirichlet BC at right end

heat_source

(n_cells,) or scalar

0.0

Volumetric heat source term

References#

  • [@Crank1975] Crank, J. (1975). The Mathematics of Diffusion. Oxford University Press. — Analytical solutions for the heat equation used in verification benchmarks.

  • [@LeVeque2007] LeVeque, R.J. (2007). Finite Difference Methods for Ordinary and Partial Differential Equations. SIAM. — Convergence theory and stability analysis for the explicit FD scheme.

Verification Evidence#

  • Benchmark: MADD-VER-001 — Analytical solution comparison for constant-BC diffusion

  • Test file: tests/verification/test_heat_analytical.py

Changelog#

Version

Date

Change

1.0.0

2025-03-01

Initial implementation