![3f43fc68bda5f62c49a88792ceb5f2e2.png](https://img-blog.csdnimg.cn/img_convert/3f43fc68bda5f62c49a88792ceb5f2e2.png)
写在前面
最近在复习考研复试《固体物理》这一门课,去年学的内容已经忘干净了,所以就翻开前几页。突然看到了面心立方和体心立方结构图,想到了去年室友用Mathematica做了晶胞的结构图,于是就手痒痒自己也想来做一个。
具体物理内容不会涉及到多少,但还是要求大家能对“简单立方结构”、“体心立方结构”、“面心立方结构”有一个简单的理解,因为我比较懒,所以我就不放这些基础内容凑字数了。
用MATLAB跑出来的效果图为
![c455a01cb5baff7fa228b31f7316699e.png](https://img-blog.csdnimg.cn/img_convert/c455a01cb5baff7fa228b31f7316699e.png)
我的所有程序都放在我的Github: https://github.com/HanpuLiang/Something-Small中,点击即可查看。
基本的思考
如果我们想要做一个类似于这样子的结构图的话,我们需要知道些什么?
![3a99c891f5a46dffc253fce9a1b0c7d9.png](https://img-blog.csdnimg.cn/img_convert/3a99c891f5a46dffc253fce9a1b0c7d9.png)
如果我们想要做成这么大个超胞的话,又需要在上面的基础上怎么做?
![d75b38aa223f1b546990a816c0e839c1.png](https://img-blog.csdnimg.cn/img_convert/d75b38aa223f1b546990a816c0e839c1.png)
有过做计算的同学已经想到了,需要计算物理中,描述晶胞中原子位置的文件POSCAR,然后把POSCAR拖到VESTA中就可以上面这幅图了。
所以我们这里模拟POSCAR来输入参数:
- 晶胞参数:描述晶胞大小的参数。
- 超胞大小:当晶胞数量大于1个并且周期性变化时,用三个数字描述其在三个方向上的晶胞叠加数目。
- 各个原子的坐标:没有这个还怎么画出来原子啊。
基本参数
晶胞参数
晶胞参数包括6个值:三条边a1, a2, a3和三个角
![87f252a43c4c575090b3aca3bd2de012.png](https://img-blog.csdnimg.cn/img_convert/87f252a43c4c575090b3aca3bd2de012.png)
因为编写程序的复杂程度问题,我们这里只考虑
超胞大小
超胞大小是用来形容我们这个超胞到底由几个晶胞组成,以及他们的排列方式是怎么样子的。就比如下图中,沿着a1方向的层数为1个,沿着a2方向的层数为3,沿着a3方向的层数为2.所以我们就可以设定为[1, 3, 2]。
值得注意的是,这里我用的并不是x, y, z轴的方向!!!因为如果
![0398a087366733b2a160ea7dd1308476.png](https://img-blog.csdnimg.cn/img_convert/0398a087366733b2a160ea7dd1308476.png)
原子位置
这个没什么好说的,如果我们建立好了超胞,那么直接在对应的坐标画上原子就好。
开始写程序
设定参数
首先我们来设定好上面的参数
%% 参数设定
这里将体心和面心的原子分别提取出来,作图的时候再放上去和简单立方的一起做就好了。
作图
我们为了图像美观就得做一些处理坐标轴的事情
%% 作图
然后我们就可以愉快的画超胞的框架和各个原子啦,下面的两个函数是我自定义的两个函数
% 做超胞框架
简单立方因为最大,所以我在里面设定了一些自动变坐标轴大小的内容,所以要放在最后面。
这样子主程序就完成了。后面详细解释这两个函数的内容。
做超胞的框架plotBox
我们需要定出立方体的8个顶点,然后做出12条边,这一部分很简单,根据简单的数学就可以推导出公式,然后写出程序来。
function
做各个原子的图
这个才是重头戏。
我们首先要确定出在超胞内,一共有多少个原子。我们之前设置的超胞大小就派上用场了,我们通过三个循环嵌套在一起,遍历出超胞内的所有晶胞,然后将其原子位置加到矩阵中,最后统一作图。
function
然后这样就完事了。是不是很简单的。
写在后面
以上所有代码我都放在了我的Github中,可以通过点击我的Github: https://github.com/HanpuLiang/Something-Small去查看。代码下载后可直接运行。
如果喜欢的话,麻烦点个关注,给个赞,加个收藏噢。