Vacuum reference
Calculating the chemical potential (redox level)
The chemical potential requires four different systems: bulk H2O with 64 molecules (64H2O_bulk), Fe3+ in 64 H2O (Fe3P_64H2O), Fe2+ in 64 H2O (Fe2P_64H2O), H2O slab with 128 molecules (128H2O_slab). I.e., a bulk water reference, Fe3+(aq), Fe2+(aq), and the water slab.
Fe3P_64H2O), top center: Fe2+ in 64 H2O (Fe2P_64H2O), top right: bulk H2O with 64 molecules (64H2O_bulk), and bottom: H2O slab with 128 molecules (128H2O_slab).Initial structures
64H2O_bulk POSCARWater
1
12.42128700 0.00000000 0.00000000
0.00000000 12.42128700 0.00000000
0.00000000 0.00000000 12.42128700
H O
128 64
Direct
0.36257633 0.37953597 0.67785342
0.42947178 0.43286249 0.59010358
0.66870393 1.13989162 0.58842641
0.70823249 1.22041509 0.67807457
0.35637008 0.05839855 0.21517466
0.44580288 0.01834909 0.16004703
0.44380894 0.67759921 0.05971511
0.44857483 0.64047308 0.17235572
1.14522157 0.76633728 -0.07286828
1.26197238 0.78911446 -0.10391832
0.56790416 1.14251886 0.92143084
0.60754105 1.14691841 0.80551737
0.75633099 0.25670520 0.32073462
0.75786987 0.15087192 0.26471573
0.74642803 -0.03671116 1.07026855
0.68277568 -0.08917103 1.16765095
0.08323566 -0.02515907 -0.01412446
-0.00880432 1.02342521 0.04212898
0.68157988 0.24579303 0.03134658
0.60083186 0.23578159 0.12220439
1.14251010 0.79368279 0.23822678
1.03381447 0.81936982 0.30217442
1.45625953 0.82211861 -0.39364182
1.33249296 0.84676639 -0.38681569
0.73773505 0.37233458 0.47040761
0.62289024 0.34929795 0.43767209
0.63992674 0.70350215 0.78737637
0.67764626 0.66562038 0.90017103
0.38737624 0.10112290 0.97816413
0.44041019 0.20087678 1.04654040
-0.74229635 0.27326641 0.85574288
-0.86480570 0.30089547 0.83717409
0.98781733 0.58627453 1.16338342
0.98642719 0.45910015 1.19257026
0.32814541 0.15987161 0.50362237
0.25642761 0.26648016 0.48295405
0.69811093 -0.56389784 0.28108666
0.70770558 0.42946360 0.15518042
0.18565685 0.52373867 0.56827259
0.08659439 0.58375638 0.51565848
0.44991203 0.27342036 0.48425454
0.55101593 0.27228106 0.56380912
0.41624326 -0.17788427 0.80896103
0.50257275 -0.21360866 0.89707634
0.28998176 0.48372062 -0.01768589
0.19491021 0.39742192 -0.01269715
1.06654096 0.36410409 0.63682306
1.03975716 0.44960909 0.73041188
0.50170068 1.61380686 0.40736049
0.49942205 1.73793230 0.43266624
0.37390409 0.30295427 0.17857302
0.34033093 0.38510006 0.09520283
0.30807694 0.20122962 0.31494909
0.22529499 0.19805563 0.21739075
1.12308748 0.37150659 0.42477646
1.06276778 0.26307066 1.46962386
-0.15792914 0.29610530 0.85397054
-0.07308234 0.27252743 0.77021418
0.85228948 0.16062637 0.95526886
0.89963468 0.18253764 1.06178327
0.19181780 0.04626484 -0.19418583
0.15189262 -0.06556287 -0.18492234
-0.10238306 0.45933074 0.94465075
0.78170215 0.43034159 0.95991840
-0.04726476 0.53527628 0.38000776
-0.10379563 0.60547798 0.46538564
-0.00098972 1.02353900 0.73537767
-0.10239174 1.10640574 0.72833236
0.83303676 0.93517612 0.67263678
0.72416689 0.88061601 0.69336360
0.83396381 0.79727679 0.33276158
0.84935945 0.89986765 1.25490788
0.43767040 0.26474088 0.82690407
0.40610758 0.19731651 0.73463453
-0.22521691 0.99033821 0.52178482
-0.21732111 1.08901868 0.43461921
0.55979128 0.65441008 0.58905315
0.51739017 0.64402769 0.70843828
1.15263203 0.22553743 1.04375491
1.05410314 0.23287904 1.11317058
0.40787600 0.01178034 0.65057706
0.46239323 0.06947748 0.55789921
1.22298533 -0.28915950 0.52942510
0.19053464 -0.18268639 0.46366419
0.34645899 0.68043144 0.72737986
0.36594763 0.55141902 0.69243633
0.56017599 0.33134538 -0.03087852
0.61388449 0.39021229 -0.12522124
0.38664251 -0.13040994 -0.70002278
0.35405937 -0.19423015 -0.59774517
0.73338812 0.70036370 0.46781396
0.80345417 0.77305746 0.53896313
0.70280496 0.86052960 0.87581100
0.72653862 0.98582519 0.88541416
0.94986235 0.10516542 0.53628061
0.99735924 1.10316818 0.41487930
0.34586913 0.92208748 -0.04377027
0.27835954 0.97034641 0.04814922
0.88788268 1.29429166 0.20459804
-0.10649273 1.36074553 0.09165817
0.39371787 0.57519096 -0.11020542
0.46220136 0.48981436 -0.05946583
0.89286511 0.79370028 0.86701692
0.96099685 0.84339162 0.96334218
0.62514345 0.53133485 0.73825559
0.73640530 0.50006566 0.71024894
-0.12902917 0.72677131 1.16320660
-0.11814514 0.70432566 1.03349629
1.01129606 0.61898608 0.90675712
1.09968460 0.53447870 0.92387699
-0.14457334 0.35937352 0.63141164
-0.11499539 0.45568803 0.54735066
0.48813670 0.98589446 0.40760031
0.60110088 1.02927414 0.43954578
-0.37236788 0.57165925 0.04667849
-0.24946342 0.60016434 1.06579556
1.07450858 1.10382861 0.26264566
1.12554235 0.99644744 0.31325744
0.62490856 0.06519849 0.18845978
0.54885406 0.10569865 0.28792416
0.55694560 -0.17713139 0.27541275
0.56084272 -0.21506154 0.16885793
0.12891427 0.50587770 0.28000948
0.23833432 0.43434745 0.29542543
1.48346125 0.46743806 0.19449182
1.57481458 0.52369865 0.24680216
0.17873553 0.62275568 0.11942301
0.26852366 0.68872043 0.07818815
0.35693455 0.43925319 0.62530196
0.64792950 1.20400828 0.63184735
0.39412198 -0.01057009 0.20787038
0.43581616 0.71008914 0.13099142
1.19397105 0.77903373 0.85946991
0.63615555 1.12938446 0.87822715
0.80661353 0.20330608 0.29232873
0.73246578 -0.02838354 1.14624509
0.03244721 -0.04025903 0.03944908
0.63721217 0.28885881 0.08035039
1.11493495 0.82738114 0.30859190
1.39883698 0.85058088 -0.34459284
0.69698494 0.36107968 0.40464588
0.64192914 0.72485162 0.86089438
0.45396944 0.13747103 1.00222318
-0.81120011 0.28079526 0.89372357
1.01585028 0.52957121 1.21343372
0.31821591 0.22470258 0.45731626
0.70888882 -0.51685513 0.22019861
0.13832317 0.58769764 0.57254578
0.51028551 0.31315460 0.51155010
0.42617734 -0.19946999 0.88578770
0.21795347 0.46397897 0.02254897
1.03345078 0.37392845 0.70810584
0.53447426 1.66561969 0.45708230
0.40848000 0.35179327 0.12578669
0.30420794 0.19684477 0.23570844
1.10944135 0.32634895 1.48853144
-0.15068923 0.25159638 0.78858129
0.84350236 0.13666558 1.03077541
0.12621458 0.00799599 -0.18726449
-0.14969491 0.39803889 -0.04386545
-0.05257019 0.54926511 0.45604016
-0.07042394 1.04132825 0.69759096
0.77456016 0.89777696 0.63596725
0.87893918 0.82791839 1.27826204
0.37199961 0.24693838 0.78669458
-0.26629559 1.03776777 0.47472997
0.58383474 0.64578572 0.66290779
1.11758097 0.18829015 1.10755225
0.41441089 0.08360444 0.62404569
0.25236886 -0.21779138 0.50357805
0.38654211 0.61365045 0.74790977
0.54189953 0.36543129 -0.10123356
0.41572204 -0.15596095 -0.63075239
0.80055913 0.73724417 0.46650168
0.76508964 0.91308708 0.87755337
0.94189130 0.13529024 0.46400834
0.29460037 0.97883985 -0.02591476
-0.06126178 1.32786996 0.14953350
0.41172576 0.54824212 -0.03901993
0.94501130 0.77310663 0.92132598
0.69302524 0.50734691 0.77446848
-0.13207205 0.66750977 1.10613301
1.02911948 0.53980433 0.89023275
-0.17248923 0.40767816 0.57425135
0.52217208 1.04992599 0.43651343
-0.30113028 0.57147331 0.01268190
1.11295226 1.07452050 0.32297073
-0.41735391 0.12325009 0.21804170
0.61116931 -0.19691698 0.22556446
0.17536968 0.46512423 0.32953214
1.49704038 0.52822279 0.24728978
0.19113993 0.69295724 0.10392182
Fe3P_64H2O POSCARFe_64H2O
1
12.42282200 0.00000000 0.00000000
0.00000000 12.42282200 0.00000000
0.00000000 0.00000000 12.42282200
H O Fe
128 64 1
Direct
-0.38272023 0.47236734 0.69895078
-0.27203601 0.41866794 0.72914269
0.60916541 0.72796225 0.09306829
0.71070494 0.78725068 0.14392771
1.08865564 0.93820602 0.24600432
1.03755512 0.98120737 0.35350048
0.04276558 1.23801733 0.56678300
0.45616640 0.36926572 0.39344586
-0.16977976 0.40716591 0.53863440
-0.25237329 0.38130525 0.44755164
0.44169261 1.14516978 0.14529032
0.37457743 1.13530301 0.24819417
0.18407518 0.25222959 0.06812304
0.09998538 0.14744161 0.06444770
0.27831295 0.57479968 0.31380844
0.29633366 0.45926581 0.36724418
0.64763154 -0.53184911 0.87002912
0.63022496 0.40977773 0.99107908
0.47906160 0.58853267 0.63100265
0.59945353 0.62329058 0.64816927
0.87712851 0.41898140 1.07505748
0.26314503 -0.13253460 0.01243951
0.16153170 -0.19745195 0.05804701
0.34412600 -0.01810085 0.81692911
0.14554222 0.77130921 -0.25213594
0.21209078 0.79452634 -0.14442072
0.41500251 0.04461290 0.96837924
0.49008610 0.14359786 0.93019679
0.82125847 0.86254586 1.27147476
0.00873717 0.10267666 0.23211446
0.35980746 0.34237108 0.76169366
0.33485343 0.46345006 0.77046483
0.90320251 0.61221204 0.04264507
0.97690745 0.71802735 1.06017819
0.96030764 0.81465128 0.70019704
1.01749178 0.74674122 0.60432752
0.64007416 0.23981183 0.92947124
0.31788389 -0.12374136 0.74827741
0.99321033 0.93631524 0.55767630
0.15487454 0.51028490 -0.09542554
0.66815917 0.79686891 0.72718580
0.76202793 0.70002522 0.75366280
0.13591369 -0.02901335 0.00566347
0.08957800 1.06396642 -0.07143824
0.53392446 -0.11896063 0.23953882
0.48718378 -0.00799262 0.25860106
-0.07163033 1.26809135 0.50762252
0.67405502 0.12105566 0.95083205
0.74551359 0.62681866 0.34775553
0.66650260 0.64357368 0.25540936
0.38872827 0.12804968 0.55656518
0.33782256 0.21579745 0.49248801
0.92231233 -0.04307885 1.00089073
0.79411522 -0.04854941 1.01531498
-0.40705912 1.12847907 0.48347215
0.65420892 1.23981902 0.47957005
0.84599640 -0.09249550 0.84023452
0.80327236 0.97997213 0.74592535
0.88638541 0.47237368 0.72110537
0.88941805 0.35493190 0.74249811
0.55296221 0.93428417 0.55243420
0.51441228 0.92952738 0.43767406
0.73847683 0.51634987 1.03266322
0.40092134 0.63952229 -0.01737781
0.41176789 0.89134362 1.10615330
0.44444253 0.84405868 0.99393367
0.58073572 0.63347610 -0.04423652
0.60854638 0.72933752 -0.11607112
-0.16580359 0.22001380 0.89963070
-0.04391612 0.21085677 0.85654400
0.40533602 0.50000334 0.11555470
0.34998095 0.38355577 0.10448457
-0.24359234 0.77537730 0.45894937
-0.26614437 0.70560002 0.56106171
0.28303298 0.61126441 0.01597951
0.37578327 0.33380444 0.30290136
0.59618764 0.27699048 1.12423906
0.50319683 0.35108728 1.09799129
0.18989659 0.76741117 1.22566037
0.06153560 0.75549602 0.22936925
0.51785592 0.24354330 0.65223118
0.56708719 0.32005973 0.73245604
0.61206395 0.98022340 0.70759384
0.50678625 0.91620503 0.71723010
0.68602440 0.14707860 0.76412395
0.69294218 0.12172781 0.64036372
0.33488986 0.71525634 0.14956129
0.35814895 0.80854785 0.22920363
0.95945912 1.05245660 0.53679791
0.77994512 0.55222218 1.15138214
0.69626269 0.94689443 0.43758767
0.82244291 0.95270203 0.44158402
-0.08533410 0.30668689 0.99691887
0.88689642 0.15254779 0.21721075
0.96565778 0.66203563 0.74352603
0.91899641 0.64391575 0.86105003
0.60192845 0.32627053 0.34541527
0.54412777 0.22739074 0.29056180
0.33801876 0.24481339 -0.03610605
0.27498242 0.34868783 -0.07124872
0.63970642 0.49240211 0.35877270
0.61552019 0.46892953 0.48438447
0.30584874 0.64699933 -0.22951580
0.42787645 0.64881697 -0.19623458
0.05975532 0.12314654 0.75074831
-0.02832220 1.03112946 0.76086242
1.07382577 0.25251612 0.39457391
1.17074101 0.24004400 0.30909053
0.90882853 0.66787644 0.52270722
0.07399163 0.59412808 0.95304999
0.13906082 0.47905225 0.10518101
1.17121656 0.46180650 0.23562581
0.97971011 0.63429872 0.37278291
0.90631471 0.68858591 0.26904690
0.60516786 0.96463888 0.06395544
0.68233031 1.04347277 1.12012494
0.20897747 0.21380315 0.63498998
0.20507421 0.29490009 0.72649781
0.21069366 1.05104536 -0.68658423
0.27938942 1.09406910 0.40078460
0.70263174 0.14455648 1.25970691
0.75730930 0.04722448 1.29768294
0.91307779 0.40130091 0.34978752
0.94369056 0.50994390 0.28013594
0.08933991 0.43228293 0.60852163
1.17837154 0.48628664 0.53072146
1.00504493 0.58007882 0.54073092
0.86291931 -0.13828811 1.15173275
-0.34491075 0.43621986 0.75416516
0.63900568 0.75492759 0.15829659
1.07199795 1.00257563 0.28363155
0.38420131 0.34485841 0.37967695
-0.17342306 0.37643136 0.46438657
0.45349630 1.14005000 0.22505348
0.11869813 0.21939929 0.09604324
0.23622993 0.50759344 0.33909324
0.64875252 0.47771851 0.95286519
0.55590506 0.57693205 0.60050819
0.18736673 -0.15437724 -0.00677806
0.37523088 -0.06818877 0.76435686
0.21811495 0.76245384 -0.22055952
0.42220970 0.12606004 0.96558981
0.85780135 0.81574581 1.21531426
0.30433544 0.39124488 0.77849745
0.95758533 0.65697710 1.00747411
1.03085555 0.79681957 0.66923251
0.69067343 0.18643375 0.90833405
0.96523126 0.16955239 0.22035170
0.68612747 0.72230731 0.74299918
0.08987161 0.03581255 0.00348357
0.46357734 -0.08420990 0.24196675
-0.01222913 1.21468404 0.51335175
0.71162904 0.58691114 0.28804098
0.32268708 0.16090339 0.53975026
0.86234882 -0.08436224 0.98773807
-0.38355188 0.19092778 0.52248232
0.85291582 -0.08281162 0.75894361
0.86323773 0.40597333 0.69118967
0.54292990 0.98123241 0.48667605
0.80728528 0.53397589 1.07560692
0.39528125 0.89790682 1.02768167
0.56047647 0.70886600 -0.05694049
-0.09585039 0.25981162 0.89091800
0.40071565 0.42814971 0.14908255
-0.23238312 0.70278251 0.48864911
0.35169257 0.62880569 0.04279978
0.56212715 0.31299799 1.06345122
0.12066294 0.79773619 1.19966391
0.51154081 0.26173878 0.72839369
0.58450605 0.90652737 0.69203180
0.70957535 0.09399646 0.71195964
0.32002783 0.74390105 0.22241023
0.95247763 0.97831298 0.50380136
0.76168681 0.93342180 0.39565898
-0.07590969 0.35133103 1.07020111
0.90649162 0.63028257 0.78114555
0.61524001 0.25974801 0.30414551
0.30266553 0.31064613 -0.00899828
0.62120647 0.43621160 0.41233540
0.36878355 0.59976322 -0.20951626
0.00592307 0.09406140 0.79582533
1.10947213 0.28743919 0.33114811
0.13898678 0.54360995 0.97023057
1.15168897 0.42574337 0.16437693
0.96099089 0.62982868 0.29120309
0.66514203 1.00695060 0.04564722
0.15635030 0.24896214 0.68388955
0.26078411 1.11001890 0.32632346
0.75255117 0.09346553 1.23417762
0.93550375 0.42521425 0.27361930
1.12555194 0.49730673 0.58995753
0.97951694 0.64650296 0.50479031
1.02535902 0.32276265 0.18627127
Fe2P_64H2O POSCARFe_64H2O
1
12.42282200 0.00000000 0.00000000
0.00000000 12.42282200 0.00000000
0.00000000 0.00000000 12.42282200
H O Fe
128 64 1
Direct
0.12743711 0.48760461 0.68402834
0.07224030 0.59099573 0.69720079
0.39623895 0.90251919 -0.68562329
0.52396846 0.89222892 -0.69202626
0.42964083 0.63656491 0.92024856
0.40471536 0.51747508 0.92244566
0.50949529 0.22553243 0.82975356
0.79695561 -0.29210416 -0.14766098
0.00805766 0.01676094 0.93033834
-0.01969191 0.14077136 0.89733509
0.01773692 1.49221026 -0.45662142
-0.09754205 1.45083180 -0.48707747
0.28568895 0.07977712 0.14809775
0.40460027 0.11889958 0.12632577
-0.44823614 -0.23392047 0.91065326
-0.44655395 -0.27382665 1.03236410
0.55758309 0.63486700 0.51461921
0.54015662 1.52364880 0.45450703
0.67045916 0.85136844 0.58289035
0.71164261 0.89435637 0.47626762
1.16684705 0.13193713 0.89590371
0.33871812 0.20748811 0.69296855
0.38041592 0.31864036 0.75378916
-0.26840230 -0.60381695 0.57433173
0.25751301 1.09723808 -0.39131073
0.28561906 1.17135043 -0.49010853
-0.15559770 0.77405954 1.51947552
-0.03350167 0.77676575 1.52339975
0.75237735 1.02309221 1.12180723
0.04826055 0.15234086 0.05862687
-0.09230147 -0.06114088 1.02402855
-0.07779336 -0.14013315 0.92524744
0.68560087 0.63322667 1.36320530
0.79400335 0.69800156 2.34722324
1.01111679 0.16477327 0.53663862
0.98618018 0.28565957 0.49809698
0.20452861 0.81136804 0.83127978
-0.29824646 -0.48415938 0.54811270
0.37502040 1.26549068 0.41257460
1.30154976 0.64025841 0.11667748
1.75290818 0.59403116 0.98316689
1.65052923 0.63412803 0.91547295
0.75375838 0.00138371 -0.37473678
0.76130867 1.05807834 -0.25911110
-0.05696647 -0.29493528 0.76468746
0.02811791 -0.33267590 0.85098776
0.61065413 0.29830310 0.85951557
0.11763966 0.86822584 0.90729729
0.18919114 0.55109134 0.38993918
0.21099928 0.52226945 0.51012484
0.03269714 0.36292005 0.33650725
0.02620788 0.48115860 0.28181401
1.05541232 0.90157404 0.64524915
1.07849658 0.77961507 0.68820380
-0.62352298 1.63205141 0.30877689
0.43788457 1.73907737 0.26620496
0.64515164 -0.84752695 1.12986454
0.64730542 0.18633377 1.26064334
0.19923207 -0.08426170 0.07502044
0.22493320 -0.20749942 0.08281964
0.78950677 1.18291196 0.57758905
0.83466268 1.23338961 0.48038196
1.10490483 1.28683406 0.74494774
0.29928808 0.66864147 -0.17842015
0.69120317 0.84829619 1.11035412
0.67223805 0.75611954 1.18775106
-0.00106366 0.61277354 0.38525072
0.01326608 0.68609575 0.28998127
-0.07137268 0.05723237 0.64512696
0.03262162 0.06902330 0.71661499
0.77907316 0.40440365 0.75246685
0.73437154 0.47097142 0.84530449
0.22165260 0.78128841 0.57222522
0.24873347 0.68762843 0.48624453
0.21948415 0.65300265 -0.26571256
0.79089209 -0.20809083 -0.24704170
1.11107834 0.01381845 0.32957265
1.03239487 0.10538648 0.35890625
-0.22306466 1.43601128 1.11757892
-0.24593929 1.53904148 0.17695298
0.53330947 -0.13832394 0.74775872
0.48380538 -0.08752260 0.84569979
0.33958593 1.05428999 0.90703938
0.29513801 0.93047632 0.90464110
-0.10080201 -0.17071890 0.20726349
0.00812468 -0.20258160 0.13847835
0.08102303 0.64583254 0.03494449
-0.04079584 0.61193214 0.04209357
0.35121443 1.17006312 0.32377652
1.18017291 1.28895470 0.63748305
0.44815316 0.76165600 -0.42603898
0.46425067 0.68605942 -0.32598380
0.26710057 0.21583209 0.85066344
1.08895608 0.13400129 0.17359061
0.65188184 1.12136051 0.88104293
0.65005020 0.99400031 0.86041374
0.74276310 0.93357167 0.31617568
0.65193906 1.01050888 0.33337941
0.22155564 -0.06334224 -0.33974479
0.31584241 -0.05457389 -0.25072038
0.46701413 0.39534529 0.33741153
0.37353168 0.43618379 0.40490478
0.88534124 0.31114574 0.85608235
0.90593210 0.27739909 0.97341481
0.39857237 -0.04387750 0.56182123
0.47095275 1.02320312 0.49993905
1.25892990 0.45837652 0.17875477
1.15656687 0.39089427 0.22252886
0.51644837 0.17070272 0.40580457
1.27940834 0.60940694 0.99753791
0.42616197 0.40350440 0.06681017
1.44539498 0.30393771 -0.01376590
0.46562325 1.01534518 0.03284939
0.50319974 0.99064681 0.15470387
0.81037140 0.25082530 0.14657752
0.90914722 0.31376690 1.17885883
0.90887977 0.86774057 1.39942038
0.94187889 0.97203833 1.33441155
0.22890408 0.88765248 0.26506994
0.22943934 0.87502350 1.39740388
0.49252993 0.56873322 1.17531223
0.58322974 0.47973985 1.18073167
1.07353906 0.35801775 -0.07352972
1.10345201 0.46291908 -0.00569576
0.56233028 0.47301291 0.65701182
1.50111441 0.39245196 0.57504212
0.64733050 0.17609466 0.44047892
0.76155406 -0.00064089 0.99805907
0.11696365 0.55392898 0.64536596
0.45665944 0.88787932 -0.73431062
0.37333616 0.58173353 0.89358570
0.83287880 -0.23084103 -0.18836803
0.03157586 0.08326143 0.89500066
-0.01967168 1.44066290 -0.50120574
0.32649692 0.14675159 0.14354441
-0.47815402 -0.28476352 0.96183234
0.58825114 1.58190086 0.46693607
0.73530757 0.86486122 0.54696653
0.36850393 0.23869519 0.76098331
-0.24064441 -0.53169325 0.57977533
0.24867886 1.17176032 -0.42128557
-0.09114394 0.73086170 1.49415350
0.77082046 0.96821649 1.06941593
-0.03834292 -0.10477073 0.98185130
0.72904928 0.67702858 2.31155822
0.98643994 0.21068855 0.47648425
0.18404121 0.88355581 0.86864094
1.08703359 0.18844511 0.11444108
1.71734102 0.59616846 0.90840384
0.79123200 0.05674886 -0.33394462
0.02043659 -0.31156425 0.77570162
0.56069314 0.24338431 0.88537227
0.24569014 0.53057214 0.44182948
0.03448211 0.40131521 0.26357804
1.09819988 0.83512130 0.63612042
-0.60356192 0.67216851 0.24349363
0.68641610 -0.81762609 1.18817124
0.21611881 -0.14120573 0.12450673
0.76919341 1.22245249 0.51393968
1.14696413 1.32734585 0.69656507
0.65811040 0.77819298 1.11522722
0.04903142 0.62925399 0.32627031
0.01260756 0.05983530 0.64228866
0.74653920 0.39814097 0.82582336
0.26593357 0.76215637 0.50729285
0.25423481 0.71079817 -0.23075499
1.04656732 0.05170956 0.30685598
-0.27090311 1.50034802 1.11590884
0.55144479 -0.10997314 0.82138721
0.36595179 0.97842307 0.90355956
-0.04879022 -0.22282940 0.18797022
0.02303649 0.60374665 -0.00064438
0.36248716 1.18806896 0.40233898
0.50553342 0.72818132 -0.38174573
0.23339102 0.17685431 0.91622715
0.69519318 1.05764833 0.86986144
0.66244443 0.93542605 0.32313623
0.29157406 -0.03443908 -0.32197353
0.43576289 0.39304384 0.41288487
0.93290635 0.26807660 0.90192508
0.46947458 -0.04604768 0.53317357
1.23797107 0.38686102 0.19701795
1.24279488 0.62426866 1.06753929
1.39453671 0.36177382 0.00797544
0.49872289 1.04632858 0.09816681
0.86030136 0.31356352 0.11502915
0.87609952 0.92053833 1.35250286
0.23398309 0.92340184 1.33460122
0.50301930 0.49047944 1.17320678
1.13069333 0.39166539 -0.03166013
1.52690177 0.40275423 0.64871882
0.59258213 0.16054156 0.38717393
1.22868038 0.27296875 0.05742047
128H2O_slab POSCARSYSTEM
1
12.50000000 0.00000000 0.00000000
0.00000000 12.50000000 0.00000000
0.00000000 0.00000000 50.00000000
H O
256 128
Direct
-0.15047607 0.45334683 0.32730556
-0.07219808 -0.49010458 0.34403411
0.63805046 0.03123465 0.46999929
0.50838374 0.00754431 0.46372876
0.20742016 -0.23715390 0.31145651
0.21957350 0.63504600 0.31129793
0.49252565 0.97213243 0.52739381
0.46254946 0.86699495 0.51338367
0.46833659 0.30083696 0.47570094
0.56435815 0.28642228 0.46051829
0.73586863 -0.12693724 0.63650708
0.75181963 -0.25406949 0.63203814
0.41854353 0.84406884 0.44927074
0.33515626 0.90054023 0.46728072
0.34479509 0.57962028 0.37911763
0.29762780 -0.47903310 0.40660055
0.15115248 0.54108257 0.49957979
0.08260965 0.53074503 0.52635427
0.89266849 0.40696421 0.52478091
-0.06057907 0.40486920 0.55352216
0.55977900 -0.37296647 0.61748251
0.53858714 -0.26767121 0.59987163
0.71275400 0.42250550 0.56832405
0.78839559 0.34546846 0.58417890
0.67385329 -0.19610180 0.44987464
0.59318198 -0.16624091 0.42828513
0.12312508 0.37123899 0.28937208
0.05023666 0.27675971 0.29997236
-0.16681739 1.58406768 0.63195176
-0.21800579 1.57002107 0.66191007
0.20675683 -0.06108281 0.29221359
0.10312049 -0.09294129 0.30396903
0.20277637 0.06067826 0.60416144
0.19887396 -0.00744650 0.62890026
0.42062864 -0.24439336 0.35497596
0.36814211 -0.33879224 0.34193308
-0.46114333 0.32802380 0.39548517
0.45713828 0.41873416 0.39179412
1.05751346 0.29067408 0.55923161
1.04348507 0.18703047 0.57744764
0.21179010 0.87249263 0.56793233
0.09036024 0.85931851 0.57432053
0.60751605 1.01609789 0.65259722
0.72696147 1.05338974 0.65871807
0.44683747 0.21956247 0.29940199
0.48216169 0.19981749 0.26927194
0.10930269 0.40445023 0.47082959
0.17010928 0.50009382 0.45569496
0.78757796 -0.20083679 0.40459572
0.81784835 -0.20993279 0.37400609
0.63044955 -0.50216422 0.32507910
0.61823261 -0.56783464 0.29754461
0.38298254 1.64224442 0.61713447
0.27391580 1.65127025 0.62769264
-0.18349257 0.40823838 0.42743175
-0.11707568 0.32822140 0.44206697
0.37713689 0.15324147 0.36153587
0.47188832 0.15561964 0.38076476
0.84313290 0.66869553 0.54540293
0.78036268 0.55967659 0.53781156
0.62834565 0.07729786 0.39976222
0.58336683 0.13133194 0.42359675
1.57461032 1.43827952 0.71246905
1.47093630 1.44260924 0.69550961
0.56330564 1.09120276 0.50193580
0.61593811 1.12895503 0.52786251
0.73348421 0.31660428 0.46194097
0.75096480 0.20702765 0.47568711
0.18544389 -0.23514793 0.40166768
0.22931162 -0.14674533 0.42153910
0.36292308 0.50876490 0.64987458
0.33531338 0.38470088 0.66057777
1.49747974 -0.54677440 0.44932443
0.51766749 -0.42535318 0.46152212
1.85759374 0.75185320 0.76879203
0.88557936 0.66337125 0.74776712
0.66151301 0.68965700 0.41313588
0.60698800 0.57649179 0.41787791
-0.21783861 0.90704975 0.72268493
-0.18062377 1.02010056 0.73108294
0.79398077 0.91221618 0.53177815
0.89172292 0.88245064 0.51170593
1.21360535 1.19956259 0.58314768
1.23188220 0.10388812 0.56520461
0.69217913 -0.02288592 0.35644459
0.65013288 -0.02349422 0.32542268
0.49314736 0.09990072 0.55428120
0.40698133 0.13735440 0.57630192
0.06940342 0.10352406 0.53021711
0.12918295 0.01423295 0.54673459
1.23761207 0.03882752 0.37085803
0.23384130 0.05388881 0.33858930
-0.50295222 0.92300366 0.74813821
-0.38930037 0.97841032 0.74266531
0.13655853 0.16157403 0.39040653
0.15373516 0.09867462 0.41870070
0.35793276 0.15462364 0.64561652
0.44313351 0.08542197 0.66008140
0.12490452 1.60323574 0.67914603
0.10103912 0.67758518 0.66052594
-0.02910081 -0.04303719 0.33290797
-0.08397074 -0.06715582 0.30625602
0.47100963 -0.31135459 0.42347049
0.44678381 -0.21727665 0.40309666
0.17380547 1.23522872 0.64351497
0.28087835 1.29207879 0.63186950
0.72243965 1.04679669 0.60136565
0.77633776 1.15885707 0.60968516
0.20332595 1.15182338 0.29172154
0.31769260 1.09822536 0.28860721
0.90406410 0.53849761 0.41088426
0.78463589 0.58505950 0.41470974
1.12942702 1.53845314 0.71988868
1.20054880 1.43235266 0.71382259
-0.17158886 0.30160650 0.40269399
-0.07101085 0.26515881 0.38366272
0.74322462 1.32613449 0.64589263
0.77475704 1.41411198 0.62227898
0.14620565 -1.10616729 0.48008239
0.18160223 -0.03968360 0.50606301
-0.11186987 0.94149530 0.65599853
-0.13718975 1.02669042 0.63199678
0.56159298 0.19900069 0.59311202
0.55920469 0.18285975 0.62176711
0.90336505 0.15667383 0.52548512
0.98450787 0.25110265 0.52511525
0.97847305 -0.42779836 0.72340892
1.02887897 0.67051183 0.71108441
0.93053153 -0.03352705 0.43016463
0.94358325 0.08994529 0.42307038
-0.12458051 0.56502080 0.45311411
-0.04730932 0.59270705 0.47590220
-0.26829199 0.80830572 0.49363371
-0.21717255 0.70457633 0.48040899
0.43110180 0.68638080 0.68890088
0.32510025 0.62119216 0.70042335
0.12431384 0.78282478 0.61843684
0.20700484 0.81000752 0.64341301
0.70384786 0.11901625 0.29636532
0.58157041 0.12693352 0.30130944
0.75363478 0.23168055 0.54459190
0.75644483 0.12259613 0.56105372
-0.03231861 0.12955620 0.32499376
-0.09853097 0.23584383 0.32218754
1.35833840 -0.44225252 0.44591484
1.25776038 -0.35606860 0.43991425
0.02974229 -0.01448169 0.38634402
-0.04925278 -0.12297578 0.38637941
0.07972722 -0.25141011 0.36219086
0.18306699 -0.31067445 0.35551374
0.92747522 0.76466556 0.60868816
0.95937680 0.87571382 0.62123825
0.52932163 0.57770897 0.50403614
0.58437494 0.68163282 0.49342216
0.32115740 0.82996586 0.67667456
0.25755504 0.94154338 0.67730506
-0.22810590 0.37614398 0.49430267
-0.18576922 0.49671288 0.49149878
0.65189321 0.70221781 0.55887514
0.58469375 0.80139057 0.54950481
0.45751382 1.14320451 0.73814919
0.45757048 1.25211787 0.71984711
-0.16073265 0.53318711 0.58413419
-0.04460020 0.52255466 0.59636621
1.23763588 0.27151415 0.53650362
0.26869350 1.37267158 0.55194387
1.56531541 1.75888578 0.65789015
1.64170785 1.76839833 0.68268336
1.17071819 0.30450968 0.36193986
1.07205789 0.24647217 0.34988931
0.66268682 0.39143410 0.35576888
0.77470013 0.33753052 0.36083320
0.48701966 -0.62651414 0.32289219
0.45172427 -0.71444999 0.34206563
0.89274414 0.87693241 0.57141470
0.77760242 0.86753703 0.58449204
1.22348599 -0.38621798 0.54275880
1.26314524 -0.31955173 0.56641379
0.93813763 1.18794820 0.71316474
0.91809214 1.10192472 0.69334364
0.61064405 0.92402610 0.60719628
0.55192305 1.01039312 0.59021354
0.96908959 0.73238970 0.67284455
0.86559314 0.75071650 0.65769890
1.05951362 -0.45354408 0.38093143
1.05009801 -0.58200279 0.37590291
0.76172957 0.49270651 0.70861525
0.72438777 0.60310359 0.69947487
0.43493202 1.01642204 0.62370834
0.41157215 0.90717107 0.63919892
1.28709531 1.22977646 0.71568664
1.22240102 1.24760104 0.69023856
-0.36929002 0.30112790 0.68799301
0.73835598 1.24904006 0.69307962
1.08438837 1.16887216 0.75281234
1.10337181 1.25880709 0.73309939
0.00881530 0.23511529 0.66153556
0.01992074 0.10863332 0.65331960
-0.18762204 1.76544824 0.69589571
-0.22099427 0.73159748 0.72364889
0.47402075 0.21823941 0.52156939
0.39449064 0.32549396 0.52603852
0.49229702 0.00642229 0.70437200
0.49041094 -0.09636789 0.68559144
0.31519106 1.45346432 0.61090090
0.38603816 1.37161975 0.59824648
0.15729732 1.50568246 0.63546369
0.21559092 1.47629782 0.66066682
-0.19454501 1.01393222 0.39591120
-0.22080313 1.12719611 0.38222917
1.06810038 0.81254123 0.53206673
1.06352248 0.70747723 0.51307936
-0.12638475 -0.55537021 0.26026243
-0.05760421 -0.65321822 0.26577609
-0.09042409 1.07196610 0.58294900
0.02325129 1.03828409 0.59636367
0.32063486 0.92608540 0.72659258
0.35574911 0.80830229 0.72123409
0.10412373 0.41841079 0.59896831
0.14274925 0.51651990 0.58178437
-0.19591148 0.07044928 0.45554844
-0.19021572 0.03340561 0.48590483
1.07785299 0.53236279 0.30851784
1.17527108 0.48273981 0.32369409
-0.05242302 0.21986278 0.47826685
0.04602452 0.20858933 0.45856538
0.40878055 0.29190606 0.42949757
0.35385287 0.26786429 0.40109729
0.91361281 1.37763527 0.70485166
0.92601382 1.37974445 0.73573816
0.49180218 0.49176486 0.55630311
0.38888954 0.54455977 0.56839724
0.74382564 0.28498135 0.31337726
0.81303180 0.29929615 0.28888582
0.23876821 1.20570242 0.44319221
0.19992227 1.11701411 0.46333591
0.59407806 1.36278641 0.60873199
0.54524237 1.46654437 0.59522322
2.02346307 1.41217476 0.66399254
1.91147497 1.37915850 0.65989115
0.09845777 0.03688460 0.69616599
0.09766268 -0.08531166 0.69167377
1.25808011 0.44420386 0.36149889
1.31081579 0.38358222 0.33934553
0.07353811 0.81613159 0.44176424
-0.02019300 0.78679404 0.46293839
0.38984424 0.83369934 0.56338610
0.37381688 0.87922811 0.59234427
0.51453372 -0.09541985 0.35009748
0.39484305 -0.06645979 0.35017125
0.55593924 0.38753163 0.51869390
0.66004756 0.46315941 0.51627573
0.64848801 0.61180544 0.37008072
0.57832658 0.64084106 0.34599612
0.75386845 -0.15146447 0.33086236
0.73564205 -0.27427126 0.33331691
-0.09648741 0.50938984 0.32488838
0.56504329 0.06286545 0.46968741
0.24293994 0.69761578 0.32091286
0.48108748 0.89535134 0.53166188
0.49757936 0.32553516 0.45789152
0.76744020 -0.18340073 0.62487691
0.41144876 0.90246316 0.46247378
0.31794376 -0.48573743 0.38681989
0.12877684 0.58271134 0.51624414
0.95851509 0.39985886 0.53493477
0.52243754 -0.30282985 0.61791897
0.76895759 0.37346632 0.56560940
0.66848522 -0.18560993 0.43043112
0.09074693 0.30162769 0.28441615
-0.20154125 1.61789646 0.64720226
0.17181260 -0.12468412 0.29662573
0.15700557 0.00871911 0.61363921
0.42233976 -0.32994901 0.35514866
0.53286785 0.40322511 0.39184579
1.07727341 0.25676911 0.57497686
0.13716955 0.87720865 0.55959520
0.68216863 0.99627546 0.65137040
0.45119708 0.16614064 0.28412456
0.10973328 0.48171438 0.46781222
0.84388934 -0.20664059 0.39174052
0.58303852 -0.54048463 0.31286474
0.32808472 1.59763404 0.62452336
-0.19165309 0.33704380 0.43457786
0.41823919 0.20183034 0.37245093
0.78587144 0.61673307 0.55124293
0.56011355 0.11309492 0.40567704
1.51701295 1.39737040 0.70673631
0.54695764 1.10711476 0.52102138
0.72131688 0.27947218 0.47879616
0.18444949 -0.21210987 0.42113103
0.36668171 0.45488107 0.66482426
0.49064798 -0.46503727 0.44561439
0.82820218 0.69414688 0.75657380
0.65847198 0.61537373 0.40712496
0.76748450 0.96128069 0.73583267
0.81730697 0.91059549 0.51275491
1.27220645 1.14795719 0.57873009
0.64741928 -0.05620926 0.34353694
0.48391157 0.12047094 0.57316210
0.14376608 0.06922992 0.53329165
1.27850839 0.03499489 0.35317314
-0.46354066 0.99485951 0.74685190
0.12508520 0.09293059 0.39933758
0.43296574 0.12732681 0.64290755
0.09700574 1.67696831 0.67957377
-0.02662689 -0.02348385 0.31412699
0.44363826 -0.24009345 0.42143376
0.25025628 1.24855748 0.64562073
0.79823150 1.08209822 0.60445310
0.24357641 1.08550799 0.29686686
0.84487510 0.54791453 0.42274978
1.20665739 1.51259035 0.71454551
-0.14852600 0.27439958 0.38483199
0.79875463 1.36570466 0.63635127
0.20013661 -0.05770220 0.48695782
-0.08803369 1.01243312 0.64786941
0.60681036 0.21343304 0.60836199
0.96760512 0.18267756 0.51744002
1.01869709 -0.36164031 0.72861865
0.89279549 0.03025280 0.42811891
-0.12190623 0.58173239 0.47257350
-0.28364610 0.74658147 0.48027041
0.35461305 0.69479199 0.69387913
0.17636099 0.75539076 0.63132326
0.64567772 0.08234767 0.30555919
0.74693252 0.15345949 0.54261621
-0.02750156 0.20761939 0.32607759
1.27987775 -0.43232854 0.43958099
0.00284833 -0.07336365 0.37560644
0.13403374 -0.30077764 0.37038742
0.98462893 0.81761037 0.60965656
0.51924082 0.63814697 0.49321682
0.28461449 0.88126714 0.66475622
-0.20914894 0.44302019 0.50652580
0.58914466 0.74769132 0.56398020
0.41471483 1.19061656 0.72530883
-0.12231266 0.52176874 0.60092233
0.26021422 1.34539425 0.53435665
1.56662855 1.77066279 0.67736079
1.10461724 0.26953014 0.36735832
0.72369042 0.35764108 0.34663600
0.43147580 -0.68083095 0.32528778
0.81926513 0.85574301 0.56746752
1.25134221 -0.39325035 0.56126973
0.87947711 1.14636757 0.70571444
0.62353030 0.97359658 0.59258366
0.91315731 0.79159814 0.67046472
1.00887481 -0.51613717 0.38007575
0.71990656 0.52980508 0.69520722
0.42715157 0.93815001 0.61949356
1.22065693 1.25957506 0.70894987
0.68302181 0.25679220 0.67873356
1.04556333 1.22974551 0.74538666
0.05950376 0.17484591 0.65818294
-0.25231321 1.76973735 0.70816158
0.45404841 0.29350534 0.51621152
0.47580393 -0.01885257 0.68583286
0.31607039 1.37827042 0.60641490
0.13921945 1.47529964 0.65395905
-0.24949740 1.04980313 0.38476573
1.02198254 0.77527198 0.51809412
-0.13269955 -0.63172943 0.26362895
-0.01665243 1.05122555 0.57819040
0.34830926 0.86183449 0.73481007
0.08547124 0.49199314 0.59517301
-0.22931968 0.07879046 0.47296684
1.15374394 0.51400513 0.30712860
-0.02575549 0.24426930 0.46122795
0.33910288 0.28875076 0.42031444
0.89222545 1.42242644 0.72114703
0.45112644 0.49752204 0.57217511
0.78732813 0.24777689 0.30076703
0.17546728 1.17137686 0.45167807
0.60114018 1.43939441 0.60809185
1.96388141 1.37112395 0.67251971
0.13553192 -0.02618932 0.70064801
1.23640886 0.39518318 0.34779401
0.01704024 0.84626979 0.45444055
0.34009588 0.83637329 0.57759905
0.44929940 -0.11284502 0.35947285
0.58008850 0.46021347 0.52387715
0.65101061 0.61092524 0.34954978
0.79285789 -0.22059881 0.33571374
Calculations procedure
The procedure is as follows:
Step 1: Perform an MD calculation (MLFF)
Perform a molecular dynamics (MD) simulation for each system using a Langevin thermostat. The following INCAR file can be used:
#Molecular dynamics IBRION = 0 ISYM = 0 NSW = 100000 POTIM = 1.0 TEBEG = 298 TEEND = 298 MDALGO = 3 ISIF = 2 LANGEVIN_GAMMA = 10.0 10.0 10.0 # one for each atomic species POMASS = 2.0 16.0 55.847 RANDOM_SEED = 248489752 0 0 #Machine learning #Must monitor/change ML_LMLFF = .TRUE. # switches on machine learning ML_MODE = run
alongside the following POTCARs: PAW_PBE H_GW 21Apr2008, PAW_PBE O_GW 28Sep2005, and PAW_PBE Fe_sv_GW 05Dec2013, and a KPOINTS file.
In this case, we have performed a 100000 fs MD simulation (100000 steps with a time step of 1 fs), using a Langevin thermostat.
Step 2: Randomly select structures
From each of the MD calculations in Step 1, select 100-200 random structures (for the slab, ~3000 should be used), i.e., POSCAR files, excluding the first 20000 steps to allow for time to equilibrate. Save these structures to four directories (one for each system), i.e., 64H2O_bulk, Fe3P_64H2O, Fe2P_64H2O, and 128H2O_slab.
Important: The 128H2O_slab calculations are more expensive, since so many structures (~3000) are required to achieve convergence. Not all H2O molecules' O 1s levels in the slab are used, only those in the center, shaded in grey in Fig. 1, representing the bulk. This only needs to be done once to determine the chemical potential relative to vacuum, and can then be used for any half-cell reaction within 64H2O_bulk and identical method. The M_64H2O ions in solution, on the other hand, need to be repeated for each reaction.
|
Tip: The 64H2O_bulk calculations can be omitted as they are not used. We include them here since they are cheaper than the other calculations and conceptually equivalent.
|
Using the following Python script, you can select 200 random structures from each directory, omitting the first 20000 MD steps to allow equilibriation:
from ase.io import read
from ase.io import write
import numpy as np
path1 = "$PATH_TO_MD_DIRECTORIES/"
path2 = "$PATH_TO_CORELEVEL_DIRECTORIES/"
systems = ["128H2O_slab", "64H2O_bulk", "Fe2P_64H2O", "Fe3P_64H2O"]
def random_md_structures(path1, path2, systems, n, cutoff):
# Read entire XDATCAR trajectory (all steps)
for system in systems:
atoms_list = read(path1 + system + "/XDATCAR", index=":")
n_struc = len(atoms_list)
n_random = np.random.randint(cutoff, n_struc, size=n)
# Write selected frames back to POSCAR format
for i, j in enumerate(n_random):
#print(i+1,j)
write(path2 + system + "/POSCAR." + str(i+1), atoms_list[j], format="vasp")
random_md_structures(path1, path2, systems, 200, 20000)
which generates 200 POSCAR.m files.
Step 3: Calculate the energy of the O 1s states and local potential (GGA)
For each of the structures that you have generated, perform a first-principles (FP) calculation with ICORELEVEL = 1, LVHAR = .TRUE., and WRT_POTENTIAL = hartree ionic. The energies of the O 1s levels, and the local potential will be printed, which can later be used to find the vacuum reference. An example INCAR for RPBE+D3 is provided below:
ENCUT = 520.0 EDIFF = 1E-5 GGA = RP IVDW = 11 ISMEAR = 0 SIGMA = 0.10 PREC = Normal LREAL = A NELMIN = 4 ALGO = All NELM = 1000 ISPIN = 1 LCHARG = .TRUE. LWAVE = .TRUE. LVHAR = .TRUE. WRT_POTENTIAL = hartree ionic ICORELEVEL = 1 IBRION = -1 ISYM = 0 NSW = 1
An example bash script is given below for executing the calculations. Make sure to use the supporting Python scripts.
Important: For the slab, only the central 10 Å is used for calculating the average local potential and the average O 1s levels. For the redox systems (Fe3P_64H2O and Fe2P_64H2O), only the O 1s levels outside of a radius of half the cell parameter are included.
|
O1s_level.py scriptimport numpy as np
import os
import sys
def pbc_distance(r1, r2, L):
"""Compute minimum-image distance between r1 and r2 in a periodic box of size L."""
delta = (r1 - r2) % L
delta = np.where(delta > L/2, delta - L, delta)
return delta
def o1s_av(path, outcar, element_of_interest, lower_limit=0.0, upper_limit=50.0, system="bulk"):
o1s, pos, n_species, species, cell = [], [], [], [], []
n_ions, count = 0, 0
with open(path + "/" + outcar, "r") as f:
for line in f:
# Total number of ions
if "NIONS =" in line:
n_ions = float(line.split()[-1])
# Number of ions of each species
elif "ions per type =" in line:
n_species = line.split()[4:]
# Name of each species
elif "POSCAR =" in line:
species = line.split()[2:]
# Positions of all ions
elif "position of ions in cartesian coordinates (Angst)" in line:
for ion in range(0, int(n_ions)):
a = [float(x) for x in f.readline().split()]
pos.append(a)
count += 1
elif "Primitive cell" in line:
#print(line)
f.readline()
f.readline()
f.readline()
f.readline()
cell.append(float(f.readline().split()[0]))
cell.append(float(f.readline().split()[1]))
cell.append(float(f.readline().split()[2]))
elif "1s" in line:
o1s.append(float(line.split()[-1]))
'''Filters through positions so that only the O ions which are between
the upper and lower limit along the z-axis are taken, i.e., in the "bulk" of the slab.
If it contains the redox species, all O ions within a sphere of half the cell size
are excluded. By default, all positions are taken.'''
elements_dict = dict(zip(species, n_species))
n_skip = 0
index_in_limits, core_in_limits = [], []
for key in elements_dict.keys():
n_count=int(elements_dict[key])
if system == "redox":
#print(key)
pass
if key == element_of_interest:
m = 0
for ion in pos[n_skip:n_skip+n_count]:
if system == "bulk":
core_in_limits.append(o1s[m])
elif system == "slab":
if lower_limit <= ion[2] < upper_limit:
index_in_limits.append(m)
core_in_limits.append(o1s[m])
elif system == "redox":
cell_av = np.average([cell[0],cell[1],cell[2]])
cell_cubic = [cell[0],cell[1],cell[2]]
x = pbc_distance(np.array(pos[-1]), np.array(ion), np.array(cell_cubic))
magnitude = np.sqrt(x.dot(x))
if magnitude >= cell_av/2:
#print(cell_av/2, magnitude, x, ion, pos[-1], o1s[m])
index_in_limits.append(m+n_skip)
core_in_limits.append(o1s[m])
m +=1
n_skip += int(elements_dict[key])
return(np.average(core_in_limits))
def o1s_avg_all(path, element_of_interest, lower_limit=0.0, upper_limit=50.0, system="bulk"):
o1s_all = []
for outcar in (x for x in os.listdir(path + "/") if "OUTCAR." in x):
o1s_all.append(o1s_av(path, outcar, element_of_interest, lower_limit, upper_limit, system))
return(np.average(o1s_all))
# Expecting: python3 vacuum_ref.py z_mid z_diff system
if len(sys.argv) != 5:
print("Usage: python3 vacuum_ref.py z_mid z_diff system element")
sys.exit(1)
# Read inputs
z_mid = float(sys.argv[1])
z_diff = float(sys.argv[2])
system = sys.argv[3]
element_of_interest = sys.argv[4]
# Validate system type
if system not in ("bulk", "slab", "redox"):
print('Error: system must be either "bulk" or "slab" or "redox"')
sys.exit(1)
lower_limit, upper_limit = (z_mid - z_diff), (z_mid + z_diff)
O1s_avg = o1s_avg_all(".", element_of_interest, lower_limit, upper_limit, system)
print(O1s_avg)
vacuum_ref.py scriptimport py4vasp
import numpy as np
import sys
def local_pot_avg(path, z_lower, z_upper, z_mid, system="bulk"):
# Load calculation
calc = py4vasp.Calculation.from_path(path)
pot_dict = calc.potential.to_dict()
# Local potential (ionic + hartree)
pot_local = pot_dict["ionic"] + pot_dict["hartree"]
# Plane-average over x,y
pot_avg = np.mean(pot_local, axis=(0, 1)) # shape: (NZ,)
# Lattice length along z
a_3 = pot_dict["structure"]["lattice_vectors"][2][2]
NZ = pot_avg.shape[0]
dz = a_3 / NZ
# Original z-grid
z = np.arange(NZ) * dz
# Step 1: Extend potential with periodic images (-1, 0, 1)
extended_pot = np.zeros(3*NZ)
extended_z = np.zeros(3*NZ)
for shift in (-1, 0, 1):
base = (shift + 1) * NZ
for k in range(NZ):
extended_z[base + k] = (k + shift*NZ) * dz - (z_mid - 0.5*a_3)
extended_pot[base + k] = pot_avg[k]
# Step 2: Interpolate back onto the original z-grid
pot_interp = np.zeros(NZ)
for j in range(NZ):
# Find bracketing points
K = int((z[j] + z_mid - 0.5*a_3) / dz) + NZ # shift to center of extended array
K = max(0, min(K, 3*NZ-2)) # avoid overflow
x0, x1 = extended_z[K], extended_z[K+1]
y0, y1 = extended_pot[K], extended_pot[K+1]
pot_interp[j] = y0 + (y1 - y0) * (z[j] - x0) / (x1 - x0)
# Step 3: Find the vacuum reference and apply the vacuum shift to the potential
vac_ref = pot_interp[0] # when the slab is in the middle of the cell
#pot_interp -= vac_ref
if system == "bulk":
# Step 4: Compute average over entire cell
pot_range_avg = pot_interp.mean()
#print(f"Average potential across bulk cell is {pot_range_avg:.10f}")
elif system == "slab":
# Step 4: Compute average over z_mid ± z_diff
mask = (z >= z_lower) & (z <= z_upper)
pot_range_avg = pot_interp[mask].mean()
#print(f"Average potential from z={z_lower:.3f} to {z_upper:.3f} is {pot_range_avg:.10f}")
return z, pot_interp, pot_range_avg
# Expecting: python3 vacuum_ref.py z_mid z_diff system
if len(sys.argv) != 4:
print("Usage: python3 vacuum_ref.py z_mid z_diff system")
sys.exit(1)
# Read inputs
z_mid = float(sys.argv[1])
z_diff = float(sys.argv[2])
system = sys.argv[3]
# Validate system type
if system not in ("bulk", "slab"):
print('Error: system must be either "bulk" or "slab"')
sys.exit(1)
# Example: average potential
z_lower, z_upper = (z_mid - z_diff), (z_mid + z_diff)
path = "."
calc_temp = py4vasp.Calculation.from_path(path)
grid = np.shape(calc_temp.potential.to_dict()["ionic"])[2]
tot_avg, z, pot_avg = np.zeros(int(grid)), np.zeros(int(grid)), np.zeros(int(grid))
pot_avg_range = 0.0
z, pot_interp, pot_range_avg = local_pot_avg(path, z_lower, z_upper, z_mid, system)
print(pot_range_avg)
#!/bin/bash
rm -rf vac_ref.dat
echo "N_struc O1s_level local_potential_avg" >> vac_ref.dat
for a in POSCAR.*; do
echo $a
cp $a POSCAR
vasp_std
suffix="${a#*.}"
echo $suffix `python3 O1s_level.py 25.0 5.0 slab O` `python3 vacuum_ref.py 25.0 5.0 slab` >> vac_ref.dat
done
An alternative script exists if you are taking the local potential from LOCPOT, rather than vaspout.h5, though it has not been as extensively tested:
read_locpot.py scriptimport numpy as np
def read_locpot_single(filename, ZMID, DIFF):
"""
Process a single LOCPOT file (equivalent to NCONF=1 case of the Fortran code).
All arrays should be NumPy arrays.
"""
IREFZ, LSHIFT, MITYP = 0, 1, 0
global LOCPOTZ, RHOZ, POSION
print("---------------LOCPOT--------------------")
print("Reading single LOCPOT:", filename)
NWRITE = 5
TOTAL, NCOL, NMOD = 0, 0, 0
ZMIN = ZMID - DIFF
ZMAX = ZMID + DIFF
A = np.zeros((3, 3))
NITYP = 0
with open(filename, "r") as f:
# VASP header (8 lines)
f.readline()
f.readline()
for i in range(3):
A[i] = np.fromstring(f.readline(), sep=' ')
f.readline()
NITYP = np.fromstring(f.readline(), sep=' ', dtype=int)
print(NITYP)
NTYP = len(NITYP)
f.readline()
#for i in range(NTYP):
# for j in range(int(NITYP[i])):
# f.readline()
#print("first", f.readline())
# Allocate POSION now that NTYP and NITYP are known
POSION = np.zeros((3, int(max(NITYP)), NTYP))
# Read atomic positions
for j in range(NTYP):
for k in range(NITYP[j]):
x, y, z = map(float, f.readline().split())
POSION[0, k, j] = x
POSION[1, k, j] = y
POSION[2, k, j] = z
f.readline()
NX, NY, NZ = np.fromstring(f.readline(), sep=' ', dtype=int)
LOCPOTZ = np.zeros(NZ)
RHOZ = np.zeros(NZ)
TOTAL = NX * NY * NZ
NCOL = TOTAL // NWRITE
NMOD = TOTAL % NWRITE
MITYP = NITYP.max()
DX = A[0,0] / NX
DY = A[1,1] / NY
DZ = A[2,2] / NZ
# RHOZ accumulation (only if j == 1 in Fortran, zero-based j == 1)
for k in range(NITYP[j]):
for L in (-1, 0, 1):
XYZ = np.zeros(3)
XYZ[0] = POSION[0, k, j] * A[0,0]
XYZ[1] = POSION[1, k, j] * A[1,1]
XYZ[2] = (POSION[2, k, j] + L) * A[2,2]
if j == 1: # Fortran J==2
iz = int(XYZ[2] * NZ / A[2,2]) + 1
if 1 <= iz <= NZ:
RHOZ[iz-1] += (18.0 / 6.022045e23 / (A[0,0]*A[1,1]*DZ*1e-24))
# Skip blank lines before potential data
#f.readline()
#f.readline()
# Read LOCPOT grid (flattened)
LOCPOT_HELP = np.zeros(TOTAL)
idx = 0
for _ in range(NCOL):
vals = list(map(float, f.readline().split()))
LOCPOT_HELP[idx:idx+NWRITE] = vals
idx += NWRITE
if NMOD > 0:
vals = list(map(float, f.readline().split()))
LOCPOT_HELP[idx:idx+NMOD] = vals
# Average LOCPOT over x,y for each z-plane
LOCPOTZ_HELP1 = np.zeros(NZ)
for j in range(NZ):
plane = LOCPOT_HELP[j*NX*NY:(j+1)*NX*NY]
LOCPOTZ_HELP1[j] = plane.mean()
# Build extended arrays for interpolation
LOCPOTZ_HELP2 = np.zeros(3*NZ)
Z_HELP2 = np.zeros(3*NZ)
for shift in (-1, 0, 1):
base = (shift + 1) * NZ
for k in range(NZ):
L = base + k
Z_HELP2[L] = (L * DZ) - A[2,2] - (ZMID - 0.5*A[2,2])
LOCPOTZ_HELP2[L] = LOCPOTZ_HELP1[k]
# Interpolate back to correct Z grid
LOCPOTZ_HELP3 = np.zeros(NZ)
Z_HELP3 = np.arange(NZ) * DZ
for j in range(NZ):
K = int((Z_HELP3[j] + A[2,2] + ZMID - 0.5*A[2,2]) * NZ / A[2,2])
K = max(0, min(K, 3*NZ-2))
x0, x1 = Z_HELP2[K], Z_HELP2[K+1]
y0, y1 = LOCPOTZ_HELP2[K], LOCPOTZ_HELP2[K+1]
LOCPOTZ_HELP3[j] = y0 + (y1 - y0)*(Z_HELP3[j] - x0)/(x1 - x0)
# Apply shift if required
if LSHIFT == 1:
LOCPOTZ_VAC = LOCPOTZ_HELP3[IREFZ-1]
SHIFTZ = -LOCPOTZ_VAC
else:
SHIFTZ = 0.0
LOCPOTZ_HELP3 += SHIFTZ
# Compute average potential over ZMIN–ZMAX
mask = (Z_HELP3 >= ZMIN) & (Z_HELP3 <= ZMAX)
LOCPOTZ_AV = LOCPOTZ_HELP3[mask].mean()
print("Potential =", LOCPOTZ_AV)
# This is the final averaged LOCPOT vs z
return LOCPOTZ_HELP3, RHOZ
read_locpot_single("LOCPOT", 18.175, 3.5)
Important: Make sure to first download and save the O1s_level.py and vacuum_ref.py scripts. Calculating these values while running the jobs will save a non-trivial amount of disk space. Alternatively, you can save all of the OUTCAR and vaspout.h5 files to process later.
|
These scripts will create a vac_ref.dat file containing the number, the average 1s energy levels for O in water molecules, and the average local potential for each structure:
N_struc O1s_level local_potential_avg 1 -509.526392 -1.6969455464219334 2 -509.4371388571428 -1.5132796708524134 3 -509.30019053061227 -1.0734347143520142 4 -509.4201625058023 -1.973256948325608 ...
These will be required in the next step.
Post-processing
Step 4: Calculate the average of the O 1s energy levels
Once the FP calculations have finished, extract the O 1s energy levels. You can find them listed in OUTCAR after the core state eigenenergies. For each structure, average these energy levels over all O, except for 128H2O_slab, where only O within the central 10 [math]\displaystyle{ \AA }[/math] of the cell should be used to mimic the bulk. With the average O 1s for each individual structure, average over all 200 structures in the ensemble, to get a single value for each system. Take these away from each other to calculate [math]\displaystyle{ e \Delta \bar{\phi} }[/math], i.e. integrating by means of the trapezoid rule:
[math]\displaystyle{ e\Delta \bar{\phi} = \int_0^1 \langle \epsilon_{1s,bulk} \rangle_{\lambda} d\lambda - \langle \epsilon_{1s,slab} \rangle = \frac{1}{2}[\langle \epsilon_{1s,Fe^{3+}} \rangle + \langle \epsilon_{1s,Fe^{2+}} \rangle] - \langle \epsilon_{1s,slab} \rangle }[/math]
If you used the run script structure that we suggested above, then you will have a vac_ref.dat file. In the first column, there is the structure number, followed by the average O 1s level for water molecules, then the average local potential.
You have now obtained the O 1s level. Our values for different numbers of structures compared to the literature values are compiled in the following table:
| System | GGA (RPBE+D3) | Lit. , a | |||
| No. of structures | 100 | 200 | 400 | Std POTCAR | GW POTCAR |
| 128H2O slab | -509.51 | -509.47 | -509.52 | -511.23 | -511.33 |
| 64H2O | -507.69 | -507.69 | - | -507.59 | -507.69 |
| Fe3+ + 64H2O (λ = 0) | -507.70 | -507.70 | - | -507.43 | -507.59 |
| Fe2+ + 64H2O (λ = 1) | -507.51 | -507.51 | - | -507.50 | -507.57 |
aThe number of structures used in Jinnouchi et al. varies from 200 for bulk water and redox systems, to 3000 for the water slab, cf. Supplementary Table 4 for the averaged 1s levels of O atoms in Jinnouchi et al. for reference .
There is a small difference between the literature for the bulk and redox systems using 100 structures, which is narrowed when using 200. The difference for the water slab is much larger, as only a small number of structures (200) were used instead of the literature 3000. More importantly, the reference with respect to the vacuum has not been given, hence the missing ~1.8 eV. The average O 1s level is converged for the water slab, which tells us that it is the local potential that requires many structures to converge.
Step 5: Calculate the O 1s level relative to the vacuum
The value of the local potential must be included to obtain an absolute redox potential; otherwise, comparing between different cells (as in this example) or between different systems cannot be done as no common reference exists. It is important to include this because the local potential means that the vacuum reference is not equal to 0 eV, it is more negative ~-1.8 eV:
128H2O_slab). Increasing from 100 to 400 structures partially smoothes out the potential, but much larger numbers of structures are required to smooth it out completely (cf. the right-hand side of Fig. 1b in ). You can see that the local potential is ~-1.8 eV. This is the missing part from the previous section.You can calculate the local potential using LVHAR = .TRUE.. This saves the potential to LOCPOT, from which you could perform all of the following steps to calculate the average. We instead used WRT_POTENTIAL = hartree ionic to save the local potential to vaspout.h5.
That gives
| System | GGA (RPBE+D3) | ||
| No. of structures | 100 | 200 | 400 |
| 128H2O slab | -1.76 | -1.73 | -1.72 |
| 64H2O | -0.099(5) | -0.255 | - |
| Fe3+ + 64H2O (λ = 0) | 0.183 | 0.209 | - |
| Fe2+ + 64H2O (λ = 1) | -0.920 | -1.143 | - |
The average local potential only needs to be considered relative to the vacuum, i.e., for the centre of the water slab. The bulk and redox systems do not need to be corrected (cf. Fig. 3 below, and Fig. 1c and Eq. 7 of ).
The updated O 1s energy for the water slab is then much closer to the literature:
| System | GGA (RPBE+D3) | Lit. , a | |||
| No. of structures | 100 | 200 | 400 | Std POTCAR | GW POTCAR |
| 128H2O slab | -511.27 | -511.20 | -511.24 | -511.23 | -511.33 |
aThe number of structures used in Jinnouchi et al. varies from 200 for bulk water and redox systems, to 3000 for the water slab, cf. Supplementary Table 4 for the averaged 1s levels of O atoms in Jinnouchi et al. for reference .
Step 6: Calculate the difference between the local potential in the slab and the bulk
The redox level [math]\displaystyle{ e \Delta \bar{\phi} }[/math] (in V) can now be obtained (note that e=1 for this half-cell reaction):
[math]\displaystyle{ e \Delta \bar{\phi} = \frac{[\langle \epsilon_{1s,Fe^{3+}} \rangle + \langle \epsilon_{1s,Fe^{2+}} \rangle]}{2} - \langle \epsilon_{1s,slab} \rangle }[/math]
[math]\displaystyle{ = \frac{[(-507.70) + (-507.51)]}{2} - (-509.52 + -1.73) = 3.65 }[/math] (this example)
[math]\displaystyle{ e \Delta \bar{\phi}_{Lit.} = \frac{[(-507.43) + (-507.50)]}{2} - (-511.23) = 3.77 }[/math] (lit. )
The difference of ~0.1 eV is due to only 400 structures being used for the slab calculation, rather than the 3000 in the paper. Having obtained [math]\displaystyle{ e \Delta \bar{\phi} }[/math], you now have the reference to the vacuum, necessary for calculating the absolute redox potentials. In the next stage, you will perform TI from Fe3+ to Fe2+ using MLFFs.
| Tip: You can find a more detailed explanation of calculating the core levels in this paper: |