avatar

目录
Vampire学习(一)

这篇文章主要完成了Vampire,vdc,Povray的安装,以及使用这些工具完成1. Ni的温度-磁化率quxian 2. FM-AFM双层sc结构的构造与磁矩模拟方法

  • Vampire官网:link
  • Vampire Workshop: link
  • Vampire Manual: link

Vampire是原子间尺度(Atomistic)磁性模拟软件,并非第一性原理计算(Ab-initio)软件。

安装Vampire

Vampire不像VASP是第一性原理计算,不需要VASP那样多使用服务器上的几十个Core并行运算,一般的家用PC就可以跑得动。

我使用的个人电脑均为Windows 10系统,而科学计算软件一般在Linux下都比较顺手,因此使用WSL(Windows Subsystem Linux)进行安装使用。

安装参考link,以及上面链接中Manual的推荐。在WSL的自己用户目录下(cd ~)操作(或者你喜欢的目录):

Code
1
git clone git://github.com/richard-evans/vampire.git #这里可能有坑,看下面

将github上代码克隆下来准备编译。(没有git的请sudo apt-get install git

注意(这里貌似有坑): 上面使用git clone编译后对后面的vdc功能似乎造成了影响,所以,建议使用download页面中的:Zip文件link 直接进行源码下载并编译!

Code
1
make serial

(使用个人电脑进行运算,不需要并行。如果需要并行,我会安装在学校服务器上,并需要mpi环境)

以后如果需要运行Vampire,则在自己工作目录下,准备好相关的input xxx.mat文件后运行

Code
1
vampire目录/vampire-serial

实验一(Ni)

这里是尝试重复官网Workshop中Day1(PDF_link)的Ni磁化率曲线。

Vampire运行至少需要两个文件,inputxxx.mat(material意思)

input file

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#-----------------------------------------
# Creation attributes:
#-----------------------------------------
create:crystal-structure=fcc
create:periodic-boundaries-x
create:periodic-boundaries-y
create:periodic-boundaries-z
#-----------------------------------------
# System Dimensions:
#-----------------------------------------
dimensions:unit-cell-size = 3.524 !A
dimensions:system-size-x = 4.0 !nm
dimensions:system-size-y = 4.0 !nm
dimensions:system-size-z = 4.0 !nm
#-----------------------------------------
# Material Files:
#-----------------------------------------
material:file=Ni.mat
#-----------------------------------------
# Simulation attributes:
#-----------------------------------------
sim:temperature=300
sim:minimum-temperature=0
sim:maximum-temperature=800
sim:temperature-increment=25
sim:time-steps-increment=1
sim:equilibration-time-steps=1000
sim:loop-time-steps=1000
#-----------------------------------------
# Program and integrator details
#-----------------------------------------
sim:program=curie-temperature
sim:integrator=monte-carlo
#-----------------------------------------
# Data output
#-----------------------------------------
output:real-time
output:temperature
output:magnetisation
output:magnetisation-length
output:mean-magnetisation-length

Ni.mat file

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
#--------------------------------------------------
# Number of Materials
#--------------------------------------------------
material:num-materials=1
#--------------------------------------------------
# Material 1 Nickel Generic
#--------------------------------------------------
material[1]:material-name=Ni
material[1]:damping-constant=0.01
material[1]:exchange-matrix[1]=2.757e-21
material[1]:atomic-spin-moment=0.606 !muB
material[1]:uniaxial-anisotropy-constant=5.47e-26
material[1]:material-element=Ni

然后就可以运行:

Code
1
vampire目录/vampire-serial

output file

得到的结果在output中:

Code
1
2
3
4
5
6
7
8
9
10
11
12
#----------------------------------------------------------------------------------------------------------------------------------------------------------
# Output file for vampire simulation
# time : 2020-03-04 15:41:45 process id : 1747
# hostname : 310Z-HK
# path : /home/kaihuang/vampire-test
# version : 5.0.1
# githash : 6dbac264cb70f1aa723736c1f7f1ef55aabcdef1
#----------------------------------------------------------------------------------------------------------------------------------------------------------
2e-12 0 0 0 1 1 1 1
4e-12 25 -0.0110833 0.0279752 0.999547 0.9866 0.9866 0.986502
6e-12 50 -0.0428672 -0.0485014 0.997903 0.972436 0.972436 0.972492
………………………………………………

可以看出,output下部的每一行数据对应input Data output中的内容,

Code
1
2e-12	0	0	0	1	1	1		1
  • 第1个:real time(对mont carlo方法,时间无意义)
  • 第2个:temperature
  • 第3-6个:3-5是magnetisation在三个方向的值(且是单位矢量),第6个是磁矩模长,(具体的看Manual)
  • 第7个:还是磁矩模长,其实重复了
  • 第8个:mean-magnetisation-length,具体的看Manual吧。

安装vdc

VDC: Vampire data convertor

在Vampire的主目录下,

Code
1
make vdc

完成后,使用方式即在工作目录下,运行

Code
1
vampire目录/util/vdc/vdc --xyz

这里--xyz选项表示输出成.xyz文件(一种三维物体文件格式),我目前知道还有标签--povray

若运行vampire目录/util/vdc/vdc不加任何标签,同样可以得到.pov文件。

**貌似有的坑:**已经在上面Vampire安装部分提到,如果用git clone下载源码,可能导致编译出来vdc运行时报错,如:

碰到这种情况,建议就是通过Zip文件link 重新进行源码下载并编译!(反正挺快的)

安装POV-Ray

这里是尝试按照官网Workshop中Day2(PDF-link)最后几页slide,同时参考GitHub上POV-Ray的官方文档(link

bash
1
2
3
4
5
git clone https://github.com/POV-Ray/povray.git

cd povray/
cd unix/
./prebuild.sh

这里运行./prebuild.sh发现缺少一些库,所以安装了:

bash
1
sudo apt-get install autoconf

而后,按照ReadMe-link的建议把下列库全部装上:

Code
1
2
3
4
5
6
7
8
libboost-dev
libboost-date-time-dev
libboost-thread-dev
zlib1g-dev
libpng12-dev #看下面
libjpeg8-dev #看下面
libtiff5-dev #看下面
libopenexr-dev

全部sudo apt-get install了,但是注意libpng12-dev貌似已经没有了(?),用libpng-dev

Code
1
2
3
4
5
sudo apt-get install libpng-dev

sudo apt-get update -y
sudo apt-get install -y libjpeg-dev
sudo apt-get install -y libtiff-dev

最后编译安装:

Code
1
2
3
4
cd ..
./configure COMPILED_BY="your name <email@address>"
make
sudo make install # 不加sudo又是一个坑。

实验二(制作bilayer)

input file

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#---------------------------------------------------
#system dimensions
#---------------------------------------------------
dimensions:system-size-x=4 !nm
dimensions:system-size-y=4 !nm
dimensions:system-size-z=10 !nm
dimensions:unit-cell-size=3.5 !A
#---------------------------------------------------
# Creation attributes
#---------------------------------------------------
create:crystal-structure=sc
create:periodic-boundaries-x
create:periodic-boundaries-y
#---------------------------------------------------
# Material files
#---------------------------------------------------
material:file=bilayer.mat
#---------------------------------------------------
# Simulation attributes
#---------------------------------------------------
sim:temperature=0.1
sim:total-time-steps=11000
sim:time-steps-increment=1000
sim:program=time-series
sim:integrator=monte-carlo
#---------------------------------------------------
# Data output
#---------------------------------------------------
output:time-steps
output:temperature
output:material-magnetisation
config:atoms
config:atoms-output-rate=10
  • config的存在目的就是:输出计算过程中的磁矩结构(spin snapshot)

bilayer.mat file

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#---------------------------------------------------
# Number of Materials
#---------------------------------------------------
material:num-materials=2
#---------------------------------------------------
# Material 1 Ferromagnetic Layer
#---------------------------------------------------
material[1]:material-name=FM
material[1]:damping-constant=1.0
material[1]:exchange-matrix[1]=11.2e-21
material[1]:exchange-matrix[2]=11.2e-21
material[1]:atomic-spin-moment=2.0 !muB
material[1]:uniaxial-anisotropy-constant=-1.0e-24
material[1]:material-element=Ag
material[1]:minimum-height=0.0
material[1]:maximum-height=0.5
material[1]:initial-spin-direction=1,0,0
#---------------------------------------------------
# Material 2 Anti-ferromagnetic Layer
#---------------------------------------------------
material[2]:material-name=FM
material[2]:damping-constant=1.0
material[2]:exchange-matrix[1]=11.2e-21
material[2]:exchange-matrix[2]=-11.2e-21
material[2]:atomic-spin-moment=2.0 !muB
material[2]:uniaxial-anisotropy-constant=-1.0e-24
material[2]:material-element=Fe
material[2]:minimum-height=0.5
material[2]:maximum-height=1.0
material[2]:initial-spin-direction=random
  • material[2]:exchange-matrix[1]=11.2e-21表示材料2对材料1的交换积分(1对2,2对1,都是一样的)

output file

vdc

运行

bash
1
vampire目录/util/vdc/vdc #这里我就不加任何标签了,理论上这时vdc把该生成的都生成了。

如果这里你报错了,恭喜踩到坑,请不要git clone,而是Download页面下载源码重新编译。

使用vdc生成.xyz文件,然后就能用VESTA打开啦!

Povray画图

Code
1
povray spins

文章作者: HuangXiaoKai
文章链接: 2020/03/05/Vampire学习一/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 篁竹水声de公共空间
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论