可以给我给一个编译程序不?我下载了Compaq Vision Fortran,运行不起
本文原地址:东方红茶馆-求解电子光谱项的程序
与原文可能略有不同。
该程序可以处理几乎所有的电子组态(包含的轨道有
求原子光谱项有很多种方法,这里只介绍一种思路简单粗暴的方法。某种程度上可称为是逐一枚举的方法。(等你看完说不定会觉得这个方法很low23333)
其实该方法也可看作是结构化学教科书上讲解两个同科电子组态(
我们知道,对于多电子原子中的任意一个电子,其状态可由其单电子原子轨道(波函数)近似描述,其中单电子波函数含有四个量子数。也就是说只要确定了这四个量子数,便能够确定其状态。而组态只能确定电子的主量子数
组态的能级分裂就是因为电子的磁量子数和自旋磁量子数的不同,虽然对于多电子原子来说使用总角量子数
所以该方法的第一步是确定某一组态的所有微观能态。
以
以图所示的状态为例,三个电子的磁量子数分别为2、2、1,所以
也就是我们要计算一共120种微观能态的
当我们将120种组合的
以总自旋磁量子数为例,三个电子共有四种情况。电子的自旋全部相同以及其中一个电子与另外两个的自旋不同。所以
相应地,
然后只需要一步步从表中提取出光谱项即可。
从最大的
然后我们将表格中二三列的数字均减去1,将该光谱项移除,得到第二步的表。
下图右边的是第二次约去光谱项后得到的表,此时
最后得到的
以上方法适用于任何同科电子组态光谱项的求算。而对于存在不同壳层的组态(例如
下面主要介绍代码的思路。
首先以
d轨道共有10个自旋轨道,所以声明了两个含有10个元素的数组分别储存各自旋轨道的磁量子数和自旋磁量子数。
电子数是由用户输入的,然后依次列举所有的自旋轨道的组合并计算
然后统计
例如:120种组合的
我们将前一个数组中的120个值与后一个数组进行比较,记录各个值出现的次数,便能够生成之前那个表中的数据。
对于具有不同角量子数的轨道的组态来说,则是分别将各个轨道上的组合再一次组合一次。 运行示例:
关于直接输出光谱项的功能的实现
由于直接对输出的表格进行操作很麻烦,而且也不必要(因为对整个表格操作需要的循环实现困难,而且表无论是行还是列都是对称的)。所以为了实现该功能,我首先取原有的表格的左上部分单独存为一个如图所示的二维数组。
之后检查第一行各列的数字 <n>
的标记,表明该光谱项的数目为
最终得到的结果是
对于多个壳层的情况(例如
多个相同角动量相同的壳层也是可以计算的,如
[修改于 5年8个月前 - 2019/08/29 21:52:32]
自从LZ博士毕业,已经很多年没说过话了,恐怕楼上需要自己解决。
引用WernerPleischner发表于4楼的内容我试了下repo里自己带的 gfortran 命令就能成功编译运行
我用的window下的Compaq vision Fortran 6.5提示有报错,你有编译好的程序吗?能上传到这个平台不?非常感谢
200字以内,仅用于支线交流,主线讨论请采用回复功能。