-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
2315 lines (1882 loc) · 426 KB
/
index.html
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">26</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">40</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:[email protected]" title="E-Mail → mailto:[email protected]" 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/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/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 磁性计算2</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="修改时间:2024-12-13 20:44:43" itemprop="dateModified" datetime="2024-12-13T20:44:43+08:00">2024-12-13</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>
<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"> mcconfig = Sym4state.MC.load_config(<span class="string">"CrI3.toml"</span>)</span><br><span class="line"><span class="keyword">end</span> <span class="comment"># 隐藏</span></span><br></pre></td></tr></table></figure>
<h2 id="函数"><a href="#函数" class="headerlink" title="函数"></a>函数</h2><ul>
<li><code>reduce_interact_mat_for_a_pair</code></li>
<li><code>supercell_check</code></li>
<li><code>pre_process</code></li>
<li><code>post_process</code></li>
<li><code>rm("CrI3", recursive=true)</code></li>
</ul>
<h2 id="参考文献"><a href="#参考文献" class="headerlink" title="参考文献"></a>参考文献</h2><ol>
<li>Xiang, H. J., et al. “Predicting the spin-lattice order of frustrated systems from first principles.” Physical Review B 84.22 (2011): 224429. <a href="#user-content-fnref-1-8f7d6183a295783803aaf3f6284a47b5">↩</a></li>
<li>Šabani, D., C. Bacaksiz, and M. V. Milošević. “Ab initio methodology for magnetic exchange parameters: Generic four-state energy mapping onto a Heisenberg spin Hamiltonian.” Physical Review B 102.1 (2020): 014457. <a href="#user-content-fnref-2-8f7d6183a295783803aaf3f6284a47b5">↩</a></li>
<li>Xiang, Hongjun, et al. “Magnetic properties and energy-mapping analysis.” Dalton Transactions 42.4 (2013): 823-853. <a href="#user-content-fnref-3-8f7d6183a295783803aaf3f6284a47b5">↩</a></li>
</ol>
<h2 id="SAXIS"><a href="#SAXIS" class="headerlink" title="SAXIS"></a>SAXIS</h2><p><strong>默认值</strong>: <code>SAXIS = (0, 0, 1)</code></p>
<h3 id="描述"><a href="#描述" class="headerlink" title="描述"></a>描述</h3><p>设置全局自旋量子化轴相对于笛卡尔坐标系的方向。</p>
<p>SAXIS 指定由泡利矩阵生成的自旋子空间的相对方向。默认情况下,<code>SAXIS</code> 为 <code>(0, 0, 1)</code>,即自旋量子化轴沿 z 轴方向。</p>
<h3 id="重要性"><a href="#重要性" class="headerlink" title="重要性"></a>重要性</h3><p>在包含自旋轨道耦合时(<code>LSORB</code> = True),自旋量子化轴的相对方向与真实空间的关系变得重要。所有由 VASP 写入或读取的磁矩和类自旋量子数都以自旋子空间的基底表示。</p>
<h3 id="坐标系统"><a href="#坐标系统" class="headerlink" title="坐标系统"></a>坐标系统</h3><p><img src="https://www.vasp.at/wiki/images/thumb/5/56/Saxis-angles.png/300px-Saxis-angles.png" alt="坐标系统"></p>
<p>图 1. 欧拉角 $\alpha$ 和 $\beta$ 的定义。</p>
<p>默认方向为 $\sigma_1=\hat x$,$\sigma_2=\hat y$,$\sigma_3 = \hat z</p>
<h1 id="Automag"><a href="#Automag" class="headerlink" title="Automag"></a>Automag</h1><p>An automatic workflow software for calculating the ground collinear magnetic state of a given structure and for estimating the critical temperature of the magnetically ordered to paramagnetic phase transition.<br>用于计算共线磁基态的自动工作流程软件,并用于估计磁相变温度。</p>
<h2 id="Installation安装"><a href="#Installation安装" class="headerlink" title="Installation安装"></a>Installation安装</h2><p>Automag is meant to be run on a computing cluster. The first step in the installation is to clone the repository<br>Automag 旨在运行在计算集群上。第一步 installation 是克隆存储库</p>
<p><code>git clone https://github.com/michelegalasso/automag.git</code></p>
<p>I assume that you have Python 3 installed on your system, accessible through the python command, with the wheel and the venv packages installed. After cloning, go to the automag directory which has appeared and initialize a Python virtual environment<br>我假设您的系统上安装了 Python 3,可通过 python 命令,安装了 wheel 和 venv 包。 克隆后,转到已出现的 automag 目录并初始化 Python 虚拟环境</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">cd automag</span><br><span class="line">python -m venv .venv</span><br></pre></td></tr></table></figure>
<p>After that, activate your virtual environment. If you are working on an Unix-like system, you can do it with the command<br>之后,激活您的虚拟环境。如果您正在使用类 Unix 系统,您可以使用命令</p>
<p><code>source .venv/bin/activate</code></p>
<p>Finally, you need to install all the necessary Python dependencies for Automag with the command<br>最后,您需要为 Automag 安装所有必要的 Python 依赖项 使用命令</p>
<p><code>pip install -r requirements.txt</code></p>
<p>Before using Automag, make sure that enumlib is installed on your system and that that your command line has access to the commands enum.x and makeStr.py. In addition, Automag needs to know how to use VASP, so you need to edit the file automag/ase/run_vasp.py for Automag to correctly load the MKL and MPI libraries (if needed) and call the vasp_std executable on your system. Then add the following lines to your ~/.bashrc file<br>在使用 Automag 之前,请确保系统上已安装 enumlib 并且 您的命令行可以访问命令 enum.x 和 makeStr.py。 此外,Automag 需要知道如何使用 VASP,因此您需要编辑文件 automag/ase/run_vasp.py 用于 Automag 正确加载 MKL 和 MPI 库 (如果需要)并调用系统上的 vasp_std 可执行文件。然后添加以下几行添加到您的 ~/.bashrc 文件</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">export PYTHONPATH=/PATH/TO/automag:$PYTHONPATH</span><br><span class="line">export VASP_SCRIPT=/PATH/TO/automag/ase/run_vasp.py</span><br><span class="line">export VASP_PP_PATH=/PATH/TO/pp</span><br><span class="line">export AUTOMAG_PATH=/PATH/TO/automag</span><br></pre></td></tr></table></figure>
<p>obviously replacing /PATH/TO with the actual path to these files or directories. The pp folder is the VASP pseudopotential library and it should contain two subfolders named, respectively, potpaw_LDA and potpaw_PBE.<br>显然将 /PATH/TO 替换为这些文件或目录的实际路径。 pp 文件夹是 VASP 赝势库,它应该包含两个子文件夹分别命名为 potpaw_LDA 和 potpaw_PBE。</p>
<p>Before starting to use Automag, you should also make sure to have the FireWorks library correctly pointing to a MongoDB database and configured for launching jobs through a queue management system (for more detailed information refer to the FireWorks documentation). Last but not least, open the file automag/common/SubmitFirework.py and edit line 23 with the location of your my_launchpad.yaml file. Now you are ready to use Automag.<br>在开始使用 Automag 之前,您还应该确保拥有 FireWorks 库正确指向 MongoDB 数据库并配置为启动作业(有关更多详细信息,请参阅 添加到 FireWorks 文档)。最后打开文件 automag/common/SubmitFirework.py 并编辑第 23 行编辑 my_launchpad.yaml 文件。现在,您可以开始使用 Automag。</p>
<h2 id="Convergence-tests收敛测试"><a href="#Convergence-tests收敛测试" class="headerlink" title="Convergence tests收敛测试"></a>Convergence tests收敛测试</h2><p>When studying a magnetic structure, you may want to start from convergence tests. Automag allows you to check for convergence of the VASP parameter ENCUT, which is the energy cut-off of the plane wave basis set, and to simultaneously check for convergence of the two parameters SIGMA and kpts, which are the electronic smearing parameter and the k-mesh resolution parameter for Brillouin zone sampling, respectively.<br>在研究磁性结构时,您可能希望从收敛测试开始。 Automag 允许您检查 VASP 参数 ENCUT 的收敛性,该参数是平面波基组的能量截止,并同时检查 SIGMA 和 kpts 这两个参数的收敛,它们是电子的用于布里渊区采样的涂抹参数和 k-mesh 分辨率参数, 分别。</p>
<p>In order to run convergence tests, go to the folder 0_conv_tests and insert the following input parameters in the file input.py:<br>要运行收敛测试,请转到文件夹 0_conv_tests 并插入文件 input.py 中的以下输入参数:</p>
<ul>
<li><p>mode can be “encut” for convergence tests with respect to ENCUT or “kgrid” for convergence tests with respect to SIGMA and kpts;<br>mode可以是 “ENCUT” 用于关于 ENCUT 或 “kgrid” 的收敛测试 用于 SIGMA 和 kpts 的收敛测试;</p>
</li>
<li><p>poscar_file is the name of the file in POSCAR format which contains the input geometry and which has been put in the folder automag/geometries;<br>poscar_file 是包含输入的 POSCAR 格式文件的名称 geometry 的 ,并且已放入文件夹 automag/geometries;</p>
</li>
<li><p>params is a collection of VASP parameters to be used during single-point energy calculations.<br>params 是要在单点期间使用的 VASP 参数的集合 能量计算。<br>In addition, the following optional parameters can be specified:<br>此外,还可以指定以下可选参数:</p>
</li>
<li><p>magnetic_atoms contains the atomic types to be considered magnetic (defaults to transition metals);<br>magnetic_atoms 包含要被视为磁性的原子类型(默认值 过渡到过渡金属);</p>
</li>
<li><p>configuration is the magnetic configuration to use for convergence tests (defaults to ferromagnetic high-spin);<br>configuration 是用于收敛测试的磁性配置 (默认为铁磁高自旋);</p>
</li>
<li><p>encut_values contains the trial values for ENCUT (defaults to the interval [500, 1000] eV at steps of 10 eV);<br>encut_values 包含 ENCUT 的 trial 值(默认为区间 [500, 1000] eV,步长为 10 eV);</p>
</li>
<li><p>sigma_values contains the trial values for SIGMA (defaults to the interval [0.05, 0.20] eV at steps of 0.05 eV);<br>sigma_values包含 SIGMA 的试验值(默认为区间 [0.05, 0.20] eV,步长为 0.05 eV);</p>
</li>
<li><p>kpts_values contains the trial values for kpts (defaults to the interval [20, 100] A^-1 at steps of 10 A^-1).<br>kpts_values 包含 kpts 的试验值(默认为区间 [20, 100]A^-1 以 10 A^-1 为步长)。<br>Once you have inserted the input parameters in the file input.py, launch the script 1_submit.py using the python executable of your virtual environment and a number of workflows containing single-point VASP calculations will be saved in your remote database. These calculations need to be run in a separate directory called CalcFold. You can enter it and then submit the jobs with the following commands, being in the automag directory<br>在文件 input.py 中插入输入参数后,启动使用虚拟环境的 python 可执行文件1_submit.py,以及 许多包含单点 VASP 计算的工作流将保存在您的远程数据库。这些计算需要在单独的目录中运行 称为 CalcFold。您可以输入它,然后使用以下内容提交作业 命令, 位于 automag 目录中</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">cd CalcFold</span><br><span class="line">nohup qlaunch -r rapidfire -m 10 --nlaunches=infinite &</span><br></pre></td></tr></table></figure>
<p>This will enter the directory CalcFold and it will invoke the qlaunch command in the background, which constantly checks for new calculations in the remote database and submits them to the queue management system of your cluster. The command line option -m 10 means that qlaunch will allow a maximum number of 10 jobs to be in the queue of your system at the same time. If 10 or more jobs are waiting or running in your queue, qlaunch will not submit more jobs until their total number becomes less than 10. If you wish, you can change this parameter to a different number. In the following, I assume that the qlaunch process is always working in the background.<br>这将进入 CalcFold 目录,并将调用 qlaunch 命令,该命令会不断检查 remote 数据库,并将其提交到集群的队列管理系统。 命令行选项 -m 10 表示 qlaunch 将允许最大数量 的 10 个作业同时位于您的系统队列中。如果 10 或更多作业正在等待或正在您的队列中运行,qlaunch 不会提交更多作业 直到它们的总数小于 10。如果您愿意,您可以更改此 参数设置为不同的数字。在下文中,我假设 qlaunch 进程始终在后台运行。</p>
</li>
</ul>
<p>After all calculations have been completed, you can launch the script named 2_plot_results.py in the 0_conv_tests folder. It will read the output file that Automag wrote in CalcFold and it will produce a plot of the parameters under study versus energy. In addition, the script will also print on screen the values of the parameters under study for which the error in energy is less than 1 meV/atom with respect to the most accurate result.<br>完成所有计算后,您可以启动名为 2_plot_results.py 0_conv_tests 文件夹中。它将读取输出文件 Automag 在 CalcFold 中写入的,它将生成参数图 正在研究与能源。此外,脚本还将在屏幕上打印能量误差小于 1 meV/atom 相对于最准确的结果。</p>
<h2 id="Calculation-of-the-electronic-correlation-parameter-U-by-linear-response通过线性响应计算电子相关参数-U"><a href="#Calculation-of-the-electronic-correlation-parameter-U-by-linear-response通过线性响应计算电子相关参数-U" class="headerlink" title="Calculation of the electronic correlation parameter U by linear response通过线性响应计算电子相关参数 U"></a>Calculation of the electronic correlation parameter U by linear response通过线性响应计算电子相关参数 U</h2><p>The linear response formalism for the calculation of the Hubbard U is based on the application of a series of small perturbations to the first magnetic atom. During the whole process, the perturbed atom must be treated independently from the other atoms of the same species, and we achieve this using a simple trick: we change the chemical identity of the atom to which we want to apply perturbations to a dummy atomic species, but we place the POTCAR file of the original atomic species in the pp folder corresponding to the dummy atom. For example, if we are calculating the value of the Hubbard U for Fe in the system Fe12O18 and we choose Zn as dummy atom, we need to ensure that the same POTCAR file of Fe is used also for Zn in order to have, instead of Zn, a Fe atom that is treated independently from the others. This can be achieved with the following commands<br>用于计算 Hubbard U 的线性响应形式基于对第一个磁性原子施加一系列小扰动。 在整个过程中,必须独立于同一物种的其他原子,我们用一个简单的技巧来实现这一点:我们更改我们要施加扰动的原子的化学性质添加到虚拟原子种类中,但我们将原始原子的 POTCAR 文件物种。例如,如果我们是 计算系统 Fe12O18 中 Fe 的哈伯德 U 值,我们选择 Zn 作为虚拟原子,我们需要确保也使用相同的 Fe 的 POTCAR 文件 对于 Zn,以便有一个独立处理的 Fe 原子,而不是 Zn 从其他人那里。这可以通过以下命令来实现</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></pre></td><td class="code"><pre><span class="line">cd $VASP_PP_PATH/potpaw_PBE/Zn</span><br><span class="line">mv POTCAR _POTCAR</span><br><span class="line">cp ../Fe/POTCAR .</span><br></pre></td></tr></table></figure>
<p>In this way the Automag code, and in particular the ASE library, will treat the system as if it was ZnFe11O18, but when they will look for the POTCAR file in the Zn folder, they will find the POTCAR of Fe, so the system will remain Fe12O18. Before launching this calculation, go to the directory 1_lin_response and set the necessary parameters in the file input.py:<br>通过这种方式,Automag 代码,特别是 ASE 库,将处理系统,就好像它是 ZnFe11O18 一样,但是当他们将在 Zn 文件夹中,他们会找到 Fe 的 POTCAR,因此系统将保持 Fe12O18。 在启动此计算之前,请转到目录 1_lin_response 并设置 文件中的必要参数 input.py:</p>
<ul>
<li>poscar_file is the name of the file in POSCAR format which contains the input geometry and which has been put in the folder automag/geometries;<br>poscar_file 是包含输入的 POSCAR 格式文件的名称 geometry 的 ,并且已放入文件夹 automag/geometries;</li>
<li>dummy_atom is the name of the dummy atomic species to use for the atom which is subject to perturbations (do not forget to manually put the right POTCAR file in the pp folder for this atom);<br>dummy_atom 是用于原子的虚拟原子种类的名称,其中 会受到干扰(不要忘记手动放置正确的 POTCAR 文件 在此原子的 pp 文件夹中);</li>
<li>dummy_position is the position of the dummy atom in your POSCAR file (from 0 to N - 1, where N is the number of atoms in the unit cell);<br>dummy_position 是虚拟原子在 POSCAR 文件中的位置(从 0 到 N - 1,其中 N 是晶胞中的原子数);</li>
<li>perturbations contains the values of the perturbations to apply to the chosen atom in eV;<br>perturbations 包含要应用于所选 原子在 eV 中;<br>params is a collection of VASP parameters to be used during * single-point energy calculations.<br>params 是要在单点期间使用的 VASP 参数的集合能量计算。</li>
</ul>
<p>In addition, the following optional parameters can be specified:<br>此外,还可以指定以下可选参数:</p>
<ul>
<li>magnetic_atoms contains the atomic types to be considered magnetic (defaults to transition metals);<br>magnetic_atoms 包含要被视为磁性的原子类型(默认值 过渡到过渡金属);</li>
<li>configuration is the magnetic configuration to use for U calculation (defaults to ferromagnetic high-spin).<br>configuration 是用于 U 计算的磁性配置(默认值 到铁磁高自旋)。</li>
</ul>
<p>Once the input parameters have been inserted in the file input.py, you can launch the script 1_submit.py in order to save the necessary VASP jobs to the remote database. You will see that the instance of qlaunch which is running in the background will immediately send these jobs to the queue management system of your cluster. When all calculations are completed, you will find in CalcFold the file charges.txt, containing the amount of electrons on the partially occupied shell of the chosen atom for each value of the applied perturbation, for both the selfconsistent and the non-selfconsistent runs. Now you can execute the script 2_plot_results.py, which will plot the selfconsistent and the non-selfconsistent responses, it will interpolate them as straight lines to the least squares and it will calculate their slopes. The value of U is obtained from U = 1/X - 1/X0, where X and X0 are the selfconsistent and the non-selfconsistent slopes, respectively.<br>将输入参数插入文件 input.py 后,您可以 启动脚本1_submit.py,以便将必要的 VASP 作业保存到 远程数据库。您将看到在 后台会立即将这些作业发送到队列管理系统 的集群。完成所有计算后,您将在 CalcFold 中找到 该文件charges.txt,其中包含部分 所选原子的占用壳,用于施加扰动的每个值, 对于自洽和非自洽游程。现在您可以执行 脚本2_plot_results.py,它将绘制 selfconsistent 和 nonself-align 响应,它会将它们作为直线插入到 最小二乘法,它将计算它们的斜率。U 的值由 U = 1/X - 1/X0,其中 X 和 X0 是自洽和非自洽 slopes 的 Slope 值。</p>
<h2 id="Search-for-the-most-stable-magnetic-state寻找最稳定的磁态"><a href="#Search-for-the-most-stable-magnetic-state寻找最稳定的磁态" class="headerlink" title="Search for the most stable magnetic state寻找最稳定的磁态"></a>Search for the most stable magnetic state寻找最稳定的磁态</h2><p>The search for the ground collinear magnetic state consists in generating a number of trial configurations and in computing their single-point energy, in order to determine which is the most thermodynamically stable. The trial configurations differ from each other only by the choice of the unit cell and by the initialization of the magnetic moments. Note that the value of the magnetic moment on each atom can change during the single-point energy calculation. Automag generates trial configurations by separately initializing each Wyckoff position occupied by magnetic atoms in a ferromagnetic (FM), antiferromagnetic (AFM) or non magnetic (NM) fashion, taking into account all possible combinations. A completely non-magnetic (NM) configuration is also generated. In this way, overall ferrimagnetic (FiM) states are allowed if the magnetic atoms occupy more than one Wyckoff position. For each magnetic atom, one or two absolute values for the magnetization can be given in input. In the first case, the given value is used for initializing all the spin-up and spin-down states in the configurations generated by Automag. Conversely, if two separate values are given for high-spin (HS) and low-spin (LS) states, then each Wyckoff position occupied by that magnetic atom is separately initialized in a HS or LS fashion, taking into account all possible combinations. In order to run such a calculation, go to the directory 2_coll and set the necessary input parameters in the file input.py:<br>对共线磁基态的搜索包括生成一个 试验配置的数量和计算它们的单点能量,在 order 来确定哪个是最热力学稳定的。审判 配置彼此之间唯一的区别在于晶胞的选择和 磁矩的初始化。请注意,磁性 在单点能量计算过程中,每个原子上的矩都会发生变化。 Automag 通过单独初始化每个 Wyckoff 来生成试验配置 铁磁 (FM) 中磁性原子占据的位置, 反铁磁 (AFM) 或非磁性 (NM) 方式,同时考虑所有可能的组合。 还会生成完全无磁性 (NM) 配置。这样, 如果磁性原子占据更多,则允许整体亚铁磁性 (FiM) 状态 比一个 Wyckoff 位置。对于每个磁性原子,一个或两个 磁化强度可以在 input 中给出。在第一种情况下,给定值为 用于初始化配置中的所有 spin-up 和 spin-down 状态 由 Automag 生成。相反,如果为 high-spin 给定两个单独的值 (HS) 和低自旋 (LS) 状态,则每个 Wyckoff 位置都由该 磁性原子以 HS 或 LS 方式单独初始化,同时考虑到 所有可能的组合。要运行此类计算,请转到目录 2_coll并设置必要的输入参数:</p>
<p>poscar_file is the name of the file in POSCAR format which contains the input geometry and which has been put in the folder automag/geometries;<br>poscar_file 是包含输入的 POSCAR 格式文件的名称 geometry 的 ,并且已放入文件夹 automag/geometries;<br>supercell_size is the maximum supercell size for generating distinct magnetic configurations, in multiples of the input structure;<br>supercell_size 是产生不同磁性元件的最大超级单元大小 配置,以输入结构的倍数;<br>spin_values a maximum of two values (HS and LS) of the magnetization in Bohr magnetons for each magnetic atom, used to initialize spin-up and spin-down states;<br>spin_values玻尔的磁化强度最多两个值(HS 和 LS) 每个磁性原子的磁子,用于初始化自旋上升和自旋下降状态;<br>params is a collection of VASP parameters to be used during single-point energy calculations.<br>params 是要在单点期间使用的 VASP 参数的集合 能量计算。<br>In addition, the following optional parameter can be specified:<br>此外,还可以指定以下可选参数:</p>
<p>lower_cutoff is the minimum value in Bohr magnetons to which a magnetic moment can fall in order for the corresponding configuration to be used for estimating the critical temperature of the material (defaults to zero).<br>lower_cutoff 是磁矩达到的玻尔磁子的最小值 可以进行 材料的临界温度(默认为零)。<br>Once the input parameters have been inserted in the file input.py, you can launch the script 1_submit.py in order to save the necessary VASP jobs to the remote database. The running instance of qlaunch will send these jobs to the queue management system of your cluster. Once all calculations have been completed, you can launch the script 2_plot_results.py which will produce a number of files containing the histogram plot of the obtained energies for all trial configurations that successfully completed the single-point energy calculation. The script also prints on screen the name of the configuration with lowest energy.<br>将输入参数插入文件 input.py 后,您可以 启动脚本1_submit.py,以便将必要的 VASP 作业保存到 远程数据库。正在运行的 qlaunch 实例会将这些作业发送到 集群的队列管理系统。一旦所有计算都已完成 complete,您可以启动脚本2_plot_results.py,这将生成一个 包含所有所得能量的直方图的文件数 成功完成单点能量的 Trial 配置 计算。该脚本还会在屏幕上打印配置的名称 以最低的能量。</p>
<p>Calculation of the critical temperature<br>临界温度的计算<br>Automag can calculate the critical temperature of the magnetically ordered to paramagnetic phase transition from a Monte Carlo simulation of the effective Hamiltonian which describes the magnetic interaction. Automag computes the coupling constants of the corresponding Heisenberg model and provides all the necessary input files to run the Monte Carlo simulation with the VAMPIRE software package. The simulation itself needs to be run by the user, while Automag can be used to plot and to fit the results. The accuracy of the Heisenberg model is evaluated by computing the Pearson Correlation Coefficient (PCC) between the DFT energies and the predicted energies of a control group of magnetic configurations. It is worth noting that this approach can be applied only if all magnetic atoms have the same absolute value of the magnetization. In order to estimate the critical temperature with Automag, go to the folder 3_monte_carlo and set the necessary parameters in the file input.py:<br>Automag 可以计算出磁力排序的临界温度 顺磁相变来自蒙特卡洛模拟的有效 描述磁相互作用的哈密顿量。Automag 计算 耦合常量,并提供所有 使用 VAMPIRE 软件运行 Monte Carlo 模拟所需的输入文件 包。仿真本身需要由用户运行,而 Automag 可以 用于绘制和拟合结果。海森堡模型的精度为 通过计算 DFT 能量和磁控制组的预测能量 配置。值得注意的是,只有在所有 磁性原子具有相同的磁化绝对值。为了 使用 Automag 估计临界温度,转到 3_monte_carlo 并在 file input.py 中设置必要的参数:</p>
<p>configuration is the name of the magnetic configuration to use for the Monte Carlo simulation (usually you want to put here the name of the configuration with lowest energy, obtained at the previous step);<br>configuration 是用于 Monte 的磁性配置的名称 Carlo 模拟(通常您希望在此处使用 最低能量,在上一步获得);<br>cutoff_radius is the maximum distance between two magnetic atoms to be considered as interacting neighbors;<br>cutoff_radius 是两个磁性原子之间的最大距离 被视为互动邻居;<br>control_group_size is the relative size of the control group used to evaluate the accuracy of the Heisenberg model;<br>control_group_size 是用于评估的对照组的相对大小 海森堡模型的准确性;<br>append_coupling_constants is a boolean flag which tells Automag whether or not to append the computed values of the coupling constants to the file input.py, which are needed by the script 2_write_vampire_ucf.py.<br>append_coupling_constants 是一个布尔标志,它告诉 Automag 是否 要将耦合常量的计算值附加到文件 input.py, 脚本2_write_vampire_ucf.py需要。<br>In addition, the following optional parameter can be specified:<br>此外,还可以指定以下可选参数:</p>
<p>magnetic_atoms contains the atomic types to be considered magnetic (defaults to transition metals).<br>magnetic_atoms 包含要被视为磁性的原子类型(默认值 过渡到过渡金属)。<br>Once the input parameters have been inserted in the file input.py, you can launch the script 1_coupling_constants.py. It will compute the coupling constants for the given cutoff radius and it will print their values on screen. In addition, it will create a file model.png, which contains a plot of the Heisenberg model energies versus the DFT energies for all the configurations in the control group. The values of the distances between neighbors, the amounts of neighboring pairs of magnetic atoms in the unit cell at each distance and the value of the PCC are also printed on screen.<br>将输入参数插入文件 input.py 后,您可以 1_coupling_constants.py启动脚本。它将计算耦合 常量,它将在屏幕上打印它们的值。 此外,它还将创建一个文件model.png,其中包含 海森堡模型能量与 DFT 能量的关系 Control 组。相邻要素之间的距离值、 晶胞中每个距离处的相邻磁原子对和 PCC 的值也打印在屏幕上。</p>
<p>We suggest to run the script 1_coupling_constants.py a couple of times with the append_coupling_constants flag set to False and with different values of the cutoff_radius, in order to investigate how many neighbors you need to include for obtaining a well-converged Heisenberg model. Once you are satisfied with the model’s accuracy, run the script a last time with the append_coupling_constants flag set to True and Automag will append the values of the coupling constants and the distances between neighbors to the file input.py. Now you are ready to run the script 2_write_vampire_ucf.py, which will read the file input.py and will produce a VAMPIRE unit cell file vamp.ucf. Now you can run VAMPIRE on your cluster using the unit cell file written by Automag, an input file and a material file specific for your problem. Automag contains a sample input file and a sample material file in the folder 3_monte_carlo/vampire_input, which can be simply edited and adapted to the problem under study. Once the VAMPIRE run is done, you can copy the output file in the folder 3_monte_carlo and run the last script 3_plot_results.py. It will produce a plot of the mean magnetization length (of the spin-up channel for antiferromagnetic materials) versus temperature obtained from the Monte Carlo simulation and it will fit the data using the analytical expression of the mean magnetization length, obtaining the values of the critical temperature and of the critical exponent. The fitted values of these two parameters are printed on screen.<br>1_coupling_constants.py我们建议使用 append_coupling_constants标志设置为 False,并且 cutoff_radius,为了调查您需要包含多少个邻居 获得收敛良好的 Heisenberg 模型。一旦您对 model 的 accuracy 时,请使用 append_coupling_constants flag 设置为 True 将附加耦合常量的值 以及 input.py 的邻居之间的距离。现在您已准备好 运行脚本 2_write_vampire_ucf.py,它将读取文件 input.py 将生成一个 VAMPIRE 晶胞文件 vamp.ucf。现在,您可以在 使用 Automag 编写的晶胞文件、输入文件和材质的簇 特定于您的问题的文件。Automag 包含一个样本输入文件和一个样本 material 文件,可以是 3_monte_carlo/vampire_input 文件夹中,也可以是简单的 编辑并改编了正在研究的问题。VAMPIRE 运行完成后,您 可以复制 3_monte_carlo 文件夹中output文件并运行最后一个脚本 3_plot_results.py。它将生成平均磁化长度 (的 反铁磁材料的自旋向上通道)与温度的关系 来自 Monte Carlo 模拟,它将使用分析来拟合数据 平均磁化长度的表达式,得到临界 温度和临界指数。这两个的拟合值 参数打印在屏幕上。</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/09/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/09/18-47-20/" class="post-title-link" itemprop="url">7.1 磁性计算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-05-09 18:47:20" itemprop="dateCreated datePublished" datetime="2024-05-09T18:47:20+08:00">2024-05-09</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-11-18 16:26:53" itemprop="dateModified" datetime="2024-11-18T16:26:53+08:00">2024-11-18</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="vasp磁性参数"><a href="#vasp磁性参数" class="headerlink" title="vasp磁性参数"></a>vasp磁性参数</h1><p>设置ISPIN和MAGMOM参数,详见vasp官网。关闭对称性:ISYM=0.一般有的采用先做非磁结构优化,再打开自旋和磁性设置做磁基态计算。确定磁性体系可以直接做磁性计算。磁性计算一般属于过渡金属,要进行DFT+U计算。对于考虑LDAU的情况一般推荐增加参数 LMAXMIX。</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></pre></td><td class="code"><pre><span class="line">LORBIT = 11</span><br><span class="line">LDAU = .TRUE. 打开LDAU</span><br><span class="line">LDAUTYPE =2 LDAU类型LDAUTYPE=2: 只考虑U-J的值;LDAUTYPE=1: 同时考虑U和J,J基本为常数1 eV</span><br><span class="line">LDAUL = 2 -1 库伦排斥的轨道</span><br><span class="line">LDAUU = 2.8 0 库伦排斥的大小</span><br><span class="line">LDAUJ = 0 0 stoner 交换参数大小</span><br><span class="line">LMAXMIX = 4 mix轨道</span><br></pre></td></tr></table></figure>
<p>如果进行非线性计算,LNONCOLLINEAR = .TRUE. MAGMOM = x y z . . . … 可以读前一步的CHGCAR,进行非线性自洽计算(不用结构优化),也可以直接进行非线性计算。为了避免以上报错,增<br>加mix参数:</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">LMAXMIX = 4</span><br><span class="line">AMIX = 0.2</span><br><span class="line">BMIX = 0.00001</span><br><span class="line">AMIX_MAG = 0.8</span><br><span class="line">BMIX_MAG = 0.00001</span><br></pre></td></tr></table></figure>
<p>提交任务要使用vasp_ncl版本的程序</p>
<p>自旋轨道耦合<br>默认 SAXIS = 0 0 1<br>加入磁矩参数<br>MAGMOM = x y z … … </p>
<p>一般接口wannier90还需要<br>ISYM=-1<br>NPAR =1 或者将这个开关删除<br>##</p>
<p>铁磁半导体相对好收敛,遇到不收敛问题,可尝试降低 AMIX,增加 BMIX<br>尝试更换不同的ISMEAR,比如加电场时,会遇到矩阵不厄密。<br>call to ZHEGV failed 问题可能是</p>
<ol>
<li>结构不合理</li>
<li>优化时优化到一个不合理的结构: 尝试改变弛豫算法IBRION ,减小步长POTIM = 0.1或者更小</li>
<li>对角化算法不稳定 : ALGO = Normal/Fast</li>
<li>尝试关掉对称性</li>
</ol>
<h1 id="磁基态"><a href="#磁基态" class="headerlink" title="磁基态"></a>磁基态</h1><p>得出体系的具体磁基态:比较三个计算无磁,铁磁,反铁磁的能量,能量更低的为体系的磁基态。构建不同磁基态有可能需要扩胞。</p>
<p>得出体系原子的具体磁矩:用vi编辑器打开OUTCAR或其他方式打开,从最后往前翻动,第一个magnetization (x)开头的表格就是原子的磁矩大小。需要打开LORBIT=11</p>
<p>磁矩分布画图:使用chgsplit.sh(可以向组内师兄师姐寻找)。磁性测试输出CHGCAR后,运行命令./chgsplit.sh CHGCAR得到cf1和cf2文件,把cf2文件重命名为CHGCAR-mag,与CONTCAR一起拖入VESTA中画图即可。</p>
<h1 id="磁耦合"><a href="#磁耦合" class="headerlink" title="磁耦合"></a>磁耦合</h1><p>对于磁性体系的第一性原理计算结果,能量部分可以分<br>为两个部分E = E_0 (非磁项) + E_s (磁性相关能量)<br>对比磁性耦合产生的能量,不能够用磁性态的能量跟非<br>磁的去对比<br>E_s 包含交换耦合以及单离子各向异性能(SOC)<br>一般来说,磁性相关的能量可以用下面的公式来表示</p>
<ol>
<li>磁性态的构造<br>为了求磁耦合强度,我们需要构造出不同磁构型哈密顿,通过求解这些哈密顿方程<br>组来得到磁耦合参数。例如对于一个体系,我们需要求解最近邻J1和次<br>近邻J2,那么体系能量中有三个未知量H0, J1, J2。这样我们需要构造三个线性独立的方程来求解。<br>磁耦合参数</li>
</ol>
<p>四态法</p>
<p>接下来,我们以一个例子来看四态法<br>是如何用来求磁耦合的。</p>
<ol>
<li>构建超胞<br>这里我们以二维六角晶格为例,原胞<br>中有两个磁性原子,我们构建一个<br>8<em>8</em>1的超胞,目标是求下图中A、B<br>之间的磁耦合作用。<br>构建四个磁性态 ,分别<br>为<br>其中第一项是DFT中的非磁项,联立这四个方程组就<br>可以求解<br>注意这里的超胞大小,只要满足这个8*8的超胞里的A、<br>B与周期外的A、B格点之间没有作用或者作用可忽略就<br>可以。</li>
</ol>
<p>单离子各向异性,对于沿Z轴具有三重四重六重旋转对称性的体系,只需要计算一个Azz − Axx 。</p>
<h1 id="居里温度"><a href="#居里温度" class="headerlink" title="居里温度"></a>居里温度</h1><p>对于铁磁有序材料,当温度达到某一临界值之后,在没有外磁场的情况下,材料会变成<br>顺磁态,这个温度点便是居里温度(Curie temperature: Tc)<br>铁磁是一种铁性材料,所谓铁磁是指在外场作用下,极化随着外场的翻转会有一个滞后,<br>自旋极化随着外场的变化曲线形成磁滞回线。对于反铁磁有序材料,当温度达到某一临界值之后,在没有外磁场的情况下,材料同样会变成<br>顺磁态,这个温度点便是奈尔温度(Neel temperature: TN)</p>
<p>对于反铁磁有序材料,一般可以使用测试磁化率来判断其相变温度,磁化率满足居里外斯定律</p>
<ol>
<li>平均场近似</li>
<li>自旋波方法详细推导见文件夹mean-field-theory</li>
<li>Monte Carlo方法</li>
</ol>
<p>居里温度的Monte Carlo 模拟</p>
<ol>
<li>撒点,给初始磁矩</li>
<li>计算哈密顿<br>3 尝试随机反转一个格点的磁矩,计算能量<br>4判断,如果能量变低,则翻转,如果能量变高,那么<br>如果 则翻转,否则不翻转<br>5 先进行充足的MC步骤至平衡,然后在进行充足的步骤采样,取平均磁矩。<br>每一个温度点做一次1-5步骤,即每一个温度点有一个平均磁矩,磁矩下降最快的点(斜率绝对值最大)即为<br>居里温度。<br>反铁磁需要计算奈尔温度,那么平均磁矩会一直是0,有两种办法,算其中一个格点的平均磁矩,或者看磁比<br>热</li>
</ol>
<h2 id="mcsolver计算XY模型的一个例子。"><a href="#mcsolver计算XY模型的一个例子。" class="headerlink" title="mcsolver计算XY模型的一个例子。"></a>mcsolver计算XY模型的一个例子。</h2><p>在学习的过程中,我发现参数设置非常重要,也比较难,但网上并没有给出一个详细的教程说明,结合网上已有说明和朋友讨论,以下给出我的一点见解,希望大家相互讨论学习,有错误欢迎批评指正。</p>
<p>1.lattice晶格常数</p>
<p>关于晶格常数的设置,这步比较简单。</p>
<p>晶格常数需要采用归一化后的晶格常数,a1、a2、a3分别归一化,例如a1=(3,4,0)归一化后就是(0.6,0.8,0)。</p>
<p>sc(supercell)表示使用的超胞规模,一般情况下尽可能的大,例如16<em>16</em>1或32<em>32</em>1(在二维情况下)。</p>
<p>2.Orbital list</p>
<p>这一步是对原胞中不等价磁性原子的设置。</p>
<p>ID是对设置的原子的编号,在可视化界面中,这一项不用手动设置,程序会自动根据我们的设置进行从0开始的编号。</p>
<p>type表示原胞中磁性原子的种类,根据具体情况进行设置,如果只有一种磁性原子,都设置成0就可以。</p>
<p>init spin表示自旋磁矩的设置,比如你用VASP计算出来得到的磁矩是3,那么这一项需要设置为1.5(需要除以一个2,换算成玻尔磁子)。</p>
<p>pos对磁性原子的位置坐标进行设置,这里最好是采用分数坐标(如果是笛卡尔坐标建议转换成分数坐标进行计算)。(更正:应该是相对于a1、a2、a3的分数坐标,也就是相对于斜的平行四边形的而言的,以其两条邻边为晶格矢量,例如CrI3是0.333 0.666667 0,如果是直角坐标系下的分数坐标的话第一个值应该是负的才对)</p>
<p>Ani表示单离子在xyz方向上的各向异性系数或单离子磁晶各向异性能(在Ising模型中是无用的,在XY模型中只使用前两个)。对自己的结构做一个易磁化轴位置的判断。一般为Z方向就在DZ处添加。同时,注意各向异性的单位是开尔文。 (1meV=11.604609K)</p>
<p>至此,我们已经完成了第二步Orbital list的设置。</p>
<p>3.Bond list</p>
<p>设置第二步里面的磁性原子之间的交换耦合系数,在你的计算中,一共考虑到了多少个相互作用就要添加多少个。比如,对于CrI3来说,考虑到了最近邻、次近邻和第三近邻相互作用,分别有3个、6个和3个,那么你一共就需要添加12条信息。</p>
<p>对于每一项来说,设置方法如下:</p>
<p>ID是相互作用的编号,如同第二步一样,系统会从0开始自动编号。</p>
<p>J是磁性原子之间的交换耦合系数,一个J有九个矩阵元素,分别包括Jxx、Jyy、Jzz、Jxy、Jxz、Jyz、Jyx、Jzx、Jzy。每个元素描述了自旋的两个分量之间的耦合。对于Ising模型,由于只考虑一维自选变数,即只存在自旋向上或自旋向下,因此只使用第一个元素Jxx。对于XY模型也一样,自旋的朝向由up和down解放到了XY平面的任意朝向,因此只使用Jxx、Jyy、Jxy、Jyz。而对于heisenberg模型来说,三个自旋方向都存在相互作用,因此Jxx、Jyy、Jzz、Jxy、Jxz、Jyz、Jyx、Jzx、Jzy九个矩阵元素都需要设置。(对于模型的设置在后面的Model处进行选择。)对于前Ising和XY模型来说,即便你设置了九个矩阵元素,有效输入的也只是对应的起作用的元素,因此选好模型很关键。</p>
<p>s,t和over lat.表示我们考虑哪两个磁性原子之间的相互作用,s和t要选择我们在第二步中设置的原胞中磁性原子的ID,over lat.的三个元素指代一个晶格矢量,这个晶格矢量表示:在晶格中,你考虑的原子(在该中心原胞平移该晶格矢量后的原胞的t原子),和中心s原子之间的相互作用。(这里比较难,为了便于理解,建议读者找个例子琢磨琢磨或者自己多动手尝试一下)</p>
<p>注意所有的能量单位都是开尔文(1meV=11.604609K)</p>
<p>至此,我们已经完成了第三步Bond list的设置。</p>
<p>现在,我们可以在Structure viewer里面看到超胞里磁性原子的分布和相互作用示意图。大家可以根据右上角的图查看自己添加的是否正确。一定要多加尝试。</p>
<p>4.Other settings其他设置</p>
<p>关于一些其他参数的设置。</p>
<p>T start&end表示起始和结束温度,也就是温度的取值范围,total points表示温度插值次数(用于温度扫描),也就是总取点数,一般来说点越多图形越精确。示例给出的0.9,1.2和8只是为了快速计算得到结果,真实输入的时候要视实际情况而定。</p>
<p>同理,H start&end表示外加磁场的取值范围,total points表示采样次数(用于磁场扫描)。</p>
<p>nthermal是使系统进入平衡状态的总步骤,nsweep是测量所涉及的总步骤,tau表示每一步的MC更新。</p>
<p>xAxis表示右边Result viewer的x轴上的物理量,可以是T(表示M-T曲线)或H(表示迟滞回线)。</p>
<p>Model可以选择Ising模型、XY模型或Heisenberg模型。</p>
<p>Algorithm选择相应的算法(支持Wolff,Metropolis,Swedsen-Wang)。</p>
<p>Measure corr. si&sj设置spin_i和spin_j以及它们之间的晶格矢量,用于相关拼接。(如果spin_i=spin_j并且overLat=0 0 0,那么你将得到spin_i的磁化率)。</p>
<p>nFrame是输出自旋构型的数目,用于说明在平衡或非平衡状态下的自旋构型。</p>
<p>core设置并行计算的核心资源。</p>
<p>至此,所有参数都设置完毕。</p>
<p>5.最后</p>
<p>save可以选择保存当前参数到文件,以便下一次找到。</p>
<p>单击StartMC启动计算。</p>
<p>等待右面板中的关系图更新。之后,你可以在mcsolver的根目录下找到一个result.txt文件,其中有许多有用的信息,包括平均自旋(在步骤5中定义的spin_i和j上),spin_i和j之间的相关性,内能,比热容量和Binder累积量U4等。如果你处理有多个核心的模拟,那么结果可能不会根据温度排序,但是,每一行的对应关系都是可以的。</p>
<p>原文链接:<a target="_blank" rel="noopener" href="https://blog.csdn.net/qq_46679797/article/details/134455309">https://blog.csdn.net/qq_46679797/article/details/134455309</a></p>
<h1 id="MAE"><a href="#MAE" class="headerlink" title="MAE"></a>MAE</h1><p>磁晶各向异性 magnetic anisotropic energy (MAE) 是指自旋方向在不同方向上的能量差。MAE跟体系对称性有关。<br>对于简单体二维系,易磁化轴可能在面内或者垂直于面,我们可以选择计算不同方向的某一磁性态能量对比来求MAE<br>比如CrI3, 我们可以计算沿着x方向的FM能量Ex,然后计算沿着z方向的FM能量Ez。<br>MAE = (Ex -Ez)/2<br>对于对称性较低的体系,需要每个面去计算MAE。在vasp中,三维体系研究MAE,可以在高对称轴上算能量差</p>
<p>三步:结构优化,共线计算磁性并输出CHGCAR,读取CHGCAR改为非线性计算不同方向的能量。</p>
<p>晶体磁各向异性能量由按不同方向旋转所有自旋决定。首先,必须在基态下进行精确(PREC=精确,LREAL=.False.)共线计算(使用vasp_std版本)。接下来,考虑自旋轨道耦合(LSORBIT=.True.,使用vasp_ncl版本)对几种自旋取向进行非自洽计算(ICHARG=11)。在大多数情况下,能量变化非常小(有时约为微电子伏)。与共线相比,必须将NBANDS加倍。</p>
<p>为了修改晶体中自旋的取向,我们考虑这里描述的第二种方法。对于MAGMOM标签,根据z方向编写总局部磁矩(必要时,x和y方向均为0)。自旋取向(𝑢,𝑣,𝑤)由笛卡尔坐标系中的SAXIS标签定义。通过使自旋朝不同方向取向计算晶体磁各向异性能量和以下方程式</p>
<p>𝐸MAE=𝐸(𝑢,𝑣,𝑤)−𝐸0</p>
<p>其中 𝐸0 是最稳定自旋方向的能量。更多细节请查看SAXIS和LSORBIT页面。</p>
<p>练习:通过将自旋沿以下路径定向,确定NiO的非自洽方式下的晶体磁各向异性能量:(2,2,2) –> (2,2,1) –> (2,2,0) –> … –> (2,2,-6)。与自洽方法进行比较。</p>
<p>INCAR:</p>
<figure class="highlight javascript"><figcaption><span>{.line-numbers}</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><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></pre></td><td class="code"><pre><span class="line"><span class="title class_">NiO</span> <span class="variable constant_">MAE</span></span><br><span class="line"> <span class="variable constant_">SYSTEM</span> = <span class="string">"NiO"</span></span><br><span class="line"> </span><br><span class="line"><span class="title class_">Electronic</span> minimization</span><br><span class="line"> <span class="variable constant_">PREC</span> = <span class="title class_">Accurate</span></span><br><span class="line"> <span class="variable constant_">ENCUT</span> = <span class="number">450</span></span><br><span class="line"> <span class="variable constant_">EDIFF</span> = <span class="number">1E-7</span></span><br><span class="line"> <span class="variable constant_">LORBIT</span> = <span class="number">11</span></span><br><span class="line"> <span class="variable constant_">LREAL</span> = .<span class="property">False</span>.</span><br><span class="line"> <span class="variable constant_">ISYM</span> = -<span class="number">1</span></span><br><span class="line"> <span class="variable constant_">NELMIN</span> = <span class="number">6</span></span><br><span class="line"> # <span class="variable constant_">ICHARG</span> = <span class="number">11</span></span><br><span class="line"> # <span class="variable constant_">LCHARG</span> = .<span class="property">FALSE</span>.</span><br><span class="line"> # <span class="variable constant_">LWAVE</span> = .<span class="property">FALSE</span>.</span><br><span class="line"> # <span class="variable constant_">NBANDS</span> = <span class="number">52</span></span><br><span class="line"> # <span class="variable constant_">GGA_COMPAT</span> = .<span class="property">FALSE</span>.</span><br><span class="line"> </span><br><span class="line"><span class="variable constant_">DOS</span></span><br><span class="line"> <span class="variable constant_">ISMEAR</span> = -<span class="number">5</span></span><br><span class="line"> </span><br><span class="line"><span class="title class_">Magnetism</span></span><br><span class="line"> <span class="variable constant_">ISPIN</span> = <span class="number">2</span></span><br><span class="line"> <span class="variable constant_">MAGMOM</span> = <span class="number">2.0</span> -<span class="number">2.0</span> <span class="number">2</span>*<span class="number">0.0</span></span><br><span class="line"> # <span class="variable constant_">MAGMOM</span> = <span class="number">0</span> <span class="number">0</span> <span class="number">2</span> <span class="number">0</span> <span class="number">0</span> -<span class="number">2</span> <span class="number">6</span>*<span class="number">0</span> # <span class="title class_">Including</span> <span class="title class_">Spin</span>-orbit</span><br><span class="line"> # <span class="variable constant_">LSORBIT</span> = .<span class="property">True</span>.</span><br><span class="line"> # <span class="variable constant_">SAXIS</span> = <span class="number">1</span> <span class="number">0</span> <span class="number">0</span> # <span class="title class_">Quantization</span> axis used to rotate all spins <span class="keyword">in</span> a direction defined <span class="keyword">in</span> the (O,x,y,z) <span class="title class_">Cartesian</span> frame</span><br><span class="line"> </span><br><span class="line"><span class="title class_">Orbital</span> mom.</span><br><span class="line"> <span class="variable constant_">LORBMOM</span> = T</span><br><span class="line"> </span><br><span class="line"><span class="title class_">Mixer</span></span><br><span class="line"> <span class="variable constant_">AMIX</span> = <span class="number">0.2</span></span><br><span class="line"> <span class="variable constant_">BMIX</span> = <span class="number">0.00001</span></span><br><span class="line"> <span class="variable constant_">AMIX_MAG</span> = <span class="number">0.8</span></span><br><span class="line"> <span class="variable constant_">BMIX_MAG</span> = <span class="number">0.00001</span></span><br><span class="line"> </span><br><span class="line"><span class="variable constant_">GGA</span>+U</span><br><span class="line"> <span class="variable constant_">LDAU</span> = .<span class="property">TRUE</span>.</span><br><span class="line"> <span class="variable constant_">LDAUTYPE</span> = <span class="number">2</span></span><br><span class="line"> <span class="variable constant_">LDAUL</span> = <span class="number">2</span> -<span class="number">1</span></span><br><span class="line"> <span class="variable constant_">LDAUU</span> = <span class="number">5.00</span> <span class="number">0.00</span></span><br><span class="line"> <span class="variable constant_">LDAUJ</span> = <span class="number">0.00</span> <span class="number">0.00</span></span><br><span class="line"> <span class="variable constant_">LDAUPRINT</span> = <span class="number">1</span></span><br><span class="line"> <span class="variable constant_">LMAXMIX</span> = <span class="number">4</span> </span><br></pre></td></tr></table></figure>
<h2 id="vaspkit"><a href="#vaspkit" class="headerlink" title="vaspkit"></a>vaspkit</h2><p> 先执行结构优化计算(略),之后使用以下INCAR参数并选择991 K点进行自旋极化静态计算,运行vasp_std得到CHGCAR文件。</p>
<p> MAE的INCAR:</p>
<figure class="highlight javascript"><figcaption><span>{.line-numbers}</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><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></pre></td><td class="code"><pre><span class="line">#<span class="title class_">General</span></span><br><span class="line"><span class="variable constant_">PREC</span> = <span class="variable constant_">ACCURATE</span></span><br><span class="line"><span class="variable constant_">ISTART</span>= <span class="number">0</span></span><br><span class="line"><span class="variable constant_">ICHARG</span>= <span class="number">11</span></span><br><span class="line"><span class="variable constant_">ENCUT</span> = <span class="number">520</span></span><br><span class="line"><span class="variable constant_">EDIFF</span> = <span class="number">1E-8</span></span><br><span class="line"><span class="variable constant_">EDIFFG</span> = -<span class="number">0.001</span></span><br><span class="line"><span class="variable constant_">LREAL</span> = .<span class="property">F</span>.</span><br><span class="line"><span class="variable constant_">NPAR</span> = <span class="number">4</span></span><br><span class="line"><span class="variable constant_">NSW</span>= <span class="number">0</span></span><br><span class="line"><span class="variable constant_">IBRION</span> = -<span class="number">1</span></span><br><span class="line"><span class="variable constant_">ISIF</span> = <span class="number">2</span></span><br><span class="line"><span class="variable constant_">ISMEAR</span> = -<span class="number">5</span></span><br><span class="line"><span class="variable constant_">SIGMA</span> = <span class="number">0.05</span></span><br><span class="line"><span class="variable constant_">LCHARG</span> = .<span class="property">F</span>.</span><br><span class="line"><span class="variable constant_">LWAVE</span> = .<span class="property">F</span>.</span><br><span class="line"><span class="variable constant_">POTIM</span> = <span class="number">0.5</span></span><br><span class="line"><span class="variable constant_">NEDOS</span> = <span class="number">2001</span></span><br><span class="line"><span class="variable constant_">NBANDS</span> = <span class="number">144</span> # 修改为上一步静态计算<span class="variable constant_">NBANDS</span>数值的<span class="number">2</span>倍</span><br><span class="line"></span><br><span class="line">#<span class="title class_">Magnetic</span> properties</span><br><span class="line"></span><br><span class="line"><span class="variable constant_">MAGMOM</span> = <span class="number">18</span>*<span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">4</span> <span class="number">0</span> <span class="number">0</span> <span class="number">4</span></span><br><span class="line"><span class="variable constant_">NELMIN</span> = <span class="number">6</span></span><br><span class="line"><span class="variable constant_">LORBIT</span> = <span class="number">11</span></span><br><span class="line"><span class="variable constant_">ISYM</span> = <span class="number">0</span></span><br><span class="line"><span class="variable constant_">LSORBIT</span> = .<span class="property">True</span>.</span><br><span class="line"><span class="variable constant_">LMAXMIX</span> = <span class="number">4</span> ! <span class="keyword">for</span> d-elements increase <span class="variable constant_">LMAXMIX</span> to <span class="number">4</span>, f-<span class="attr">elements</span>: <span class="variable constant_">LMAXMIX</span> = <span class="number">6</span></span><br></pre></td></tr></table></figure>
<p>和VPKIT.in</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></pre></td><td class="code"><pre><span class="line">1 ! 1为预处理, 2为后处理</span><br><span class="line">0 360 12 ! Phi, Spherical coordinate system</span><br><span class="line">0 180 12 ! 0<= theta <=180, 90 degree means in x-y plane</span><br></pre></td></tr></table></figure>
<p>VPKIT.in说明:<br>第一行:在第二步计算前使用1,第二步计算完后设置为2;</p>
<p>第二行:三维球坐标系下矢量在xy面投影与x轴正方向的夹角方位角φ,由起始角度0°到终止角度360°(0°),最后是分割角度的个数;</p>
<p>第三行:三维球坐标系下矢量与z轴的夹角θ,由起始角度0°到终止角度180°,最后是分割角度的个数(注意包含180°在内需要+1,所以是7);</p>
<p>其中和分别为方位角和极角,其值变化范围分别是从0°到180°和从0°到360°,这里方位角和极角各取12个离散点(共计144个计算作业)。如果计算资源允许,可以选取更小间隔。调用vaspkit-621命令产生如下所示的一系列计算作业。理论上要生成144个计算作业,考虑到一部分相等无需计算,实际上共生成了122个计算作业。预处理时VASPKIT会自动在每个计算作业文件夹里的INCAR后根据公式(1)追加SAXIS = </p>
<p>接下来可使用以下脚本模板批量提交vasp_ncl作业。</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">#!/bin/bash</span><br><span class="line"># just for reference</span><br><span class="line">path=`pwd`</span><br><span class="line">for c in *.*</span><br><span class="line">do</span><br><span class="line"> cd $path/$c</span><br><span class="line"> echo `pwd`</span><br><span class="line"> qsub vasp_job_soc.sh ! vasp_job_soc.sh为vasp_ncl作业脚本</span><br><span class="line"> cd ${path}</span><br><span class="line">done</span><br></pre></td></tr></table></figure>
<p>待vasp_ncl计算完成后,把INPUT.in文件中的第一行修改2,然后再次运行vaspkit-621得到MAE.dat文件。我们可利用vaspkit/examples/MAE文件夹中的MATLAB脚本mae_3D_plot_matlab.m进行可视化。</p>
<ul>
<li>如果想得到xy二维平面内的MAE,INPUT.in可设置为:<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></pre></td><td class="code"><pre><span class="line">1 ! 1为预处理, 2为后处理</span><br><span class="line">0 360 12 ! Phi, Spherical coordinate system</span><br><span class="line">90 90 1 ! xy平面内theta始终等于90°</span><br></pre></td></tr></table></figure></li>
<li>如果想得到xz二维平面内的MAE,INPUT.in可设置为:<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></pre></td><td class="code"><pre><span class="line">1 ! 1为预处理, 2为后处理</span><br><span class="line">0 0 1 ! Phi, Spherical coordinate system</span><br><span class="line">0 180 12 ! </span><br></pre></td></tr></table></figure>
tips:</li>
</ul>
<p>根据提示我们需要先执行一步sta,然后读取WAVECAR和CHGCAR进行Nocollinear的计算,当读取WAVECAR进行测试的时候,计算是一定会报错的,因为俩步计算电子的自由度是不同。这时候VASP一定会提示:ERROR: while reading WACECAR,plane wave coefficidents changed</p>
<p>那么继续根据官网的操作手册</p>
<ul>
<li><p>我们第一步只计算无磁性基态的CHGCAR,第二步去读取CHGCAR进行计算。<br>这里只比对了x方向和z方向的结果:发现计算的结果是一模一样的,无法区分。</p>
</li>
<li><p>接下来不读取之前的CHGCAR进行计算,还是依照之前的设置.这时候发现计算的结果是有区分的。方向不同。</p>
</li>
<li><p>还有一种计算方式是读取写入磁基态的CHGCAR,再进行自旋轨道耦合的计算。这样计算的结果是,无论选择量子化轴在哪个方向,计算的结果都是在Z轴方向,但是能量有所差距。但是根据以上俩种结果去推断Cr原子的磁晶各向异性能,发现这种计算的结果跟文献的600-800eV的结果更为接近。 所以姑且认为进行计算是合理的结果。</p>
</li>
</ul>
<h1 id="电子结构分析"><a href="#电子结构分析" class="headerlink" title="电子结构分析"></a>电子结构分析</h1><p>磁性一般来自于d、f轨道的半占据电子,下面以d轨道为例介绍电子结构的分析</p>
<ol>
<li>磁矩约等于非成对的电子数,但是电子的占据方式并不仅仅由洪特规则来决定。<br>以一个Mn2+为例,最外层5个电子,按照洪特规则Mn磁矩应该是5,但是在晶体场的作用下,它有可能呈现高自旋、<br>中自旋、低自旋态。</li>
</ol>
<p>如何查找结构晶体场:</p>
<ol>
<li>确定点群 运行vaspkit</li>
<li>查表<br><a target="_blank" rel="noopener" href="http://gernot-katzers-spice-/">http://gernot-katzers-spice-</a> pages.com/character_tables/index.html</li>
<li>判断能及大小</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/2023/11/09/18-48-23/">
<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="/2023/11/09/18-48-23/" class="post-title-link" itemprop="url">6.1 USPEX</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="创建时间:2023-11-09 18:48:23" itemprop="dateCreated datePublished" datetime="2023-11-09T18:48:23+08:00">2023-11-09</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="修改时间:2023-12-17 14:56:40" itemprop="dateModified" datetime="2023-12-17T14:56:40+08:00">2023-12-17</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="一、USPEX-简介"><a href="#一、USPEX-简介" class="headerlink" title="一、USPEX 简介"></a>一、USPEX 简介</h1><p>USPEX: Universal Structure Predictor: Evolutionary Xtallography. USPEX 代码能够通过仅仅只知道材料的化学成分来预测具有任意 P-T 条件的晶体结构。在全世界有6000多名研究人员使用它,它的出现极大的促进了相关领域的发展。而它的发明者:Oganov教授,通过这个软件做出了一系列漂亮的结果。</p>
<p>而 CALYPSO 的主要是由吉林大学的马琰铭教授主导开发的。</p>
<h1 id="二、-下载安装"><a href="#二、-下载安装" class="headerlink" title="二、 下载安装"></a>二、 下载安装</h1><ol>
<li><p>浏览器进入:<a target="_blank" rel="noopener" href="https://uspex-team.org/en/uspex/downloads%EF%BC%8C%E8%BF%99%E4%B8%AA%E6%98%AF">https://uspex-team.org/en/uspex/downloads,这个是</a> USPEX 下载地址和官方手册。点击红色标记的 register 进行注册和登录即可免费下载。<br>USPEX-9.4.4 是 USPEX 最经典的版本,体积最小,而最新的版本的体积急剧膨胀,相对老的版本,最新版本是Oganov教授团队采用 Python 将 USPEX-9.4.4 (MATLAB)改写了一遍,无大的新功能增加,发布时间较短,质量无法得到保证。更主要的是,USPEX-9.4.4 有中文文档!</p>
</li>
<li><p>确保机器上有 MATLAB 或者Octave,假如都没有,并且机器与外网隔离的情况下,可以参考这个安装 MATLAB( https: //blog.csdn.net/pihuanwan3227/article/details/84849969 ), 参考这个安装Octave (<a target="_blank" rel="noopener" href="https://www.cnblogs.com/freeweb/p/7124589.html)%E3%80%82">https://www.cnblogs.com/freeweb/p/7124589.html)。</a></p>
</li>
<li><p>接下进行安装: ./install.sh,。接下来会提示让填写安装地址(如果机器里面 Octave 已经安装好,会显示 Octave。当然 MATLAB 安装好,也会显示 MATLAB)</p>
</li>
<li><p>接下来还有重要的最后三步(这个就是设置环境变量,能够当前用户能够直接调用 USPEX):</p>
</li>
</ol>
<ul>
<li>vi ~/.bashrc </li>
<li>export PATH=$PATH: /home/xiaoming/EDU/USPEX </li>
<li>export USPEXPATH=/home/xiaoming/EDU/USPEX/src</li>
</ul>
<p>其中/home/xiaoming/EDU/USPEX为USPEX安装目录。</p>
<h1 id="三、进行计算"><a href="#三、进行计算" class="headerlink" title="三、进行计算"></a>三、进行计算</h1><p>在上一步中已经成功安装好 USPEX 了,这时候可以使用 USPEX 进行计算了,本教程使用的是最主流的软件组合:USPEX+VASP,本教程需要 VASP 已安装好,至于 VASP 懂不懂并不影响本教程的使用。</p>
<h2 id="3-1-准备输入文件"><a href="#3-1-准备输入文件" class="headerlink" title="3.1 准备输入文件"></a>3.1 准备输入文件</h2><p>首先建立一个名为/La-H/0GPa的文件夹,进入这个文件之后,在终端输入命令: USPEX –g,然后查看文件夹 0GPa,会发现多了四个文件夹:AntiSeeds、Seeds、Specific、Submission。</p>
<p>其中,AntiSeeds 和 Seeds 文件夹中里面的存放的的是结构文件,由于本教程使用的是VASP进行计算,故这两个文件夹放的是 POSCARS 的文件(至于为什么是POSCARS,等下解释)。而 Specific 文件夹里面放的是 VASP 进行计算时,需要的和赝势文件,而 Submission 文件夹里面放的是 USPEX 各种方式提交任务的脚本。这 4 个文件夹是 USPEX 程序自动生成的,因而需要进入每个文件夹里面进行修改或者准备所需要的输入文件。接下来我们一个个文件来进行详细说明(划重点)。</p>
<p>a. AntiSeeds 文件夹,这个文件顾名思义,就是禁止 USPEX 生成的结构的种子文件,与 Seeds 文件夹作用相反,并且这个功能不常使用,本教程 AntiSeeds 文件夹就不设置,不用管它,直接考虑 Seeds 文件夹。</p>
<p>b. Seeds文件夹,这个文件夹就是USPEX计算时,需要种子文件存放的地方。好了,既然需要种子文件,那么我们来准备种子文件吧。本教程要进行搜索的是 La-H 体系,那么开始准备La、H结构文件吧。首先到日本晶体结构数据NIMS网站(<a target="_blank" rel="noopener" href="https://crystdb.nims.go.jp/crystdb/search-materials">https://crystdb.nims.go.jp/crystdb/search-materials</a>: 免费注册且免费下载,并且里面结构文件多数有其引用的相关文献)上找结构。</p>
<pre><code>1)、 把这两种元素的cif结构文件全部下载下来;
2)、用VESTA
(http://www.jp-minerals.org/vesta/en/download.html:下载后解压即可使用,功能很强大的软件) 打开,另存为VASP5 格式的POSCAR文件;
3)、打包上传到机器上刚刚建立的/La-H/0GPa /Seeds文件下;
4)、包把La和H的POSCAR文件合并为一个文件,并命名为POSCARS (1、可以使用cat 命令合并,如:cat POSCAR_La* POSCAR_H >> POSCARS,2、建议查看一下POSCARS文件格式,假如有类似乱码的东西,dos2unix POSCARS百度了解一下)。
</code></pre>
<p>c. Specific文件夹,这个文件夹主要存放的是USPEX控制的VASP进行计算的输入文件,由于本教程是La-H体系在0 GPa的变组分结构搜索,主要是用VASP计算USPEX生成结构的能量,因而这个文件内主要是POSCAR进行结构优化的文件:<br>INCAR_1-5: 这样设置的主要原因:考虑有你的初始结构通常远离局部最小点,在这种情况下,</p>
<p>INCAR_1,2首先应该在保持体积固定的情况下(ISIF=4)弛豫原子和晶胞形状,然后在INCAR_3,4中做完全弛豫(ISIF=3),在INCAR_5中完成非常精确的单点计算(ISIF=2,NSW=0)(至于更具体的细节问题,手册上有详细的描述,请查看手册第3章第3.4小节)。值得注意的是:K点设置由USPEX自动生成了,无需考虑。</p>
<p>d. Submission文件夹, 这个文件夹主要是USPEX来提交计算任务和检查计算任务的情况的一些脚本。一般情况下,提交计算任务都是通过登陆到服务器上进行提交,那么这时候需要修改submitJob_local.m和checkStatus_local.m这两个脚本。</p>
<p>e. INPUT.txt</p>
<p>USPEX 自动生成的4个文件夹已经处理好了,那么接下来就是控制USPEX计算的输入文件:INPUT.txt (固定名字的文件),在/La-H/0GPa文件通过文本编辑器(vi INPUT.txt),把上面的内容输入进去,并并保存,下面来解释每行代表的意思,这是超级重重点。</p>
<p>上图都是USPEX计算输入控制文件:INPUT.txt主要内容,棕黄色的数字标志是行数,只是为了显示方便,不是需要输入的内容。</p>
<pre><code>1-3行、为注释说明行。
第4行、为选择计算类型行,主要是选择什么样的计算方法进行不同类型的计算,目前USPEX支持四种计算方法分别为:USPEX、VCNEB、META、PSO等。但目前采用变组分结构搜索的话,选用其王牌类型,USPEX就行,其他方法请参阅手册
第5行、需要计算的结构类型、是否为分子和是否为变组分计算,301:3代表了三维块状结构,0代表了不是分子,1代表了采用变组分。
第6行、1是代表了进行结构搜索最稳定结构时采用了生成焓作为筛选标准,当然还有其他标准:体积,硬度,结构有序度等等,详情参阅手册。
第7行、1代表了设置允许系统自动进行进化的变分操作,这个设置能加快运算。
第9-11行、是设置需要计算的体系,本教程是La-H体系,所以在第10行输入La H, 当然你也可以在第10行输入 La H 的原子序数:57 1 ,这样也是被允许的。
第13-16行、设置上面你设置的体系原子的个数之比,表示着:LaxHy,也就是说任意x个La和任意y个H的结构都是可以生成的。假如需要生成任意x个La和任意2y个H的结构怎么设置?
第17-24行、设置关于生成结构的数目,第20行populationSize设置除了第一代,其余以后每代生成的结构的数目,第21行initialPopSize设置第一代生成的结构的数目,第22行numGenerations,设置总共计算的最大代数。第23行stopCrit设置多少代的最好结构结构都一样就停止USPEX计算。第24行是设置是否重新优化幸存的结构,默认是0,意思就是不重新优化。(需要注意的是,这里的设置的大小,大致上决定你需要优化的结构的数目)
第25-29行、设置允许生成LaxHy结构中8<=x+y<=18,这样设置能够更好锁定搜索结构的范围,当然越小计算量越少了,这个主要看个人选择了,但是minAt和maxAt不要相差太大,太大容易出错或者最后结果漏掉一些结构,手册上有推荐选择范围,自己参阅考虑。
第30-37行、设置遗传变分操作的具体细节的,主要设置各个操作的所占比例,fracGene:基因遗传占的比例,fracRand:随机生成的占比例,fracAtomsMut:原子摄动占的比例,fracTrans:晶格转变占的比例,fracLatMut:点阵摄动占的比例。注意:所有比例之和必须为1。
第39行、这行是设置体系的压强大小,单位是GPa, 0是不施加外压。当然了前面提到的文章,压力有150 GPa 和 300 GPa,在相应的压力下进行搜索时,应该此处改为150 或 300。
第41-46行、是设置调用的外部程序执行具体计算用的,1代表了调用VASP,1 1 1 1 1 跟Specific 文件夹里面INCAR_1、INCAR_2、INCAR_3、INCAR_4、INCAR_5遥相呼应,表示一个结构需要优化5次得到精确的能量值。
第48行、设置USPEX一次总共提交多少个任务,
第49行、设置提交任务方式,1设置为local,毕竟USPEX一般都是安装在服务器上面的。
第51-56行、设置重新启动USPEX运算,这个设置应该好好琢磨一下,尤其是第54行pickUpYN,0是不进行计算,1是进行重新计算,第55行pickUpGen根据你的结果文件夹results*里面的generation*的数目进行设置,第56行pickUpFolder是根据哪个结果文件夹results*进行重新计算,这3行一定要配合使用,是相关联的。当然本教程是进行新计算,都设置为0,即可,这个弄明白了,重新计算时,可以节省大量时间。
</code></pre>
<p>好了,La-H 体系不同压强下变组分结构搜索的INPUT.txt的主要设置内容介绍完毕。</p>
<p>f. 最后一项设置,就是提交整个USPEX的脚本了,很简单的shell脚本,任何一个机器上提交USPEX任务,都可以用这个,只是切记一定要把这个脚本命名好。如果在自己机器上使用了MATLAB把 –o 去掉就行了,-o的意思是使用octave。</p>
<h2 id="3-2-提交USPEX任务"><a href="#3-2-提交USPEX任务" class="headerlink" title="3.2 提交USPEX任务"></a>3.2 提交USPEX任务</h2><p>如果前面一切输入文件准备好了之后,那么我们可以开始了神奇的USPEX变组分结构搜索之旅了。终端输入命令:n nohup ./uspex_Lah0.sh >> log &(其中uspex_Lah0.sh就是1.f中提到的提交USPEX任务的脚本)。</p>
<h1 id="四、官方算例1(EX01-3D-Si-vasp)"><a href="#四、官方算例1(EX01-3D-Si-vasp)" class="headerlink" title="四、官方算例1(EX01-3D_Si_vasp)"></a>四、官方算例1(EX01-3D_Si_vasp)</h1><p>案例1,0 GPa下的Si( 一个晶胞里面8个原子)<br>我们先把案例1拷贝到当前目录下:USPEX –c 1</p>
<h2 id="1、输入文件"><a href="#1、输入文件" class="headerlink" title="1、输入文件"></a>1、输入文件</h2><p>其中reference里面是案例1的计算结果,属于参考答案,等下我们来分析一下里面的文件。现在我们先考虑一下,USPEX计算需要哪些文件夹?这里是不是还少了一些文件夹?少哪些了?答案很简单嘛:USPEX –g ,然后我们看看INPUT.txt,了解一下这个案例是做什么的。</p>
<pre><code>第5行、calculationMethod (计算方法):USPEX(遗传演化算法,也就是遗传、变异遗传算法那套原理的改进版)。
第6行、calculationType(计算类型):300 (3:三维、0:非分子、0:非变组分)
第7行、optType(优化类型):1(焓值)
第8行、AutoFrac ??:我也不记得了。。。不要怕,前面不是讲过怎么查看参数嘛!USPEX -p AutoFrac
第11行、Si:计算的体系的原子类型
第15行、8:计算的体系的原子类型的个数为8
第20行、populationSize (每代多少结构):20
第21行、numGenerations(要计算多少代):25 (这个代数,是最多要计算的代数,假如达到收敛的条件,可以在提前结束)
第22行、stopCrit(收敛的条件):8 (单位:代。意思就是假如连续有8代的最优结构的优化类型(本例中为焓值)是一样,那么证明计算收敛了,可以停止计算了)
第23行、bestFrac(上一代用于生成下一代结构的比例):0.6 (这个值默认值是0.7,在0.6-0.8之间是合理的)
第27行、fracGene(本代由遗传生产结构的比例):0.5
第28行、fracRand(本代由晶体对称性随机产生结构的比例):0.2
第29行、fracAtomsMut(本代由较小的突变产生结构的比例):0.2
第30行、fracLatMut(本代由点阵突变产生结构的比例):0.1
特别需要注意的是:fracGene+ fracRand+ fracAtomsMut+ fracLatMut = 1
第35行、计算总能软件的代码:1 1 1 1 1(VASP、采用5步优化,那么Specific应该有哪些文件了?请到入门教程找找)
第39行、计算总能的K点密度设置:0.13 0.11 0.10 0.08 0.06(这个值越低、K点越密集)具体描述如下:USPEX -p KresolStart 。不懂哪个参数就USPEX -p
第43行、运行总能计算软件的指令:一般建议不在这个设置这个参数,直接在Submission文件夹里面提交计算任务的脚本里面改就可以了。
第46行、whichCluster(采用什么计算方式):一般采用1,同第43行原理。
第47行、numParallelCalcs(并行计算数):10 (意思就是一次提交10个总能计算任务)
第48行、ExternalPressure(计算外压):0.00001 (GPa、老朋友啦,不解释了)
</code></pre>
<p>把这个INPUT.txt读完以后,案例1就是搜索包含8个Si原子的晶胞在大气压最稳定的结构。</p>
<p>返回INPUT.txt目录,USPEX计算4大准备目录:AntiSeeds、Seeds、Specific、Submission和提交任务脚本EX01-3D_Si_vasp.sh。</p>
<pre><code>a、AntiSeeds文件夹没特别需要,不用理它;
b、Seeds文件夹,需要从NIMS下载所有稳定的Si结构,最后做成一个POSCARS,具体操作,读者需要自己动动手了,参考入门教程;
c、Specific文件夹本案例中已经准备好了;
d、Submission文件夹,读者需要自己动动手了,参考入门教程。
f、EX01-3D_Si_vasp.sh:本案例已经准备好了,需要注意的一点就是USPEX –r –o >> log / USPEX –r >>log : (Octave/ MATLAB用哪个自己修改)。
</code></pre>
<h2 id="2、计算"><a href="#2、计算" class="headerlink" title="2、计算"></a>2、计算</h2><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">nohup ./EX01-3D_Si_vasp.sh >> log & </span><br></pre></td></tr></table></figure>
<p>在计算的过程中会出现一个重要的文件夹results1,results1里面放的就是计算结果,随着计算的时间的增长,里面会有文件夹generation1、generation2、generation3…,还有一些其他文件。但是肯定包括reference(参考答案)里面的文件,文件夹reference包含了计算结果,但是笔者先提醒一下,本次计算的目的:搜索8个Si原子的晶胞在大气压下最稳定的结构。<br>那么带着目的和INPUT.txt,我们来看一下计算结果。</p>
<h2 id="3、输出文件"><a href="#3、输出文件" class="headerlink" title="3、输出文件"></a>3、输出文件</h2><p>我们先来看最需要的答案:BESTgatheredPOSCARS和BESTIndividuals,这两个文件是定组分变胞计算的最最重要的文件,并且相互对应。</p>
<ul>
<li><p>先看看BESTIndividuals:顾名思义,这个文件里面存着每一代最稳定的结构!</p>
<p> 第1行标题,Gen是generation的缩写,USPEX计算时种群的代数;ID是USPEX计算时给每个结构做的标记,这个数值一般就是整个USPEX计算时产生第几个结构;Origin表示这个结构由什么遗传算法操作产生的;Composition成分;Enthalpy焓值;Volume、Density、KPOINTS这三个看字面意思就能明白了,SYMM代表空间群对称性,这个数字代表1-230个空间群代表;Fitness、Q_entr、A_order 、S_order这些都是代表晶胞有序度相关的量,都是根据fingerprint这篇文章里面定义的(doi:10.1107/S0108767310026395)!</p>
</li>
<li><p>好了,我们把标题了解完了,来查看结果:焓值越低,结构越稳定!显然可见第13代(第15行)的ID301结构最稳定,而这个结构是从第12代ID276结构继承来(Origin: keptBest),那么可以从这个文件里面看到USPEX计算过程中,最稳定的结构一代代遗传演化过程!</p>
</li>
<li><p>既然我们已经得到最稳定的结构的ID是301,那么它的具体原子坐标了?这时候该BESTgatheredPOSCARS出马了!从文件名字意思可以猜出这是最好的结构的原子坐标的集合,当然POSCAR这个就可以看出是以VASP的POSCAR形式存储的。既然我们有ID=301这个目标,看一下这个结构在文件里面哪一行?</p>
<p> <code>grep 301 -n BESTgatheredPOSCARS</code></p>
<p> 在文件里面的193行,现在我们打开文件,定位到这一行。</p>
</li>
<li><p>整个文件是VASP5格式的POSCAR集合,打开文件定位到这一行的时候,ID=301这个结构是位于文件的最后,而上一个结构是EA276,上上一个结构是EA254…而EA301是第13代最稳定的结构,EA276是第12代最稳定的结构,EA254是第11代最稳定的结构。。。可以看出BESTgatheredPOSCARS的结构原子坐标和BESTIndividuals每一代的最稳定的结构是一一对应的,那么BESTgatheredPOSCARS里面的结构原子坐标也是一代代最稳定的结构步步演化过程。</p>
</li>
<li><p>把BESTIndividuals和BESTgatheredPOSCARS理解透彻了,其余的文件根据文件名字也能知道里面存放的具体数据是什么。比如文件Individuals里面放的是所有结构的焓值、体积、密度和有序度等信息,gatheredPOSCARS里面放的是所有的结构的原子坐标,Parameters.txt就是INPUT.txt的副本。余下的文件里面值得注意的就是OUTPUT.txt,这个文件是USPEX计算过程的软件自身的log文件。</p>
<p> 里面包含了对于整个USPEX计算的解释,随着每一代计算的结束,OUTPUT.txt。这个文件里面也会有对于这一代计算的总结,整个计算结束以后,USPEX也会做出总结。总而言之,OUTPUT.txt就是log文件,假如不明白USPEX怎么计算的,或者USPEX计算过程出错了,在这里都能找到原因。</p>
</li>
</ul>
<h1 id="五、官方算例2(2-8)"><a href="#五、官方算例2(2-8)" class="headerlink" title="五、官方算例2(2-8)"></a>五、官方算例2(2-8)</h1><h2 id="案例2"><a href="#案例2" class="headerlink" title="案例2"></a>案例2</h2><ul>
<li><p>主要目标:在100 GPa,MgAl2O4(28个原子的单胞)使用GULP(General Utility Lattice Program,<a target="_blank" rel="noopener" href="http://gulp.curtin.edu.au/gulp/%EF%BC%8C%E4%BD%BF%E7%94%A8%E5%8A%9B%E5%9C%BA%E6%96%B9%E6%B3%95%E8%BF%9B%E8%A1%8C%E8%AE%A1%E7%AE%97%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%EF%BC%8C%E9%87%8C%E9%9D%A2%E6%9C%89%E5%BE%88%E5%A4%9A%E6%9C%89%E6%84%8F%E6%80%9D%E7%83%AD%E5%8A%9B%E5%AD%A6%E8%AE%A1%E7%AE%97%E5%8A%9F%E8%83%BD%EF%BC%8C%E6%9C%89%E6%9C%BA%E4%BC%9A%E5%86%8D%E4%BB%8B%E7%BB%8D">http://gulp.curtin.edu.au/gulp/,使用力场方法进行计算的软件包,里面有很多有意思热力学计算功能,有机会再介绍</a>) -采用Buckingham势-进行变胞计算。这个案例直接揭示了地球内部物理现象,但是由于力场方法精确性不如DFT方法,所以想要更精确的结果,可以改用VASP一类的软件,同时计算时间会增长不少!</p>
</li>
<li><p>看完案例的简单介绍,我们来读一下INPUT.txt,复习一下定成分变胞计算怎么设置参数。</p>
<p>第4行、 calculationMethod (计算方法):USPEX(遗传演化算法,也就是遗传、变异遗传算法那套原理的改进版)。<br>第5行、calculationType(计算类型):300 (3:三维、0:非分子、0:非变组分)<br>第6行、optType(优化类型):1(焓值)<br>第7行、AutoFrac:1(允许系统自动变异演化,比用户自定义的快2倍)。一般建议设置为1即可。<br>第10行、Mg Al O:计算的体系的原子类型<br>第14行、4 8 16:计算的体系的Mg、Al、O的个数分别为4、8、16,也就是体系的原子总数为28的MgAl2O4。<br>第19行、populationSize (每代多少结构):40<br>第20行、numGenerations(要计算多少代):60 (这个代数,是最多要计算的代数,假如达到收敛的条件,可以在提前结束)<br>第21行、stopCrit(收敛的条件):30(单位:代。意思就是假如连续有30代的最优结构的优化类型(本例中为焓值)是一样,那么证明计算收敛了,可以停止计算了)<br>第22行、bestFrac(上一代用于生成下一代结构的比例):0.6 (这个值默认值是0.7,在0.6-0.8之间是合理的)<br>第26行、fracGene(本代由遗传生产结构的比例):0.5<br>第27行、fracRand(本代由晶体对称性随机产生结构的比例):0.2<br>第28行、fracPerm(本代由置换产生结构的比例):0.1<br>第29行、fracAtomsMut(本代由较小的突变产生结构的比例):0.2<br>特别需要注意的是:fracGene+ fracRand+ fracPerm+ fracAtomsMut = 1<br>第35行、计算总能软件的代码:3 3 3 3 (GULP、采用4步优化,那么Specific应该有哪些文件了?等下介绍)</p>
<p>以上就是USPEX所有用于结构优化的软件包<br>第39行、运行总能计算软件的指令:一般建议不在这个设置这个参数,直接在Submission文件夹里面提交计算任务的脚本里面改就可以了。<br>第43行、numParallelCalcs(并行计算数):1(意思就是一次提交1个总能计算任务,计算效率太低,建议设置16个左右)。<br>第44行、whichCluster(采用什么计算方式):一般采用1,同第43行原理。<br>第45行、ExternalPressure(计算外压):100 (GPa)</p>
<p>把INPUT.txt读完以后,案例2和案例1计算类型和参数设置几乎都是一样,但是需要注意的这次是采用GULP来计算的,那么问题来了!</p>
<p><strong>问题1. Seeds 和AntiSeeds里面的种子文件采用的是GULP格式的吗?</strong></p>
</li>
</ul>
<p>答:不是!还是VASP5 格式的POSCARS。另外提醒一下,种子文件都是POSCARS的形式,跟采用何种结构优化软件包无关!</p>
<p> <strong>问题2. Specific里面的文件怎么设置?</strong></p>
<ul>
<li><p>GULP计算时,ginput 和goptions一一对应,文件夹里面的文件还和INPUT.txt里面的4次结构优化对应。<br> 文件夹Submission的文件需要读者自己根据自己机器去修改了,然后假如读者机器里面有GULP的话,可以提交任务计算结果和reference对比一下。笔者在此不多说,直接看reference文件夹。</p>
<p>里面的文件和案例2的文件都是一样的,可见定成分变胞计算结果都是由这些文件组成的。现在我们看看结果文件BESTIndividuals和BESTgatheredPOSCARS,其余文件就不再介绍了。</p>
<p>从文件BESTIndividuals中可以看出到了第34代计算停止,之前30代的结构的焓值计算是一样,与INPUT.txt中stopCrit参数值30是对应的。既然有第34代最稳定结构的ID=1562,那么根据ID=1562去BESTgatheredPOSCARS中找结构,直接到文件最后找一下,另存ID=1562的结构信息为一个文本文件,然后拖到VESTA,可以很直观的看到计算出的最稳定的结构究竟长什么样!</p>
</li>
</ul>
<h2 id="官方算例3"><a href="#官方算例3" class="headerlink" title="官方算例3"></a>官方算例3</h2><p>案例3:MgSiO3(每个单胞有20个原子)使用GULP(采用Buckingham势)在知道结构参数的条件下进行结构预测。这个结构的晶格参数和后钙钛矿一致。后钙钛矿的发现(Oganov & Ono, Nature 2004; Murakami et al., Science 2004)在地球科学领域是一个重大突破。<br>我们直接来来读一下INPUT.txt:</p>
<pre><code>第11-13行、symmetries:16-74。第一次出现,设置生成结构的晶体对称性。三维晶体的取值范围:2-230。
第42-44行、Latticevalues:2.474 8.121 6.138 90.0 90.0 90.0 = b, c, alpha, beta, and gamma values。此参数仅用作初始猜测,仅影响第一代,USPEX计算的每个结构都经过充分优化,并采用与(自由)能量最小值相对应的晶体参数。INPUT.txt中其他的参数都在案例2中讲解过一次了,就不再解释了。下面我们来继续看一下结果!
</code></pre>
<p>可以看出,案例3总共计算20代,共626个结构,得到最稳定的结构的原子结构之后,可以去计算MgSiO3其他的性质。</p>
<h2 id="其他算例解释"><a href="#其他算例解释" class="headerlink" title="其他算例解释"></a>其他算例解释</h2><p><strong>案例4</strong>:预测16个C原子的最稳定的晶胞,但是使用LAMMPS优化结构计算能量,跟案例2、案例3基本上一样的,就不多介绍了!</p>
<p><strong>案例5</strong>:预测8个Si原子的最稳定的晶胞,但是ATK里面的tight binding近似方法来优化结构计算总能,不多解释啦!</p>
<p><strong>案例6</strong>:预测10 GPa下8个C原子的最稳定的晶胞,但是使用CASTEP优化结构计算能量,你懂的!</p>
<p><strong>案例7</strong>:预测8个Si原子构成的二维晶体在0 GPa下最稳定的结构。<br>这个案例有点不一样,我们来直接看一下INPUT.txt,再讲一下不一样的参数怎么构成不一样的计算。</p>
<pre><code>第5行、calculationType:-200。
这个为什么是-2,没这个维数取值呀?不懂直接USPEX –p calculationType!
可以看到2是表面结构,而-2是二维晶体结构,至于二维晶体和表面结构有什么区别?这个问题笔者不能很通俗易懂告诉大家,只能告诉你在USPEX中,二维晶体计算既不需要端点参考能也不需要衬底,而只需设置二维初始结构的厚度即可,而表面计算需要!
第7行、thicknessS:3.0。初始层厚度,最后一个是大写的S,因为是Start的缩写。
第10-12行、vacuumSize:8 9 10 12(20)?。设置真空层厚度,这是二维晶体和表面计算必须要设置的,不然的话,没有真空层,就会有作用力,计算的也就不是二维晶体。而这个参数,这里貌似设置错误了,少了1个参数。
</code></pre>
<p><strong>既然,我们读完INPUT.txt,那么有一个问题出来了:Seeds里面的文件怎么去设置了?还是POSCARS,里面还是放所有稳定的Si原子结构!</strong></p>
<p>我们现在来看一下结果!总共计算了13代共295个结构。那么最后一代稳定的结构长什么样了?显然POSCAR的原子坐标,根本看不出什么,而单胞结构示意图也看不出是二维晶体,做一个3x3x3的超胞,可以看出这就是一个二维晶体!USPEX多么神奇!</p>
<p><strong>案例8</strong>: 36个Mo原子的纳米粒子结构预测。使用Lennard-Jones对势函数的GULP进行结构优化。<br>这个案例值得看一下INPUT.txt。</p>
<pre><code>第5行、calculationType:000。纳米颗粒结构计算。
第36-38行、vacuumSize:10 10 11 12 12。真空厚度,案例7已经提到了,显然这个案例中真空层厚度值设置正确了。
这个计算结果,显示在第7代一下突然找到低焓值的结构,然后一直持续到了26代,总共有20代的最稳定的结构的焓值是一样。所以到了第26代计算结束了。而我们查看第26代最稳定的结构示意图如下,也真是纳米颗粒结构!
</code></pre>
<p><strong>总结</strong>:</p>
<pre><code>案例2:在100 GPa,MgAl2O4(28个原子的单胞)使用GULP采用Buckingham势-进行变胞计算。(calculationType:300)
案例3:MgSiO3(每个单胞有20个原子)使用GULP(采用Buckingham势)在知道结构参数的条件下进行结构预测。(calculationType:300)
案例4:预测16个C原子的最稳定的晶胞,但是使用LAMMPS优化结构计算能量。(calculationType:300)
案例5:预测8个Si原子的最稳定的晶胞,但是ATK里面的tight binding近似方法来优化结构计算总能。(calculationType:300)
案例6:预测10 GPa下8个C原子的最稳定的晶胞,但是使用CASTEP优化结构计算能量。(calculationType:300)
案例7:预测8个Si原子构成的二维晶体在0 GPa下最稳定的结构。(calculationType: -200)
案例8:36个Mo原子的纳米粒子结构预测。使用Lennard-Jones对势函数的GULP进行结构优化。(calculationType: 000)
</code></pre>
<p>其实可以看出,USPEX刚开始开发的时候,主要是用于定组分变胞的三维晶体最稳定的结构预测,后来功能慢慢的扩展开来,能够预测二维晶体、纳米粒子结构以及后面要讲案例中有关分子结构的预测、进化准动力学方法、表面结构预测、三元变组分结构预测方面的内容。</p>
<h1 id="六、官方算例(9-13)"><a href="#六、官方算例(9-13)" class="headerlink" title="六、官方算例(9-13)"></a>六、官方算例(9-13)</h1><p><strong>案例9</strong>:预测有4个甲烷分子的单胞在20 GPa下最稳定结构,结构优化采用的是VASP。<br>分子?这个我们还是第一次遇到,现在来看看怎么一回事?</p>
<p>可以看到案例9多出一个MOL_1的文件,现在我们先看看这个MOL_1文件有些什么:<br>这个文件在手册里面第5章里面有介绍,也可以在线观看(<a target="_blank" rel="noopener" href="https://uspex-team.org/online_utilities/uspex_manual_release/ChineseVersion/uspex_manual_chinese_V10.2/sect0029.html%EF%BC%89%EF%BC%8C%E9%87%8C%E9%9D%A2%E8%BF%98%E4%BB%8B%E7%BB%8D%E6%80%8E%E4%B9%88%E9%80%9A%E8%BF%87XYZ%E5%9D%90%E6%A0%87%E6%A0%BC%E5%BC%8F%E7%9A%84%E6%96%87%E4%BB%B6%E6%9D%A5%E5%88%9B%E5%BB%BAUSPEX%E4%BD%BF%E7%94%A8%E7%9A%84MOL%E6%96%87%E4%BB%B6%E3%80%82%E6%89%8B%E5%86%8C%E4%B8%8A%E9%9D%A2%E8%BF%99%E5%9D%97%E8%AE%B2%E7%9A%84%E6%8C%BA%E9%BA%BB%E7%83%A6%E7%9A%84%EF%BC%8C%E8%AE%A9%E7%AC%94%E8%80%85%E6%91%B8%E4%B8%8D%E7%9D%80%E5%A4%B4%E8%84%91%EF%BC%8C%E6%AF%95%E7%AB%9F%E7%AC%94%E8%80%85%E5%AF%B9%E4%BA%8E%E5%88%86%E5%AD%90%E6%8E%A5%E8%A7%A6%E7%9A%84%E5%B0%91%E3%80%82%E4%BD%86%E6%98%AF%E4%BB%8E%E6%9C%B1%E5%BC%BA%E5%8D%9A%E5%A3%AB%E7%9B%B8%E5%85%B3%E8%AE%BA%E6%96%87%E4%B8%AD%EF%BC%8C%E5%8F%AF%E4%BB%A5%E8%AF%BB%E5%88%B0%E8%BF%99%E4%B8%AA%E6%96%87%E4%BB%B6%E8%AE%BE%E7%BD%AE%E7%9A%84%E4%BD%9C%E7%94%A8%EF%BC%9A%E5%9C%A8USPEX%E4%BA%A7%E7%94%9F%E5%88%86%E5%AD%90%E7%BB%93%E6%9E%84%E7%9A%84%E6%97%B6%E5%80%99%E8%BF%9B%E8%A1%8C%E7%BA%A6%E6%9D%9F%EF%BC%8C%E8%BF%99%E6%A0%B7%E5%A4%A7%E5%A4%A7%E9%99%8D%E4%BD%8E%E6%90%9C%E7%B4%A2%E7%A9%BA%E9%97%B4%EF%BC%8C%E5%87%8F%E5%B0%91%E8%AE%A1%E7%AE%97%E9%87%8F%EF%BC%9B%E5%85%B6%E6%AC%A1%EF%BC%8C%E4%BB%BB%E4%BD%95%E5%88%86%E5%AD%90%E7%9A%84%E8%83%BD%E9%87%8F%E5%80%BC%EF%BC%8C%E9%83%BD%E8%A6%81%E6%AF%94%E5%85%B6%E5%88%86%E8%A7%A3%E4%B8%BA%E6%B0%B4%E5%92%8C%E7%9B%90%E7%9A%84%E5%8C%96%E5%90%88%E7%89%A9%E7%9A%84%E8%83%BD%E9%87%8F%E5%80%BC%E4%BD%8E%E3%80%82">https://uspex-team.org/online_utilities/uspex_manual_release/ChineseVersion/uspex_manual_chinese_V10.2/sect0029.html),里面还介绍怎么通过XYZ坐标格式的文件来创建USPEX使用的MOL文件。手册上面这块讲的挺麻烦的,让笔者摸不着头脑,毕竟笔者对于分子接触的少。但是从朱强博士相关论文中,可以读到这个文件设置的作用:在USPEX产生分子结构的时候进行约束,这样大大降低搜索空间,减少计算量;其次,任何分子的能量值,都要比其分解为水和盐的化合物的能量值低。</a></p>
<p>进行分子结构预测时的INPUT.txt又需要注意哪些呢?</p>
<pre><code>第5行、calculationType:310 三维分子定组分。
第14行、numSpecies:1 4,这个官方案例有点问题,少了一个1,知道为啥不?
第35-38行、IonDistances,设置不同原子类型之间的最小原子间距离矩阵,而低于离子距离低于这个距离都被认为没有物理意义的,将被忽略!这里只有两种原子,所以只设置两行就行!第36行的2.0,表示C原子和C原子之间的最小距离,1.7表示C原子和H原子之间的最小距离;第37行的0.7表示H原子和H原子之间的最小距离。这些值都要比真实健值要小!
第40-42行、MolCenters,设置分子中心之间最小距离的矩阵,而任何低于这值的距离都表明分子有很大的重叠,是没有物理意义的,将被严格避免!第41行的2.8表示CH4的最小距离,单位为埃。进行分子结构预测时,这个必须设置!
INPUT.txt其余的参数在前面的案例中,已经介绍了。可以看出结构优化时,计算CH4结构的能量采用的是VASP,那么Specific文件夹里面就是INCAR五部曲和C、H原子的赝势!当然进行计算时,Seeds文件夹依旧是POSCARS,里面放的是C、H原子的最稳定的结构!可以看到除了多了MOL_1文件和INPUT.txt部分参数不一样外,分子结构预测跟其他晶体预测设置不一样?
</code></pre>
<p>下面我们来看看参考结果的reference文件夹:</p>
<p>里面也有MOL_1文件,这个是从之前的那个MOL_1拷贝过来的。其余的文件格式和内容与之前介绍的定成分计算的文件格式和内容都是一样!</p>
<p>案例9总共计算了9代197个结构,其中最稳定的结构也是这个对称性最低的CH4。</p>
<p><strong>案例10</strong>:预测有8个甲烷分子的单胞在常压下最稳定结构,结构优化采用的是DMACRYS;跟案例9类似,就不介绍了!</p>
<p><strong>案例11</strong>:预测有2个尿素分子的单胞在常压下最稳定结构,结构优化采用的是TINKER;跟案例9、10类似,就不介绍了!</p>
<p><strong>案例12</strong>:预测Mo-B二元体系常用最稳定的结构,变组分的结构预测,结构优化是采用Lennard-Jones对势的GULP做的。<br>案例12跟入门教程的La-H二元体系变组分结构预测是相似的,只是结构优化软件的软件包是不一样的,所以INPUT.txt就不介绍了。而在La-H二元变组分结构预测中,没来得及对计算结果进行分析,这次就在本教程对变组分的结果进行详细讨论。</p>
<p>我们先看参考答案reference文件夹里面有哪些文件:</p>
<p>这次文件夹里面有很多文件,又有些文件和定组分不同,但是对于变组分结构预测而言,只有extended_convex_hull、extended_convex_hull_POSCARS、extendedConvexHull.pdf和OUTPUT.txt这四个文件最重要,彻底掌握了这四个文件就掌握了变组分结构预测的结果分析。</p>
<p>下面先来看看老朋友OUTPUT.txt,看一下Mo-B变组分运算过程的信息:</p>
<p>可以看到总共计算了60代共5287个结构,最后列出来最稳定的成分,也就是凸包线点:Mo4、B6、MoB14、Mo4B8、Mo4B4、Mo2B6。(ps: 凸包线上稳定的单胞)。那么现在读者肯定很想知道凸包线是什么?直接打开extendedConvexHull.pdf!</p>
<p>图中绿色的点就是本次计算的结构的,而最下面的那条黑色就是凸包线,位于这条线上的点就是热力学上稳定的结构。在本图中从左到右总共有6个落在线上的点,和OUTPUT.txt里面的6个稳定的成分是相对应的。读者应该知道能够很清楚的知道X轴代表什么意思,怎么计算的。而Y轴形成焓(Enthalpy of formation,eV/atom)是由下面公式计算出来的:<br>Y = (E(AxBy)-x<em>E(A)-y</em>E(B))/(x+y)<br>在案例12中,x: Mo原子的个数,y:B原子的个数。</p>
<p>而凸包线画法麻烦一点,先从两个端点开始,连接焓值最低点,然后找到端点到焓值最低点这段直线中下方最远的点,连线。迭代下去,直到没有一个点位于凸包线下面!<br>这条线的做法决定了稳定的结构都位于凸包线上。 假如有一个稳定的点在凸包线上方,那么它很容易分解为距离这个点最近的凸包线上的两个稳定点,有点类似直线方程的意思。</p>
<p>读者需要仔细体会上面一段内容,因为理解了上面的观点也就明白了变组分结构预测中凸包线的意思,那么一大堆相关论文也就会明白了。<br>既然我们得到知道稳定的成分,那么它们具体的结构是什么了?先看一下extended_convex_hull文件:</p>
<p>这个文件有些意思,第1-4行解释了extended_convex_hull文件的X、Y和Fitness这些标题的含义,其中X、Y和extendedConvexHull.pdf中X、Y轴是一一对应的,而Fitness这个就是结构离凸包线的距离,值为0意思就是在凸包线上,而值大于0就是在为凸包线上方,那么一个小小的思考题来了:为什么这个文件中没有Fitness值小于0的?(提示:思考凸包线的画法)</p>
<p>现在我们把注意放在第7-12行,因为它们Fitness的值为0,也就是说它们就是凸包线上的点。再看一下它们的Compositions和Enthalpies值,与OUTPUT.txt里面的值是一一对应的,综合以上信息,可以确定以上6个结构就是我们要找的稳定结构。从第13行往后就是根据Fitness从小到大排下去的,也可以认为这是根据稳定性排下去的,当然大部分情况下,这些结构都是不需要考虑的!既然我们知道要找到的稳定结构,那么怎么找到这些结构的原子坐标?这就需要看看extended_convex_hull_POSCARS了:</p>
<p>整个文件就是POSCAR的集合,并且每个结构的表头和之前的BESTgatheredPOSCARS是一样的,再加上第1行和第25行的ID,与extended_convex_hull里面前两个稳定结构的ID是一一对应的,那么显而易见extended_convex_hull_POSCARS文件和extended_convex_hull文件里面的结构是一一对应的。</p>
<p>既然知道这些预测出的稳定新结构了,就可以继续通过DFT计算它们的性质,然后得到数据,发Paper了,这还不简单?<br>这就是变组分结构预测需要了解和处理的文件:extended_convex_hull、extended_convex_hull_POSCARS、extendedConvexHull.pdf和OUTPUT.txt。除了凸包线画法需要用心体会,其余很简单吧!</p>
<p><strong>案例13</strong>:USPEX能很容易地找到最无序的合金结构。这个案例只是为了演示TixCo(1-x)O。您需要在/Seeds/POSCARS中指定初始结构,并且只使用置换突变操作。(在这种情况下,不需要使用任何外部代码。在这个例子中,我们优化(最小化)结构有序度(Oganov and Valle(2009);Lyakhov Oganov Valle(2010))而不需要进行结构优化(abinitioCode=0)。种子结构(Ti-Co-O结构的超级细胞)中的Ti原子和Co原子被置换,以寻找具有最小的有序度。在这种情况下最小化有序度,我们得到了“特殊准随机结构”的广义形式。)</p>
<p>这个案例的说明比较饶舌,还是直接看INPUT.txt吧:</p>
<pre><code>第6行、optType: -4,寻找有序最小的结构!因为4是寻找有序度最大的结构,所以-4是相反的意思。
第30行、howManySwaps:15,设置为这个值,是因为在第29行设置本次计算的子代结构都是通过交换父代结构中的原子产生的。本次计算的Co16Ti16O64的单胞,总共有96个原子,这个值占比15%左右。
第32-34行、specificSwaps:
1 2,指明只有Co、Ti原子能进行置换。
</code></pre>
<p>其余没有什么新鲜的参数要介绍了,不过读者可能会注意到,本次并没有进行结构优化,或者说是调用外部软件进行计算。都是USPEX通过自己的Fingerprint算法来计算有序度,这个具体是怎么一回事?可以参考这个在线网址(<a target="_blank" rel="noopener" href="https://uspex-team.org/online_utilities/fingerprints2/)%E3%80%82">https://uspex-team.org/online_utilities/fingerprints2/)。</a></p>
<p>好了,再把Seeds/POSCARS文件准备好:放入Co、Ti、O原子所有稳定的结构信息进去就OK了。至于计算,本地计算就可以。我们先来看看结果吧(由于这次是300计算,结果只是需要关注BESTIndividuals、BESTgatheredPOSCARS、OUTPUT.txt),先看一下BESTIndividuals文件:</p>
<p>可见BESTIndividuals文件还是跟以前,到文件末尾总共有50代 (本图志截取到19代 ),那么问题又来了,我们需要预测的结构长什么样了?我们接着打开BESTgatheredPOSCARS文件:可以看出这个结构还是比较复杂的,有点无序的感觉,有点高熵合金的感觉。</p>
<p><strong>总结</strong>:</p>
<pre><code>案例9:预测有4个甲烷分子的单胞在20 GPa下最稳定结构,结构优化采用的是VASP。310
案例10:预测有8个甲烷分子的单胞在常压下最稳定结构,结构优化采用的是DMACRYS; 310
案例11:预测有2个尿素分子的单胞在常压下最稳定结构,结构优化采用的是TINKER; 310
这三个都是分子结构预测:310类型的,所以只详细的介绍了310。
案例12:预测Mo-B二元体系常用最稳定的结构,变组分的结构预测,结构优化是采用Lennard-Jones对势的GULP做的。301
这个案例主要是介绍了结果分析,其中关于凸包线的那段值得读者思考一下,弄明白了,很多Paper都能理解了。