增加质量计算接口

This commit is contained in:
ljz committed 2026-06-22 15:40:37 +08:00
1 parent 5407eebf2f
commit 63fd509a3f
3 files changed
+134 -6

No files matched your search

+49
View File
@@ -23,6 +23,8 @@ class BraytonCycle:
self.heater = None
self.condenser = None
self.concentrator = None
self.component_masses = None
self.total_mass = None
self.refprop_path = refprop_path
self.property_calculator = CO2PropertyCalculator(self.refprop_path)
@@ -36,6 +38,53 @@ class BraytonCycle:
Q_input = self.heater.variables["Q_in"]
return (Wt - Wc) / Q_input
def iter_components(self):
"""Yield initialized component objects in the current cycle."""
for value in (
self.compressor,
self.turbine,
self.recuperator,
self.heater,
self.condenser,
self.concentrator,
):
if value is None:
continue
if isinstance(value, list):
for component in value:
if component is not None:
yield component
else:
yield value
def calculate_component_masses(self, mass_model=None, **kwargs):
"""Calculate mass for each initialized component."""
component_masses = {}
for component in self.iter_components():
mass = component.calculate_mass(mass_model=mass_model, **kwargs)
key = component.variables.get("name", component.name)
component_masses[key] = {
"component_type": component.component_type,
"mass": mass,
"mass_variables": component.mass_variables,
}
self.component_masses = component_masses
return self.component_masses
def cycle_mass_calculator(self, mass_model=None, **kwargs):
"""Calculate and return total cycle component mass."""
component_masses = self.calculate_component_masses(
mass_model=mass_model,
**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):
"""Compatibility alias for cycle_mass_calculator."""
return self.cycle_mass_calculator(mass_model=mass_model, **kwargs)
def SC(self, T_low, T_high, p_low, p_high, param=None):
"""Simple Brayton cycle."""
defaults = {