和GPT一起写了一个生成相图的小程序,目标是选择两种物种的浓度作为x和y轴,并给定其他物种的浓度,计算出每个区间内的优势物种。
具体算法是首先确定相图上每个点的阴离子浓度,例如在Cu-PO4相图中,
然后求解各个金属的浓度,
这里的近似是如果Cu-HPO4络合物浓度相对P(V)可以忽略,否则需要求解多元非线性方程。最后解出各络合物浓度即可。
相图的优势物种的判定逻辑为:1) 如果有沉淀显示为沉淀,若有多种沉淀都能产生(Qsp > Ksp),则利用Ksp反解出当前约束下Cu2+的浓度,最低者为优势物种;2) 若不生成沉淀则显示溶液中含Cu物种中浓度最大的那一个。
下面就是一个磷酸盐浓度0.001 M条件的Cu-pH相图。图中显示出形成的稳定含铜矿物按pH从小到大是libethenite,pseudomalachite和tenorite。
相关代码已托管至Github。