Product documentation — installation, licensing, and integration guides.
SolvLRDE
Examples
11 SolvLRDE-Thermal

Journey 11 — SolvLRDE-Thermal

License token: thermal · Product name: SolvLRDE-Thermal (resonix-thermal)

See also: Vertical SKUs overview · Licensing

What this SKU is for

SolvLRDE-Thermal is the licensed vertical for thermal, heat-transfer, and process engineers who use method-of-lines (MOL) discretizations of parabolic PDEs — heat conduction through solids, fin arrays, reduced thermal networks, and diffusion-dominated transients where you need u(T) at the far end of a simulation window, not every intermediate timestep.

The engineering problem

Semi-discretize the heat equation in space: u_t = L u where L is the spatial Laplacian or conductance network. On a 1-D rod with second-order finite differences, the semidiscrete operator is tridiagonal (bandwidth 1). State vector u holds nodal temperatures. You want u(T) after T seconds of diffusion — fine mesh refinement makes the system stiff in time, which explodes explicit step counts if you march forward.

Why Thermal exists (and why LRDE fits)

Thermal workloads are structurally banded MOL — the right API is solve_banded, not dense solve. SolvLRDE propagates the banded operator directly (LAPACK layout via banded_from_dense). Cost tracks contour nodes and bandwidth, not physical time T. Nonlinear material laws (temperature-dependent conductivity) stay in an outer Picard/Newton loop; LRDE is the inner linear propagate for each frozen conductivity field.

Who should buy Thermal (not another SKU)

Choose Thermal when…Choose something else when…
Semidiscrete operator is banded/tridiagonal from FD/FVDense companion EMTP networks → Grid
Parabolic heat/diffusion MOL is the core workloadLTI control plant → Control
You pair with Journey 05 banded/DAE patternsNonlinear reaction–diffusion IVP → SolvSRK

Typical production integration

  • Operator: build banded A from mesh stencil; kl=ku=1 for standard 1-D heat.
  • API: ab = banded_from_dense(A, kl, ku) then solve_banded(ab, kl, ku, y0, T).
  • Nonlinear materials: outer loop updates A; inner loop calls LRDE per linearized step.
  • License gate: solvlrde.license_has_sku("thermal") in thermal solver modules.

This walkthrough

Prerequisites: Core journeys 01–06; journey 05 recommended.

Scenario: Discretize u_t = u_xx on a rod with second differences. The semidiscrete operator is tridiagonal — ideal for solve_banded.

Key APIs

  • solvlrde.solve_banded()
  • solvlrde.banded_from_dense()

Concepts to internalize

  • SolvLRDE-Thermal — resonix-thermal SKU.
  • Tridiagonal MOL — standard thermal/discretized diffusion pattern.
  • Nonlinear materials — outer Picard; LRDE is inner linear step.

Important code

The guided tour script wraps this pattern. Copy the production shape into your pipeline:

ab = lrde.banded_from_dense(A, kl=1, ku=1)
result = lrde.solve_banded(ab, 1, 1, y0, T=t_heat)

Act-by-act walkthrough

Act 1 — Thermal / heat-transfer MOL

Discretize u_t = u_xx on a rod with second differences. The semidiscrete operator is tridiagonal — ideal for solve_banded.

Act 2 — Banded path

banded_from_dense builds the LAPACK layout; solve_banded avoids O(n^2) storage. Exact solution: exp(-pi^2 T) sin(pi x).

FieldValueNotes
band_shape(3, 40)
max_err_vs_exact4.371e-05
survivedTrue
statusok
y[0.0693584, 0.13831, 0.206449, 0.273378, 0.338701, 0.402038, 0.463015, 0.521274, 0.576475, 0.628293, 0.676423, 0.720584, 0.760517, 0.795986, 0.826785, 0.852731, 0.873673, 0.889488, 0.900084, 0.905397, 0.905397, 0.900084, 0.889488, 0.873673, 0.852731, 0.826785, 0.795986, 0.760517, 0.720584, 0.676423, 0.628293, 0.576475, 0.521274, 0.463015, 0.402038, 0.338701, 0.273378, 0.206449, 0.13831, 0.0693584]
n_talbot_used32
n_solves32
nu_used0.6
contour_scale1280
wall_s0.001

Act 3 — Production thermal workflows

Hold the banded operator from your mesh, call solve_banded per target time or switching segment. Nonlinear material laws require outer Picard/Newton — LRDE is the inner linear propagate.

Guided tour output

Verified console capture from sku_thermal.py:

-- Act 1 - Thermal / heat-transfer MOL --
  -> Discretize u_t = u_xx on a rod with second differences. The semidiscrete operator is tridiagonal — ideal for solve_banded.

-- Act 2 - Banded path --
  -> banded_from_dense builds the LAPACK layout; solve_banded avoids O(n^2) storage. Exact solution: exp(-pi^2 T) sin(pi x).
  band_shape: (3, 40)
  max_err_vs_exact: 4.371e-05
  survived: True
  status: ok
  y: [0.0693584, 0.13831, 0.206449, 0.273378, 0.338701, 0.402038, 0.463015, 0.521274, 0.576475, 0.628293, 0.676423, 0.720584, 0.760517, 0.795986, 0.826785, 0.852731, 0.873673, 0.889488, 0.900084, 0.905397, 0.905397, 0.900084, 0.889488, 0.873673, 0.852731, 0.826785, 0.795986, 0.760517, 0.720584, 0.676423, 0.628293, 0.576475, 0.521274, 0.463015, 0.402038, 0.338701, 0.273378, 0.206449, 0.13831, 0.0693584]
  n_talbot_used: 32
  n_solves: 32
  nu_used: 0.6
  contour_scale: 1280
  wall_s: 0.001

-- Act 3 - Production thermal workflows --
  -> Hold the banded operator from your mesh, call solve_banded per target time or switching segment. Nonlinear material laws require outer Picard/Newton — LRDE is the inner linear propagate.

-- Run complete --
  next_journey: sku_specialty.py (Specialty SKU)

Run it

cd python
# Guided tour — narrated scenario walkthrough (recommended first run):
python examples/skus/sku_thermal.py
 
# Production one-liner — same API call you ship:
python examples/skus/sku_thermal.py

What comes next

SolvLRDE-Specialty for CTMC/reliability models.

Navigation

← Journey 10 — SolvLRDE-Climate · Journey 12 — SolvLRDE-Specialty →