//! Heat Exchanger Framework
//!
//! This module provides a pluggable heat exchanger framework supporting multiple
//! calculation models (LMTD, ε-NTU) for thermodynamic simulations.
//!
//! ## Architecture
//!
//! The framework uses the Strategy Pattern for heat transfer calculations:
//!
//! - [`HeatTransferModel`]: Trait for pluggable calculation strategies
//! - [`LmtdModel`]: Log Mean Temperature Difference method
//! - [`EpsNtuModel`]: Effectiveness-NTU method
//! - [`HeatExchanger`]: Generic heat exchanger component
//!
//! ## Components
//!
//! - [`Condenser`]: Refrigerant condensing (phase change) on hot side
//! - [`Evaporator`]: Refrigerant evaporating (phase change) on cold side (DX style)
//! - [`FloodedEvaporator`]: Flooded/recirculation evaporator (two-phase outlet)
//! - [`FloodedCondenser`]: Flooded/accumulation condenser (subcooled liquid outlet)
//! - [`EvaporatorCoil`]: Air-side evaporator (finned coil)
//! - [`CondenserCoil`]: Air-side condenser (finned coil)
//! - [`Economizer`]: Internal heat exchanger with bypass support
//! - [`BphxExchanger`]: Brazed Plate Heat Exchanger with geometry-based correlations
//!
//! ## BPHX Components (Story 11.5)
//!
//! - [`BphxExchanger`]: Brazed plate heat exchanger component
//! - [`BphxGeometry`]: Geometry specification for BPHX
//! - [`BphxCorrelation`]: Heat transfer correlation selection
//!
//! ## BPHX Evaporator (Story 11.6)
//!
//! - [`BphxEvaporator`]: Plate evaporator supporting DX and Flooded modes
//! - [`BphxEvaporatorMode`]: Operation mode (DX with superheat or Flooded with quality)
//!
//! ## BPHX Condenser (Story 11.7)
//!
//! - [`BphxCondenser`]: Plate condenser with subcooled liquid outlet
//!
//! ## Example
//!
//! ```rust
//! use entropyk_components::heat_exchanger::{HeatExchanger, LmtdModel, FlowConfiguration};
//!
//! // Create a heat exchanger with LMTD model
//! let model = LmtdModel::new(5000.0, FlowConfiguration::CounterFlow);
//! // Heat exchanger would be created with connected ports
//! ```

pub mod bphx_condenser;
pub mod bphx_correlation;
pub mod bphx_evaporator;
pub mod bphx_exchanger;
pub mod bphx_geometry;
pub mod condenser;
pub mod condenser_coil;
pub mod economizer;
pub mod eps_ntu;
pub mod evaporator;
pub mod evaporator_coil;
pub mod exchanger;
pub mod flooded_condenser;
pub mod flooded_evaporator;
pub mod lmtd;
pub mod mchx_condenser_coil;
pub mod model;
pub mod moving_boundary_hx;

pub use bphx_condenser::BphxCondenser;
pub use bphx_correlation::{
    BphxCorrelation, CorrelationParams, CorrelationResult, CorrelationSelector, FlowRegime,
    ValidityStatus,
};
pub use bphx_evaporator::{BphxEvaporator, BphxEvaporatorMode};
pub use bphx_exchanger::BphxExchanger;
pub use bphx_geometry::{BphxGeometry, BphxGeometryBuilder, BphxGeometryError, BphxType};
pub use condenser::Condenser;
pub use condenser_coil::CondenserCoil;
pub use economizer::Economizer;
pub use eps_ntu::{EpsNtuModel, ExchangerType};
pub use evaporator::Evaporator;
pub use evaporator_coil::EvaporatorCoil;
pub use exchanger::{HeatExchanger, HeatExchangerBuilder, HxSideConditions};
pub use flooded_condenser::FloodedCondenser;
pub use flooded_evaporator::FloodedEvaporator;
pub use lmtd::{FlowConfiguration, LmtdModel};
pub use mchx_condenser_coil::MchxCondenserCoil;
pub use model::HeatTransferModel;
