thermal_cable_model.solver — Transient Solver

Transient thermal solver using implicit Euler time integration.

Solves the ODE system C · dθ/dt + G · θ = P(t) arising from the lumped-parameter thermal network, with temperature-dependent conductor resistance updated at each time step.

class TransientResult[source]

Bases: object

Container for time-domain simulation results.

times: ndarray
conductor_temps: ndarray
insulation_temps: ndarray
sheath_temps: ndarray
armour_temps: ndarray
surface_temps: ndarray
soil_temps: ndarray
currents: ndarray
ambient_temps: ndarray
full_state: ndarray | None = None
cable_names: list[str]
property n_steps: int
property n_cables: int
max_conductor_temp(cable_index=0)[source]
Parameters:

cable_index (int)

Return type:

float

max_insulation_temp(cable_index=0)[source]
Parameters:

cable_index (int)

Return type:

float

max_sheath_temp(cable_index=0)[source]
Parameters:

cable_index (int)

Return type:

float

max_armour_temp(cable_index=0)[source]
Parameters:

cable_index (int)

Return type:

float

__init__(times, conductor_temps, insulation_temps, sheath_temps, armour_temps, surface_temps, soil_temps, currents, ambient_temps, full_state=None, cable_names=<factory>)
Parameters:
Return type:

None

class TransientSolver[source]

Bases: object

Implicit-Euler solver for the cable thermal network.

Parameters:
__init__(network, load_profiles, ground_model)[source]
Parameters:
solve(dt, duration, initial_state=None, store_full_state=False, nonlinear_iterations=3)[source]

Run transient simulation.

Parameters:
  • dt (float) – Time step [s].

  • duration (float) – Total simulation time [s].

  • initial_state (ndarray, optional) – Starting temperatures. Defaults to steady-state at t = 0.

  • store_full_state (bool) – If True, store the entire state vector at each step.

  • nonlinear_iterations (int) – Number of Picard iterations per step for the resistance non-linearity.

Return type:

TransientResult