Physics
- class chiller_sim.physics.cop.CopFn(*args, **kwargs)[source]
Bases:
ProtocolProtocol for a callable that computes effective COP given operating conditions.
- __init__(*args, **kwargs)
- chiller_sim.physics.cop.default_cop_fn(alpha, cop_loss_per_year=0.012)[source]
Return the default COP function with thermal and age-based degradation.
- Parameters:
alpha (float) – Sensitivity of COP to condenser inlet temperature rise (K⁻¹).
cop_loss_per_year (float) – Fractional COP loss per year of chiller age. Default 1.2 %/yr reflects typical centrifugal chiller performance decline due to refrigerant leakage, fouling, and mechanical wear (ASHRAE 2021 Handbook, Chapter 38).
- Return type:
- class chiller_sim.physics.degradation.DegradationFn(*args, **kwargs)[source]
Bases:
ProtocolProtocol for a callable that returns a capacity multiplier based on chiller age.
- __init__(*args, **kwargs)
- chiller_sim.physics.degradation.default_capacity_degradation_fn(years_to_80_pct)[source]
Return a capacity degradation function that reaches 80% at years_to_80_pct years.
- Parameters:
years_to_80_pct (float)
- Return type:
- class chiller_sim.physics.ramp.RampFn(*args, **kwargs)[source]
Bases:
ProtocolProtocol for a callable that returns a startup ramp multiplier.
- __init__(*args, **kwargs)
- chiller_sim.physics.ramp.default_ramp_fn(initial_ramp=0.1, startup_time_hours=2.0)[source]
Return a linear ramp function that starts at initial_ramp and reaches 1.0 after startup_time_hours. The multiplier stays at 1.0 beyond that point.
- class chiller_sim.physics.load.LoadFn(*args, **kwargs)[source]
Bases:
ProtocolProtocol for a callable that returns total facility load (kW) at a given time.
- __init__(*args, **kwargs)
- class chiller_sim.physics.ambient_temp.AmbientTempFn(*args, **kwargs)[source]
Bases:
ProtocolProtocol for a callable that returns ambient temperature (K) at a given time.
- __init__(*args, **kwargs)
- class chiller_sim.physics.gaussian_plume.GaussianPlumeModel(dispersion_coeff=1.2, u_min_m_per_s=0.1, heat_rejection_scale=10.0)[source]
Bases:
objectGaussian plume model for chiller thermal interaction.
With σ_y held constant (
dispersion_coeff), the per-pair influence is a simplified constant-σ form of the standard ground-level Gaussian plume:\[\begin{split}I_{k \to m} = \begin{cases} 0 & u < u_{\min} \\ \dfrac{1}{u\,(x + 1)} \exp\!\left(-\dfrac{y^2}{\sigma\,(x + 1)}\right) & x > 0,\ u \ge u_{\min} \\ 0 & \text{otherwise} \end{cases}\end{split}\]where \(x\) is the along-wind distance from chiller k to chiller m, \(y\) is the cross-wind distance, \(u\) is
wind.speed_m_per_s, \(\sigma\) isdispersion_coeff, and \(u_{\min}\) isu_min_m_per_s. The \(1/u\) factor is the physical dilution term from the full Gaussian plume equation.u_min_m_per_sis a hard cutoff, not a floor: when the wind speed falls below it, the interaction matrix is returned as zero at every distance.- Parameters:
dispersion_coeff (float) – Controls lateral plume spread; larger = wider dispersion.
u_min_m_per_s (float) – Minimum wind speed threshold; below this the interaction matrix is zero.
heat_rejection_scale (float) – Converts the dimensionless geometric influence into an effective temperature rise in Kelvin. Physically, this absorbs the heat rejection rate of each chiller, the condenser air-flow rate, and ambient mixing — factors that would otherwise require a full CFD model. A value of 8–15 produces realistic 1–5 K rises for typical data-center chiller arrays (ASHRAE 2021, Ch. 39).