-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
2125 lines (1689 loc) · 311 KB
/
Copy pathindex.html
File metadata and controls
2125 lines (1689 loc) · 311 KB
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="theme-color" content="#222" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#222" media="(prefers-color-scheme: dark)"><meta name="generator" content="Hexo 6.3.0">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
<link rel="mask-icon" href="/images/logo.svg" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha256-HtsXJanqjKTc8vVQjO4YMhiqFoXkfBsjBWcX91T1jr8=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">
<script class="next-config" data-name="main" type="application/json">{"hostname":"example.com","root":"/","images":"/images","scheme":"Mist","darkmode":true,"version":"8.16.0","exturl":false,"sidebar":{"position":"right","display":"always","padding":18,"offset":12},"copycode":{"enable":false,"style":null},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"}}</script><script src="/js/config.js"></script>
<meta name="description" content="一个小学生的博客">
<meta property="og:type" content="website">
<meta property="og:title" content="Lightchaser">
<meta property="og:url" content="http://example.com/index.html">
<meta property="og:site_name" content="Lightchaser">
<meta property="og:description" content="一个小学生的博客">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="Keke Liu">
<meta name="twitter:card" content="summary">
<link rel="canonical" href="http://example.com/">
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":true,"isPost":false,"lang":"zh-CN","comments":"","permalink":"","path":"index.html","title":""}</script>
<script class="next-config" data-name="calendar" type="application/json">""</script>
<title>Lightchaser</title>
<noscript>
<link rel="stylesheet" href="/css/noscript.css">
</noscript>
</head>
<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
<div class="headband"></div>
<main class="main">
<div class="column">
<header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container">
<div class="site-nav-toggle">
<div class="toggle" aria-label="切换导航栏" role="button">
<span class="toggle-line"></span>
<span class="toggle-line"></span>
<span class="toggle-line"></span>
</div>
</div>
<div class="site-meta">
<a href="/" class="brand" rel="start">
<i class="logo-line"></i>
<h1 class="site-title">Lightchaser</h1>
<i class="logo-line"></i>
</a>
<p class="site-subtitle" itemprop="description">三人行,必有我师</p>
</div>
<div class="site-nav-right">
<div class="toggle popup-trigger" aria-label="搜索" role="button">
</div>
</div>
</div>
<nav class="site-nav">
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a></li>
</ul>
</nav>
</header>
<aside class="sidebar">
<div class="sidebar-inner sidebar-overview-active">
<ul class="sidebar-nav">
<li class="sidebar-nav-toc">
文章目录
</li>
<li class="sidebar-nav-overview">
站点概览
</li>
</ul>
<div class="sidebar-panel-container">
<!--noindex-->
<div class="post-toc-wrap sidebar-panel">
</div>
<!--/noindex-->
<div class="site-overview-wrap sidebar-panel">
<div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
<p class="site-author-name" itemprop="name">Keke Liu</p>
<div class="site-description" itemprop="description">一个小学生的博客</div>
</div>
<div class="site-state-wrap animated">
<nav class="site-state">
<div class="site-state-item site-state-posts">
<a href="/archives/">
<span class="site-state-item-count">34</span>
<span class="site-state-item-name">日志</span>
</a>
</div>
<div class="site-state-item site-state-categories">
<a href="/categories/">
<span class="site-state-item-count">2</span>
<span class="site-state-item-name">分类</span></a>
</div>
<div class="site-state-item site-state-tags">
<a href="/tags/">
<span class="site-state-item-count">46</span>
<span class="site-state-item-name">标签</span></a>
</div>
</nav>
</div>
<div class="links-of-author animated">
<span class="links-of-author-item">
<a href="https://github.com/stemdkk" title="GitHub → https://github.com/stemdkk" rel="noopener me" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
</span>
<span class="links-of-author-item">
<a href="mailto:257198@whut.edu.cn" title="E-Mail → mailto:257198@whut.edu.cn" rel="noopener me" target="_blank"><i class="fa fa-envelope fa-fw"></i>E-Mail</a>
</span>
</div>
</div>
</div>
</div>
</aside>
</div>
<div class="main-inner index posts-expand">
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://example.com/2025/03/11/18-47-24/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="Keke Liu">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="Lightchaser">
<meta itemprop="description" content="一个小学生的博客">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | Lightchaser">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2025/03/11/18-47-24/" class="post-title-link" itemprop="url">10.1 铁电极化计算</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2025-03-11 18:47:24" itemprop="dateCreated datePublished" datetime="2025-03-11T18:47:24+08:00">2025-03-11</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2025-07-29 09:52:38" itemprop="dateModified" datetime="2025-07-29T09:52:38+08:00">2025-07-29</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/DFT%E5%AD%A6%E4%B9%A0/" itemprop="url" rel="index"><span itemprop="name">DFT学习</span></a>
</span>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h1><p>铁电极化强度(ferroelectric polarization)是指在铁电材料中,由外加电场引起的电偶极矩的强度。铁电材料是一类具有自发极化特性的材料,即在没有外加电场时,这些材料内部的电偶极矩已经排列成某种方向。铁电极化强度描述了这种极化的强弱,它是材料的重要电学特性之一。</p>
<h2 id="四种常见的铁电起源"><a href="#四种常见的铁电起源" class="headerlink" title="四种常见的铁电起源"></a>四种常见的铁电起源</h2><ol>
<li><p>离子偏移<br>这种是最常见的铁电类型,比如BaTiO3中的Ti离子偏移中心位置;CuInP2S6中Cu离子上(下)偏移中心位置诱导的极化上(下)</p>
</li>
<li><p>极性分子团(polar molecular groups)比如有机-无机杂化材料的中一维(1D)和二维(2D)结构的杂化铁电材料,由极性分子诱导铁电。</p>
</li>
<li><p>电荷重布居(Charge redistribution)通过相邻层的占据态与邻近层的未占据态之间的杂化,可以实现层间电荷的重新分布,从而诱导出平面外的电偶极子,比如滑移铁电。</p>
</li>
<li><p>自旋比如正交晶系的TbMnO3,它具有非共线自旋结构的反铁磁性,通过逆Dzyaloshinskii Moriya相互作用产生净电极化。</p>
</li>
</ol>
<p>下面介绍两种VASP计算铁电极化强度的方法。第一种,也是目前文献中最常见的方法,Berry phase方法。此外,还可以通过其他方法来计算。偶极矫正法是一种通过直接计算材料中偶极矩来估算铁电材料极化强度的简化方法。它通常用于快速评估铁电材料的极化强度,特别是在不需要高精度结果或没有使用现代极化理论(如 Berry 相位方法)的情况下。</p>
<h1 id="例子1:离子型铁电"><a href="#例子1:离子型铁电" class="headerlink" title="例子1:离子型铁电"></a>例子1:离子型铁电</h1><p>本文主要计算经典的铁电材料 BaTiO3 的极化强度。</p>
<p>原文链接:<a target="_blank" rel="noopener" href="https://www.cnblogs.com/ghzhan/articles/16305679.html">https://www.cnblogs.com/ghzhan/articles/16305679.html</a></p>
<p>BaTiO3 是钙钛矿结构,它的铁电相结构和中心对称结构如图所示,属于四方晶系。<br>该铁电材料是沿着 c 方向极化,主要是 O 离子和 Ti 离子的移动的贡献。 例如,上图中的左边铁电相极化方向朝下,右边铁电相极化方向朝上。极化强度详细计算步骤如下:</p>
<h2 id="1-结构优化"><a href="#1-结构优化" class="headerlink" title="1 结构优化"></a>1 结构优化</h2><p>先构造 BaTiO3 两种极化方向的晶格结构,并用 VASP 进行结构优化得到 CONTCAR;<br>铁电相POSCAR<br> <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">Ti Ba O </span><br><span class="line">1.00000000000000 </span><br><span class="line"> 3.9944999999999999 0.0000000000000000 0.0000000000000000 </span><br><span class="line"> 0.0000000000000000 3.9944999999999999 -0.0000000000000000 </span><br><span class="line"> 0.0000000000000000 0.0000000000000000 4.0335000000000001</span><br><span class="line"> Ti Ba O </span><br><span class="line"> 1 1 3 </span><br><span class="line"> Direct </span><br><span class="line"> 0.5000000000000000 0.5000000000000000 0.5142700000000000 </span><br><span class="line"> 0.0000000000000000 -0.0000000000000000 0.0000000000000000 </span><br><span class="line"> 0.5000000000000000 0.5000000000000000 0.9744770000000000 </span><br><span class="line"> 0.5000000000000000 0.0000000000000000 0.4876180000000000 </span><br><span class="line"> 0.0000000000000000 0.5000000000000000 0.4876180000000000</span><br></pre></td></tr></table></figure></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">Ti Ba O </span><br><span class="line">1.00000000000000 </span><br><span class="line">3.9944999999999999 0.0000000000000000 0.0000000000000000 </span><br><span class="line">0.0000000000000000 3.9944999999999999 -0.0000000000000000 </span><br><span class="line">0.0000000000000000 0.0000000000000000 4.0335000000000001</span><br><span class="line">Ti Ba O </span><br><span class="line">1 1 3 </span><br><span class="line">Direct </span><br><span class="line">0.5000000000000000 0.5000000000000000 0.4857300000000000 </span><br><span class="line">0.0000000000000000 -0.0000000000000000 0.0000000000000000 </span><br><span class="line">0.5000000000000000 0.5000000000000000 0.0255230000000000 </span><br><span class="line">0.5000000000000000 0.0000000000000000 0.5123820000000000 </span><br><span class="line">0.0000000000000000 0.5000000000000000 0.5123820000000000</span><br></pre></td></tr></table></figure>
<p>中心对称相POSCAR</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">Ti Ba O </span><br><span class="line">1.00000000000000 </span><br><span class="line">3.9944999999999999 0.0000000000000000 0.0000000000000000 </span><br><span class="line">0.0000000000000000 3.9944999999999999 -0.0000000000000000 </span><br><span class="line">0.0000000000000000 0.0000000000000000 4.0335000000000001</span><br><span class="line">Ti Ba O </span><br><span class="line">1 1 3 </span><br><span class="line">Direct </span><br><span class="line">0.5000000000000000 0.5000000000000000 0.5000000000000000 </span><br><span class="line">0.0000000000000000 0.0000000000000000 0.0000000000000000 </span><br><span class="line">0.5000000000000000 0.5000000000000000 0.0000000000000000 </span><br><span class="line">0.5000000000000000 0.0000000000000000 0.5000000000000000 </span><br><span class="line">0.0000000000000000 0.5000000000000000 0.5000000000000000</span><br></pre></td></tr></table></figure>
<h2 id="2-产生相对位移结构"><a href="#2-产生相对位移结构" class="headerlink" title="2 产生相对位移结构"></a>2 产生相对位移结构</h2><p>将上一步优化后的两个结构分别放入创建好的 ini, fin 文件夹。利用 NEB 的 nebmake.pl 命令产生这两种极化方向的中间过渡结构 (vtst下载地址: Download — Transition State Tools for VASP (utexas.edu)),具体命令为:nebmake.pl ini/CONTCAR fin/CONTCAR 32<br>这里的 ‘32’ 是表示产生中间过渡的 32 种结构。执行上述命令后,当前文件夹下会产生 00, 01, 02, …, 33 个文件夹,每个文件夹下有一个 POSCAR 文件。</p>
<h2 id="3-自洽极化强度计算"><a href="#3-自洽极化强度计算" class="headerlink" title="3 自洽极化强度计算"></a>3 自洽极化强度计算</h2><p>对每个文件夹的结构进行一次 VASP 自洽运算,INCAR 文件里面需要额外设置 DIPOL 和 LCALPOL 参数。DIPOL 参数可以选取任一坐标,但是保证同一体系采用相同值。 LCALPOL 参数是打开 极化运算。</p>
<p>INCAR 文件:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">SYSTEM=BaTiO3</span><br><span class="line">ISTART =0</span><br><span class="line">ICHARG =2</span><br><span class="line">PREC =Accurate</span><br><span class="line">ENCUT =520</span><br><span class="line">EDIFF =0.1E-07</span><br><span class="line">ISMEAR = 0</span><br><span class="line">LWAVE=.FALSE.</span><br><span class="line">LCHARG = .FALSE.</span><br><span class="line">NELM = 200</span><br><span class="line">DIPOL = 0.5 0.5 0.5</span><br><span class="line">LCALCPOL=.TRUE</span><br></pre></td></tr></table></figure>
<p>INCAR要注意:<br>铁电极化计算建议设置高精度;DIPOL = 不要设置在原子及迁移路径上,设置在真空层的一边/质心。</p>
<p>批量化计算,计算程序根据相应计算环境调整。</p>
<p><code>grep 'dipole moment' */OUTCAR|rev| awk '{printf ("%s ", $4)}'|rev|awk '{printf ("%f\n", $1+$2)}' >> dipole_c.dat </code></p>
<p><code>grep 'free energy TOTEN' */OUTCAR | awk '{printf ("%s\n",$5)}' >> energy.dat </code></p>
<p>注意,这里通过 grep 命令产生的 dipole_c.dat 文件记录的是沿着 c 方向的极化值,这是因为 BaTiO3 是沿着 c 方向极化的。对于具体的情况需要自行修改。离子与电子相加即可,然后用NP相-铁电相即可得到极化强度P。</p>
<h3 id="注意"><a href="#注意" class="headerlink" title="注意"></a>注意</h3><p>在铁电极化计算过程中经常会出现参考相为非半导体的情况,这种情况下可以:①镜像法:以FE相以NP为参照中心,建立一个-FE相 (PhaseB’, 即铁电极化方向相反)。然后按照上述方法计算极化,再以FE相的极化-(-FE相)的极化值,然后除以2即得到极化强度。可以理解为1-(-1) = 2,2/2=1;<br>②线性插值法:在FE和NP相中间插入一系列中间过渡相(0%(FE),10%,20%,30%….100%(NP)),计算它们的极化,然后可以用Origin做拟合,100%时即为NP相的极化。(100%-0%)则是极化强度P。</p>
<h2 id="4-处理和分析数据。"><a href="#4-处理和分析数据。" class="headerlink" title="4 处理和分析数据。"></a>4 处理和分析数据。</h2><p>首先要理清数据单位。VASP 计算得到的 dipole moment 的单位是 e*Å,它与库仑之间换算为:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">1e = 1.602176634 * 10^-19 C </span><br><span class="line">1Å = 10^-10 m</span><br></pre></td></tr></table></figure>
<p>三维体系的极化强度: 极化值除以体积。单位为 $e/Å^2$;</p>
<p>二维体系的极化强度:极化值除以面积。单位为 $e/Å$。</p>
<p>在这个例子中,BaTiO3 的体积为 64.3586 $Å^3$。</p>
<p>不同 image 的极化强度不是连续的,这是和选取的原胞有关,需要考虑极化量子的影响。BaTiO3 沿着 c 方向极化,所以需要对该极化值加减整数倍的 c 方向的晶格常数。</p>
<p>选取最靠近中间极化强度为 0 的那条曲线,即为 BaTiO3 的极化强度曲线:除以体积并进行简单的单位换算后为:另外,我们也可以绘制极化值 P 与能量 E 曲线</p>
<p>因此, BaTiO3 的极化强度大约为 0.248 $C/m^2$,与文献中的实验结果 0.26 $C/m^2$ 吻合。(Physical Review, 99(4), 1161–1165, 1955 )</p>
<p>拟合 Landau-Ginzburg 公式<br>$$<br>E = \sum_{i} \left( \frac{A}{2} P_i^2 + \frac{B}{4} P_i^4 + \frac{C}{6} P_i^6 \right) + \frac{D}{2} \sum_{i,j} (P_i - P_j)^2<br>$$</p>
<p>分别计算各个原子位移(原子移动方式可以类似于线性插值法)后结构的极化值,通过L-G公式拟合极化与能量得到前三项的系数A,B和C。由具有铁电性的原胞(FE结构)建立441超胞,计算超胞能量E1。然后将441超胞中其中一个原胞的FE结构换成-FE结构(-FE结构),代表一个dipole发生了翻转,计算出超胞能量E2,根据朗道有效哈密顿量在这两种情况下的表达式,并比较能量E1和E2,就可以得到D的数值。</p>
<p>拟合该多项式曲线,得到$E = 6062.434883706029<em>P^6 +2437.756598493882</em>P^4 + -340.5806845162749*P^2 +10.339600058315137$ 其中参数 A, B, C 分别为<br>$$<br>A = -0.68116 eV *(m^2/C)^2<br>B = 9.75103 eV *(m^2/C)^4<br>C = 36.37461 eV *(m^2/C)^6<br>$$</p>
<p> 绘制能量曲线的脚本</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">with open('energy.dat','r') as f:</span><br><span class="line"> content = f.readlines()</span><br><span class="line">res = [float(i.strip('\n')) for i in content]</span><br><span class="line">minres = min(res)</span><br><span class="line">res = [1e3*(i-minres) for i in res]</span><br><span class="line">import matplotlib.pyplot as plt</span><br><span class="line">plt.figure()</span><br><span class="line">plt.plot(res,'b.-')</span><br><span class="line">plt.xlabel('displacement')</span><br><span class="line">plt.ylabel('Energy ($meV$)')</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure>
<p>绘制dipole曲线,以及考虑极化量子的脚本:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line">with open('dipole_c.dat','r') as f:</span><br><span class="line"> content = f.readlines()</span><br><span class="line">res = [float(i.strip('\n')) for i in content]</span><br><span class="line">import matplotlib.pyplot as plt</span><br><span class="line">plt.figure()</span><br><span class="line">plt.xlabel('displacement')</span><br><span class="line">plt.ylabel('Polarization ($e*{\AA}$)')</span><br><span class="line">plt.xlim([0,32])</span><br><span class="line">plt.plot(res,'r.')</span><br><span class="line"></span><br><span class="line">### 考虑极化量子</span><br><span class="line"></span><br><span class="line">c = 4.0335000000000001</span><br><span class="line">tmp = []</span><br><span class="line">N = 20</span><br><span class="line">for j in range(N):</span><br><span class="line"> start = -N/2+j</span><br><span class="line"> tmp1 = [i+start*c for i in res]</span><br><span class="line"> # print(tmp1[0])</span><br><span class="line"> tmp.append(tmp1)</span><br><span class="line">plt.figure()</span><br><span class="line">for i in tmp: </span><br><span class="line"> plt.plot(i,'.')</span><br><span class="line"></span><br><span class="line">#plt.ylim([-2,2])</span><br><span class="line">plt.xlabel('displacement')</span><br><span class="line">plt.ylabel('Polarization ($e*{\AA}$)')</span><br><span class="line">plt.xlim([0,32])</span><br><span class="line"></span><br><span class="line">### 单位换算</span><br><span class="line"></span><br><span class="line">P = [-1.1965400000000006, -1.1288099999999996, -1.060039999999999, -0.990219999999999, -0.9193599999999993, -0.8474299999999992, -0.7744599999999995, -0.7004900000000003, -0.6255299999999995, -0.5496499999999997, -0.4728999999999992, -0.3953799999999994, -0.31716999999999906, -0.2384000000000004, -0.1591799999999992,-0.11827, 0.0, 0.11827, 0.1591799999999992, 0.2384000000000004, 0.31716999999999906, 0.3953799999999994, 0.4728999999999992, 0.5496499999999997, 0.6255299999999995, 0.7004900000000003, 0.7744599999999995, 0.8474299999999992, 0.9193599999999993, 0.990219999999999, 1.060039999999999, 1.1288099999999996, 1.1965400000000006]</span><br><span class="line">plt.figure()</span><br><span class="line">P = [i*0.248945227832799346 for i in P]</span><br><span class="line">plt.xlabel('displacement')</span><br><span class="line">plt.ylabel('Polarization ($C/m^2$)')</span><br><span class="line">plt.xlim([0,32])</span><br><span class="line">plt.plot(P,'r.')</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure>
<p>绘制极化值 P 与能量 E 曲线的脚本:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">E = [0.0035557599999975764, 0.0016252999999935014, 0.0004821100000000911, 0.0, 5.983999999870093e-05, 0.0005505999999968481, 0.0013690299999993272, 0.0024182999999950994, 0.003608839999998281, 0.004859239999994713, 0.006096989999996083, 0.007258279999994954, 0.008287759999994648, 0.009138139999997463, 0.00977216999999797, 0.010162939999993625, 0.010294929999993485, 0.010162939999993625, 0.00977216999999797, 0.009138139999997463, 0.008287759999994648, 0.007258279999994954, 0.006096989999996083, 0.004859239999994713, 0.003608839999998281, 0.0024182999999950994, 0.0013690299999993272, 0.0005505999999968481, 5.983999999870093e-05, 0.0, 0.0004821100000000911, 0.0016252999999935014, 0.0035557599999975764]</span><br><span class="line">P = [-1.1965400000000006, -1.1288099999999996, -1.060039999999999, -0.990219999999999, -0.9193599999999993, -0.8474299999999992, -0.7744599999999995, -0.7004900000000003, -0.6255299999999995, -0.5496499999999997, -0.4728999999999992, -0.3953799999999994, -0.31716999999999906, -0.2384000000000004, -0.1591799999999992,-0.11827, 0.0, 0.11827, 0.1591799999999992, 0.2384000000000004, 0.31716999999999906, 0.3953799999999994, 0.4728999999999992, 0.5496499999999997, 0.6255299999999995, 0.7004900000000003, 0.7744599999999995, 0.8474299999999992, 0.9193599999999993, 0.990219999999999, 1.060039999999999, 1.1288099999999996, 1.1965400000000006]</span><br><span class="line"></span><br><span class="line">import matplotlib.pyplot as plt</span><br><span class="line">import numpy as np</span><br><span class="line">E = [1e3*i for i in E]</span><br><span class="line">P = [i*0.248945227832799346 for i in P]</span><br><span class="line"></span><br><span class="line">plt.figure()</span><br><span class="line">plt.plot(P,E,'b.-')</span><br><span class="line">plt.xlabel('Polarization ($C/m^2$)')</span><br><span class="line">plt.ylabel('Energy ($meV$)')</span><br><span class="line">f1 = np.polyfit(P, E, 6)</span><br><span class="line">poly = ''for i in range(len(f1)): </span><br><span class="line"> poly += '{}*x^{} + '.format(f1[i],len(f1)-i-1)</span><br><span class="line">print(poly)</span><br><span class="line">x = [ -0.35+0.7*i/99 for i in range(100)]</span><br><span class="line">Eval = np.polyval(f1,x)</span><br><span class="line">plt.figure()</span><br><span class="line">plt.plot(x,Eval,'b')</span><br><span class="line">plt.plot(P,E,'r*')</span><br><span class="line">plt.xlabel('Polarization ($C/m^2$)')</span><br><span class="line">plt.ylabel('Energy ($meV$)')</span><br><span class="line">plt.show()</span><br></pre></td></tr></table></figure>
<p>参考:</p>
<p><a target="_blank" rel="noopener" href="https://chengcheng-xiao.github.io/post/2019/12/25/Wannier_center_polarization.html">https://chengcheng-xiao.github.io/post/2019/12/25/Wannier_center_polarization.html</a></p>
<p><a target="_blank" rel="noopener" href="https://www.bilibili.com/read/cv14756243/">https://www.bilibili.com/read/cv14756243/</a></p>
<p><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/358517335">https://zhuanlan.zhihu.com/p/358517335</a></p>
<p><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/537595648">https://zhuanlan.zhihu.com/p/537595648</a></p>
<p><a target="_blank" rel="noopener" href="https://www.cnblogs.com/ghzhan/articles/16341122.html">https://www.cnblogs.com/ghzhan/articles/16341122.html</a></p>
<p><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/445884561">https://zhuanlan.zhihu.com/p/445884561</a></p>
<p>5). 居里温度计算的两种方法</p>
<ol>
<li>AIMD方法计算居里温度Tc(计算量巨大,准确)使用AIMD分别计算不同温度下的超胞,通过统计学得到平均极化距离d,通过d找到对应温度下的极化值,然后通过slogical1函数拟合得到$T_c$。</li>
<li>MC方法计算居里温度$T_c$(计算速度极快,建议)通过L-G公式进行拟合即可,代码及教程详细可看<a target="_blank" rel="noopener" href="https://github.com/Chengcheng-Xiao/mpiPyMC">https://github.com/Chengcheng-Xiao/mpiPyMC</a></li>
</ol>
<h1 id="滑移铁电"><a href="#滑移铁电" class="headerlink" title="滑移铁电"></a>滑移铁电</h1><p>华中科技大学的吴梦昊教授,在2017年首次提出层间滑移铁电,通过两层之间的滑移,实现电极化翻转。</p>
<p>下面以双层GdI2为例,计算这个材料的铁电极化强度。</p>
<p>Xun W, Wu C, Sun H, et al. Coexisting magnetism, ferroelectric, and ferrovalley multiferroic in stacking-dependent two-dimensional materials[J]. Nano letters, 2024, 24(11): 3541-3547.</p>
<h2 id="1-首先准备优化好的铁电相,即AB堆叠的POSCAR:"><a href="#1-首先准备优化好的铁电相,即AB堆叠的POSCAR:" class="headerlink" title="1 首先准备优化好的铁电相,即AB堆叠的POSCAR:"></a>1 首先准备优化好的铁电相,即AB堆叠的POSCAR:</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">CONTCAR </span><br><span class="line">1.00000000000000 </span><br><span class="line">4.1426458804503365 0.0000000000000000 0.0000000508502232 </span><br><span class="line">-2.0713229953957617 3.5876365788074991 -0.0000000399383119 </span><br><span class="line">0.0000004448876875 0.0000000102694673 30.0000000000000000 </span><br><span class="line">I Gd </span><br><span class="line">4 2</span><br><span class="line">Direct </span><br><span class="line">0.3333333244151952 0.6666666877589731 0.2311447203064440 </span><br><span class="line">0.3333333924379757 0.6666666704222977 0.0889274910801614 </span><br><span class="line">0.6666666411760427 0.3333333528368931 0.4864429969506502 </span><br><span class="line">0.6666666937613037 0.3333333375676722 0.3442418595816502 </span><br><span class="line">0.6666666947651289 0.3333333427541252 0.1601182205842356 </span><br><span class="line">0.0000000004443691 0.0000000116600432 0.4152546984968589</span><br></pre></td></tr></table></figure>
<p>在INCAR中加入参数:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">DIPOL = 0.5 0.5 0.3</span><br><span class="line">LCALCPOL = .TRUE. #计算铁电极化开关 </span><br></pre></td></tr></table></figure>
<h2 id="2-自洽计算"><a href="#2-自洽计算" class="headerlink" title="2 自洽计算"></a>2 自洽计算</h2><p>计算完成后,在OUTCAR中查找关键字dipole:由于我们关注的是c方向,因此只要看最后一列,用-397.00967 + 7.0125 = -389.99717,即为铁电相的极化值。</p>
<h2 id="3-接下来计算顺电相,即AA堆叠,"><a href="#3-接下来计算顺电相,即AA堆叠," class="headerlink" title="3 接下来计算顺电相,即AA堆叠,"></a>3 接下来计算顺电相,即AA堆叠,</h2><p>优化好的POSCAR如下:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">CONTCAR </span><br><span class="line">1.00000000000000 </span><br><span class="line">4.1426458804503365 0.0000000000000000 0.0000000508502232 </span><br><span class="line">-2.0713229953957617 3.5876365788074991 -0.0000000399383119 </span><br><span class="line">0.0000004448876875 0.0000000102694673 30.0000000000000000 </span><br><span class="line">I Gd </span><br><span class="line">4 2</span><br><span class="line">Direct </span><br><span class="line">0.6756282937225784 0.3441349445403583 0.2202487956955387 </span><br><span class="line">0.6756257399639071 0.3441404853191938 0.0779182529604372 </span><br><span class="line">0.6708730704449056 0.3402390499976288 0.4974588775154418 </span><br><span class="line">0.6708673133601825 0.3402448262892301 0.3551273278370464 </span><br><span class="line">0.0089448210006132 0.0107926773902162 0.1491235435481827 </span><br><span class="line">0.0042207755078186 0.0069279784633755 0.4262532274433494</span><br></pre></td></tr></table></figure>
<p>同样在自洽的INCAR中加入参数:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">DIPOL = 0.5 0.5 0.3</span><br><span class="line">LCALCPOL = .TRUE. #计算铁电极化开关</span><br></pre></td></tr></table></figure>
<p>计算完成后查看顺电相的极化:</p>
<p>极化值为:-397.00991 + 7.00991 = -390</p>
<h2 id="4-数据处理"><a href="#4-数据处理" class="headerlink" title="4 数据处理"></a>4 数据处理</h2><p>铁电相减去顺电相,得到的值为:-389.99717-(-390)=0.00283,单位是电子/埃。</p>
<p>极化强度是单位面积上的极化值,进行单位转换,最终结果3.0467x10-13 C/m。</p>
<p>对比文献中的结果:数值还是非常接近的,差距可能在结构优化,或者参数设置的一些细节方面。至于为什么文献中是-12次方,我的是-13次方,我特地联系了通讯作者询问了一下,是他们笔误搞错了,正确结果就是-13次方。最后可能有人发现了,似乎没用到极化量子,由于计算的结果比较凑巧,刚好在同一个极化量子的范围内。一般情况下,可能算出来的极化值会相差很多个极化量子。</p>
<p>原链接:<a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/1j97g5A1Ny95EOn3cqKh-A">https://mp.weixin.qq.com/s/1j97g5A1Ny95EOn3cqKh-A</a></p>
<h1 id="功函数和静电势计算"><a href="#功函数和静电势计算" class="headerlink" title="功函数和静电势计算"></a>功函数和静电势计算</h1><p>VASP 中可使用 LVHAR 参数进行功函数计算控制,输出文件中 LOCPOT 就是我们想要的静电势贡献,格式和 CHGCAR 一样,需计算 Z 方向的平均贡献,利用vaspkit -task 422/426.</p>
<p>VASP 中直接使用 LDIPOL 和 IDPOL 即可开启它的偶极校正功能</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">LDIPOL = .TRUE. 表示打开偶极校正</span><br><span class="line">IDIPOL = 3 表示偶极校正方向为第三晶格矢</span><br><span class="line">DIPOL = 0.5 0.5 0.5 表示体系的中心,以分数坐标表示</span><br><span class="line">LVHAR = .TRUE.</span><br></pre></td></tr></table></figure>
<p>真空能级在打开 LVHAR 时可能去读取 OUTCAR 直接得到</p>
<p><code>grep vacuum OUTCAR</code></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># vacuum level on the upper side and lower side of the slab 2.807 3.188</span><br></pre></td></tr></table></figure>
<p>注意 OUTCAR 中的真空能级需进行费米能级修正,即减去 OUTCAR 中的 E-fremi</p>
<h2 id="注意-1"><a href="#注意-1" class="headerlink" title="注意"></a>注意</h2><p>功函数:将一个固体内部的电子移动到真空所需的能量。(类似于逸出功)。</p>
<p>真空能级:固体表面外真空中自由电子所具有的能量。换句话说,电子跑出固体表面并达到这个能级后即可认为它自由。</p>
<ol>
<li><p>因 VASP 所适用的体系是周期性体系,使用它来模拟实验中的 Slab 模型时会取一个相当大的真空层来隔绝相邻两个周期中 Slab 的相互作用。理想情况下,真空层中的功函数应当是一条水平的直线(函数值为定值)。但如果表面的两侧并非对称,即其中一侧吸附了分子时, 这两侧的功函数存在差异,此时如果不进行偶极校正,真空中的功函数会是一条斜线;而经过偶极校正后,功函数会出现一个阶梯,阶梯两侧附近的曲接近水平。</p>
</li>
<li><p>在 VASP 中 LVHAR 参数可以使 VASP 输出体系的功函数文件 LOCPOT 。LOCPOT 文件本身是 Volumetric data ,它的格式与 CHGCAR 一样。一般而言,用户关心的功函数是垂直于表面方向上的数据,因此在得到 LOCPOT 后需要对 xy平面内的数据做平均,然后乘以晶胞的体积,就得到我们需要的功函数信息。</p>
</li>
<li><p>若体系难以收敛可手动计算原子坐标平均值并设置 DIPOL = 0.5 0.5 <z averaged z>,若修正效果不到预期可以打开偶极校正并设置上述 DIPOL = 0.5 0.5 <z averaged> 进行弛豫计算;<br>关闭 DIPOL,再次进行弛豫计算;<br>关闭 DIPOL,打开 LVHAR = .TRUE. 进去静态计算得到功函数;<br>若出现功函数台阶即为计算成功。</p>
</li>
<li><p>如果计算失败请检查 POSCAR 中晶格基矢对应分量是否为 0。如计算第三个方向偶极修正请保证前两个基矢的 z 分量为零且第三个基矢只有 z 分量不为零。另外要注销并行参数。</p>
</li>
</ol>
<h1 id="偶极矩直接积分法计算极化"><a href="#偶极矩直接积分法计算极化" class="headerlink" title="偶极矩直接积分法计算极化"></a>偶极矩直接积分法计算极化</h1><p>通过积分电荷密度分布计算系统的总电偶极矩,进而得到极化强度。适用于金属/绝缘体/二维材料。VASP通过LVTOT+DIPOL实现,见上。</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://example.com/2024/12/19/18-47-20/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="Keke Liu">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="Lightchaser">
<meta itemprop="description" content="一个小学生的博客">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | Lightchaser">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2024/12/19/18-47-20/" class="post-title-link" itemprop="url">9.1 转角结构</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2024-12-19 18:47:20" itemprop="dateCreated datePublished" datetime="2024-12-19T18:47:20+08:00">2024-12-19</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2025-06-07 11:18:15" itemprop="dateModified" datetime="2025-06-07T11:18:15+08:00">2025-06-07</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/DFT%E5%AD%A6%E4%B9%A0/" itemprop="url" rel="index"><span itemprop="name">DFT学习</span></a>
</span>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="转角结构简介"><a href="#转角结构简介" class="headerlink" title="转角结构简介"></a>转角结构简介</h1><h1 id="构建转角结构原理"><a href="#构建转角结构原理" class="headerlink" title="构建转角结构原理"></a>构建转角结构原理</h1><p><a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/j6dARDTRI_4c6yiSijTvHQ">https://mp.weixin.qq.com/s/j6dARDTRI_4c6yiSijTvHQ</a></p>
<p>转移矩阵这一步看不懂可先从三步看构建超胞我们是是用转移矩阵的方法来分别转角两层结构的。<br>这里先记住两个转移矩阵:第一层转移矩阵:<br>第二层转移矩阵:整数 越大超胞越大,单层原子数= 单胞原子数 转移矩阵的行列式 :$N = n det(T)$转角 满足:这里举个例子:对于石墨烯单胞原子数n=2,如果我们i取2,则转移矩阵的行列式=19,则单层原子数为</p>
<h1 id="构建转角结构的方法和程序"><a href="#构建转角结构的方法和程序" class="headerlink" title="构建转角结构的方法和程序"></a>构建转角结构的方法和程序</h1><h2 id="Twist2D"><a href="#Twist2D" class="headerlink" title="Twist2D"></a>Twist2D</h2><p>Python code for twisting the 2D materials.</p>
<p>链接:<a target="_blank" rel="noopener" href="https://github.com/kYangLi/Twist2D">https://github.com/kYangLi/Twist2D</a></p>
<p>使用:<code>python demo.py #将twist2d.py放到同一文件夹</code></p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br></pre></td><td class="code"><pre><span class="line">"""Twist2D Demo."""</span><br><span class="line">#%%</span><br><span class="line"># +------------+</span><br><span class="line"># | Usage Demo |</span><br><span class="line"># +------------+</span><br><span class="line">from twist2d import *</span><br><span class="line"></span><br><span class="line"># Create an object for t2d</span><br><span class="line">twist_demo = Twist2D()</span><br><span class="line"></span><br><span class="line"># Initialize the different twisted layers</span><br><span class="line"># - super_a1_mult, super_a2_mult: supercell vector a1',a2' based on a1,a2</span><br><span class="line"># - layer_dis: the layer distance of this layer to next layer, default 2A.</span><br><span class="line"># - scs_x, scs_y: supercell shift in x,y direction in angstroms, default 0A.</span><br><span class="line"># - prim_poscar: POSCAR for primitive cell of current layer, default 'POSCAR'. </span><br><span class="line">m = 6</span><br><span class="line">n = 7</span><br><span class="line">#--> 1st layer </span><br><span class="line"># The 1st layer is also the base layer, which all of other layers will </span><br><span class="line"># try to add some strain to match the 1st layer's cell constants.</span><br><span class="line">super_a1_mult = [m, n]</span><br><span class="line">super_a2_mult = [-n, m+n]</span><br><span class="line">twist_demo.add_layer(super_a1_mult, super_a2_mult, layer_dis=3, prim_poscar="POSCAR")</span><br><span class="line">#--> 2nd layer</span><br><span class="line">super_a1_mult = [n, m]</span><br><span class="line">super_a2_mult = [-m, n+m]</span><br><span class="line">twist_demo.add_layer(super_a1_mult, super_a2_mult, prim_poscar="POSCAR")</span><br><span class="line"># #--> 3rd layer</span><br><span class="line"># super_a1_mult = [n, m]</span><br><span class="line"># super_a2_mult = [-m, n+m]</span><br><span class="line"># twist_demo.add_layer(super_a1_mult, super_a2_mult, prim_poscar="POSCAR-BN")</span><br><span class="line"></span><br><span class="line"># Twisting the layers</span><br><span class="line"># - start_z: The lowest atom's fractional coordinates in z, default 0.1</span><br><span class="line"># - super_a3_z: The length of the c vector in z direction, default 20A.</span><br><span class="line">twist_demo.twist_layers(start_z=0.1)</span><br><span class="line"></span><br><span class="line"># Write results to the file</span><br><span class="line">twist_demo.write_res_to_poscar()</span><br><span class="line"></span><br><span class="line"># (Optional) Calculate the twisted angles of each layer in degree </span><br><span class="line">twisted_angles = twist_demo.calc_layers_twist_angles()</span><br><span class="line">print(twisted_angles)</span><br><span class="line"></span><br><span class="line"># PROGRAM END</span><br><span class="line"></span><br><span class="line">#%%</span><br><span class="line"># +-------------------+</span><br><span class="line"># | Special condition |</span><br><span class="line"># +-------------------+</span><br><span class="line">from twist2d import *</span><br><span class="line"></span><br><span class="line"># If you are twisting a bilayer graphene-like system, </span><br><span class="line"># you can write more simply like this:</span><br><span class="line"></span><br><span class="line"># Twist bilayer graphene-like structures</span><br><span class="line">tbg_demo = TwistBGL()</span><br><span class="line">tbg_demo.gen_TBGL(6, 7)</span><br><span class="line">#tbg_demo.gen_TBG(m=6, n=7, prim_poscar='POSCAR', poscar_out="POSCAR.T2D.vasp", start_z=0.1, super_a3_z=20.0, layer_dis=2.0, scs_x=0.0, scs_y=0.0)</span><br><span class="line"></span><br><span class="line"># (Optional) Calculate the twisted angles of each layer in degree </span><br><span class="line">twisted_angles = tbg_demo.calc_layers_twist_angles()</span><br><span class="line">print(twisted_angles)</span><br><span class="line"></span><br><span class="line">#PROGRAM END</span><br></pre></td></tr></table></figure>
<h2 id="Twister"><a href="#Twister" class="headerlink" title="Twister"></a>Twister</h2><p>印度科学研究所Manish Jain教授课题组开发了相应的Twister程序。</p>
<p>To construct a super lattice:</p>
<ol>
<li><p>Select the angle you wish to use from the table.</p>
</li>
<li><p>Use the corresponding twist angle (in radians), (m,n) and (p,q) in the input file: twist.inp (see Graphene/ and MoS2/ examples)</p>
</li>
<li><p>Provide the basis atoms in crystal units in a file: basis_pos_crys (additionally provide another basis file for layer 2. See MoS2/Angle_63.48 for an example)</p>
</li>
<li><p>Run twister:python path_to_Twister_1.0/src/twister.py</p>
</li>
</ol>
<p>链接:<a target="_blank" rel="noopener" href="http://www.physics.iisc.ac.in/~mjain/software/twister">http://www.physics.iisc.ac.in/~mjain/software/twister</a></p>
<h3 id="转角异质结构建:"><a href="#转角异质结构建:" class="headerlink" title="转角异质结构建:"></a>转角异质结构建:</h3><p>新建文件夹heterbilayer从其中一个例子中考入3个输入文件:basis_pos_crys basis_pos_crys_layer2 get_ang.inp </p>
<p>basis_pos_crys 和 basis_pos_crys_layer2是两层二维材料的晶体的原子坐标信息</p>
<p>get_ang.inp 为输入文件:自动搜索指定角度范围(theta_range)的扭转角,并输出精确扭转角、超晶格基矢和新的晶格参数</p>
<p>并行支持:-n 5 表示使用5个MPI进程加速计算。运行get_angle.py</p>
<p>输出文件:结果默认保存到文档</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line">range_nm: # 建立超胞的尺寸范围,尽量大点</span><br><span class="line">-10 11</span><br><span class="line">celldm_a:</span><br><span class="line">2.512 2.512 25.0 #第1原子层的晶格常数</span><br><span class="line">a1:</span><br><span class="line">0.5 0.8660254 0.0 #单胞1矢量a</span><br><span class="line">a2:</span><br><span class="line">-0.5 0.8660254 0.0 #单胞1矢量b</span><br><span class="line">a3:</span><br><span class="line">0.0 0.0 1.0 #单胞1矢量c</span><br><span class="line">Number_basis_atoms_a: #单胞1原子数</span><br><span class="line">2</span><br><span class="line">celldm_b:</span><br><span class="line">3.301 3.301 25.0 #第2原子层的晶格常数</span><br><span class="line">b1:</span><br><span class="line">0.5 0.8660254 0.0 #单胞2矢量a</span><br><span class="line">b2:</span><br><span class="line">-0.5 0.8660254 0.0 #单胞2矢量b</span><br><span class="line">b3:</span><br><span class="line">0.0 0.0 1.0 #单胞2矢量c</span><br><span class="line">Number_basis_atoms_b: #单胞2原子数</span><br><span class="line">3</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">theta_range: </span><br><span class="line">19.05 19.15 0.01 #角度搜索参数(°):上限 下限 步长;根据对称性:0-30°和30-60°结果相同initial mismatch threshold (Angstrom):不开启深度搜索的失配阈值。</span><br><span class="line">0.02512 #这个值很关键,太小了通常搜索不到,个人建议单胞晶格常数的1%</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">final mismatch threshold (Angstrom):#开启深度搜索后的最终失配阈值。</span><br><span class="line">0.00001</span><br><span class="line">strain_tensor_vector: #如果设置为TRUE,则单位向量会受到应变;如果设置为FALSE,则晶格参数会受到应变</span><br><span class="line">'False' # 只能是'False' 或者 True,大小写都不能错</span><br><span class="line">strain_per: #应变变化所允许的最大百分比范围</span><br><span class="line">1.0</span><br><span class="line">strain_layer: #'Top','Bottom'or'Both'</span><br><span class="line">'Top' # Top就是拉伸第2层,Bottom,就是拉伸第一层,具体拉伸那一层看你研究的对象</span><br><span class="line">DeepSearch:</span><br><span class="line">'False'</span><br><span class="line">fix_ang:</span><br><span class="line">'True'</span><br><span class="line">f_ang:</span><br><span class="line">60</span><br><span class="line">plot:</span><br><span class="line">'N'</span><br></pre></td></tr></table></figure>
<p>编辑输入文件 twist.inp,包含以下关键参数:</p>
<p>从 get_angle.py 输出的 共格扭转角、超晶格矢量 和 晶格参数。</p>
<p>原子基矢位置文件:basis_pos_crys(底层)和 basis_pos_crys_layer2(顶层)。</p>
<p>运行命令生成原子坐标</p>
<p>关于twist.inp的设置</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line">a1_l:</span><br><span class="line">1.000000000 0.000000000 0.000000000</span><br><span class="line">a2_l:</span><br><span class="line">0.500000000 0.866025400 0.000000000 </span><br><span class="line">a3_l:</span><br><span class="line">0.0 0.0 1.0</span><br><span class="line"></span><br><span class="line">celldm1_l, celldm2_l, celldm3_l: (Angstrom)</span><br><span class="line">3.164000000 3.164000000 25.000000000</span><br><span class="line"></span><br><span class="line">a1_u:</span><br><span class="line">1.000000000 0.000000000 0.000000000</span><br><span class="line">a2_u:</span><br><span class="line">0.500000000 0.866025400 0.000000000</span><br><span class="line">a3_u:</span><br><span class="line">0.0 0.0 1.0</span><br><span class="line"></span><br><span class="line">celldm1_u, celldm2_u, celldm3_u: (Angstrom)</span><br><span class="line">2.895032860 2.895032860 25.000000000</span><br><span class="line"></span><br><span class="line">angle: (radians)</span><br><span class="line">0.132454782</span><br><span class="line">layer2_from_file:</span><br><span class="line">True basis_pos_crys_layer2</span><br><span class="line">translate_z: (Angstrom)</span><br><span class="line">6.2</span><br><span class="line"></span><br><span class="line">Superlattice1: (m,n)</span><br><span class="line">-6.000000000 0.000000000 #.out文件中的第5行</span><br><span class="line"></span><br><span class="line">Superlattice2: (p,q)</span><br><span class="line">-6.000000000 6.000000000 #.out文件中的第6行</span><br><span class="line"></span><br><span class="line">Plot_lattice:False</span><br></pre></td></tr></table></figure>
<p>晶格参数默认以Å为单位,角度为弧度。</p>
<h2 id="CellMatch"><a href="#CellMatch" class="headerlink" title="CellMatch"></a>CellMatch</h2><p>CellMatch代码的目的是给定所选材料的两个单胞来生成这种共同的超胞。CellMatch代码在给定的组合空间内进行搜索,并根据施加在其中一个成分上的应变对结果进行排序,而另一个成分则经历零应变。</p>
<p>链接:<a target="_blank" rel="noopener" href="https://data.mendeley.com/datasets/drx9wzhn75/1">https://data.mendeley.com/datasets/drx9wzhn75/1</a></p>
<h2 id="online工具1"><a href="#online工具1" class="headerlink" title="online工具1"></a>online工具1</h2><p><a target="_blank" rel="noopener" href="https://materialsweb.org/lattice_matching/app">https://materialsweb.org/lattice_matching/app</a></p>
<ol>
<li>Upload two POSCARs for your monolayer materials</li>
<li>Enter the maximum acceptable area of the resultant unit cell</li>
<li>Enter the maximum acceptable strain in the resultant unit cell</li>
<li>Hit submit</li>
</ol>
<p>You can download the result POSCAR files using the Download POSCAR button. Keep in mind that POSCAR 1 will be the top part of the heterostructure and POSCAR 2 will be the bottom part of the heterostructure. The structures will be the same regardless unless either of the monolayers is asymmetric.</p>
<h2 id="online工具2"><a href="#online工具2" class="headerlink" title="online工具2"></a>online工具2</h2><p><a target="_blank" rel="noopener" href="http://www.latticemixer.com/">http://www.latticemixer.com</a></p>
<p>视频教程:<a target="_blank" rel="noopener" href="https://www.youtube.com/watch?v=OKRRmAPyX7w&t=370s">https://www.youtube.com/watch?v=OKRRmAPyX7w&t=370s</a></p>
<h2 id="vaspkit"><a href="#vaspkit" class="headerlink" title="vaspkit"></a>vaspkit</h2><p>vaspkit pro版本的825功能:Build Hexagonal Moire Superlattices</p>
<h1 id="小角度转角构建及哈密顿"><a href="#小角度转角构建及哈密顿" class="headerlink" title="小角度转角构建及哈密顿"></a>小角度转角构建及哈密顿</h1>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://example.com/2024/10/11/18-47-24/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="Keke Liu">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="Lightchaser">
<meta itemprop="description" content="一个小学生的博客">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | Lightchaser">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2024/10/11/18-47-24/" class="post-title-link" itemprop="url">8.1 QE基础教程</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2024-10-11 18:47:24" itemprop="dateCreated datePublished" datetime="2024-10-11T18:47:24+08:00">2024-10-11</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2024-10-28 08:59:44" itemprop="dateModified" datetime="2024-10-28T08:59:44+08:00">2024-10-28</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/DFT%E5%AD%A6%E4%B9%A0/" itemprop="url" rel="index"><span itemprop="name">DFT学习</span></a>
</span>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="QE简介"><a href="#QE简介" class="headerlink" title="QE简介"></a>QE简介</h1><p>(1)EPW模块:计算载流子迁移率与超导转变温度。<br>(2)声子模块:计算电声耦合以及动力学矩阵。<br>(3)微动弹性带模块:计算化学反应过渡态与反应路径。<br>(4)开源软件,完全免费多种泛函可供选择,提供外部泛函库(libxc)赝势种类众多,根据需求生成</p>
<h1 id="输入文件"><a href="#输入文件" class="headerlink" title="输入文件"></a>输入文件</h1><p>pw.x处理的计算包括以下7种类型,在输入文件中用calculation设置:</p>
<p>‘scf’:自洽计算,self-consistent field,通过迭代的方式数值求解微分-积分方程(Kohn-Sham方程),迭代收敛以电荷的变化足够小为准,最终得到自洽电荷。</p>
<p>‘nscf’:非自洽计算,scf计算常在k空间的网格上进行,网格要足够密以完成k空间上的积分,在DOS等计算需要更密的k<br>点,这时在自洽电荷基础上,计算这些更多的k<br>点,nscf计算保持自洽电荷不变。</p>
<p>‘bands’:也是一种nscf计算,k<br>点按照三维k空间中的特殊路径选取。</p>
<p>‘relax’:一系列scf计算,通过Hellman-Feynman力计算离子坐标驰豫(通过优化算法找到受力为零的结构),relax计算时固定cell不变。</p>
<p>‘vc-relax’: 允许cell变化的relax,通过应力的计算改变cell。</p>
<p>‘md’:分子动力学,将电子对离子的作用看成离子感受到的势,根据势能和离子初始速度求解离子运动的经典力学方程。</p>
<p>‘vc-md’:允许cell改变的md。</p>
<p>pw.x的输入说明见INPUT_PW。注意默认的单位,其中原子单位制为(以下数值见源程序q-e-qe-6.3/Modules/constants.f90):</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">1 bohr = 1 a.u. (atomic unit) = 0.52917720859 angstroms.</span><br><span class="line">1 Rydberg (Ry) = 13.60569193 eV</span><br></pre></td></tr></table></figure>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://example.com/2024/10/10/18-48-21/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="Keke Liu">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="Lightchaser">
<meta itemprop="description" content="一个小学生的博客">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | Lightchaser">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2024/10/10/18-48-21/" class="post-title-link" itemprop="url">7.4 DMFT</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2024-10-10 18:48:21" itemprop="dateCreated datePublished" datetime="2024-10-10T18:48:21+08:00">2024-10-10</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2026-05-25 20:35:11" itemprop="dateModified" datetime="2026-05-25T20:35:11+08:00">2026-05-25</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/DFT%E5%AD%A6%E4%B9%A0/" itemprop="url" rel="index"><span itemprop="name">DFT学习</span></a>
</span>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="DFT-DMFT-calculations-vasp6-5"><a href="#DFT-DMFT-calculations-vasp6-5" class="headerlink" title="DFT+DMFT calculations(vasp6.5)"></a>DFT+DMFT calculations(vasp6.5)</h1><p><a target="_blank" rel="noopener" href="https://www-.vasp.at/wiki/index.php/DFT%2BDMFT_calculations#">https://www-.vasp.at/wiki/index.php/DFT%2BDMFT_calculations#</a></p>
<p><a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/uq5crQCFMG6mk4tSH5YD6Q">https://mp.weixin.qq.com/s/uq5crQCFMG6mk4tSH5YD6Q</a></p>
<p><a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/WWnkcU8r9ultqE3kQeKy4g">https://mp.weixin.qq.com/s/WWnkcU8r9ultqE3kQeKy4g</a></p>
<p><a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/RtcqP_fUC0S-JTtI6ob2dQ">https://mp.weixin.qq.com/s/RtcqP_fUC0S-JTtI6ob2dQ</a></p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://example.com/2024/05/10/18-58-20/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="Keke Liu">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="Lightchaser">
<meta itemprop="description" content="一个小学生的博客">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | Lightchaser">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2024/05/10/18-58-20/" class="post-title-link" itemprop="url">7.3 磁性计算-vampire</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2024-05-10 18:58:20" itemprop="dateCreated datePublished" datetime="2024-05-10T18:58:20+08:00">2024-05-10</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2026-05-26 20:06:07" itemprop="dateModified" datetime="2026-05-26T20:06:07+08:00">2026-05-26</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/DFT%E5%AD%A6%E4%B9%A0/" itemprop="url" rel="index"><span itemprop="name">DFT学习</span></a>
</span>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>前面7.1已经介绍了MCsolver,7.2介绍了Sym4state。7.3介绍vampire。编译spirit太麻烦放弃。</p>
<h1 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h1><p>天玑算视频:<a target="_blank" rel="noopener" href="https://phadscholar.com/course/details/1810971969756221442">https://phadscholar.com/course/details/1810971969756221442</a></p>
<p><a target="_blank" rel="noopener" href="https://huangxiaokai.github.io/2020/03/05/Vampire%E5%AD%A6%E4%B9%A0%E4%B8%80/">https://huangxiaokai.github.io/2020/03/05/Vampire%E5%AD%A6%E4%B9%A0%E4%B8%80/</a></p>
<p>主要参考微信公众号:量子咖啡猫<br><a target="_blank" rel="noopener" href="https://mp.weixin.qq.com/s/YMdoyhAk7I-m51iZRvf_Eg">https://mp.weixin.qq.com/s/YMdoyhAk7I-m51iZRvf_Eg</a></p>
<p><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/660220298">https://zhuanlan.zhihu.com/p/660220298</a></p>
<h1 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h1><h2 id="vampire安装"><a href="#vampire安装" class="headerlink" title="vampire安装"></a>vampire安装</h2><figure class="highlight plaintext"><figcaption><span>clone git://github.com/richard-evans/vampire.git</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">make serial</span><br><span class="line">make vdc</span><br></pre></td></tr></table></figure>
<p>没有git就官网下载binary版本再make即可:’<a target="_blank" rel="noopener" href="https://vampire.york.ac.uk/download/">https://vampire.york.ac.uk/download/</a></p>
<h2 id="Povray"><a href="#Povray" class="headerlink" title="Povray"></a>Povray</h2><p>用了来处理结果</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">git clone https://github.com/POV-Ray/povray.git</span><br><span class="line">cd povray/</span><br><span class="line">cd unix/</span><br><span class="line">./prebuild.sh</span><br><span class="line">cd ..</span><br><span class="line">./configure --prefix= #=后面接自己要安装的位置</span><br><span class="line">make all</span><br><span class="line">sudo make install</span><br></pre></td></tr></table></figure>
<h2 id="环境变量"><a href="#环境变量" class="headerlink" title="环境变量"></a>环境变量</h2><p>vi ~/.bashrc<br>将vampire和povray_install/bin的路径加入环境变量即可</p>
<h2 id="测试"><a href="#测试" class="headerlink" title="测试"></a>测试</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">vampire-serial --version</span><br><span class="line">povray --version</span><br></pre></td></tr></table></figure>
<p>输出版本即可</p>
<h1 id="输入输出文件"><a href="#输入输出文件" class="headerlink" title="输入输出文件"></a>输入输出文件</h1><ol>
<li>input :控制计算运行指标(必备)</li>
<li>name.mat :具体的材料信息,如材料的相互作用(必备)</li>
<li>name.ucf :所取晶胞的大小和原子占位,具体原子的相互作用(非必要)</li>
<li>name.geo : 计算偶极矩使用,后续可能详细介绍(非必要)</li>
</ol>
<h2 id="input"><a href="#input" class="headerlink" title="input"></a>input</h2><p>input文件中包含的参数最多,主要分为几个模块,包括晶体结构、材料大小、指定读取name.mat和name.ucf文件、模拟程序的选择等。</p>
<ol>
<li><p>指定晶体结构(晶体类型和是否为周期性)</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">#---------------------------------------------------</span><br><span class="line"># Creation attributes</span><br><span class="line">#---------------------------------------------------</span><br><span class="line">create:crystal-structure=fcc</span><br><span class="line">create:periodic-boundaries-x</span><br><span class="line">create:periodic-boundaries-y</span><br><span class="line">create:periodic-boundaries-z</span><br></pre></td></tr></table></figure>
<p>这里说明是一个周期性的面心立方结构。</p>
</li>
<li><p>指定材料大小</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">#---------------------------------------------------</span><br><span class="line"># Creation attributes</span><br><span class="line">#---------------------------------------------------</span><br><span class="line">dimensions:system-size-x=4 !nm</span><br><span class="line">dimensions:system-size-y=4 !nm</span><br><span class="line">dimensions:system-size-z=10 !nm</span><br><span class="line">dimensions:unit-cell-size=3.54 !A</span><br></pre></td></tr></table></figure></li>
</ol>
<p>这里说明了最小晶胞尺寸为3.5埃,选取x=y=4nm和z=10nm大小的材料。</p>
<ol start="3">
<li><p>指定要读取的mat(materials file)和ucf(unit cell file)</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">#---------------------------------------------------</span><br><span class="line"># Material files</span><br><span class="line">#---------------------------------------------------</span><br><span class="line">material:file=name.mat</span><br><span class="line">material:unit-cell-file = "name.ucf"</span><br></pre></td></tr></table></figure>
</li>
<li><p>计算设置</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">#-----------------------------------------</span><br><span class="line"># Simulation attributes:</span><br><span class="line">#-----------------------------------------</span><br><span class="line">sim:minimum-temperature=0 </span><br><span class="line">sim:maximum-temperature=800 </span><br><span class="line">sim:temperature-increment=25 </span><br><span class="line">sim:equilibration-time-steps=1000 </span><br><span class="line">sim:loop-time-steps=1000</span><br><span class="line">sim:time-steps-increment=1 </span><br><span class="line">#sim:time-step=1.0E-16</span><br></pre></td></tr></table></figure>
<p>这里指定了模拟的温度范围和步数,平衡时间步数和循环迭代步数</p>
</li>
</ol>
<p>total-time-steps不包括equilibration-time-steps(先)包括loop-time-steps(后)</p>
<p>Time-steps=equilibration-time-steps(先)+total-time-steps(包括loop-time-steps)</p>
<p>当出现重复参数的时候,Vampire读取后面参数,并且可以用#注释掉该参数</p>
<p>5.选取程序和积分器</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">#-----------------------------------------</span><br><span class="line"># Program and integrator details </span><br><span class="line">#-----------------------------------------</span><br><span class="line">sim:program=curie-temperature </span><br><span class="line">sim:integrator=monte-carlo</span><br></pre></td></tr></table></figure>
<p>计算居里温度时,使用的程序curie-temperature,除此之外还有计算磁滞回线和斯格明子等程序;积分器使用的蒙特卡洛,除此外还有约束蒙特卡洛、llg-heun、llg-midpoint和hybrid-constrained-monte-carlo。选取不同的积分器可能影响计算结果,蒙特卡洛测量的居里温度偏小,而llg-heun方法测量的偏大。</p>
<ol start="6">
<li>控制输出信息<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">#-----------------------------------------</span><br><span class="line"># Data output</span><br><span class="line">#-----------------------------------------</span><br><span class="line">screen:temperature </span><br><span class="line">screen:mean-magnetisation-length</span><br><span class="line"></span><br><span class="line">output:real-time </span><br><span class="line">output:temperature </span><br><span class="line">output:magnetisation </span><br><span class="line">output:magnetisation-length </span><br><span class="line">output:mean-magnetisation-length</span><br><span class="line"></span><br><span class="line">config:atoms</span><br><span class="line">config:atoms-output-rate=100000</span><br></pre></td></tr></table></figure>
screen:计算过程中显示计算信息,不设置的时候也会默认输出。</li>
</ol>
<p>output:依次输出real-time、temperature、magnetisation、magnetisation-length、mean-magnetisation-length。</p>
<p>config:atoms-output-rate确定结构文件的速率输出为 sim:time-steps-increment 的倍数。</p>
<h2 id="完整input代码示例"><a href="#完整input代码示例" class="headerlink" title="完整input代码示例"></a>完整input代码示例</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line">#-----------------------------------------</span><br><span class="line"># Creation attributes:</span><br><span class="line">#-----------------------------------------</span><br><span class="line">create:crystal-structure=fcc </span><br><span class="line">create:periodic-boundaries-x </span><br><span class="line">create:periodic-boundaries-y </span><br><span class="line">create:periodic-boundaries-z</span><br><span class="line">#-----------------------------------------</span><br><span class="line"># System Dimensions:</span><br><span class="line">#-----------------------------------------</span><br><span class="line">dimensions:unit-cell-size = 3.524 !A </span><br><span class="line">dimensions:system-size-x = 4.0 !nm </span><br><span class="line">dimensions:system-size-y = 4.0 !nm </span><br><span class="line">dimensions:system-size-z = 4.0 !nm </span><br><span class="line">#-----------------------------------------</span><br><span class="line"># Material Files:</span><br><span class="line">#-----------------------------------------</span><br><span class="line">material:file=Ni.mat</span><br><span class="line">#-----------------------------------------</span><br><span class="line"># Simulation attributes:</span><br><span class="line">#-----------------------------------------</span><br><span class="line">sim:temperature=300 </span><br><span class="line">sim:minimum-temperature=0 </span><br><span class="line">sim:maximum-temperature=800 </span><br><span class="line">sim:temperature-increment=25 </span><br><span class="line">sim:time-steps-increment=1 </span><br><span class="line">sim:equilibration-time-steps=1000 </span><br><span class="line">sim:loop-time-steps=1000</span><br><span class="line">#-----------------------------------------</span><br><span class="line"># Program and integrator details </span><br><span class="line">#-----------------------------------------</span><br><span class="line">sim:program=curie-temperature </span><br><span class="line">sim:integrator=monte-carlo</span><br><span class="line">#-----------------------------------------</span><br><span class="line"># Data output</span><br><span class="line">#-----------------------------------------</span><br><span class="line">output:real-time </span><br><span class="line">output:temperature </span><br><span class="line">output:magnetisation </span><br><span class="line">output:magnetisation-length </span><br><span class="line">output:mean-magnetisation-length</span><br></pre></td></tr></table></figure>
<h2 id="name-mat"><a href="#name-mat" class="headerlink" title="name.mat"></a>name.mat</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">#---------------------------------------------------</span><br><span class="line"># Number of Materials</span><br><span class="line">#---------------------------------------------------</span><br><span class="line">material:num-materials=1</span><br></pre></td></tr></table></figure>
<p>材料类别,如果只有一种材料则设置为1,两种设置为2,往后依次类推。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">#---------------------------------------------------</span><br><span class="line"># Material 1 Nickel Generic</span><br><span class="line">#---------------------------------------------------</span><br><span class="line">material[1]:material-name=Ni</span><br><span class="line">material[1]:damping-constant=0.01</span><br><span class="line">material[1]:exchange-matrix[1]=2.757e-21</span><br><span class="line">material[1]:atomic-spin-moment=0.606 !muB</span><br><span class="line">material[1]:uniaxial-anisotropy-constant=5.47e-26</span><br><span class="line">material[1]:material-element=Ni</span><br></pre></td></tr></table></figure>
<p>具体材料的信息,包括材料名称(不会对模拟有影响)、进动系数、交换相互作用大小、原子自旋磁矩、单轴各向异性和元素类型等</p>
<h2 id="name-ucf-不是所有计算都需要,后续会具体介绍"><a href="#name-ucf-不是所有计算都需要,后续会具体介绍" class="headerlink" title="name.ucf (不是所有计算都需要,后续会具体介绍)"></a>name.ucf (不是所有计算都需要,后续会具体介绍)</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"># Unit cell size: </span><br><span class="line">3.54 3.54 3.54 </span><br><span class="line"># Unit cell vectors: </span><br><span class="line">1.0 0.0 0.0 </span><br><span class="line">0.0 1.0 0.0 </span><br><span class="line">0.0 0.0 1.0 </span><br><span class="line"># Atoms num, id cx cy cz mat lc hc </span><br><span class="line">1 </span><br><span class="line">0 0.5 0.5 0.5 0 0 0 </span><br><span class="line"># Interactions n exctype, id i j dx dy dz Jij </span><br><span class="line">6 isotropic #vectorial & tensorial</span><br><span class="line">0 0 0 1 0 0 1.6e-22 </span><br><span class="line">1 0 0 -1 0 0 1.6e-22 </span><br><span class="line">2 0 0 0 1 0 1.6e-22 </span><br><span class="line">3 0 0 0 -1 0 1.6e-22 </span><br><span class="line">4 0 0 0 0 1 1.6e-22 </span><br><span class="line">5 0 0 0 0 -1 1.6e-22</span><br></pre></td></tr></table></figure>
<p>自上而下,第一部分为原胞的大小(埃){注意要和input文件中保持一致}, 第二部分为基矢, 第三部分定义了原子总数、原子标号、原子坐标、原子材料类型、原子占比, 第四部分定义原子间的各向同性的交换相互作用。这是一个简单立方结构的晶体,最近邻相互作用共有6对。</p>
<p>定义交换相互作用的几行,第1列为相互作用标号从0到5、第2<del>3列原子i和原子j,这里只有一次类型的材料,所以都是0、第4</del>6列为原子i所在晶胞指向原子j所在晶胞的向量、最后一列为各向同性相互作用大小。</p>
<h2 id="output"><a href="#output" class="headerlink" title="output"></a>output</h2><p>在input中的设置和对应输出的output文件如图所示</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">output:real-time </span><br><span class="line">output:temperature </span><br><span class="line">output:magnetisation </span><br><span class="line">output:magnetisation-length </span><br><span class="line">output:mean-magnetisation-length</span><br></pre></td></tr></table></figure>
<h2 id="可视化visualization"><a href="#可视化visualization" class="headerlink" title="可视化visualization"></a>可视化visualization</h2><p>晶体结构可视化,可以检查搭建结构是否正确,必须存在运行后输出atoms-coords.data/meta文件,可以使用rasmol,也可以使用vesta等软件打开crystal.xyz文件</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">vdc --xyz</span><br><span class="line">rasmol -xyz crystal.xyz </span><br></pre></td></tr></table></figure>
<p>图片自旋结构可视化,必须存在运行后输出<br>spins-00000000.data/meta文件</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">vdc --povray</span><br><span class="line">povray spins </span><br></pre></td></tr></table></figure>
<h2 id="tips"><a href="#tips" class="headerlink" title="tips"></a>tips</h2><ol>
<li><p>周期边界条件对计算结果的影响可忽略不计,但是在8nm的时候,Curie Temperature增加</p>
</li>
<li><p>随着dimension的增大,Cuire Temperature略增加</p>
</li>
<li><p>平衡时间步长计算结果影响为,步数的增加,结果越来越准确 sim:equilibration-time-steps=</p>
</li>
<li><p>循环迭代施加对计算结果影响为,循环迭代步数的增加,结果越来越准确 sim:loop-time-steps=</p>
</li>
<li><p>时间步长对计算结果的影响可忽略不计<br>sim:time-step=</p>
</li>
<li><p>Spin temperature rescaling。在之前计算居里温度的基础上为Ni.mat增加两个参数,进而修正磁化曲线。rescaling后向较于普通的更加凸显居里温度,更贴合实验结果。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">material[1]:temperature-rescaling-exponent=2.322 </span><br><span class="line">material[2]:temperature-rescaling-curie-temperature=635.0</span><br></pre></td></tr></table></figure>
</li>
<li><p>输出文件</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">output :input文件中设置的输出内容</span><br><span class="line">log :日志文件,记载计算流程中的细节</span><br><span class="line">atoms-coords.data/meta :原子结构信息文件</span><br><span class="line">spins-00000000.data/meta : 自旋结构信息文件</span><br></pre></td></tr></table></figure></li>
<li><p>按照手册要求,一般需把晶格转换成正交晶格,使用vesta即可。注意一般需要扩胞。如此做的话,则通常unit cell vector就不用再改了。</p>
</li>
<li><p>.ucf文件第三部分对应:原子ID(从0计数),原子分数坐标(正交晶格下的),材料ID(从0计数),分类ID(用于某些统计,从0计数)和hcat。材料和.mat文件中定义的材料对应。<br>第四部分写入交换相互作用。对应:作用项ID,原子i,原子j,原子j所在晶格坐标(dx,dy,dz),交换作用。</p>
</li>
<li><p>交换作用有多种类型,可以是各向同性的,只需输入一个数值;可以是矢量的,代表各向异性的海森堡交换;可以是张量,其中反对称的非对角元可以用于表示DMI。而如果是对称的非对角元则可以表示Katiev作用。当然也可以同时都有。</p>
</li>
<li><p>注意,一个unit cell的所有原子的交换常数都需要包含,即使是重复的。如0-1和1-0。因此,总的交换数目,通常等价于一个原子考虑的交换数目×原子数。</p>
</li>
<li><p>实际使用中,此文本通常只保留磁性原子所在的坐标。其余不在研究范围内的非磁性原子的坐标空着。</p>
</li>
</ol>
<h1 id="案例"><a href="#案例" class="headerlink" title="案例"></a>案例</h1>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="http://example.com/2024/05/10/18-47-20/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="Keke Liu">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="Lightchaser">
<meta itemprop="description" content="一个小学生的博客">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | Lightchaser">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2024/05/10/18-47-20/" class="post-title-link" itemprop="url">7.2 磁性计算-Sym4state</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2024-05-10 18:47:20" itemprop="dateCreated datePublished" datetime="2024-05-10T18:47:20+08:00">2024-05-10</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2026-05-26 19:56:59" itemprop="dateModified" datetime="2026-05-26T19:56:59+08:00">2026-05-26</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/DFT%E5%AD%A6%E4%B9%A0/" itemprop="url" rel="index"><span itemprop="name">DFT学习</span></a>
</span>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h1 id="Sym4state-Manual"><a href="#Sym4state-Manual" class="headerlink" title="Sym4state Manual"></a>Sym4state Manual</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">CurrentModule = Sym4state.ModCore</span><br></pre></td></tr></table></figure>
<figure class="highlight plaintext"><figcaption><span>pre_and_post</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">using PrintFileTree</span><br><span class="line">local pair_mat, coeff_array</span><br></pre></td></tr></table></figure>
<p>bilinear Heisenberg model can be described by</p>
<p>$\mathcal{H} = \sum_{i < j} S_i \cdot \mathcal{J}<em>{i j} \cdot S_j + \sum</em>{i} S_i \cdot \mathcal{A} \cdot S_i - m \sum_{i} S_i \cdot \vec{B}$</p>
<p>where the symbol $\mathcal{J}_{ij}$ denotes the exchange interaction matrix between two spins, $S_i$ and $S_j$, the matrix $\mathcal{A}$ represents the single-ion anisotropy. 四态法计算磁耦合,需要计算4种不同的磁基态,allowing the extraction of individual components for the exchange matrix.</p>
<p>想计算每一个元素的交换矩阵,就需要计算36个能量,由于一些结构的等价性,手动分析对称性筛选很有挑战,而且有遗漏的风险。</p>
<h2 id="Pre-process"><a href="#Pre-process" class="headerlink" title="Pre-process"></a>Pre-process</h2><p>One can use our program to streamline the simpilifing and calculating process easily. For example, with a POSCAR file of monolayer CrI3</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">Cr2 I6 </span><br><span class="line"> 1.00000000000000 </span><br><span class="line"> 7.1131374882967124 0.0000000000000000 0.0000000000000000</span><br><span class="line"> -3.5565687441483571 6.1601577654763897 0.0000000000000000</span><br><span class="line"> 0.0000000000000000 0.0000000000000000 18.0635365764484419</span><br><span class="line"> Cr I </span><br><span class="line"> 2 6</span><br><span class="line">Direct</span><br><span class="line"> 0.6666666666666643 0.3333333333333357 0.5000000247180765</span><br><span class="line"> 0.3333333333333357 0.6666666666666643 0.5000000501683317</span><br><span class="line"> 0.6415738047516142 0.9999977877949036 0.4116659127023310</span><br><span class="line"> 0.3584239830432894 0.3584261952483858 0.4116659127023310</span><br><span class="line"> 0.0000022122051035 0.6415760169567106 0.4116659127023310</span><br><span class="line"> 0.3584241488090230 0.9999980859273947 0.5883340783387269</span><br><span class="line"> 0.6415739371183646 0.6415758511909699 0.5883340783387269</span><br><span class="line"> 0.0000019140726053 0.3584260628816354 0.5883340783387269</span><br></pre></td></tr></table></figure>
<p>合适设置 INCAR, POTCAR and KPOINTS 用于磁性自洽计算, 可以用 <code>Sym4state.jl</code> 产生所有的输入文件用于计算最近邻交换作用和单离子各向异性,过程如下:</p>
<figure class="highlight plaintext"><figcaption><span>pre_and_post</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">using Sym4state</span><br><span class="line">cd("CrI3") do # hide</span><br><span class="line">Sym4state.pre_process(</span><br><span class="line"> "./POSCAR",</span><br><span class="line"> [24], # Take Cr element as magnetic</span><br><span class="line"> 5.0 # There exists an interaction between atoms within a distance of 5 Å.</span><br><span class="line">)</span><br><span class="line">end # hide</span><br></pre></td></tr></table></figure>
<p>它将会构建超胞,满足两个任意原子无相互作用。给定的单层 ${CrI3}$ with a cutoff radius of 5 Å, a $2 \times 2 \times 1$ supercell will provide sufficient size. The supercell diagram below labels all the ${Cr}$ atoms:</p>
<p>Within the 5 Å cutoff radius, the monolayer of <code>\ce{CrI3}</code> exhibits two distinct groups of interactions. The first group corresponds to interactions between nearest neighbors, whereas the second group pertains to interactions arising from single-ion anisotropy. It is important to note that all atom pairs within the same group are considered equivalent. This equivalence implies the existence of symmetric operations that can transform one interaction matrix into another, highlighting the underlying symmetry of the system.</p>
<p> <code>pre_process</code> function的输出结果中,1组包含6对等价,第2组有2对等价。尽管简化了计算,还是要计算几种磁结构。 在考虑最近邻情况下,至少计算9个磁基态,相反在处理单离子各向异性需要2个。<br>不同参数和能量的关系储存在 <code>cal.jld2</code>. 另外该功能会生成几个目录储存对应输入文件。</p>
<figure class="highlight plaintext"><figcaption><span>pre_and_post</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">printfiletree("CrI3") # hide</span><br></pre></td></tr></table></figure>
<p>所有的目录储存在 <code>cal_list</code>, 后续提交任务即可。 <a target="_blank" rel="noopener" href="https://slurm.schedmd.com/">Slurm</a>‘s job array by submitting a shell like:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/sh</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#SBATCH -n 144</span></span><br><span class="line"><span class="comment">#SBATCH --array=1-11%2</span></span><br><span class="line"></span><br><span class="line">module load vasp-6.3.2-optcell</span><br><span class="line"></span><br><span class="line">target_dir=$(sed -n <span class="string">"<span class="variable">${SLURM_ARRAY_TASK_ID}</span>p"</span> cal_dir_list)</span><br><span class="line"></span><br><span class="line"><span class="built_in">cd</span> <span class="variable">${target_dir}</span></span><br><span class="line"></span><br><span class="line">srun vasp_ncl</span><br></pre></td></tr></table></figure>
<p>这个 shell 脚本创建 Slurm job array 计算所有 11 magnetic configurations, while efficiently managing computational resources by allowing a maximum of 2 jobs to run simultaneously.</p>
<h2 id="Post-process"><a href="#Post-process" class="headerlink" title="Post-process"></a>Post-process</h2><p>计算完成后 <code>post_process</code> function 提取不同磁结构的能量,最终创建交换矩阵。</p>
<figure class="highlight plaintext"><figcaption><span>pre_and_post</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">cd("CrI3") do # hide</span><br><span class="line">global pair_mat, coeff_array # hide</span><br><span class="line">mv("../oszicar.tar.gz", "./oszicar.tar.gz") # hide</span><br><span class="line">run(`tar -xvzf oszicar.tar.gz`) # hide</span><br><span class="line">for (idx, dir_name) in enumerate(readlines("cal_dir_list")) # hide</span><br><span class="line"> cp("oszicar/OSZICAR_$(idx)", dir_name * "OSZICAR") # hide</span><br><span class="line">end # hide</span><br><span class="line">pair_mat, coeff_array = Sym4state.post_process("./cal.jld2")</span><br><span class="line">end # hide</span><br></pre></td></tr></table></figure>
<p>我们可以测试 the dimensions of <code>pair_mat</code> and <code>coeff_array</code>, 它分别存储了不同原子对的起始点和结束点的索引及其对应的相互作用矩阵。</p>
<figure class="highlight plaintext"><figcaption><span>pre_and_post</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">size(pair_mat)</span><br><span class="line">size(coeff_array)</span><br></pre></td></tr></table></figure>
<p>因此我们看到共有8个相互作用在cutoff radius of 5 Å. 让我们检查<code>pair_mat</code>中的一个特定条目,它包含表示原子对的索引:</p>
<figure class="highlight plaintext"><figcaption><span>pre_and_post</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pair_mat[:, 1]</span><br></pre></td></tr></table></figure>
<p>初始数字和最终数字分别对应于起点原子和终点原子的指数。第二个和第三个数字表示原始单元格沿x轴和y轴的偏移量。</p>
<h2 id="Monte-Carlo-Simulation"><a href="#Monte-Carlo-Simulation" class="headerlink" title="Monte Carlo Simulation"></a>Monte Carlo Simulation</h2><p>前面 <code>pair_mat</code> and <code>coeff_array</code>的结果,可以通过 Monte Carlo simulation 计算 phase transition temperature or magnetic texture :</p>
<figure class="highlight plaintext"><figcaption><span>pre_and_post</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">using Unitful, UnitfulAtomic</span><br><span class="line">mcconfig = Sym4state.MC.MCConfig{Float32}(</span><br><span class="line"> lattice_size=[128, 128],</span><br><span class="line"> magmom_vector=[3.5, 3.5],</span><br><span class="line"> pair_mat=pair_mat,</span><br><span class="line"> interact_coeff_array=coeff_array,</span><br><span class="line"> temperature=collect(150:-2:0),</span><br><span class="line"> magnetic_field=zeros(3),</span><br><span class="line"> equilibration_step_num=100_000,</span><br><span class="line"> measuring_step_num=100_000</span><br><span class="line">)</span><br></pre></td></tr></table></figure>
<p>In the aforementioned code snippet, we have configured a simulated annealing simulation, commencing at a temperature of 150 K and progressively reducing it to 0 K in steps of 2 K. The simulation operates on a $128 \times 128$ supercell of ${CrI3}$ using the previously computed interaction matrix. To assess the system, we perform a preliminary equilibration phase consisting of <code>100000</code> sweeps, followed by a measurement phase comprising <code>100000</code> sweeps for acquiring physical quantities. It is worth noting that the magnetic field is absent, rendering the <code>magmom_vector</code> inconsequential.</p>
<p>With the created <code>mcconfig</code>, one can initiate a Monte Carlo simulation as follows:</p>
<figure class="highlight julia"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">(</span><br><span class="line"> states_over_env,</span><br><span class="line"> norm_mean_mag_over_env,</span><br><span class="line"> susceptibility_over_env,</span><br><span class="line"> specific_heat_over_env</span><br><span class="line">) = Sym4state.MC.mcmc(</span><br><span class="line"> mcconfig,</span><br><span class="line"> backend=Sym4state.MC.CPU()</span><br><span class="line"> progress_enabled=<span class="literal">false</span>,</span><br><span class="line"> log_enabled=<span class="literal">false</span></span><br><span class="line">)</span><br></pre></td></tr></table></figure>
<p>The parameter <code>backend</code> can be configured to employ <code>CUDABackend()</code> provided by <a target="_blank" rel="noopener" href="https://github.com/JuliaGPU/CUDA.jl"><code>CUDA.jl</code></a> or any other backends supported by <a target="_blank" rel="noopener" href="https://github.com/JuliaGPU/KernelAbstractions.jl"><code>KernelAbstractions.jl</code></a> to enhance performance utilizing the GPU.</p>
<p>The <code>MCConfig</code> can also be stored into a <code>.toml</code> file by:</p>
<figure class="highlight plaintext"><figcaption><span>pre_and_post</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cd("CrI3") do # hide</span><br><span class="line">Sym4state.MC.save_config("CrI3.toml", mcconfig)</span><br><span class="line">end # hide</span><br></pre></td></tr></table></figure>
<p>or it can also be restored by:</p>
<figure class="highlight plaintext"><figcaption><span>pre_and_post</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cd("CrI3") do # hide</span><br><span class="line">mcconfig = Sym4state.MC.load_config("CrI3.toml")</span><br><span class="line">end # hide</span><br></pre></td></tr></table></figure>
<h2 id="Functions"><a href="#Functions" class="headerlink" title="Functions"></a>Functions</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">reduce_interact_mat_for_a_pair</span><br><span class="line">supercell_check</span><br><span class="line">pre_process</span><br><span class="line">post_process</span><br></pre></td></tr></table></figure>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">rm("CrI3", recursive=true)</span><br><span class="line">nothing</span><br></pre></td></tr></table></figure>
<h1 id="手册"><a href="#手册" class="headerlink" title="手册"></a>手册</h1><h2 id="当前模块"><a href="#当前模块" class="headerlink" title="当前模块"></a>当前模块</h2><p><code>Sym4state.ModCore</code> 使用 <code>PrintFileTree</code> 本地 <code>pair_mat</code>、<code>coeff_array</code></p>
<p>对于磁体的磁性特性的理论探索,双线性海森堡模型被证明是表示磁相互作用的有用框架,可以用以下公式描述:<br>$$<br>\mathcal{H} = -\sum_{i,j} \mathcal{J}_{ij} \mathbf{S}_i \cdot \mathbf{S}<em>j + \sum</em>{i} \mathcal{A} \mathbf{S}_i^2<br>$$<br>其中符号 <code>\mathcal{J}_{ij}</code> 表示两个自旋 <code>S_i</code> 和 <code>S_j</code> 之间的交换相互作用矩阵,矩阵 <code>\mathcal{A}</code> 表示单离子各向异性。为了确定磁相互作用矩阵元素,研究人员通常采用四态方法 <a href="#user-content-fn-1-8f7d6183a295783803aaf3f6284a47b5">1</a> <a href="#user-content-fn-2-8f7d6183a295783803aaf3f6284a47b5">2</a> <a href="#user-content-fn-3-8f7d6183a295783803aaf3f6284a47b5">3</a>。该方法涉及计算四种不同的磁配置的能量,从而提取交换矩阵的各个分量。将此方法扩展到交换矩阵的每个元素需要计算总共 36 种能量,以获得完整的矩阵。需要注意的是,由于材料的对称性,一些能量是简并的。尽管如此,进行手动对称分析以简化能量计算的数量仍然是一项具有挑战性的工作,因为存在遗漏或误解某些对称操作的潜在风险。</p>
<h2 id="预处理"><a href="#预处理" class="headerlink" title="预处理"></a>预处理</h2><p>可以使用我们的程序轻松简化和计算过程。例如,使用 <code>\ce{CrI3}</code> 的 POSCAR 文件:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">Cr2 I6</span><br><span class="line">1.00000000000000</span><br><span class="line">7.11313748829671 0.00000000000000 0.00000000000000</span><br><span class="line">-3.55656874414836 6.16015776547639 0.00000000000000</span><br><span class="line">0.00000000000000 0.00000000000000 18.06353657644844</span><br><span class="line">Cr I2 6</span><br><span class="line">Direct</span><br><span class="line">0.66666666666666 0.33333333333333 0.50000002471808</span><br><span class="line">0.33333333333333 0.66666666666666 0.50000005016833</span><br><span class="line">0.64157380475161 0.99999778779490 0.41166591270233</span><br><span class="line">0.35842398304329 0.35842619524839 0.41166591270233</span><br><span class="line">0.00000221220510 0.64157601695671 0.41166591270233</span><br><span class="line">0.35842414880902 0.99999808592739 0.58833407833873</span><br><span class="line">0.64157393711836 0.64157585119097 0.58833407833873</span><br><span class="line">0.00000191407261 0.35842606288164 0.58833407833873</span><br></pre></td></tr></table></figure>
<p>以及适当设置的 INCAR、POTCAR 和 KPOINTS 文件以进行 SCF 计算,可以简单地使用 <code>Sym4state.jl</code> 生成所有输入文件以计算最近的交换相互作用和单离子各向异性相互作用,如下所示:</p>
<figure class="highlight julia"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">using</span> Sym4state</span><br><span class="line">cd(<span class="string">"CrI3"</span>) <span class="keyword">do</span></span><br><span class="line"> Sym4state.pre_process(<span class="string">"./POSCAR"</span>, [<span class="number">24</span>], <span class="comment"># 以 Cr 元素作为磁性</span></span><br><span class="line"> <span class="number">5.0</span> <span class="comment"># 存在一个距离为 5 Å 的原子间相互作用</span></span><br><span class="line"> )</span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure>
<p>此函数将利用 <a target="_blank" rel="noopener" href="https://github.com/A-LOST-WAPITI/Sym4state.jl/blob/main/docs/src/@ref"><code>supercell_check</code></a> 方法为提供的结构创建超晶胞。超晶胞应足够大,以确保在指定的截止半径内,任何两个原子之间不超过一个连接。对于给定的 <code>\ce{CrI3}</code> 单层,截止半径为 5 Å,<code>2 \times 2 \times 1</code> 的超晶胞将提供足够的大小。下图标记了所有的 <code>\ce{Cr}</code> 原子:</p>
<p><img src="https://github.com/A-LOST-WAPITI/Sym4state.jl/raw/main/docs/src/figs/CONTCAR.webp" alt="单层 \ce{CrI3} 的俯视图"></p>
<p>在 5 Å 的截止半径内,单层 <code>\ce{CrI3}</code> 显示出两组不同的相互作用。第一组对应于最近邻之间的相互作用,而第二组则涉及单离子各向异性引起的相互作用。需要注意的是,同一组内的所有原子对被视为等效。这种等效性意味着存在对称操作,可以将一个相互作用矩阵转换为另一个,突显了系统的潜在对称性。</p>
<p>根据 <code>pre_process</code> 函数获得的输出,初始组包含 6 对等效的原子对,而第二组则包含 2 对等效的原子对。尽管通过使用对称操作简化涉及各种相互作用矩阵的计算的潜力存在,但仍然有一个特定的相互作用矩阵需要计算最少数量的配置。在最近邻相互作用的情况下,必须计算至少 9 种磁配置的能量。相反,在处理单离子各向异性相互作用时,需要评估至少 2 种磁配置的能量。</p>
<p>该函数将恢复不同能量和配置之间的所有关系到文件 <code>cal.jld2</code> 中。此外,该函数将生成多个目录以存储与各种磁配置相对应的输入文件。</p>
<figure class="highlight julia"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">printfiletree(<span class="string">"CrI3"</span>)</span><br></pre></td></tr></table></figure>
<p>所有这些目录的路径存储在文件 <code>cal_list</code> 中,可以使用该文件通过提交如下的 shell 创建 Slurm 的作业数组:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/sh</span></span><br><span class="line"><span class="comment">#SBATCH -n 144</span></span><br><span class="line"><span class="comment">#SBATCH --array=1-11%2</span></span><br><span class="line">module load vasp-6.3.2-opt</span><br><span class="line">celltarget_dir=$(sed -n <span class="string">"<span class="variable">${SLURM_ARRAY_TASK_ID}</span>p"</span> cal_dir_list)</span><br><span class="line"><span class="built_in">cd</span> <span class="variable">${target_dir}</span></span><br><span class="line">srun vasp_ncl</span><br></pre></td></tr></table></figure>
<p>该 shell 脚本旨在创建一个 Slurm 作业数组,以计算所有 11 种磁配置的能量,同时通过允许最多 2 个作业同时运行来有效管理计算资源。</p>
<h2 id="后处理"><a href="#后处理" class="headerlink" title="后处理"></a>后处理</h2><p>一旦所有计算都已收敛,可以利用 <code>post_process</code> 函数提取与不同配置相关的能量。此过程最终导致构建相互作用矩阵。</p>
<figure class="highlight julia"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">cd(<span class="string">"CrI3"</span>) <span class="keyword">do</span></span><br><span class="line"> <span class="keyword">global</span> pair_mat, coeff_array</span><br><span class="line"> mv(<span class="string">"../oszicar.tar.gz"</span>, <span class="string">"./oszicar.tar.gz"</span>) <span class="comment"># 隐藏</span></span><br><span class="line"> run(<span class="string">`tar -xvzf oszicar.tar.gz`</span>) <span class="comment"># 隐藏</span></span><br><span class="line"> <span class="keyword">for</span> (idx, dir_name) <span class="keyword">in</span> enumerate(readlines(<span class="string">"cal_dir_list"</span>)) <span class="comment"># 隐藏</span></span><br><span class="line"> cp(<span class="string">"oszicar/OSZICAR_<span class="subst">$(idx)</span>"</span>, dir_name * <span class="string">"OSZICAR"</span>) <span class="comment"># 隐藏</span></span><br><span class="line"> <span class="keyword">end</span> <span class="comment"># 隐藏</span></span><br><span class="line"> pair_mat, coeff_array = Sym4state.post_process(<span class="string">"./cal.jld2"</span>)</span><br><span class="line"><span class="keyword">end</span> <span class="comment"># 隐藏</span></span><br></pre></td></tr></table></figure>
<p>我们可以检查 <code>pair_mat</code> 和 <code>coeff_array</code> 的维度,这些存储了各种原子对的起始和结束点的索引及其对应的相互作用矩阵。</p>
<figure class="highlight julia"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">size(pair_mat)</span><br><span class="line">size(coeff_array)</span><br></pre></td></tr></table></figure>
<p>因此,我们观察到在 5 Å 的截止半径内存在总共 8 种相互作用。让我们检查 <code>pair_mat</code> 中的一个特定条目,该条目包含表示原子对的索引:</p>
<p>初始和最终数字对应于起始和结束点原子的索引,第二和第三个数字表示沿 x 轴和 y 轴的原始单元的偏移量。</p>
<h2 id="蒙特卡罗模拟"><a href="#蒙特卡罗模拟" class="headerlink" title="蒙特卡罗模拟"></a>蒙特卡罗模拟</h2><p>利用前面的结果 <code>pair_mat</code> 和 <code>coeff_array</code>,我们可以设置一个蒙特卡罗模拟的配置,以确定相变温度或磁纹理,如下所示:</p>
<figure class="highlight julia"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">using</span> Unitful, UnitfulAtomic</span><br><span class="line"></span><br><span class="line">mcconfig = Sym4state.MC.MCConfig{<span class="built_in">Float32</span>}(</span><br><span class="line"> lattice_size=[<span class="number">128</span>, <span class="number">128</span>],</span><br><span class="line"> magmom_vector=[<span class="number">3.5</span>, <span class="number">3.5</span>],</span><br><span class="line"> pair_mat=pair_mat,</span><br><span class="line"> interact_coeff_array=coeff_array,</span><br><span class="line"> temperature=collect(<span class="number">150</span>:-<span class="number">2</span>:<span class="number">0</span>),</span><br><span class="line"> magnetic_field=zeros(<span class="number">3</span>),</span><br><span class="line"> equilibration_step_num=<span class="number">100_000</span>,</span><br><span class="line"> measuring_step_num=<span class="number">100_000</span></span><br><span class="line">)</span><br></pre></td></tr></table></figure>
<p>在上述代码片段中,我们配置了一个模拟退火模拟,从 150 K 开始,逐渐降低到 0 K,步长为 2 K。模拟在 <code>\ce{CrI3}</code> 的 <code>128 \times 128</code> 超晶胞上运行,使用先前计算的相互作用矩阵。为了评估系统,我们进行初步的平衡阶段,包含 <code>100000</code> 次扫掠,随后是包含 <code>100000</code> 次扫掠的测量阶段,以获取物理量。值得注意的是,磁场缺失,因此 <code>magmom_vector</code> 并不重要。</p>
<p>使用创建的 <code>mcconfig</code>,可以如下启动蒙特卡罗模拟:</p>
<figure class="highlight julia"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">(states_over_env, norm_mean_mag_over_env, susceptibility_over_env, specific_heat_over_env) = </span><br><span class="line"> Sym4state.MC.mcmc(mcconfig, backend=Sym4state.MC.CPU(), progress_enabled=<span class="literal">false</span>, log_enabled=<span class="literal">false</span>)</span><br></pre></td></tr></table></figure>
<p>参数 <code>backend</code> 可以配置为使用 <a target="_blank" rel="noopener" href="https://github.com/JuliaGPU/CUDA.jl"><code>CUDABackend()</code></a> 提供的 GPU 加速,或任何其他由 <a target="_blank" rel="noopener" href="https://github.com/JuliaGPU/KernelAbstractions.jl"><code>KernelAbstractions.jl</code></a> 支持的后端,以提高性能。</p>
<p><code>MCConfig</code> 还可以存储到 <code>.toml</code> 文件中:</p>
<figure class="highlight julia"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cd(<span class="string">"CrI3"</span>) <span class="keyword">do</span></span><br><span class="line"> Sym4state.MC.save_config(<span class="string">"CrI3.toml"</span>, mcconfig)</span><br><span class="line"><span class="keyword">end</span> <span class="comment"># 隐藏</span></span><br></pre></td></tr></table></figure>
<p>或者也可以通过以下方式恢复:</p>