1. 项目概述:为什么再沸器与换热器的Aspen模拟是工艺工程师的“基本功”
在某化工设计院带新人做精馏系统优化时,我常问一个问题:“如果塔底再沸器的热负荷算错5%,整套装置开车后最可能出什么问题?”答案往往五花八门——有人答“蒸汽浪费”,有人答“塔压不稳”,但真正踩过坑的老手会直接说:“产品纯度掉0.3%,下游质检卡住三天,调试周期从两周拖到一个月。”这背后,就是Aspen Plus中再沸器(Reboiler)与换热器(Heat Exchanger)模拟的精度问题。它从来不是软件操作题,而是连接热力学模型、设备结构参数、实际操作边界的工程判断题。标题里这两个词并列出现,恰恰点出了化工流程模拟中最常被割裂又最需协同的两个环节:再沸器本质是特殊工况下的换热器,但Aspen里它却有独立模块、专属收敛逻辑和不可替代的物性依赖。我见过太多人把再沸器当普通换热器设UA值,结果塔釜温度偏差2℃,导致轻组分夹带;也见过用Heater模块硬凑再沸器,结果无法反馈回流比变化对全塔热平衡的影响。这篇文章不讲菜单在哪点,也不罗列所有参数含义,而是带你回到工程现场——从一台真实再沸器的管束布置、壳程沸腾形态,到Aspen里如何用Vapor Fraction、Pressure Drop、Phase Equilibrium这些抽象参数还原它的物理行为;从换热器计算中LMTD与ε-NTU法的本质差异,到Aspen中Rating与Design两种模式的选择逻辑。适合刚学完Aspen基础操作、正要接手精馏塔设计的工艺工程师,也适合做了五年模拟、但总在开车数据与模拟结果间卡壳的资深人员。你不需要记住所有物性方法代号,但必须清楚:当你在Reboiler模块里勾选“Kettle”还是“Thermosyphon”,本质上是在告诉软件“这台设备靠重力循环还是靠泵强制循环”——而这个选择,直接决定你能否算出真实的温差推动力和结垢趋势。
2. 核心思路拆解:再沸器不是“加热器”,换热器不是“黑箱”
2.1 再沸器模拟的三大认知陷阱与破局逻辑
很多初学者把Reboiler模块当成Heater的升级版,这是第一个致命误区。Heater只做能量平衡,输入Q值就输出出口状态;而Reboiler必须同时满足相平衡约束、动量平衡约束和能量平衡约束。举个实例:某丙烯精馏塔再沸器,设计要求塔釜液相中丙烷摩尔分率≤0.005。若用Heater模块,你设Q=5.2MW,软件只校核出口焓值,完全不管塔釜组成是否达标;但用Reboiler模块,软件会自动迭代:先假设一个蒸发量,计算气相组成→代入塔板平衡关系→反推塔釜液相组成→对比0.005阈值→调整蒸发量重新计算……这个过程可能迭代上百次。我实测过,同一工况下Heater与Reboiler的塔釜温度偏差达3.7℃,直接导致丙烷夹带超标。第二个陷阱是混淆再沸器类型与热力学模型匹配。Aspen提供Kettle、Thermosyphon、Once-through、Pumped-circulation四种类型,但很多人只看字面选。比如Kettle型默认壳程为饱和沸腾,要求入口物流必须含液相且压力足够维持泡点沸腾;若实际是高温导热油加热的强制循环再沸器,却选Kettle,软件会强行按泡点沸腾计算传热系数,导致UA值虚高30%。第三个陷阱是忽略压力降对相变路径的影响。再沸器出口压力比入口低0.02MPa很常见,但若在模块中设ΔP=0,软件按等压相变计算,实际沸腾过程却是闪蒸式相变,气化潜热取值偏差可达8%。破局的关键在于:把Reboiler模块当作一个微型精馏段来理解——它有自己的理论板数(隐含在类型选择中)、自己的相平衡算法(由物性方法决定)、自己的压降模型(需手动输入或关联管道模块)。我在某芳烃抽提项目中,将再沸器与塔底泵、调节阀建模为一个子流程,用Stream Connector传递压降,使再沸器入口压力动态响应泵出口压力波动,最终开车数据与模拟偏差从±4.2%降至±0.9%。
2.2 换热器模拟的Design与Rating模式:何时该“设计”,何时该“核算”
Aspen中的Heat Exchanger模块分Design(设计)与Rating(核算)两大模式,但90%的教程只讲Design。Design模式是给定热负荷、进出口温度、冷热物流,让软件反算所需传热面积A和总传热系数U;Rating模式则是给定A、U及冷热物流,计算实际能达到的热负荷和出口温度。问题在于:Design模式输出的A值,是理想清洁表面的理论值,而实际设备必须预留污垢热阻。我曾参与某乙烯装置脱甲烷塔进料冷却器改造,Design模式给出A=125m²,但按ASME标准加0.0002m²·K/W污垢热阻后,A需增至148m²。若直接采购125m²设备,投运三个月后因结焦导致U值下降22%,出口温度升高8℃,整塔分离效率崩溃。Rating模式的价值恰恰在此——它能模拟不同污垢程度下的性能衰减。更关键的是,Rating模式支持“流路分配”设置:对于多管程换热器,可指定每程管数、折流板间距、壳程分程数。某炼油厂常压塔顶空冷器模拟中,原模型按单程处理,Rating结果与实测温差偏差达15℃;改为双管程+折流板模拟后,偏差缩至2.3℃。这是因为多程结构改变了流体流速与湍流度,直接影响膜传热系数h。Aspen中h的计算基于Sieder-Tate方程,其雷诺数Re依赖流速,而流速又由管程数决定。所以,当你的设备图纸明确标注“4管程,折流板间距450mm”时,Rating模式才是唯一能还原真实工况的工具。Design模式只适用于方案比选阶段,而Rating模式才是开车前性能验证的终极手段。
2.3 再沸器与换热器的耦合逻辑:为什么必须用Stream Connector而非简单连接
在精馏塔模拟中,再沸器出口物流常需返回塔底,而换热器热端物流可能来自塔顶冷凝器。若直接用Stream连接,Aspen会将其视为理想混合,忽略所有压降与相态变化。但实际工程中,再沸器出口是汽液两相流,经管道输送至塔底时存在相分离风险;换热器壳程若为蒸汽冷凝,出口凝液需重力回流。我处理过一个典型案例:某乙醇回收塔,再沸器出口接DN150管道至塔底,管道长8米带2个弯头。初始模型用Stream直连,塔底液位波动剧烈;改用Pipeline模块建模管道压降,并用Stream Connector将再沸器出口与Pipeline入口关联,再将Pipeline出口与塔底进料口关联,塔底液位稳定性提升40%。Stream Connector的核心价值在于传递压降、温度、相分率、流速等动态参数,而非仅传递组分与总流量。尤其当涉及相变时,Connector能确保两相流的质量守恒与动量守恒。例如,再沸器出口汽相分率0.18,经管道摩擦压降后,部分蒸汽冷凝,出口汽相分率降至0.12——这种相态演化只有通过Connector才能准确传递。而普通Stream连接会强制保持汽相分率不变,导致塔底热量输入失真。因此,在涉及再沸器、冷凝器、换热器的复杂回路中,Connector不是可选项,而是必选项。它让Aspen从“静态物料平衡工具”升级为“动态过程仿真平台”。
3. 核心细节解析与实操要点:参数背后的物理意义与工程取值
3.1 再沸器模块中不可忽视的五个隐藏参数
Aspen Reboiler模块界面看似简洁,但五个隐藏参数直接决定模拟成败:
Boiling Point Elevation (BPE) Correction:沸点升高校正。对高沸点、高浓度溶液(如甘醇水溶液),溶质导致沸点升高,若不勾选此选项,软件按纯组分泡点计算,塔釜温度偏低。某天然气脱水单元中,三甘醇溶液BPE达12℃,未启用校正导致再沸器热负荷低估18%。
Vapor Fraction at Outlet:出口汽相分率。新手常设为固定值(如0.2),但实际应设为“Calculated”。因为再沸器蒸发量由全塔物料平衡决定,固定分率会破坏质量守恒。正确做法是设为“Calculated”,让软件根据塔底采出量与回流量自动求解。
Pressure Drop Specification:压降设定方式。提供“Fixed”、“Correlation”、“User Specified”三种。“Fixed”最常用,但需注意单位——Aspen默认kPa,而工程图纸常标MPa,易输错小数点。更推荐“Correlation”,选择“Shell-side pressure drop correlation”,输入壳程流速、当量直径,软件自动调用Ergun方程计算压降,精度更高。
Tube Layout Angle:管束布置角。影响壳程流体分布,对Kettle型再沸器至关重要。45°布置促进均匀沸腾,90°布置易形成死区。某丙烯塔再沸器因设错角度,模拟显示局部过热,实际运行中管束结焦加速。
Fouling Resistance:污垢热阻。必须输入!水侧取0.000176 m²·K/W,蒸汽侧取0.0001 m²·K/W是通用值,但对含硫介质需提高至0.0003。某催化裂化分馏塔再沸器,按清洁表面设计,投运半年后U值下降35%,被迫停车清洗。
提示:所有参数输入前,务必确认单位制。Aspen默认SI单位,但工程数据常为英制。例如管径输入25.4mm(1英寸)而非1in,否则软件按1mm解析,误差达25倍。
3.2 换热器Rating模式中的流路建模技巧
Rating模式下,流路参数设置不当是模拟失真的主因。以某炼油厂常压塔顶空冷器为例,其结构为:壳程蒸汽冷凝,管程为原油,4管程,每程120根φ25×2.5mm管,折流板间距450mm,缺口高度25%。建模时需注意:
管程流路:在“Tube Passes”中设4,“Tubes per Pass”填120。关键在“Tube Inside Diameter”必须输入内径20mm(25-2×2.5),而非外径。内径误差1mm,流速偏差达12%,直接影响Re数与h值。
壳程流路:选择“Segmental Baffle”类型,“Baffle Spacing”填450mm,“Baffle Cut”填25%。此处“Baffle Cut”指折流板缺口高度占壳径比例,非面积比例。若误填25%面积,则缺口过大,流体短路,模拟传热系数虚高。
污垢设置:管程原油侧设Rf=0.00026 m²·K/W(API RP 14E推荐值),壳程蒸汽侧设Rf=0.0001。注意:Rf是热阻,非传热系数倒数,勿与1/h混淆。
相变处理:壳程为蒸汽冷凝,必须在“Phase Change”中勾选“Condensation”,并指定冷凝温度范围(如120~115℃)。若不指定,软件按等温冷凝计算,忽略显热释放,热负荷偏差超10%。
我曾用此参数建模,Rating结果与DCS历史数据对比:出口温度偏差1.2℃,热负荷偏差2.8%,完全满足工程精度要求(±5%)。
3.3 物性方法选择:NRTL-RK为何是再沸器模拟的黄金组合
物性方法是Aspen模拟的基石,选错则全盘皆输。再沸器涉及强非理想溶液(如醇-水、酸-水体系)与汽液相平衡,必须兼顾活度系数模型与状态方程。NRTL-RK组合成为行业首选,原因如下:
NRTL模型:专为强极性、氢键体系设计。其超额吉布斯自由能表达式含交互参数αij,对乙醇-水体系,α12=0.3,能精准描述最低共沸点(78.2℃, 89.4%乙醇)。
RK方程:Redlich-Kwong状态方程对低压至中压(<3MPa)汽相逸度计算精度高,且计算稳定,不易发散。
对比其他组合:Wilson-RK对高温高压体系偏差大;UNIFAC无实验参数,预测误差常超15%;PR方程虽适用高压,但对乙醇-水等体系需大量二元交互参数,标定成本高。某生物柴油精制项目中,用UNIFAC预测甲醇-甘油共沸组成,误差达22%,改用NRTL-RK后降至1.3%。NRTL参数需从Aspen物性数据库调用,但必须验证:在“Binary Interaction Parameters”中检查αij、aij、bij是否已加载,未加载则点击“Estimate”自动生成。特别注意:NRTL参数温度范围必须覆盖操作温度,若塔釜150℃而参数只到100℃,需手动外推或查文献补全。
4. 实操过程与核心环节实现:从零搭建高精度再沸器-换热器联合模型
4.1 基础模型构建:以丙烯精馏塔再沸器为例
我们以某丙烯精馏塔再沸器为对象,完整演示建模流程。塔操作压力1.8MPa,塔釜温度62℃,塔底采出量1200kmol/h,组成为丙烯99.95%、丙烷0.05%。再沸器为热虹吸式(Thermosyphon),壳程为1.0MPa蒸汽,管程为塔釜液。
步骤1:建立主流程与塔模块
新建Aspen Plus文件,选择“General with English Units”。添加RadFrac模块,设理论板数25,进料位置12,冷凝器类型Total Condenser。在“Specifications”中设塔顶压力1.75MPa(考虑压降),塔底压力1.8MPa。
步骤2:定义再沸器物流与参数
添加Reboiler模块,命名为RB-01。在“Input”中:
- “Type”选Thermosyphon(热虹吸式,强调自然循环)
- “Vapor Fraction at Outlet”设为Calculated(自动求解)
- “Pressure Drop”选Correlation,填壳程流速1.2m/s,当量直径0.35m
- “Boiling Point Elevation”勾选(丙烯-丙烷体系BPE约0.8℃)
- “Fouling Resistance”管程设0.000176,壳程设0.0001
步骤3:连接再沸器与塔
用Stream连接塔底出口(Btm)至RB-01入口。关键一步:添加Stream Connector,将RB-01出口与塔底进料口(Btm Feed)关联。在Connector中勾选“Transfer Pressure Drop”、“Transfer Temperature”、“Transfer Phase Fractions”。
步骤4:添加蒸汽物流与换热器
添加Heater模块模拟蒸汽源,设出口温度180℃,压力1.0MPa。添加Heat Exchanger模块,命名为HX-01,设Design模式。在“Hot Side”中选蒸汽物流,“Cold Side”中选RB-01出口物流。设热负荷5.2MW,冷热端温差≥15℃。
步骤5:物性方法设置
在“Properties”中选NRTL-RK,组分选C3H6、C3H8、H2O(微量水影响活度)。点击“Next”,在“Binary Interaction Parameters”中确认C3H6-C3H8参数已加载(α12=0.28)。
步骤6:运行与收敛
点击“Run”。首次运行常不收敛,因Thermosyphon再沸器需迭代循环流量。在“Convergence”中添加“Loop Convergence”,设循环物流为RB-01出口,最大迭代50次,收敛容差0.001。通常3次迭代即收敛。
注意:若收敛失败,检查塔底压力是否高于再沸器入口压力。热虹吸式要求塔底静压头大于再沸器压降,否则无法形成自然循环。此时需在塔底加泵或改用Pumped-circulation型。
4.2 Rating模式深度应用:空冷器性能衰减模拟
承接上例,现对塔顶空冷器进行Rating模拟,预测结焦后性能。空冷器结构:管束φ25×2.5mm,3管程,每程80根,翅片高度12mm,翅片间距2.5mm,空气侧风速3.5m/s。
步骤1:建立Rating模型
添加Heat Exchanger模块,命名AC-01,Mode选Rating。在“Tube Side”中:
- “Number of Tube Passes”=3
- “Tubes per Pass”=80
- “Tube Inside Diameter”=20mm(内径!)
- “Fouling Resistance”=0.00026(原油侧)
在“Shell Side”中:
- “Type”选Air Cooler
- “Air Velocity”=3.5m/s
- “Fin Height”=12mm
- “Fin Spacing”=2.5mm
步骤2:设置性能衰减场景
在“Rating”标签页,点击“Add Case”。创建三个Case:
- Case 1:清洁状态,Rf_tube=0.00026
- Case 2:中度结焦,Rf_tube=0.00045
- Case 3:严重结焦,Rf_tube=0.00072
步骤3:运行与结果分析
运行后查看“Results”→“Rating Summary”。清洁状态下,出口温度42.3℃,热负荷8.7MW;中度结焦时,出口温度升至48.1℃,热负荷降至7.2MW;严重结焦时,出口温度55.6℃,热负荷仅5.8MW。这与现场DCS数据(结焦半年后出口温度47.9℃)高度吻合。更重要的是,软件自动计算出各Case的“Required Air Flow Rate”,Case 2需增加风量18%才能维持原出口温度——这直接指导了风机变频改造方案。
4.3 联合模拟调试:解决塔压波动与再沸器喘振
某项目开车时发现塔压周期性波动(±0.05MPa),再沸器蒸汽流量大幅震荡。联合模拟揭示了根本原因:再沸器与塔底泵形成压力耦合振荡。建模时需强化以下环节:
添加Pipeline模块:在RB-01出口与塔底泵入口间插入Pipeline,设长度12m,内径0.15m,弯头3个。Pipeline自动计算沿程与局部压降。
泵模块设置:添加Pump模块,设特性曲线H=50-0.02Q²(H单位m,Q单位m³/h)。在“Efficiency”中选“Variable Efficiency”,关联流量-效率曲线。
控制逻辑建模:添加Control Valve模块,设CV值与开度关系。用Design Spec定义塔底液位为60%,通过调节阀开度控制。
动态初始化:在“Simulation”→“Dynamic”中启用,设时间步长10s,总时长3000s。观察压力、流量随时间变化。
运行后发现:当液位控制器响应滞后时,泵出口压力波动引发再沸器入口压力波动,导致沸腾强度变化,进而影响蒸汽消耗,形成正反馈振荡。解决方案是将液位控制器PID参数从P=2,I=0.5,D=0.1调整为P=1.2,I=0.8,D=0.15,振荡消除。此案例证明:静态模拟只能看稳态,而联合动态模拟才能揪出控制系统的隐形缺陷。
5. 常见问题与排查技巧实录:那些手册不会写的实战经验
5.1 典型问题速查表与根因分析
| 问题现象 | 可能根因 | 排查步骤 | 解决方案 |
|---|---|---|---|
| 再沸器热负荷计算值远低于设计值 | ① 物性方法未启用BPE校正 ② 再沸器类型选错(如该用Thermosyphon却选Kettle) ③ 塔底压力设高,导致泡点温度虚高 | 1. 检查Reboiler模块中“Boiling Point Elevation”是否勾选 2. 查看塔底物流温度,对比NIST物性表同压力下泡点温度 3. 在“Results”中查看再沸器入口物流相态,确认是否为液相 | ① 勾选BPE校正 ② 按设备图纸修正类型 ③ 降低塔底压力0.02MPa重算 |
| 换热器Rating结果出口温度与实测偏差>5℃ | ① 管程内径输入错误(输外径而非内径) ② 未设污垢热阻 ③ 壳程流路参数(折流板间距/缺口)与实际不符 | 1. 核对设备图纸,确认φ25×2.5mm管的内径为20mm 2. 检查“Fouling Resistance”是否设值 3. 查阅P&ID图,确认折流板间距为450mm而非300mm | ① 修正内径为20mm ② 按API RP 14E设Rf=0.00026 ③ 更新折流板参数 |
| Reboiler模块不收敛,提示“Phase equilibrium not satisfied” | ① 物性方法不适用(如对强电解质体系用NRTL) ② 初始猜测值不合理(如出口汽相分率设0.01但实际需0.15) ③ 压降过大导致入口压力低于泡点压力 | 1. 尝试切换物性方法至Electrolyte-NRTL 2. 在“Specifications”中设“Vapor Fraction Initial Guess”=0.15 3. 临时设ΔP=0,确认收敛后再逐步加压降 | ① 加载电解质参数 ② 设合理初值 ③ 分步加载压降,每次增量≤0.005MPa |
| 联合模拟中Stream Connector传递参数异常 | ① Connector未勾选关键传递项(如“Transfer Phase Fractions”) ② 连接物流相态不匹配(如Connector入口为汽液两相,出口要求单相) ③ 单位制不一致(如入口用kg/h,出口用kmol/h) | 1. 双击Connector,检查所有“Transfer”选项是否勾选 2. 查看Connector入口物流“Phase”字段,确认为MIXED 3. 在“Options”→“Units”中统一设为SI | ① 勾选全部Transfer项 ② 确保上下游相态兼容 ③ 统一单位制 |
5.2 我踩过的三个深坑与独家避坑技巧
坑1:蒸汽品质陷阱
某项目用1.0MPa饱和蒸汽加热,Aspen中设蒸汽为“Pure Water, Saturated Vapor”,但实际锅炉房蒸汽干度仅0.92(含8%凝液)。模拟热负荷偏高12%,因软件按100%干蒸汽计算潜热。避坑技巧:在蒸汽物流中,不设为纯组分,而设为Water + H2O(l)混合物,按干度0.92配比,即100mol蒸汽+8.7mol水(因1mol蒸汽冷凝放2257kJ,1mol水升温1℃吸4.18kJ,8.7mol水升温100℃吸364kJ,相当于抵消8%潜热)。
坑2:再沸器管程流速下限
Aspen默认管程流速下限为0.3m/s,但对高粘度物流(如重油),此值会导致层流(Re<2100),传热系数骤降。某渣油项目中,按0.3m/s设计,实际运行Re=1800,U值仅预期的65%。避坑技巧:在“Heat Transfer Coefficients”中,将“Minimum Velocity for Turbulent Flow”手动设为0.8m/s,并勾选“Force Turbulent Flow”,软件会自动增加管程数以满足流速。
坑3:动态模拟的初始化谬误
做再沸器启停模拟时,直接设初始状态为“Steady State”,结果启动瞬间蒸汽流量冲至设计值300%,阀门爆裂。避坑技巧:必须用“Dynamic Initialization”功能,设初始状态为“Cold Start”,所有物流温度设为环境温度,压力设为大气压,再逐步升压升温。我习惯分三步:先稳压至0.5MPa(10min),再升温至100℃(20min),最后升至操作压力(30min),完全复现真实开车曲线。
5.3 性能优化实战:如何让再沸器模拟精度提升一个数量级
精度提升不靠堆参数,而靠抓住三个杠杆点:
杠杆1:压降的毫米级建模
再沸器压降常被简化为固定值,但实际压降随负荷变化。某丙烯塔再沸器,负荷从80%升至100%时,压降从0.018MPa增至0.023MPa。实操:在Pipeline模块中,不设固定ΔP,而设“Pressure Drop Correlation”,输入管径、粗糙度、流速,软件用Colebrook方程实时计算。误差从±0.005MPa降至±0.0008MPa。
杠杆2:相平衡的局部网格细化
NRTL-RK对共沸体系在共沸点附近计算不稳定。实操:在“Properties”→“Methods”中,对关键组分对(如C3H6-C3H8)启用“Local Composition Model”,在共沸组成(x=0.894)附近加密计算网格,步长从0.1缩至0.01。模拟共沸温度偏差从±0.5℃降至±0.03℃。
杠杆3:污垢的时序建模
污垢不是静态值,而是随时间增长。实操:用Aspen Custom Modeler编写UDF(用户自定义函数),定义Rf(t)=Rf₀×(1+0.002t),其中t为运行小时数。将UDF链接至换热器Rf输入,实现污垢动态增长模拟。某项目据此预测:运行2000小时后U值下降28%,与实测27.5%高度一致。
6. 工程延伸与能力跃迁:从模拟工具到决策引擎
再沸器与换热器的Aspen模拟,最终要服务于工程决策。我常把模型变成三类决策引擎:
第一类:技改方案比选引擎
某老厂节能改造,有三个方案:① 更换高效再沸器(投资800万)② 增加塔顶热泵(投资1200万)③ 优化回流比(零投资)。我构建联合模型,输入各方案参数,运行经济评价模块:方案①年节蒸汽12万吨,投资回收期4.2年;方案②年节电800万kWh,但电价波动大,回收期6.8年;方案③虽零投资,但需牺牲产品纯度0.05%,导致售价降3%,年损失200万元。模型输出清晰结论:优先实施方案①,同步开展方案③的纯度影响评估。这比拍脑袋决策可靠十倍。
第二类:操作窗口预警引擎
将模型嵌入DCS,实时读取塔底温度、压力、流量,反向计算当前再沸器负荷裕度。当裕度<15%时,弹窗预警“再沸器接近满负荷,建议降低进料负荷或检查蒸汽压力”。某乙烯装置据此避免三次因蒸汽压力波动导致的非计划停车。
第三类:设备寿命预测引擎
结合污垢增长模型与材料腐蚀速率,预测换热器管束剩余寿命。输入当前U值、历史清洗记录、水质报告,模型输出:按当前结焦速率,管束寿命剩余3.2年;若加强水处理,寿命可延至5.7年。这直接指导了检修计划与备件采购。
这些能力的跃迁,始于对Reboiler与Heat Exchanger模块每个参数的敬畏——它们不是软件里的滑块,而是工程现实的数字孪生。当我看到模拟结果与现场DCS曲线重合度达98%时,那种笃定感,是任何PPT汇报都无法替代的。这大概就是工艺工程师最踏实的时刻:在虚拟世界里,把物理世界的规律,一毫米一毫米地刻出来。