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/FV | Dense companion EMTP networks → Grid |
| Parabolic heat/diffusion MOL is the core workload | LTI control plant → Control |
| You pair with Journey 05 banded/DAE patterns | Nonlinear reaction–diffusion IVP → SolvSRK |
Typical production integration
- Operator: build banded
Afrom mesh stencil;kl=ku=1for standard 1-D heat. - API:
ab = banded_from_dense(A, kl, ku)thensolve_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).
| Field | Value | Notes |
|---|---|---|
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.
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.pyWhat comes next
SolvLRDE-Specialty for CTMC/reliability models.
Navigation
← Journey 10 — SolvLRDE-Climate · Journey 12 — SolvLRDE-Specialty →