增加质量计算接口
This commit is contained in:
1 parent
5407eebf2f
commit
63fd509a3f
3 files changed
+134
-6
No files matched your search
@@ -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 = {
|
||||
|
||||
Reference in new issue
Block a user