架构调整和敏感性分析代码附加
This commit is contained in:
1 parent
1d09599e8c
commit
469567c3db
5 files changed
+621
-429
No files matched your search
@@ -0,0 +1,50 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Evaluation helpers for cycle sensitivity analysis."""
|
||||
|
||||
from .cycles import BraytonCycle
|
||||
|
||||
|
||||
RC_FIXED_KEYS = ("T_low", "T_high", "p_low", "p_high", "ploss")
|
||||
RC_PARAM_KEYS = (
|
||||
"x",
|
||||
"compressor_eff",
|
||||
"recompressor_eff",
|
||||
"turbine_eff",
|
||||
"recuperator_eff",
|
||||
"highT_recuperator_eff",
|
||||
)
|
||||
|
||||
|
||||
def _require_keys(data, required_keys, data_name):
|
||||
missing = [key for key in required_keys if key not in data]
|
||||
if missing:
|
||||
missing_text = ", ".join(missing)
|
||||
raise ValueError(f"{data_name} missing required keys: {missing_text}")
|
||||
|
||||
|
||||
def evaluate_rc_efficiency(fixed_params, params, refprop_path=None):
|
||||
"""Return the recompression Brayton cycle thermal efficiency.
|
||||
|
||||
The returned efficiency is a decimal value, for example 0.45 means 45%.
|
||||
A new cycle instance is created for each evaluation so repeated sensitivity
|
||||
runs do not reuse component state from previous cases.
|
||||
"""
|
||||
fixed = dict(fixed_params)
|
||||
cycle_params = dict(params)
|
||||
|
||||
_require_keys(fixed, RC_FIXED_KEYS, "fixed_params")
|
||||
_require_keys(cycle_params, RC_PARAM_KEYS, "params")
|
||||
|
||||
cycle_kwargs = {"name": "rc efficiency evaluation"}
|
||||
if refprop_path is not None:
|
||||
cycle_kwargs["refprop_path"] = refprop_path
|
||||
|
||||
cycle = BraytonCycle(**cycle_kwargs)
|
||||
return cycle.RC(
|
||||
T_low=fixed["T_low"],
|
||||
T_high=fixed["T_high"],
|
||||
p_low=fixed["p_low"],
|
||||
p_high=fixed["p_high"],
|
||||
ploss=fixed["ploss"],
|
||||
param=cycle_params,
|
||||
)
|
||||
Reference in new issue
Block a user