简介:这是一份聚焦Factsage软件实际应用的专题培训课件,适合材料科学、冶金工程、耐火材料等领域的研究人员、工程师及高校师生。课件共1个PPT文件,约2.59MB,虽体量不大,但内容系统完整,围绕反应热力学计算、多相平衡、相图计算及热力学在材料研发中的应用展开,还梳理了FToxid、FTsalt、FThall、FThelg、FTmisc等常用数据库,并结合析晶分析、Scheil凝固计算、封闭与开放系统等典型功能进行了演示说明。资料源自武汉科技大学先进耐火材料技术研究所(ARTI)的深入应用总结,讲解贴近科研与工艺场景,能够帮助使用者快速掌握利用Factsage开展热力学分析、理解相平衡与相图数据、优化材料设计和工艺参数的方法。目前已有2384人学习下载,对于刚接触该软件或希望系统提升热力学计算能力的学习者是份不错的参考资料。
1. Factsage软件的使用,不是打开一个画图工具那么简单
很多接触过Factsage软件的使用培训课件的同行,第一印象是“这软件画的相图真漂亮”。但实际上,把Factsage当成画相图的工具,是最大的误区。它真正值钱的是背后的热力学平衡计算:给定成分、温度、压力,软件通过最小化体系总Gibbs自由能,算出体系最终稳定存在哪些相、各相占比多少、成分如何。这解决的是冶金渣系设计、合金成分优化、材料烧结反应预测、腐蚀产物分析这类“实验做起来又贵又慢”的问题。适合冶金、材料、化工、地质背景的从业者和研究生,需要一点热力学基础,但不需要会编程。接下来的内容,我把模块功能、计算参数、数据库选择到常见坑全部拆开讲,照着做就能跑通你的第一个体系。
2. 认识平台与数据流:Factsage 六大模块和一次计算的数据走向
Factsage 这套软件不是单程序,它是多个模块共享一套热力学数据库的集合。我第一次用的时候也以为装完只有一个图标,结果桌面上冒出来六七个可执行程序,一下就懵了。把这几个模块的关系搞清楚,后面操作才不会点错入口。
2.1 六大模块各管什么:Equilib、Phase Diagram、Reaction、Mixture、OptiSage、Viscosity
我按实际使用频率把这几个模块分成三档。
第一档是 Equilib 和 Phase Diagram。Equilib 做平衡计算,给定反应物、温度、压力,算出平衡状态下各相组成和数量,这是最常用的入口;Phase Diagram 做二元、三元、四元相图,本质上是把 Equilib 在不同成分、温度下算出来的平衡结果画成图。第二档是 Reaction 和 Mixture。Reaction 针对化学反应方程,可以快速得到反应的焓变、熵变、吉布斯自由能和平衡常数,适合查“某温度下这个反应到底能不能自发进行”;Mixture 专门处理多组分混合物的热力学性质,比如混合焓。第三档是 OptiSage 和 Viscosity,前者做热力学数据优化评估,是数据库开发者的工具,普通用户不要碰;后者算熔体粘度,对冶金熔渣研究比较有用。
选模块的核心逻辑是:想画图找 Phase Diagram,想知道某个具体成分点在指定温度下变成什么样找 Equilib,想快速评估一个反应能不能发生找 Reaction。这三个模块共享同一套数据库,计算结果一致,只是呈现方式不同。
2.2 从数据库到结果:一次计算的数据走向
不管哪个模块,一次计算的数据走向都是固定的:选数据库 → 录入输入条件 → 调用计算引擎 → 输出结果文件。理解这条链对排查问题很有帮助,因为大多数报错都出在前两步。
下面用一个最小操作练习说明,这里以 Equilib 模块为例,目标是算 100 g Al-4%Cu 合金在 400 °C 下的平衡相组成。
第一步,打开 Equilib 模块,界面会要求先选择数据库。新手最常犯的错是直接点默认数据库,结果后面报“相缺失”。第二步,在 Reactants 标签下录入反应物:Al 96 g、Cu 4 g,状态选 Solid。第三步,在 Conditions 标签下设置温度 400 °C,压力保持 1 atm,单位体系选 Mass(质量),不需要设置产物。第四步,点击 Calculate,等待计算完成。第五步,在 Results 标签下查看输出,通常是一个列表,列出平衡时存在的相、各相的摩尔数或质量、相中各组分的活度。
这段流程里的关键参数是温度单位和压力单位。Factsage 默认温度单位是摄氏度,但热力学公式里内部用的是开尔文,你不需要手动换算,界面会处理,但你要注意自己输入的数据是不是同一个温标下取的。压力默认是 1 atm,不需要动,除非你特意研究高压或真空条件。单位体系选 Mass 或 Mole 会直接影响反应物录入方式,用质量更直观,选 Mole 则适合从摩尔配比开始的场景。
3. 用 Phase Diagram 算出第一张二元相图:参数清单和结果判读
相图是 Factsage 使用最多的功能,也是培训课件里篇幅最大的一块。我拿 Al-Cu 二元体系举例,因为这个体系数据成熟、相关系不复杂、凝固过程里还有典型的共晶反应,算完以后可以和教材上的实验相图对比,验证软件结果是否合理。
3.1 选定体系与数据库:为什么 Al-Cu 适合新手
打开 Phase Diagram 模块,第一步是选组元和数据库。组元就是你的体系成分,Al-Cu 只有两个组元,直接添加即可。数据库这里要讲清楚:Factsage 的数据库是分体系的,主要分为合金库、氧化物库、盐库、熔渣库等。Al-Cu 属于合金体系,选合金库里的 FTlite 数据库(如果你用的是教育版,部分库可能被裁剪,选择时留意库名前缀)。
数据库选错是最隐蔽的问题。比如你想算氧化物渣系,结果用了合金库,计算时软件找不到稳定的氧化物相,会直接忽略渣相,导致结果完全偏离实际。我见过不止一个同学把 FTlite 当万能库用,算钢渣反应直接翻车。选择原则就一句话:体系里有金属就用合金库或通用库,有氧化物、渣相就用氧化物库,有熔盐就用盐库。多组分体系可能同时需要多个库,Phase Diagram 模块允许同时勾选多个数据库,勾选后软件会按优先级调用。
3.2 参数设置:温度范围、压力、坐标轴、步长
选定组元和数据库后,进入坐标轴设置。纵轴一般选温度,横轴选成分。以 Al-Cu 为例,横轴设为 Cu 的质量分数,范围 0 到 1;纵轴温度范围设 300 °C 到 1100 °C,这个范围能覆盖 Al 的熔点(660 °C)和 Cu 的熔点(1084 °C),也能看到液相线完整走向。压力保持 1 atm 不变。
步长设置容易被忽略。Phase Diagram 内部是做网格扫描,然后计算每个节点的平衡状态,步长越小,相界线越精细,但耗时成倍增加。我的经验是:先跑 1 wt% 步长看整体轮廓,找到相界区域后再用 0.1 wt% 步长局部细化。温度步长同理,液相线附近如果感觉不平滑,单独加密温度轴。输出结果一般是一张图和一个文本结果文件。
参数表:
| 参数 | 新手推荐值 | 说明 |
|---|---|---|
| 横轴变量 | Cu 质量分数 | 范围 0~1,可调 |
| 纵轴变量 | 温度 | 范围 300~1100 °C |
| 压力 | 1 atm | 常压计算 |
| 步长 | 1 wt%,再局部加密 | 先粗后细 |
| 数据库 | FTlite | 合金体系别用氧化物库 |
算出来的相图怎么判读?单相区、两相区、三相线在图上会有明显边界;液相线以上全部是 Liquid,液相线以下是 Solid + Liquid 共存区,再往下是完全固相区。Al-Cu 在约 548 °C 处有一条水平线,这是共晶反应线,Al 侧成分约 Cu 33 wt%。如果你算出的共晶温度和教材对不上,不要先怀疑软件,检查数据库版本、压力设置和步长是否合理。
4. 用 Equilib 算多元平衡:配料、温度、活度与相比例
Phase Diagram 解决的是“这个成分点在某个温度变成什么”,Equilib 解决的是“我把这几样东西放在一起,给定温度和压力,最终会变成什么”。后者更贴近实际工艺条件,比如一个含有 Fe、O、Al、Si 的体系,平衡后渣、金属相、气相各占多少。
4.1 反应物配料怎么设置:气液固三相的坑
Equilib 的反应物录入在 Reactants 标签下。这里有两个新手必踩的坑。
第一个坑是状态没选对。同样是 Fe,你输入 Fe(Solid)和 Fe(Liquid),计算结果完全不同。如果你不确定室温下加进去的原料是什么状态,直接让气相作为默认出口,把凝聚相状态按常识填。第二个坑是反应物里要不要加“过量空气”。很多冶金体系需要氧化性气氛,比如计算钢液与炉渣的平衡,你必须在反应物里输入 O2,否则体系里没有氧元素来源,氧化物相根本析出不了。我一般会在反应物里加固定质量的 O2,然后让软件自动判断气相是否出现。
配料单位建议统一用质量(g),尤其是从实验配料方案直接换算时。如果从摩尔配比出发,可以切到 Mole 模式。输入完成后,Conditions 标签里设置温度、压力。温度可以是单一温度,也可以设一个温度范围;设范围时软件会输出各温度下的平衡结果,适合看某个相随温度的变化趋势。
这里有一个容易忽略的选项:绝热计算。Equilib 默认是等温等压计算,即体系被恒定在设定的温度,反应的吸热放热不影响温度。如果你要模拟的是反应放热导致温升的真实过程,需要勾选 Enthalpy 条件,把温度改为绝热,让软件算出绝热温度。新手不建议一上来用绝热,先把等温算明白,再进阶。
4.2 结果的判读与导出:哪些数字能信
点 Calculate 后,Results 界面会列出平衡相。以 Fe-O-Al 体系为例,通常输出有 Slag、Metal、Gas,每个相下面有相比例(mol 或 mass)、各组分活度、成分。需要相信的是相比例和主要成分,不太能信的是极微量组分的活度,因为数据库的 Gibbs 自由能数据在稀释区误差可能很大。
结果导出有两种方式:直接复制表格,或者生成文本结果文件。做后续绘图或者批量对比时,建议导出成文本再处理。结果文件里每行是相的编号、相名、组分、摩尔分数,格式比较规整,用脚本批量提取很方便,这部分我放到第 6 章讲。
如果计算结果出现“只有纯物质相,没有固溶体相”,大概率是数据库选错了,或者组分之间的溶解度被简化处理了。Factsage 里的固溶体相是用溶液模型描述的,同一个相名在不同数据库中模型参数不同,换一个数据库结果差异可能很大。这就是为什么我强调选库比设参数更重要。
5. 新手最容易踩的 5 个 Factsage 坑:现象、原因与解法
这部分是我自己从头学这个软件一点一点攒下来的问题清单,也是培训时学员反馈频率最高的问题。每一个都是“现象 → 原因 → 解决”的结构,可以直接对号入座。
5.1 坑一:选定数据库后找不到目标体系或组元
现象:在 Phase Diagram 里选完数据库,添加组元时怎么搜都搜不到 Fe、Al 这种常见元素。
原因:数据库列表里勾选的是“纯物质数据库”,而不是“溶液数据库”。FTlite、FToxide 这些库包含溶液相,而 Pure Substance 库只含纯物质,两套库经常被人混在一起选。
解决:回到数据库选择界面,确认你勾选的是带完整体系名的数据库,而不是单独的纯物质库。一般选择 FTlite 或 FTmisc 这种库,组元列表会完整很多。注意:勾选数据库时看名字前面的复选框,看不清可以展开看包含哪些体系。
5.2 坑二:算出来的相和实验完全对不上,或者平衡相明显违背常识
现象:某同学算一个含铁氧化物的渣系,平衡结果全是金属铁和气相,渣相完全消失。实验明明得到的是渣。
原因:数据库中没有稳定的氧化物液相模型,或者你输入的反应物里氧的量不够,金属氧化物被还原了。实际上体系没有还原剂,是数据库缺失导致 Fe2O3 无法进入渣相模型。
解决:换用 FToxide 数据库,同时检查反应物中 O2 的输入量。用一个笨办法验证:查一下你是不是在 Results 里看到 FeO 活度是 0,如果是,说明渣相模型没被调用。解决的方式是手动把数据库切换成 FToxide,再重新计算。
5.3 坑三:计算报错“不收敛”或者一直转圈
现象:点 Calculate 后长时间无响应,最后弹出一个不收敛的提示,或者直接被某种中间相干扰导致计算中断。
原因:多半是成分点落在多相平衡的临界区,或者是温度/成分步长太大,初始猜测值离真实解太远。常见于液-液不混溶区,比如氧化物体系里的 SiO2 饱和区和熔盐体系的相分离区。
解决:先缩小温度范围,把步长调粗,算出大致区域后局部加密;或者在 Equilib 里把 Initial Guess 选项开起来,多试几次。实在不行,换一组初始条件,比如从高温单相区开始逐渐降温,逐步逼近目标点。
5.4 坑四:结果文件里全是“×××”或者乱码
现象:打开文本结果文件,里面一些组分名是乱码、星号或者不可读字符。
原因:Factsage 在不同语言环境下输出的字符编码不一致,尤其是把结果复制到 Windows 记事本时常见。GUI 里显示正常,但导出文本用其他工具打开就乱了。
解决:不要用记事本,用带编码识别功能的编辑器打开,比如 VS Code 或者 Notepad++,并把编码切到 UTF-8 或系统默认的 ANSI。如果是复制粘贴导致乱码,改用“Save As”保存为文本再提取。
5.5 坑五:把 1 bar 当 1 atm 用,压力设置翻车
现象:算真空冶金或者高压反应时,平衡气相结果明显偏差,比如某个气相组分在常压实验中出现,计算却显示不存在。
原因:Factsage 界面上压力单位显示可能是 atm 或 bar,两者数值上差 1.01325 倍,但在高温计算里这个差值对气相平衡分压影响不小,尤其是有多个气相组分时。
解决:每次设置压力前看一眼单位下拉框。统一用 atm 作为记录单位,如果你从文献摘数据时文献写的是 bar,换算成 atm 后再输入。养成一个习惯:所有计算参数旁边备注单位,避免隔几天回来看就忘了。
6. 进阶:用宏文件批量运行与结果后处理
到这一步,你已经可以完成单个体系的计算了。实际工作中常见的问题不是“不会算”,而是“要算几百个点,手点会点到怀疑人生”。Factsage 支持宏文件(Macro)执行,把操作序列写成文本脚本,然后一个命令批量跑完。我把我的用法和一段最小示例写出来。
6.1 宏文件语法与最小示例
宏文件本质上就是把 GUI 的每一步操作对应成一行命令,扩展名一般用 .mac 或 .txt 均可。下面是一段计算 Al-4%Cu 在 300~600 °C 平衡相的极简宏示例:
# 宏文件示例:Al-Cu 平衡计算批处理 OPEN FTlite EQUILIB REACTANT Al 96 g 25 C,1 atm REACTANT Cu 4 g 25 C,1 atm CONDITION T 300 600 C CONDITION P 1 atm CALCULATE SHOW RESULTS summary WRITE results_AlCu.txt CLOSE逻辑说明:第 1 行打开数据库 FTlite;EQUILIB 指定进入平衡模块;REACTANT 依次录入 Al 和 Cu 的质量和初始状态;CONDITION 设置温度范围 300~600 °C 和压力;CALCULATE 启动计算;SHOW 输出简要结果;WRITE 把结果写到文本文件;CLOSE 关闭工程。
参数说明:REACTANT 后面的单位可以是 g、mol,但宏里不识别中文,一律用英文单位;温度区间格式是“起始 结束 单位”,中间两个数值之间用空格。宏对大体系也适用,你只需要把 REACTANT 行替换成实际配料。
6.2 从结果批量提取相图坐标
宏批量跑完后,每个成分点都会生成一个结果文件。如果要对几十个文件做相比例对比,手动开文件复制会崩溃。我会写一个 Python 脚本批量扫结果文件,把每个温度点对应的液相比例提取出来。
import glob files = glob.glob("results_*.txt") for fname in sorted(files): with open(fname, encoding="utf-8", errors="ignore") as f: lines = f.readlines() liquid_mass = None for line in lines: if "Liquid" in line and "mass" in line.lower(): liquid_mass = line.split()[-1] break print(fname, liquid_mass)逻辑说明:遍历所有以 results_ 开头的文件;逐行找包含 Liquid 且包含 mass 的行;取该行最后一个字段作为液相质量,打印文件名和数值。
参数说明:这个脚本假设结果文件是英文输出;如果你的版本输出语言不同,关键词要改。质量单位如果和设置不一致,脚本里末字段数据类型可能带括号,需要做一次字符串清理。
这个技巧能大幅压缩从“算完”到“能用”之间的整理时间。我现在每次跑几十个成分点,都是宏生成结果,脚本整理数据,再用 Origin 画图,整个流程十分钟以内完成。以前手点的话,一个下午就没了。这个习惯帮我避开过很多次重复劳动,也希望这次写下来的这些细节,能让你少走一段弯路,希望帮到你。
本文还有配套的精品资源,点击获取