model HeatingSystemWithBranches
// ===== 系统参数 =====
parameter Integer nBranches = 4; // 主干数量
parameter Integer nStations = 10; // 换热站数量
parameter Integer nNodes = 23; // 热源进出口 + 各站进出口 + 汇合点
parameter Integer nPipes = 29; // 供水主干 + 供水支线 + 回水支线 + 回水主干
// ===== 管道参数 =====
parameter Real mainPipeLengths[nBranches] = {2000, 1500, 1800, 1700};
parameter Real mainPipeDiameters[nBranches] = {0.4, 0.35, 0.3, 0.35};
parameter Real branchPipeLengths[nStations] = {800, 1000, 600, 900, 700, 500, 400, 600, 800, 500};
parameter Real branchPipeDiameters[nStations] = {0.15, 0.2, 0.15, 0.15, 0.15, 0.125, 0.125, 0.15, 0.15, 0.15};
parameter Real returnMainLength = 500; // 新增回水主干长度
parameter Real returnMainDiameter = 0.45; // 新增回水主干直径
parameter Real pipe_roughness = 4.5e-5;
parameter Real local_loss_coeff = 0.5;
// ===== 流体属性 =====
parameter Real fluid_density = 983.2;
parameter Real fluid_viscosity = 0.00046;
// ===== 节点参数 =====
parameter Real node_elevations[nNodes] = {
45.2, 44.8, // 热源进出口
// 各站进口高程
42.0, 41.5, 41.0, 40.5, 42.5, 42.0, 41.5, 41.0, 42.0, 41.5,
// 各站出口高程
41.5, 41.0, 40.5, 40.0, 42.0, 41.5, 41.0, 40.5, 41.5, 41.0,
40.0 // 汇合点
};
// ===== 管网拓扑信息 =====
parameter Integer connectionMatrix[nPipes,2] = [
// === 供水主干 (4根) ===
1, 3; // 热源出口→东主干起点
3, 4; // 东主干→分支点1
4, 5; // 分支点1→分支点2
5, 6; // 分支点2→分支点3
// === 支线供水 (10根) === 4, 7; // 分支点1→站1进口 5, 8; // 分支点2→站2进口 5, 9; // 分支点2→站3进口 6, 10; // 分支点3→站4进口 6, 11; // 分支点3→站5进口 4, 12; // 分支点1→站6进口 5, 13; // 分支点2→站7进口 6, 14; // 分支点3→站8进口 5, 15; // 分支点2→站9进口 6, 16; // 分支点3→站10进口 // === 回水支线 (10根) === 17, 3; // 站1出口→回水点1 18, 4; // 站2出口→回水点2 19, 5; // 站3出口→回水点3 20, 6; // 站4出口→回水点4 21, 3; // 站5出口→回水点1 22, 4; // 站6出口→回水点2 23, 5; // 站7出口→回水点3 24, 6; // 站8出口→回水点4 25, 3; // 站9出口→回水点1 26, 4; // 站10出口→回水点2 // === 回水主干 (5根) === 3, 23; // 回水点1→汇合点 4, 23; // 回水点2→汇合点 5, 23; // 回水点3→汇合点 6, 23; // 回水点4→汇合点 23, 2 // 汇合点→热源入口
];
// ===== 泵参数 =====
parameter Real pump_head_input = 32; // 泵扬程 (m)
// ===== 验证参数 =====
parameter Real pressureTolerance = 100; // 压力容差 (Pa)
parameter Real energyTolerance = 0.05; // 能量容差 (5%)
parameter Boolean debugMode = true; // 调试开关
// ===== 监测时间点参数 =====
parameter Real monitoringTimes[:] = {0, 0.1, 0.5, 1}; // 监测时间点 (s)
// ===== 监控变量 =====
Integer nextIndex(start = 1, fixed = true);
// ===== 主要变量 =====
Real flow_rates[nPipes](
each fixed = false, // 允许求解器调整
each min = 1e-6,
each nominal = 0.02
);
Real pressure_losses[nPipes](
each min = 0,
each max = 1e6,
each start = 1000 // 初始压力损失
);
Real node_pressures[nNodes](
each min = 0,
each max = 2e6,
each start = 101325 // 初始值为大气压
);
// ===== 参数化管道属性 =====
parameter Real pipe_lengths[nPipes] = {
// 供水主干 (1-4)
mainPipeLengths[1], mainPipeLengths[2], mainPipeLengths[3], mainPipeLengths[4],
// 供水支线 (5-14)
branchPipeLengths[1], branchPipeLengths[2], branchPipeLengths[3], branchPipeLengths[4],
branchPipeLengths[5], branchPipeLengths[6], branchPipeLengths[7], branchPipeLengths[8],
branchPipeLengths[9], branchPipeLengths[10],
// 回水支线 (15-24)
branchPipeLengths[1], branchPipeLengths[2], branchPipeLengths[3], branchPipeLengths[4],
branchPipeLengths[5], branchPipeLengths[6], branchPipeLengths[7], branchPipeLengths[8],
branchPipeLengths[9], branchPipeLengths[10],
// 回水主干 (25-29)
mainPipeLengths[1], mainPipeLengths[2], mainPipeLengths[3], mainPipeLengths[4],
returnMainLength
};
parameter Real pipe_diameters[nPipes] = {
// 供水主干 (1-4)
mainPipeDiameters[1], mainPipeDiameters[2], mainPipeDiameters[3], mainPipeDiameters[4],
// 供水支线 (5-14)
branchPipeDiameters[1], branchPipeDiameters[2], branchPipeDiameters[3], branchPipeDiameters[4],
branchPipeDiameters[5], branchPipeDiameters[6], branchPipeDiameters[7], branchPipeDiameters[8],
branchPipeDiameters[9], branchPipeDiameters[10],
// 回水支线 (15-24)
branchPipeDiameters[1], branchPipeDiameters[2], branchPipeDiameters[3], branchPipeDiameters[4],
branchPipeDiameters[5], branchPipeDiameters[6], branchPipeDiameters[7], branchPipeDiameters[8],
branchPipeDiameters[9], branchPipeDiameters[10],
// 回水主干 (25-29)
mainPipeDiameters[1], mainPipeDiameters[2], mainPipeDiameters[3], mainPipeDiameters[4],
returnMainDiameter
};
// ===== 参数化节点索引 =====
parameter Integer startNode[nPipes] = connectionMatrix[:, 1];
parameter Integer endNode[nPipes] = connectionMatrix[:, 2];
// ===== 中间变量声明 =====
Real area[nPipes]; // 管道截面积
Real v[nPipes]; // 流速
Real Re_val[nPipes]; // 雷诺数
Real f_val[nPipes]; // 摩擦系数
Real friction_loss[nPipes]; // 摩擦损失
Real elevation_change[nPipes]; // 高程压差
// ===== 能量相关变量 =====
Real pumpPower;
Real lossPower;
Real elevationPower;
Real balance;
Real pumpPowerThreshold;
// ===== 常量 =====
constant Real g = Modelica.Constants.g_n;
constant Real pi = Modelica.Constants.pi;
constant Real p_atm = 101325; // 标准大气压
// ===== 摩擦系数计算函数 =====
function calculateFrictionFactor
input Real Re_val;
input Real eps; // 相对粗糙度
output Real f_val;
protected
Real Re_safe;
algorithm
Re_safe := max(Re_val, 1e-3); // 避免除以零
if Re_safe <= 2300 then f_val := 64 / Re_safe; // 层流公式 else // 使用Haaland显式近似公式 f_val := 0.3086 / (log10(6.9/Re_safe + (eps/3.7)^1.11))^2; // 紊流公式 end if; // 确保摩擦系数在合理范围内 f_val := min(max(f_val, 0.001), 0.1);
end calculateFrictionFactor;
initial equation
// ===== 参数验证 =====
assert(size(connectionMatrix, 1) == nPipes, “连接矩阵行数错误”);
assert(size(node_elevations, 1) == nNodes, “节点高程数量错误”);
assert(local_loss_coeff >= 0, “局部损失系数必须非负”);
assert(pipe_roughness > 0, “管道粗糙度必须大于0”);
// ===== 流量初始估计 =====
// 供水主干流量设为总流量的1/nBranches
for i in 1:nBranches loop
flow_rates[i] = 0.018 * nStations / nBranches;
end for;
// 供水支线流量设为较小值
for i in (nBranches + 1):(nBranches + nStations) loop
flow_rates[i] = 0.018 / nStations;
end for;
// 回水支线流量与供水支线匹配
for i in (nBranches + nStations + 1):(nBranches + 2*nStations) loop
flow_rates[i] = flow_rates[i - nStations];
end for;
// 回水主干流量设为分支总和
for i in (nBranches + 2*nStations + 1):(nPipes - 1) loop
flow_rates[i] = 0.018 * nStations / nBranches;
end for;
// 最后一段回水主干流量设为总流量
flow_rates[nPipes] = sum(flow_rates[1:nBranches]);
equation
// ===== 管道水力计算 =====
for i in 1:nPipes loop
// 管道截面积
area[i] = pi * (pipe_diameters[i]/2)^2;
// 流速计算(避免除以零) v[i] = if area[i] > 1e-10 then flow_rates[i] / area[i] else 0; // 雷诺数计算 Re_val[i] = fluid_density * abs(flow_rates[i]) * pipe_diameters[i] / max(fluid_viscosity, 1e-10); // 摩擦系数计算 f_val[i] = calculateFrictionFactor(Re_val[i], pipe_roughness/pipe_diameters[i]); // 摩擦损失计算 friction_loss[i] = (f_val[i] * pipe_lengths[i] / pipe_diameters[i] + local_loss_coeff) * 0.5 * fluid_density * v[i]^2; // 高程压差计算 elevation_change[i] = fluid_density * g * (node_elevations[startNode[i]] - node_elevations[endNode[i]]); // 总压力损失 pressure_losses[i] = friction_loss[i] + elevation_change[i]; // 管道压降方程 node_pressures[startNode[i]] - node_pressures[endNode[i]] = pressure_losses[i];
end for;
// ===== 节点流量守恒 =====
for j in 1:nNodes loop
// 流入节点的流量总和 = 流出节点的流量总和
sum(if startNode[k] == j then flow_rates[k] else 0.0 for k in 1:nPipes) =
sum(if endNode[k] == j then flow_rates[k] else 0.0 for k in 1:nPipes);
end for;
// 热源出口压力(泵出口)
node_pressures[1] = pump_head_input * fluid_density * g + p_atm;
// 热源入口压力(泵入口)
node_pressures[2] = p_atm;
// 泵功率计算
pumpPower = abs(flow_rates[1]) * pump_head_input * fluid_density * g;
// 摩擦损失功率
lossPower = sum(friction_loss[i] * abs(flow_rates[i]) for i in 1:nPipes);
// 高程功率
elevationPower = sum(elevation_change[i] * flow_rates[i] for i in 1:nPipes);
// 能量平衡误差
balance = pumpPower - (lossPower + elevationPower);
pumpPowerThreshold = max(100, abs(pumpPower) * energyTolerance);
// ===== 验证与监测 =====
algorithm
when initial() then
Modelica.Utilities.Streams.print(“=== 系统初始化 ===”);
Modelica.Utilities.Streams.print("节点数: " + String(nNodes));
Modelica.Utilities.Streams.print("管道数: " + String(nPipes));
Modelica.Utilities.Streams.print(“总流量: " + String(flow_rates[1]*3600) + " m³/h”);
// 节点连接检查 for i in 1:nPipes loop assert(connectionMatrix[i,1] >= 1 and connectionMatrix[i,1] <= nNodes, "管道" + String(i) + "起点节点无效: " + String(connectionMatrix[i,1])); assert(connectionMatrix[i,2] >= 1 and connectionMatrix[i,2] <= nNodes, "管道" + String(i) + "终点节点无效: " + String(connectionMatrix[i,2])); end for;
end when;
when {time >= monitoringTimes[nextIndex]} then
Modelica.Utilities.Streams.print("=== 系统状态 @ " + String(time) + “s ===”);
Modelica.Utilities.Streams.print(“主流量: " + String(flow_rates[1]*3600) + " m³/h”);
Modelica.Utilities.Streams.print(“泵功率: " + String(pumpPower/1000) + " kW”);
Modelica.Utilities.Streams.print(“摩擦损失功率: " + String(lossPower/1000) + " kW”);
Modelica.Utilities.Streams.print(“高程功率: " + String(elevationPower/1000) + " kW”);
Modelica.Utilities.Streams.print(“能量平衡误差: " + String(abs(balance)) + " W (” +
String(abs(balance)/max(pumpPower, 1e-10)*100) + “%)”);
if nextIndex < size(monitoringTimes, 1) then nextIndex := nextIndex + 1; end if;
end when;
// 压力范围验证
for i in 1:nNodes loop
assert(node_pressures[i] > 0 and node_pressures[i] < 2e6,
“节点压力超出范围: P” + String(i) + “=” + String(node_pressures[i]));
end for;
// 能量守恒验证
if debugMode then
assert(abs(balance) < pumpPowerThreshold,
“能量不平衡: Δ=” + String(balance) + " W (泵功率=" + String(pumpPower) + " W)");
end if;
// ===== 结果输出配置 =====
annotation(
experiment(
StartTime=0,
StopTime=10,
Interval=0.1,
__Dymola_Algorithm=“Dassl”
)
);
end HeatingSystemWithBranches;
[108] 16:05:06 符号 警告
[HeatingSystemWithBranches: 98:3-98:60]: Variable node_pressures[4] does not have any remaining equation to be solved in.
The original equations were:
Equation 233: node_pressures[startNode[29]] - node_pressures[endNode[29]] = pressure_losses[29], which needs to solve for pressure_losses[29]
Equation 225: node_pressures[startNode[28]] - node_pressures[endNode[28]] = pressure_losses[28], which needs to solve for pressure_losses[28]
Equation 217: node_pressures[startNode[27]] - node_pressures[endNode[27]] = pressure_losses[27], which needs to solve for pressure_losses[27]
Equation 209: node_pressures[startNode[26]] - node_pressures[endNode[26]] = pressure_losses[26], which needs to solve for pressure_losses[26]
Equation 201: node_pressures[startNode[25]] - node_pressures[endNode[25]] = pressure_losses[25], which needs to solve for pressure_losses[25]
Equation 193: node_pressures[startNode[24]] - node_pressures[endNode[24]] = pressure_losses[24], which needs to solve for pressure_losses[24]
Equation 185: node_pressures[startNode[23]] - node_pressures[endNode[23]] = pressure_losses[23], which needs to solve for pressure_losses[23]
Equation 177: node_pressures[startNode[22]] - node_pressures[endNode[22]] = pressure_losses[22], which needs to solve for pressure_losses[22]
Equation 169: node_pressures[startNode[21]] - node_pressures[endNode[21]] = pressure_losses[21], which needs to solve for pressure_losses[21]
Equation 161: node_pressures[startNode[20]] - node_pressures[endNode[20]] = pressure_losses[20], which needs to solve for pressure_losses[20]
Equation 153: node_pressures[startNode[19]] - node_pressures[endNode[19]] = pressure_losses[19], which needs to solve for pressure_losses[19]
Equation 145: node_pressures[startNode[18]] - node_pressures[endNode[18]] = pressure_losses[18], which needs to solve for pressure_losses[18]
Equation 137: node_pressures[startNode[17]] - node_pressures[endNode[17]] = pressure_losses[17], which needs to solve for pressure_losses[17]
Equation 129: node_pressures[startNode[16]] - node_pressures[endNode[16]] = pressure_losses[16], which needs to solve for pressure_losses[16]
Equation 121: node_pressures[startNode[15]] - node_pressures[endNode[15]] = pressure_losses[15], which needs to solve for pressure_losses[15]
Equation 113: node_pressures[startNode[14]] - node_pressures[endNode[14]] = pressure_losses[14], which needs to solve for pressure_losses[14]
Equation 105: node_pressures[startNode[13]] - node_pressures[endNode[13]] = pressure_losses[13], which needs to solve for pressure_losses[13]
Equation 97: node_pressures[startNode[12]] - node_pressures[endNode[12]] = pressure_losses[12], which needs to solve for pressure_losses[12]
Equation 89: node_pressures[startNode[11]] - node_pressures[endNode[11]] = pressure_losses[11], which needs to solve for pressure_losses[11]
Equation 81: node_pressures[startNode[10]] - node_pressures[endNode[10]] = pressure_losses[10], which needs to solve for pressure_losses[10]
Equation 73: node_pressures[startNode[9]] - node_pressures[endNode[9]] = pressure_losses[9], which needs to solve for pressure_losses[9]
Equation 65: node_pressures[startNode[8]] - node_pressures[endNode[8]] = pressure_losses[8], which needs to solve for pressure_losses[8]
Equation 57: node_pressures[startNode[7]] - node_pressures[endNode[7]] = pressure_losses[7], which needs to solve for pressure_losses[7]
Equation 49: node_pressures[startNode[6]] - node_pressures[endNode[6]] = pressure_losses[6], which needs to solve for pressure_losses[6]
Equation 41: node_pressures[startNode[5]] - node_pressures[endNode[5]] = pressure_losses[5], which needs to solve for pressure_losses[5]
Equation 33: node_pressures[startNode[4]] - node_pressures[endNode[4]] = pressure_losses[4], which needs to solve for pressure_losses[4]
Equation 25: node_pressures[startNode[3]] - node_pressures[endNode[3]] = pressure_losses[3], which needs to solve for pressure_losses[3]
Equation 17: node_pressures[startNode[2]] - node_pressures[endNode[2]] = pressure_losses[2], which needs to solve for pressure_losses[2]
Equation 9: node_pressures[startNode[1]] - node_pressures[endNode[1]] = pressure_losses[1], which needs to solve for pressure_losses[1]
Equation 1: algorithm
when initial() then
Modelica.Utilities.Streams.print(“=== 系统初始化 =", “”);
Modelica.Utilities.Streams.print(“节点数: 23”, “”);
Modelica.Utilities.Streams.print(“管道数: 29”, “”);
for i in 1:29 loop
assert(connectionMatrix[i,1] >= 1 and connectionMatrix[i,1] <= 23, “管道” + String(i, 0, true) + "起点节点无效: " + String(connectionMatrix[i,1], 0, true));
assert(connectionMatrix[i,2] >= 1 and connectionMatrix[i,2] <= 23, “管道” + String(i, 0, true) + “终点节点无效: " + String(connectionMatrix[i,2], 0, true));
end for;
end when;
when {time >= monitoringTimes[nextIndex]} then
Modelica.Utilities.Streams.print(”= 系统状态 @ " + String(time, 6, 0, true) + “s ===”, “”);
Modelica.Utilities.Streams.print(“主流量: " + String(flow_rates[1] * 3600.0, 6, 0, true) + " m³/h”, “”);
Modelica.Utilities.Streams.print(“泵功率: " + String(pumpPower / 1000.0, 6, 0, true) + " kW”, “”);
Modelica.Utilities.Streams.print(“能量平衡误差: " + String(abs(balance), 6, 0, true) + " W”, “”);
if nextIndex < 4 then
nextIndex := nextIndex + 1;
end if;
end when;
for i in 1:23 loop
assert(node_pressures[i] > 0.0 and node_pressures[i] < 2e6, “节点压力超出范围: P” + String(i, 0, true) + “=” + String(node_pressures[i], 6, 0, true));
end for;
if debugMode then
assert(abs(balance) < pumpPowerThreshold, “能量不平衡: Δ=” + String(balance, 6, 0, true) + " W (泵功率=” + String(pumpPower, 6, 0, true) + " W)");
end if;
, which needs to solve for nextIndex
[109] 16:05:06 符号 警告
[HeatingSystemWithBranches: 98:3-98:60]: Variable node_pressures[3] does not have any remaining equation to be solved in.
The original equations were:
Equation 233: node_pressures[startNode[29]] - node_pressures[endNode[29]] = pressure_losses[29], which needs to solve for pressure_losses[29]
Equation 225: node_pressures[startNode[28]] - node_pressures[endNode[28]] = pressure_losses[28], which needs to solve for pressure_losses[28]
Equation 217: node_pressures[startNode[27]] - node_pressures[endNode[27]] = pressure_losses[27], which needs to solve for pressure_losses[27]
Equation 209: node_pressures[startNode[26]] - node_pressures[endNode[26]] = pressure_losses[26], which needs to solve for pressure_losses[26]
Equation 201: node_pressures[startNode[25]] - node_pressures[endNode[25]] = pressure_losses[25], which needs to solve for pressure_losses[25]
Equation 193: node_pressures[startNode[24]] - node_pressures[endNode[24]] = pressure_losses[24], which needs to solve for pressure_losses[24]
Equation 185: node_pressures[startNode[23]] - node_pressures[endNode[23]] = pressure_losses[23], which needs to solve for pressure_losses[23]
Equation 177: node_pressures[startNode[22]] - node_pressures[endNode[22]] = pressure_losses[22], which needs to solve for pressure_losses[22]
Equation 169: node_pressures[startNode[21]] - node_pressures[endNode[21]] = pressure_losses[21], which needs to solve for pressure_losses[21]
Equation 161: node_pressures[startNode[20]] - node_pressures[endNode[20]] = pressure_losses[20], which needs to solve for pressure_losses[20]
Equation 153: node_pressures[startNode[19]] - node_pressures[endNode[19]] = pressure_losses[19], which needs to solve for pressure_losses[19]
Equation 145: node_pressures[startNode[18]] - node_pressures[endNode[18]] = pressure_losses[18], which needs to solve for pressure_losses[18]
Equation 137: node_pressures[startNode[17]] - node_pressures[endNode[17]] = pressure_losses[17], which needs to solve for pressure_losses[17]
Equation 129: node_pressures[startNode[16]] - node_pressures[endNode[16]] = pressure_losses[16], which needs to solve for pressure_losses[16]
Equation 121: node_pressures[startNode[15]] - node_pressures[endNode[15]] = pressure_losses[15], which needs to solve for pressure_losses[15]
Equation 113: node_pressures[startNode[14]] - node_pressures[endNode[14]] = pressure_losses[14], which needs to solve for pressure_losses[14]
Equation 105: node_pressures[startNode[13]] - node_pressures[endNode[13]] = pressure_losses[13], which needs to solve for pressure_losses[13]
Equation 97: node_pressures[startNode[12]] - node_pressures[endNode[12]] = pressure_losses[12], which needs to solve for pressure_losses[12]
Equation 89: node_pressures[startNode[11]] - node_pressures[endNode[11]] = pressure_losses[11], which needs to solve for pressure_losses[11]
Equation 81: node_pressures[startNode[10]] - node_pressures[endNode[10]] = pressure_losses[10], which needs to solve for pressure_losses[10]
Equation 73: node_pressures[startNode[9]] - node_pressures[endNode[9]] = pressure_losses[9], which needs to solve for pressure_losses[9]
Equation 65: node_pressures[startNode[8]] - node_pressures[endNode[8]] = pressure_losses[8], which needs to solve for pressure_losses[8]
Equation 57: node_pressures[startNode[7]] - node_pressures[endNode[7]] = pressure_losses[7], which needs to solve for pressure_losses[7]
Equation 49: node_pressures[startNode[6]] - node_pressures[endNode[6]] = pressure_losses[6], which needs to solve for pressure_losses[6]
Equation 41: node_pressures[startNode[5]] - node_pressures[endNode[5]] = pressure_losses[5], which needs to solve for pressure_losses[5]
Equation 33: node_pressures[startNode[4]] - node_pressures[endNode[4]] = pressure_losses[4], which needs to solve for pressure_losses[4]
Equation 25: node_pressures[startNode[3]] - node_pressures[endNode[3]] = pressure_losses[3], which needs to solve for pressure_losses[3]
Equation 17: node_pressures[startNode[2]] - node_pressures[endNode[2]] = pressure_losses[2], which needs to solve for pressure_losses[2]
Equation 9: node_pressures[startNode[1]] - node_pressures[endNode[1]] = pressure_losses[1], which needs to solve for pressure_losses[1]
Equation 1: algorithm
when initial() then
Modelica.Utilities.Streams.print(“=== 系统初始化 =", “”);
Modelica.Utilities.Streams.print(“节点数: 23”, “”);
Modelica.Utilities.Streams.print(“管道数: 29”, “”);
for i in 1:29 loop
assert(connectionMatrix[i,1] >= 1 and connectionMatrix[i,1] <= 23, “管道” + String(i, 0, true) + "起点节点无效: " + String(connectionMatrix[i,1], 0, true));
assert(connectionMatrix[i,2] >= 1 and connectionMatrix[i,2] <= 23, “管道” + String(i, 0, true) + “终点节点无效: " + String(connectionMatrix[i,2], 0, true));
end for;
end when;
when {time >= monitoringTimes[nextIndex]} then
Modelica.Utilities.Streams.print(”= 系统状态 @ " + String(time, 6, 0, true) + “s ===”, “”);
Modelica.Utilities.Streams.print(“主流量: " + String(flow_rates[1] * 3600.0, 6, 0, true) + " m³/h”, “”);
Modelica.Utilities.Streams.print(“泵功率: " + String(pumpPower / 1000.0, 6, 0, true) + " kW”, “”);
Modelica.Utilities.Streams.print(“能量平衡误差: " + String(abs(balance), 6, 0, true) + " W”, “”);
if nextIndex < 4 then
nextIndex := nextIndex + 1;
end if;
end when;
for i in 1:23 loop
assert(node_pressures[i] > 0.0 and node_pressures[i] < 2e6, “节点压力超出范围: P” + String(i, 0, true) + “=” + String(node_pressures[i], 6, 0, true));
end for;
if debugMode then
assert(abs(balance) < pumpPowerThreshold, “能量不平衡: Δ=” + String(balance, 6, 0, true) + " W (泵功率=” + String(pumpPower, 6, 0, true) + " W)");
end if;
, which needs to solve for nextIndex
[110] 16:05:06 脚本 错误
Translation of HeatingSystemWithBranches failed.
[1] 16:53:14 翻译 错误
[HeatingSystemWithBranches: 237:5-238:87]: Subscript ‘24’ for dimension 1 (size = 23) of node_elevations is out of bounds.
[2] 16:53:14 脚本 错误
Translation of HeatingSystemWithBranches failed.
一百多行警告怎么这么多bug呀