Steady-State Solver#

Once the model is built, a steady-state solve finds the equilibrium temperatures for all diffusive nodes.

Using SSLU#

SSLU is a direct LU-decomposition solver suitable for models of any size. Usage follows the initialize → solve → deinitialize lifecycle:

from pycanha.solvers import SSLU

solver = SSLU(tmm)
solver.initialize()
solver.solve()
solver.deinitialize()

Reading results#

After solving, node temperatures are updated in-place:

T1 = tmm.nodes.get_T(1)
print(f"Node 1: {T1:.2f} K")

You can also access them through the node object:

node1 = tmm.nodes.get_node_from_node_num(1)
print(f"Node 1: {node1.T:.2f} K")

Solver tolerances#

The solver exposes convergence tolerances that can be adjusted before calling initialize():

solver.abstol_temp  = 1e-4   # temperature convergence [K]
solver.abstol_enrgy = 1e-4   # energy balance convergence [W]
solver.MAX_ITERS    = 10     # max iterations per solve step

Re-using the solver#

After initialize() the solver can be called multiple times with solve() — for example inside a parameter sweep — without re-initializing:

solver = SSLU(tmm)
solver.initialize()

for k in [0.5, 1.0, 2.0]:
    tmm.conductive_couplings.set_coupling_value(1, 2, k)
    solver.solve()
    print(f"k={k:.1f}  →  T1 = {tmm.nodes.get_T(1):.2f} K")

solver.deinitialize()