enex_analysis.ground_source_heat_pump_boiler¶
Integrated System Model: Ground Source Heat Pump Boiler (GSHPB).
This system class orchestrates the dynamic interaction between distinct thermodynamic sub-components to simulate the overall heating performance. While implemented as an integrated model, its physical calculations represent the behavior of:
Refrigerant Cycle (Vapor-Compression): Evaluates thermodynamic states using CoolProp, enforcing superheat/subcool margins.
Heat Pump Compressor: Models the compression process using isentropic and volumetric efficiencies to compute the actual discharge enthalpy and mass flow rate. The compressor power is determined from the enthalpy difference and the mass flow rate.
Expansion Valve: Modeled as an isenthalpic expansion device (constant enthalpy) that throttles the refrigerant from the condensing pressure down to the evaporating pressure.
Heat Exchangers (Condenser & Evaporator):
Condenser: Placed inside the hot-water tank (hydronic), utilizing a static overall heat transfer coefficient (UA_cond_design).
Evaporator: Coupled to a borehole heat exchanger (BHE) fluid loop, acting as a secondary heat exchanger to absorb heat from the circulating ground fluid.
Thermal Storage Tank: Modeled with lumped-capacitance and DHW mixing logic.
Ground Source Heat Exchanger (Borefield): A dynamic multi-borehole simulation using pygfunction-based g-functions. It tracks the transient thermal response of the ground, enabling robust modeling of long-term ground temperature drift due to continuous heat extraction.
At each time step the model finds the minimum-power operating point via 1D Brent optimization over the evaporator approach temperature difference, while the condenser temperature is solved analytically.
Note
이 통합 시스템의 작동 원리와 개별 서브 컴포넌트 모델링에 대한 상세 이론적 배경은 Ground Source Heat Pump Boiler (GSHPB) 및 Subsystem Components 를 참조하세요.
Classes
|
Ground source heat pump boiler with BHE and lumped-tank model. |
- class enex_analysis.ground_source_heat_pump_boiler.GroundSourceHeatPumpBoiler(refrigerant='R410A', V_disp_cmp=0.0005, eta_cmp_isen=None, eta_cmp_vol=None, eta_cmp_mech=0.855, UA_cond_design=500, UA_evap_design=500, T0=0.0, Ts=16.0, T_tank_w_upper_bound=65.0, T_tank_w_lower_bound=55.0, T_mix_w_out=40.0, T_tank_w_in=15.0, hp_capacity=8000.0, dV_mix_w_out_max=0.0001, r0=0.2, H=0.8, x_shell=0.01, x_ins=0.05, k_shell=25, k_ins=0.03, h_o=15, N_1=1, N_2=1, B=6.0, D_b=0, H_b=200, r_b=0.08, R_b=None, k_g=1.5, k_p=0.4, r_out=0.016, r_in=0.013, D_s=0.025, dV_b_f_lpm=24, k_s=2.0, c_s=800, rho_s=2000, E_pmp=200, dT_superheat=3.0, dT_subcool=3.0, tank_always_full=True, prevent_simultaneous_flow=False, tank_level_lower_bound=0.5, tank_level_upper_bound=1.0, dV_tank_w_in_refill=0.001, hp_on_schedule=None, stc=None, pv=None, uv=None, t_max_s=31536000, dt_s=3600, boundary_condition='uniform_temperature')[source]¶
Ground source heat pump boiler with BHE and lumped-tank model.
The refrigerant cycle is resolved via CoolProp with user-specified superheat / subcool margins. An optimizer minimises total cycle electrical input subject to NTU-based evaporator constraints and analytical condenser temperature relations.
- Parameters:
refrigerant (
str)V_disp_cmp (
float)eta_cmp_isen (
Union[float,Callable,None])eta_cmp_vol (
Union[float,Callable,None])eta_cmp_mech (
Union[float,Callable])UA_cond_design (
float)UA_evap_design (
float)T0 (
float)Ts (
float)T_tank_w_upper_bound (
float)T_tank_w_lower_bound (
float)T_mix_w_out (
float)T_tank_w_in (
float)hp_capacity (
float)dV_mix_w_out_max (
float)r0 (
float)H (
float)x_shell (
float)x_ins (
float)k_shell (
float)k_ins (
float)h_o (
float)N_1 (
int)N_2 (
int)B (
float)D_b (
float)H_b (
float)r_b (
float)R_b (
float|None)k_g (
float)k_p (
float)r_out (
float)r_in (
float)D_s (
float)dV_b_f_lpm (
float)k_s (
float)c_s (
float)rho_s (
float)E_pmp (
float)dT_superheat (
float)dT_subcool (
float)tank_always_full (
bool)prevent_simultaneous_flow (
bool)tank_level_lower_bound (
float)tank_level_upper_bound (
float)dV_tank_w_in_refill (
float)hp_on_schedule (
list[tuple[float,float]] |None)stc (
SolarThermalCollector|None)t_max_s (
float)dt_s (
float)boundary_condition (
str)
- __init__(refrigerant='R410A', V_disp_cmp=0.0005, eta_cmp_isen=None, eta_cmp_vol=None, eta_cmp_mech=0.855, UA_cond_design=500, UA_evap_design=500, T0=0.0, Ts=16.0, T_tank_w_upper_bound=65.0, T_tank_w_lower_bound=55.0, T_mix_w_out=40.0, T_tank_w_in=15.0, hp_capacity=8000.0, dV_mix_w_out_max=0.0001, r0=0.2, H=0.8, x_shell=0.01, x_ins=0.05, k_shell=25, k_ins=0.03, h_o=15, N_1=1, N_2=1, B=6.0, D_b=0, H_b=200, r_b=0.08, R_b=None, k_g=1.5, k_p=0.4, r_out=0.016, r_in=0.013, D_s=0.025, dV_b_f_lpm=24, k_s=2.0, c_s=800, rho_s=2000, E_pmp=200, dT_superheat=3.0, dT_subcool=3.0, tank_always_full=True, prevent_simultaneous_flow=False, tank_level_lower_bound=0.5, tank_level_upper_bound=1.0, dV_tank_w_in_refill=0.001, hp_on_schedule=None, stc=None, pv=None, uv=None, t_max_s=31536000, dt_s=3600, boundary_condition='uniform_temperature')[source]¶
- Parameters:
refrigerant (
str)V_disp_cmp (
float)eta_cmp_isen (
Union[float,Callable,None])eta_cmp_vol (
Union[float,Callable,None])eta_cmp_mech (
Union[float,Callable])UA_cond_design (
float)UA_evap_design (
float)T0 (
float)Ts (
float)T_tank_w_upper_bound (
float)T_tank_w_lower_bound (
float)T_mix_w_out (
float)T_tank_w_in (
float)hp_capacity (
float)dV_mix_w_out_max (
float)r0 (
float)H (
float)x_shell (
float)x_ins (
float)k_shell (
float)k_ins (
float)h_o (
float)N_1 (
int)N_2 (
int)B (
float)D_b (
float)H_b (
float)r_b (
float)R_b (
float|None)k_g (
float)k_p (
float)r_out (
float)r_in (
float)D_s (
float)dV_b_f_lpm (
float)k_s (
float)c_s (
float)rho_s (
float)E_pmp (
float)dT_superheat (
float)dT_subcool (
float)tank_always_full (
bool)prevent_simultaneous_flow (
bool)tank_level_lower_bound (
float)tank_level_upper_bound (
float)dV_tank_w_in_refill (
float)hp_on_schedule (
list[tuple[float,float]] |None)stc (
SolarThermalCollector|None)t_max_s (
float)dt_s (
float)boundary_condition (
str)
- 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, T_sup_w_schedule=None, tank_level_init=1.0, result_save_csv_path=None)[source]¶
- Parameters:
simulation_period_sec (
float)dt_s (
float)T_tank_w_init_C (
float)tank_level_init (
float)
- Return type:
DataFrame
- analyze_steady(T_tank_w, T_source, Q_ref_cond, T0=0.0, *, return_dict=True)[source]¶
Run a steady-state performance snapshot.
Evaluates the refrigerant cycle at a given operating point (
T_tank_w,T_source,Q_ref_cond) without solving the tank energy balance or tracking dynamic flows.- Parameters:
T_tank_w (float) – Tank water temperature [°C] — treated as a given input.
T_source (float) – Source fluid temperature entering the heat pump [°C].
Q_ref_cond (float) – Target condenser heat rate [W].
T0 (float) – Dead-state / outdoor-air temperature [°C] (for exergy calculations).
return_dict (bool) – If
Truereturn dict; else single-row DataFrame.
- Return type:
dict | pd.DataFrame