重构质量模型并补充回热器分段建模

This commit is contained in:
ljz committed 2026-06-24 11:23:58 +08:00
1 parent 5709ed5f71
commit 1a4b050d53
5 files changed
+940 -248

No files matched your search

+30 -6
View File
@@ -9,6 +9,7 @@ from .components import (
Recuperator,
Turbine,
)
from .mass_models import apply_component_mass, has_default_mass_model
from .properties import CO2PropertyCalculator
@@ -57,13 +58,31 @@ class BraytonCycle:
else:
yield value
def calculate_component_masses(self, mass_model=None, **kwargs):
def calculate_component_masses(self, mass_model=None, strict=False, **kwargs):
"""Calculate mass for each initialized component."""
component_masses = {}
for component in self.iter_components():
if not hasattr(component, "calculate_mass"):
if not hasattr(component, "set_mass_result"):
continue
mass = component.calculate_mass(mass_model=mass_model, **kwargs)
if mass_model is None and not has_default_mass_model(component):
if strict:
raise NotImplementedError(
f"No default mass model for component type "
f"{component.component_type!r}."
)
continue
try:
mass = apply_component_mass(
component,
mass_model=mass_model,
**kwargs,
)
except NotImplementedError:
if strict:
raise
continue
key = component.variables.get("name", component.name)
component_masses[key] = {
"component_type": component.component_type,
@@ -74,18 +93,23 @@ class BraytonCycle:
self.component_masses = component_masses
return self.component_masses
def cycle_mass_calculator(self, mass_model=None, **kwargs):
def cycle_mass_calculator(self, mass_model=None, strict=False, **kwargs):
"""Calculate and return total cycle component mass."""
component_masses = self.calculate_component_masses(
mass_model=mass_model,
strict=strict,
**kwargs,
)
self.total_mass = sum(item["mass"] for item in component_masses.values())
return self.total_mass
def calculate_total_mass(self, mass_model=None, **kwargs):
def calculate_total_mass(self, mass_model=None, strict=False, **kwargs):
"""Compatibility alias for cycle_mass_calculator."""
return self.cycle_mass_calculator(mass_model=mass_model, **kwargs)
return self.cycle_mass_calculator(
mass_model=mass_model,
strict=strict,
**kwargs,
)
def SC(self, T_low, T_high, p_low, p_high, param=None):
"""Simple Brayton cycle."""