enex_analysis.solar_assisted_gas_boiler

Solar-assisted gas boiler — dynamic hot-water tank model.

System chain (with tank):

STC → Combustion Chamber → Hot Water Tank → Mixing Valve → Service

The solar thermal collector (STC) is injected as a Subsystem (from subsystems.py). The combustion chamber supplements/replaces solar heat as needed. The STC’s mode (tank_circuit / mains_preheat) determines whether it operates on the tank loop or the mains water supply.

Exergy topology (5 components):
  1. NG chemical exergy, exhaust exergy

  2. STC exergy (via calc_exergy() protocol)

  3. Tank — stored, loss, destruction

  4. Mixing — destruction

  5. System total — NG + STC pump electricity

Classes

SolarAssistedGasBoiler([eta_comb, T_exh, ...])

Gas boiler with solar thermal collector assist.

class enex_analysis.solar_assisted_gas_boiler.SolarAssistedGasBoiler(eta_comb=0.9, T_exh=70.0, burner_capacity=15000.0, r0=0.2, H=0.8, x_shell=0.01, x_ins=0.1, k_shell=25, k_ins=0.03, h_o=15, T_tank_w_upper_bound=65.0, T_tank_w_lower_bound=60.0, T_mix_w_out=45.0, T_sup_w=10.0, dV_mix_w_out_max=0.001, tank_always_full=True, tank_level_lower_bound=0.5, tank_level_upper_bound=1.0, dV_tank_w_in_refill=0.001, prevent_simultaneous_flow=False, on_schedule=None, stc=None, uv=None, stc_mode='tank_circuit', preheat_schedule=None, I_DN_schedule=None, I_dH_schedule=None)[source]

Gas boiler with solar thermal collector assist.

The STC is passed as the stc constructor argument and registered via the Subsystem protocol.

Parameters:
  • eta_comb (float)

  • T_exh (float)

  • burner_capacity (float)

  • r0 (float)

  • H (float)

  • x_shell (float)

  • x_ins (float)

  • k_shell (float)

  • k_ins (float)

  • h_o (float)

  • T_tank_w_upper_bound (float)

  • T_tank_w_lower_bound (float)

  • T_mix_w_out (float)

  • T_sup_w (float)

  • dV_mix_w_out_max (float)

  • tank_always_full (bool)

  • tank_level_lower_bound (float)

  • tank_level_upper_bound (float)

  • dV_tank_w_in_refill (float)

  • prevent_simultaneous_flow (bool)

  • on_schedule (list[tuple[float, float]] | None)

  • stc_mode (str)

  • preheat_schedule (list[tuple[float, float]] | None)

__init__(eta_comb=0.9, T_exh=70.0, burner_capacity=15000.0, r0=0.2, H=0.8, x_shell=0.01, x_ins=0.1, k_shell=25, k_ins=0.03, h_o=15, T_tank_w_upper_bound=65.0, T_tank_w_lower_bound=60.0, T_mix_w_out=45.0, T_sup_w=10.0, dV_mix_w_out_max=0.001, tank_always_full=True, tank_level_lower_bound=0.5, tank_level_upper_bound=1.0, dV_tank_w_in_refill=0.001, prevent_simultaneous_flow=False, on_schedule=None, stc=None, uv=None, stc_mode='tank_circuit', preheat_schedule=None, I_DN_schedule=None, I_dH_schedule=None)[source]
Parameters:
  • eta_comb (float)

  • T_exh (float)

  • burner_capacity (float)

  • r0 (float)

  • H (float)

  • x_shell (float)

  • x_ins (float)

  • k_shell (float)

  • k_ins (float)

  • h_o (float)

  • T_tank_w_upper_bound (float)

  • T_tank_w_lower_bound (float)

  • T_mix_w_out (float)

  • T_sup_w (float)

  • dV_mix_w_out_max (float)

  • tank_always_full (bool)

  • tank_level_lower_bound (float)

  • tank_level_upper_bound (float)

  • dV_tank_w_in_refill (float)

  • prevent_simultaneous_flow (bool)

  • on_schedule (list[tuple[float, float]] | None)

  • stc_mode (str)

  • preheat_schedule (list[tuple[float, float]] | None)

analyze_dynamic(simulation_period_sec, dt_s, T_tank_w_init_C, dhw_usage_schedule, T0_schedule, I_DN_schedule=None, I_dH_schedule=None, tank_level_init=1.0, result_save_csv_path=None)[source]

Run dynamic simulation with STC + gas boiler.

Parameters:
  • simulation_period_sec (int) – Total simulation duration [s].

  • dt_s (int) – Time step size [s].

  • T_tank_w_init_C (float) – Initial tank temperature [°C].

  • dhw_usage_schedule (array-like) – DHW usage schedule.

  • T0_schedule (array-like) – Outdoor temperature per step [°C].

  • I_DN_schedule (array-like, optional) – Direct-normal irradiance per step [W/m²].

  • I_dH_schedule (array-like, optional) – Diffuse-horizontal irradiance [W/m²].

  • tank_level_init (float) – Initial tank level (0–1).

  • result_save_csv_path (str | None) – Optional CSV output path.

Return type:

pd.DataFrame

postprocess_exergy(df)[source]

Compute solar-gas-boiler exergy variables.

Exergy topology (5 components):

  1. NG chemical exergy, exhaust exergy

  2. STC exergy via calc_exergy() protocol

  3. Water exergy (tank inlet/outlet, mixing valve)

  4. Heat loss / stored / tank destruction

  5. Exergetic efficiency

Parameters:

df (pd.DataFrame) – Result DataFrame from analyze_dynamic().

Returns:

DataFrame with exergy columns appended.

Return type:

pd.DataFrame