test {
let result = @moonbit_extractor.single_stage_constant_k(
feed_flow=100.0,
feed_concentration=0.1,
solvent_flow=50.0,
distribution=2.0,
)
assert_true(result.recovery.is_close(0.5))
}
直接使用子包也可以获得更清楚的领域边界:
domain:组成、平衡点、联络线和错误类型
interpolation:线性表与相平衡表
liquid:液液萃取物料衡算
leaching:固液浸取与洗涤
ternary:三元相图几何和杠杆规则
stages:图解级数计算
data:CSV 数据读取
design:溶剂量反算、流程比较和局部灵敏度
analysis:批量情景、统计汇总、衡算审计和不确定度包络
表格相平衡
test {
let points = [
@domain.EquilibriumPoint::new(x=0.0, y=0.0),
@domain.EquilibriumPoint::new(x=0.1, y=0.2),
@domain.EquilibriumPoint::new(x=0.2, y=0.3),
]
let equilibrium = @interpolation.EquilibriumTable::new(points)
let result = @liquid.single_stage_table(
feed_flow=100.0,
feed_concentration=0.1,
solvent_flow=50.0,
equilibrium~,
)
assert_true(result.balance_residual.abs() < 1.0e-8)
}
moonbit-extractor
GitHub:zhaoyuanjuns/moonbit-extractor
GitLink:zyjzyj78/moonbit-extractor
moonbit-extractor是一个用 MoonBit 编写的萃取分离计算工具箱,面向化工教学、实验数据整理和工艺方案初算。它把液液萃取、固液浸取和三元相图中常见的计算过程整理成可复用库,并提供一个可脚本化的命令行程序。项目只处理平衡级模型,不替代严格热力学模拟。使用实测相平衡数据时,结果的可靠性取决于数据范围、基准和实验质量。
功能
环境
项目按 MoonBit 工具链
moonc v0.10.3验证,CI 也固定使用该版本,避免包描述格式随工具链升级产生非预期差异。确认本机版本:拉取源码后执行:
CLI 使用 native 后端,需要系统中有 C 编译器:
快速计算
分配系数
其中
x=0.10、y=0.40,输出K_D = y/x = 4。单级液液萃取
参数依次为载体相流量
L、进料浓度xF、溶剂相流量V、分配系数K,可再给出入口溶剂浓度yS。上述算例得到x=0.05、y=0.10,溶质回收率为 0.5。逆流多级萃取
这里使用两个理想级。CLI 会列出各级平衡浓度、出口浓度、回收率和总物料衡算残差。
固液浸取
参数依次为不溶性干固体质量
B、初始附液质量M0、初始溶质分数x0、洗液质量W、持液比R,可再给出洗液溶质分数xW。McCabe–Thiele 线性平衡级数
命令输出理论级数和逐级踏步点。非线性相平衡请从库 API 构造
EquilibriumTable后调用mccabe_thiele_stages。溶剂量方案比较
输出达到同一萃余相目标时,单级、三段等量错流和三级逆流所需的溶剂量。比较基于理想平衡级;放大设计还应计入级效率和安全裕量。
局部灵敏度
输出回收率对溶剂流量和分配系数的中心差分归一化灵敏度,并对一组分配系数情景执行物料衡算审计。
库 API 示例
依赖项目在
moon.pkg中导入根包后,可以通过门面 API 完成常用计算:直接使用子包也可以获得更清楚的领域边界:
domain:组成、平衡点、联络线和错误类型interpolation:线性表与相平衡表liquid:液液萃取物料衡算leaching:固液浸取与洗涤ternary:三元相图几何和杠杆规则stages:图解级数计算data:CSV 数据读取design:溶剂量反算、流程比较和局部灵敏度analysis:批量情景、统计汇总、衡算审计和不确定度包络表格相平衡
CSV 格式见 examples/equilibrium-linear.csv 和 examples/tie-lines-synthetic.csv。示例数据是为测试构造的无量纲数据,不代表具体物系。
计算基准和假设
液液萃取 API 默认使用一致的无溶质基准:
L是载体相或萃余相的无溶质流量;V是溶剂相的无溶质流量;x、y是每单位对应无溶质相所含的溶质量;y*(x);固液浸取模型假定溶质完全溶解在液相,级内液相浓度均一,溢流不含不溶性固体,底流按固定持液比带出溶液。若物料存在吸附平衡、可溶惰性组分或持液比随浓度变化,应建立更合适的模型。
算法推导、输入约束和适用边界见 docs/ALGORITHMS.md。
数据要求
相平衡表的
x必须严格递增,默认禁止超出数据范围外推。调用者可以明确选择截断或线性外推,但工艺计算中应优先补充数据而不是依赖外推。三元组成按“载体、溶质、溶剂”排序,三个分数都应非负且总和为 1。联络线 CSV 的列顺序为:
开发检查
CI 还会构建 native CLI 并运行几个烟雾算例。提交公开仓库前请先阅读 docs/RELEASE_CHECKLIST.md。
项目状态
当前版本为
0.1.0。核心范围已经可运行,后续计划包括:来源和许可证
本项目为原创 MoonBit 实现,不是对现有软件库的移植。公式属于化工原理中的通用物料衡算和几何关系;实现来源、生态检索和示例数据说明见 docs/SOURCES.md。
源码采用 Apache License 2.0。