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

  • Vampire官网:link
  • Vampire github: github link
  • Vampire Workshop: link
  • Vampire Manual: 官网的pdf文档link是老旧过时的!新版手册请在github官网develop分支下的Manual目录下(link).tex文件编译得到。
  • Vampire Workshop 2020 April youtube channel: link
  • Vampire Workshop examples: github-link

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

当然,更重要的是要知道Atomistic模拟和Micromagnetics模拟的区别。

  • Atomistic:磁矩在原子上,体系是离散的,用的参数是J(exchange interaction),Dij(DMI)。软件有Vampire,Spirits。
  • Micromagnetics:磁矩是连续体系的微元,体系是连续的,用的参数是A(exchange stiffness),D(DMI)。软件有OOmmf,Ubermag,MuMax3。

安装Vampire

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

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

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

1
2
git clone git://github.com/richard-evans/vampire.git 
cd vampire

下面,根据workshop视频中Richard的操作,他认为可以用develop分支而不是默认的master(注意,根据我的尝试,切换到develop分支,并行的编译会有问题。。。所以编译并行还是在master分支吧)

1
git checkout develop

个人计算还是用serial:

1
make serial

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

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

1
vampire目录/vampire-serial

并行安装Vampire

在学校服务器上需要运行并行版本。下载同理,注意转换分支为develop。

然后在服务器上配置一下编译环境,重点是有mpi环境。

1
2
3
module load compiler/gcc/9.1
module load intel-mkl/15
module load openmpi/4.0

在源代码中的makefile中,将开头改为-std=c++11:

1
2
3
4
5
6
7
8
9
10
#===================================================================
#
# Makefile for VAMPIRE
#
#===================================================================

# Specify compiler for MPI compilation with openmpi
export OMPI_CXX=g++ -std=c++11

...

最后:

1
make parallel

实验一(Ni)

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

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

input file

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

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

然后就可以运行:

1
vampire目录/vampire-serial

output file

得到的结果在output中:

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中的内容,

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的主目录下,

1
make vdc

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

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

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

cd povray/
cd unix/
./prebuild.sh

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

1
sudo apt-get install autoconf

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

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

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

最后编译安装:

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

实验二(制作bilayer)

input file

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

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

运行

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

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

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

Povray画图

1
povray spins