关于 CIPW 计算
CIPW 的设计初衷真不错,而且在那么久之前就有这种程序化的一步一步来拼的思路,很适合编程实现。
不过目前来看,国外流传比较广的计算表格是美国联合学院的Kurt Hollocher这位老兄的,下载地址在这里。
他的这个 Excel 表格做的非常细致,每一步都很清晰,不过其中有两处标注出了错,但我检查过,应该是不影响计算的。实际上我就是把他的表格中的算法抽了出来重新实现了,又加了批量计算的几个循环体。
国内估计用的比较多的是路远发老师的GeoKit进行计算,但是路老师的计算过程,如果按照他的网站上面的流程,似乎和 Kurt 的有所差别,尤其是在 Sr 和 Ni 等元素的处理上,步骤完全不一样。
Kurt 的这个表格是 Leon Bagas 分享给我的,他个人推荐用这个,目前我也暂时先用这个来计算了。
我的 GeoPython 里面还是选择了用 Kurt 的计算思路,因为其中的计算流程更清晰一些。
在计算结果上,我在 GeoPython 里面使用了 ChemPy 来获取元素的原子量以及各种矿物的分子量,而 Kurt 原版是选择了小数点后两位小数的近似值。所以 GeoPython 里面用的原子量和分子量可能会更精确一些,这在 CIPW 计算结果上会体现在个位数的偶尔差异,以及小数点后数值的明显差异。 ChemPy 是一个化学方面的 Python 模块,我比较推荐使用;而 Kurt 的计算表格中由于使用了 Excel 等原因,数位有所取舍。
GeoPython 的 CIPW 模块是这样设计的:数据输入用一个 CIPW.xlsx 或者 CIPW.csv,其中一定要注意的是单位问题,Sr、Ba、Ni、Cr、Zr 这几个元素用的是 ppm,而其他的项目都是质量百分比。
计算出来的结果用额外的文件来存储。生成的四个 csv 文件,Claced 的是计算出来的各种岩石参数,比如 DI 值、 Mg# 等等;Result 是计算出来的摩尔数,也就是直接的结算结果;Volume 和 Weight 分别是转成 体积分数和质量分数的结果。
其实不太推荐大家用打包好的 exe 或者 app,而更推荐从 pip 上面来安装 GeoPython,因为每次最新的版本都会首先更新到 pip 上面去,另外打包的版本由于要包含 Python 解释器以及所有依赖包,体积很大,Windows 版本接近 200MB, OSX 版本更是有 800MB 之大。
当然如果没有 Python 使用经验的话,暂时只能下载打包好的程序了。
我非常鼓励地学同行们一起来学习和使用 Python,我们不必要非常精通,只要能用 Python 来解决一些日常的问题就可以了。