重构质量模型并补充回热器分段建模
This commit is contained in:
1 parent
5709ed5f71
commit
1a4b050d53
5 files changed
+940
-248
No files matched your search
+30
-6
@@ -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."""
|
||||
|
||||
Reference in new issue
Block a user