feat(components): add ThermoState generators and Eurovent backend demo
This commit is contained in:
@@ -262,10 +262,34 @@ impl<Model: HeatTransferModel> HeatExchanger<Model> {
|
||||
self.fluid_backend.is_some()
|
||||
}
|
||||
|
||||
/// Computes the full thermodynamic state at the hot inlet.
|
||||
pub fn hot_inlet_state(&self) -> Result<ThermoState, ComponentError> {
|
||||
let backend = self.fluid_backend.as_ref().ok_or_else(|| ComponentError::CalculationFailed("No FluidBackend configured".to_string()))?;
|
||||
let conditions = self.hot_conditions.as_ref().ok_or_else(|| ComponentError::CalculationFailed("Hot conditions not set".to_string()))?;
|
||||
let h = self.query_enthalpy(conditions)?;
|
||||
backend.full_state(
|
||||
conditions.fluid_id().clone(),
|
||||
Pressure::from_pascals(conditions.pressure_pa()),
|
||||
entropyk_core::Enthalpy::from_joules_per_kg(h),
|
||||
).map_err(|e| ComponentError::CalculationFailed(format!("Failed to compute hot inlet state: {}", e)))
|
||||
}
|
||||
|
||||
/// Computes the full thermodynamic state at the cold inlet.
|
||||
pub fn cold_inlet_state(&self) -> Result<ThermoState, ComponentError> {
|
||||
let backend = self.fluid_backend.as_ref().ok_or_else(|| ComponentError::CalculationFailed("No FluidBackend configured".to_string()))?;
|
||||
let conditions = self.cold_conditions.as_ref().ok_or_else(|| ComponentError::CalculationFailed("Cold conditions not set".to_string()))?;
|
||||
let h = self.query_enthalpy(conditions)?;
|
||||
backend.full_state(
|
||||
conditions.fluid_id().clone(),
|
||||
Pressure::from_pascals(conditions.pressure_pa()),
|
||||
entropyk_core::Enthalpy::from_joules_per_kg(h),
|
||||
).map_err(|e| ComponentError::CalculationFailed(format!("Failed to compute cold inlet state: {}", e)))
|
||||
}
|
||||
|
||||
/// Queries Cp (J/(kg·K)) from the backend for a given side.
|
||||
fn query_cp(&self, conditions: &HxSideConditions) -> Result<f64, ComponentError> {
|
||||
if let Some(backend) = &self.fluid_backend {
|
||||
let state = ThermoState::from_pt(
|
||||
let state = entropyk_fluids::FluidState::from_pt(
|
||||
Pressure::from_pascals(conditions.pressure_pa()),
|
||||
Temperature::from_kelvin(conditions.temperature_k()),
|
||||
);
|
||||
@@ -279,7 +303,7 @@ impl<Model: HeatTransferModel> HeatExchanger<Model> {
|
||||
/// Queries specific enthalpy (J/kg) from the backend for a given side at (P, T).
|
||||
fn query_enthalpy(&self, conditions: &HxSideConditions) -> Result<f64, ComponentError> {
|
||||
if let Some(backend) = &self.fluid_backend {
|
||||
let state = ThermoState::from_pt(
|
||||
let state = entropyk_fluids::FluidState::from_pt(
|
||||
Pressure::from_pascals(conditions.pressure_pa()),
|
||||
Temperature::from_kelvin(conditions.temperature_k()),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user