nx_ac_enthalpy_metrics.nx
buildroot/runtime/nx_ac_enthalpy_metrics.nx
about
nx_ac_enthalpy_metrics.nx -- the AC PERFORMANCE crown, built on the
psychrometric floor. This is the R4 rung the HVAC-efficiency workstream
flagged as "the crown number, NOT built": independent delivered-capacity,
COP/EER, and efficiency-drift measured from out-of-band sensors -- the
data-center air-side method (delivered capacity = airflow * enthalpy drop),
which SOTA DCIM (Vertiv/Schneider/Sunbird) uses per cooling unit.
Everything here is a physics quantity a vendor thermostat cannot fake and
does not report. Paired with nx_hvac_efficiency (fault verdict) and the
reading-level liar-killer (nx_ac_sensor_verify), it is the measurement core
of the "Flume for AC" product.
KEY LIAR-KILL SURFACE (why this organ is trustworthy, not just a calculator):
- delivered cooling with h_return <= h_supply returns NEGATIVE (loud):
the air is not being cooled -- never a fabricated positive capacity.
- COP with electrical power <= 0 returns INFEASIBLE (loud), never inf.
- the CARNOT COP ceiling Tc/(Th-Tc) is a HARD physical bound: any measured
or claimed COP above it is thermodynamically impossible -> the downstream
liar-killer rejects the reading. carnot with T_cold >= T_hot is INFEASIBLE.
- superheat / subcooling / evaporator-split are returned VERBATIM incl.
negatives, so a flooded coil or a swapped/failed sensor shows as an
impossible value the liar-killer flags -- not silently clamped.
NO-FLOAT integer fixed-point (ecosystem doctrine):
temperature = milli-degC (mC) airflow = CFM power = W
air density = g/m^3 (1200 = 1.2 kg/m^3; data-driven for altitude/temp)
enthalpy = J/kg dry air cooling = W
COP = x100 (centi-COP) EER = x100
Carnot COP = x100 drift = permille (positive = degraded)
abs temp = centi-Kelvin (cK): cK = mC/10 + 27315 (0 degC = 273.15 K)
NEVER-BRICK #26: pure computation, read-only, no device/firmware write.
genealogy_id: project-hvac-efficiency-sclass-2026-06-23 (R4 COP/EER crown)
+ project-nishi-sensor-gap-census-2026-07-14 (axis-4 external-comp)
license_tier: ORIGINAL
nx_capability_claims:
needs: [nx_psychrometrics]
provides: [delivered_cooling_capacity, cop_measure, eer_measure,
dependencies 1 imports · 3 importers
imports: nx_psychrometrics.nx
imported by: nx_ac_enthalpy_metrics_test.nxnx_ac_monitor_census.nxnx_ac_sensor_verify.nx
structs
| none |
consts
| 52 | const NX_MAGIC_47195: i64 = 47195 |
| 53 | const NX_MAGIC_100000000000: i64 = 100000000000 |
| 54 | const NX_MAGIC_3412: i64 = 3412 |
| 55 | const NX_MAGIC_27315: i64 = 27315 |
| 57 | const NX_ACM_INFEASIBLE: i64 = -2000000000 |
functions
| 64 | func nx_ac_delivered_cooling_w(cfm: i64, dh_j: i64, rho_gm3: i64) -> i64 |
| 72 | func nx_ac_cop_x100(q_cool_w: i64, p_elec_w: i64) -> i64 |
| 78 | func nx_ac_eer_x100(cop_x100: i64) -> i64 |
| 83 | func nx_ac_temp_cK(t_mC: i64) -> i64 |
| 90 | func nx_ac_carnot_cop_x100(t_cold_mC: i64, t_hot_mC: i64) -> i64 |
| 101 | func nx_ac_superheat_mC(t_suction_mC: i64, t_sat_evap_mC: i64) -> i64 |
| 107 | func nx_ac_subcool_mC(t_sat_cond_mC: i64, t_liquid_mC: i64) -> i64 |
| 113 | func nx_ac_evap_split_mC(t_return_air_mC: i64, t_supply_air_mC: i64) -> i64 |
| 120 | func nx_ac_efficiency_drift_permille(cop_now_x100: i64, cop_base_x100: i64) -> i64 |