Python thermo库Mixture计算水/Ca(OH)2混合属性报错问题咨询
问题说明
使用Python thermo库计算石灰乳-水混合物属性时,执行如下代码触发TypeError: unsupported operand type(s) for /: 'float' and 'NoneType'报错:
from thermo.chemical import Mixture mix = Mixture(['water', 'Ca(OH)2'], Vfls=[.6, .4], T=300, P=1E5) print(mix.Cp)
排查发现库内Ca(OH)2的部分属性值为None,核心原因不是水和Ca(OH)2不能组成混合体系,是使用场景和参数传入不符合库的设计逻辑:
thermo.chemical.Mixture类的默认适用范围是均相流体混合物,即互溶液体、均相气体体系。石灰乳是Ca(OH)2固体颗粒分散在水中的多相悬浊液,本身不属于均相流体,不在该类的默认支持场景内。- 库内Ca(OH)2的流体相物性缺失是正常情况:常压下Ca(OH)2加热到580℃会直接分解为氧化钙和水,不存在常温下的稳定纯液态,因此库没有收录它的液态热容、液态密度等流体相参数,计算时读取到
None值就会触发类型错误。 - 传入的
Vfls(纯液体组分体积分数)参数不满足使用前提:该参数要求所有组分在计算条件下均为纯液态、且混合后体积符合加和性,常温下的Ca(OH)2根本不满足纯液态的前提。 - 热力学层面也不支持该参数设置:常温下Ca(OH)2在水中的溶解度仅为0.17g/100mL左右,你设置的40%体积分数远超过溶解度上限,体系中绝大多数Ca(OH)2都是固体颗粒,不存在“液态Ca(OH)2和水按体积比4:6混合”的状态。
可行计算方案
- 若要计算饱和澄清石灰水(Ca(OH)2完全溶解的均相低浓度溶液):将Ca(OH)2的摩尔分数/质量分数调整到常温溶解度范围内再传入
Mixture类,此时Ca(OH)2占比极低,整体物性接近纯水,不会触发参数缺失报错。 - 若要计算高固含量的石灰乳悬浊液:不能直接调用
Mixture类的均相混合计算逻辑,需要手动按多相加权规则计算:单独查询固态Ca(OH)2的热容、密度等固体物性,液相部分取饱和澄清石灰水的物性,再按固液两相的质量/体积占比加权计算混合物整体属性。
内容的提问来源于stack exchange,提问作者MikkelB
相关产品推荐
相关产品推荐

