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):
NG chemical exergy, exhaust exergy
STC exergy (via
calc_exergy()protocol)Tank — stored, loss, destruction
Mixing — destruction
System total — NG + STC pump electricity
Classes
|
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
stcconstructor argument and registered via theSubsystemprotocol.- 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):
NG chemical exergy, exhaust exergy
STC exergy via
calc_exergy()protocolWater exergy (tank inlet/outlet, mixing valve)
Heat loss / stored / tank destruction
Exergetic efficiency
- Parameters:
df (pd.DataFrame) – Result DataFrame from
analyze_dynamic().- Returns:
DataFrame with exergy columns appended.
- Return type:
pd.DataFrame