From 13f7507f91ff73a05ed3ab1c254d5e45b023074b Mon Sep 17 00:00:00 2001 From: Tyrone CT Date: Wed, 25 Mar 2026 21:48:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E6=80=A7=E6=9B=B4=E6=94=B92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/IPPCCalculationSupport.cs | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 CapMachine.Wpf/Services/IPPCCalculationSupport.cs diff --git a/CapMachine.Wpf/Services/IPPCCalculationSupport.cs b/CapMachine.Wpf/Services/IPPCCalculationSupport.cs new file mode 100644 index 0000000..ace01b0 --- /dev/null +++ b/CapMachine.Wpf/Services/IPPCCalculationSupport.cs @@ -0,0 +1,161 @@ +namespace CapMachine.Wpf.Services +{ + /// + /// PPC 热力计算所需底层物性能力接口。 + /// + /// + /// 该接口用于把具体的 REFPROP 调用细节从上层计算逻辑中解耦出来, + /// 使 、 + /// 只关注“流程与公式”, + /// 而不直接依赖 REFPROP API 的调用顺序、单位换算与错误处理。 + /// + /// 设计约定: + /// 1. 所有方法都采用 Try 风格,返回 表示成功得到结果。 + /// 2. 返回 时,输出参数通常为未定义值,调用方应以 为准。 + /// 3. 方法名中显式写出主要输入路径与单位,便于上层按状态点流程对照调用。 + /// 4. 本接口只定义“物性支持能力”,不定义具体业务公式。 + /// + public interface IPPCCalculationSupport + { + /// + /// 确保 REFPROP 已完成初始化。 + /// + /// 初始化失败原因,例如路径错误、流体文件不可用或底层库调用异常。 + /// 是否初始化成功,或已经处于可用状态。 + bool EnsureRefpropInitialized(out string error); + + /// + /// 由压力求饱和状态参数。 + /// + /// 输入压力,单位 MPa(绝压)。 + /// 输出饱和温度,单位 K。 + /// 输出饱和液相摩尔密度,单位 mol/L。 + /// 输出饱和气相摩尔密度,单位 mol/L。 + /// 失败原因。 + /// 是否求取成功。 + /// + /// 该方法通常用于过热度/过冷度计算中的“由压力反查饱和温度”步骤。 + /// + bool TrySATP_SaturationByP_MPa( + double pressureMPa, + out double tSatK, + out double Dl_molL, + out double Dv_molL, + out string error); + + /// + /// 由气相压力/温度状态点求摩尔密度。 + /// + /// 输入压力,单位 MPa(绝压)。 + /// 输入温度,单位 ℃。 + /// 输出摩尔密度,单位 mol/L。 + /// 失败原因。 + /// 是否求取成功。 + /// + /// 该方法对应气相路径的 TPRHO 调用,常用于吸气点、排气点等过热蒸汽状态点计算。 + /// + bool TryTPRHO_VaporDensity_ByTP_MPa_C( + double pressureMPa, + double temperatureC, + out double densityMolPerL, + out string error); + + /// + /// 由气相温度/密度状态点求质量比熵。 + /// + /// 输入温度,单位 ℃。 + /// 输入摩尔密度,单位 mol/L。 + /// 输出质量比熵,单位 kJ/(kg·K)。 + /// 失败原因。 + /// 是否求取成功。 + /// + /// 该方法通常用于得到吸气点熵 s1,供后续等熵出口焓 h2s 计算使用。 + /// + bool TryTHERM_VaporEntropy_ByTD( + double temperatureC, + double densityMolPerL, + out double entropy_kJ_per_kgK, + out string error); + + /// + /// 由液相压力/温度状态点求摩尔密度。 + /// + /// 输入压力,单位 MPa(绝压)。 + /// 输入温度,单位 ℃。 + /// 输出摩尔密度,单位 mol/L。 + /// 失败原因。 + /// 是否求取成功。 + /// + /// 该方法对应液相路径的 TPRHO 调用,常用于膨胀阀前液路状态点计算。 + /// + bool TryTPRHO_LiquidDensity_ByTP_MPa_C( + double pressureMPa, + double temperatureC, + out double densityMolPerL, + out string error); + + /// + /// 由液相温度/密度状态点求质量比焓。 + /// + /// 输入温度,单位 ℃。 + /// 输入摩尔密度,单位 mol/L。 + /// 输出液相质量比焓,单位 kJ/kg。 + /// 失败原因。 + /// 是否求取成功。 + /// + /// 该方法常用于液路点 h3 计算。 + /// + bool TryTHERM_LiquidEnthalpy_ByTD( + double temperatureC, + double densityMolPerL, + out double h_liq_kJ_per_kg, + out string error); + + /// + /// 由温度/密度状态点求质量比焓。 + /// + /// 输入温度,单位 K。 + /// 输入摩尔密度,单位 mol/L。 + /// 输出质量比焓,单位 kJ/kg。 + /// 失败原因。 + /// 是否求取成功。 + /// + /// 该方法在 PPC 当前实现中主要用于气相状态点的焓计算,例如 h1、h2。 + /// + bool TryTHERM_Enthalpy_kJkg_ByT_K_D( + double temperatureK, + double densityMolPerL, + out double h_kJ_per_kg, + out string error); + + /// + /// 将摩尔密度换算为质量比容。 + /// + /// 输入摩尔密度,单位 mol/L。 + /// 输出质量比容,单位 m³/kg。 + /// 失败原因。 + /// 是否换算成功。 + /// + /// 该方法通常用于由吸气点摩尔密度换算得到吸气比容 v1,供容积效率计算使用。 + /// + bool TryConvertMolarDensityToSpecificVolume(double d_molL, out double v_m3kg, out string error); + + /// + /// 由排气压力与吸气熵求等熵出口焓 h2s。 + /// + /// 排气压力 P2,单位 BarA(绝压)。 + /// 吸气熵 s1,单位 kJ/(kg·K)。 + /// 输出等熵出口焓 h2s,单位 kJ/kg。 + /// 失败原因。 + /// 是否求取成功。 + /// + /// 该方法封装了由 P2 + s1 反查等熵压缩终点焓值的过程, + /// 供等熵效率计算公式 (h2s - h1) / (h2 - h1) 使用。 + /// + bool TryGetIsentropicOutletEnthalpy_h2s_ByP2AndS1_BarA( + double dischargePressureBarA, + double suctionEntropy_kJkgK, + out double h2s_kJkg, + out string error); + } +}