Charge corrections#
When simulating a charged defect in a periodic system, we introduce unphysical long-range Coulomb interactions between the images. A correction method aims at obtaining the correct energies with already small supercell sizes in order to reduce the computational cost.
defermi currently supports two corrections methods:
Freysoldt#
DOI: https://doi.org/10.1002/pssb.201046289
The Freysoldt (FNV) approach expresses electrostatic interactions in terms of the unscreened charge density and the electrostatic potential. The defect potential is expressed as a sum of a long-range and a short-range part. The long-range contribution is associated to macroscopic screening, which is set to decay as 1/εr. The long-range electrostatic energy correction is thus determined by the summation of the Fourier transform of the long-range potential in real space over the reciprocal lattice vectors. Quantum effects are accounted for in the short-range part associated to microscopic screening. This is obtained by subtracting the long-range part to the electrostatic potential difference between defect and pure structures, obtained from the DFT calculations.
Currently only VASP output files are supported. Use the get_freysoldt_correction_from_locpot function to compute the correction and generate the plots. This function is a wrapper for the get_freysoldt_correction function in the pymatgen-analysis-defects library.
[2]:
from defermi.corrections.freysoldt import get_freysoldt_correction_from_locpot
defect_path_locpot = '../defermi/tests/test_files/SiO2-defects/Defects/vacancies/Vac_O/q2/1-PBE-SCF/LOCPOT'
bulk_path_locpot = '../defermi/tests/test_files/SiO2-defects/Bulk-2x2x2-supercell/LOCPOT'
corr, ax = get_freysoldt_correction_from_locpot(
charge=2,
dielectric_constant=3.9,
defect_path_locpot=defect_path_locpot,
bulk_path_locpot=bulk_path_locpot,
get_plot=True)
If get_correction_data=True, pymatgen’s CorrectionResult object is returned, which contains addition information regarding the potentials. Set get_correction_data=False to return only the final correction float.
[3]:
corr
[3]:
CorrectionResult(correction_energy=np.float64(1.7725067354055881), metadata={'plot_data': {0: {'pot_plot_data': {'Vr': [np.float64(-0.48678911089369287), np.float64(-0.4844166943764408), np.float64(-0.4774076358612981), np.float64(-0.4660735203843385), np.float64(-0.4508929267087604), np.float64(-0.43245860748372617), np.float64(-0.4114178154382888), np.float64(-0.38841552683784814), np.float64(-0.3640483340118092), np.float64(-0.3388334533176788), np.float64(-0.31319368944445025), np.float64(-0.28745624542078235), np.float64(-0.2618615124300531), np.float64(-0.2365774965479303), np.float64(-0.21171606352061592), np.float64(-0.18734825982317685), np.float64(-0.1635171638718689), np.float64(-0.14024773122376746), np.float64(-0.117553782380266), np.float64(-0.09544263786510716), np.float64(-0.07391800789731513), np.float64(-0.052981692363234766), np.float64(-0.03263452726110928), np.float64(-0.012876884458928891), np.float64(0.006291077594532344), np.float64(0.024869294216772142), np.float64(0.04285774010586744), np.float64(0.06025640577651251), np.float64(0.0770652878204272), np.float64(0.09328438506364947), np.float64(0.10891369711851909), np.float64(0.1239532238623018), np.float64(0.1384029652577383), np.float64(0.15226292129398245), np.float64(0.16553309196800628), np.float64(0.1782134772789991), np.float64(0.19030407722675274), np.float64(0.20180489181121594), np.float64(0.21271592103237663), np.float64(0.22303716489023212), np.float64(0.2327686233847816), np.float64(0.24191029651602516), np.float64(0.25046218428396266), np.float64(0.2584242866885942), np.float64(0.2657966037299195), np.float64(0.2725791354079389), np.float64(0.27877188172265227), np.float64(0.2843748426740597), np.float64(0.28938801826216093), np.float64(0.29381140848695625), np.float64(0.29764501334844545), np.float64(0.30088883284662865), np.float64(0.30354286698150573), np.float64(0.3056071157530769), np.float64(0.3070815791613421), np.float64(0.3079662572063011), np.float64(0.30826114988795406), np.float64(0.30796625720630105), np.float64(0.30708157916134193), np.float64(0.3056071157530769), np.float64(0.3035428669815058), np.float64(0.30088883284662854), np.float64(0.29764501334844545), np.float64(0.29381140848695625), np.float64(0.28938801826216093), np.float64(0.28437484267405966), np.float64(0.2787718817226523), np.float64(0.272579135407939), np.float64(0.2657966037299195), np.float64(0.25842428668859413), np.float64(0.2504621842839628), np.float64(0.24191029651602522), np.float64(0.2327686233847816), np.float64(0.22303716489023206), np.float64(0.21271592103237663), np.float64(0.20180489181121597), np.float64(0.1903040772267528), np.float64(0.17821347727899906), np.float64(0.16553309196800628), np.float64(0.15226292129398247), np.float64(0.1384029652577383), np.float64(0.12395322386230177), np.float64(0.10891369711851911), np.float64(0.09328438506364953), np.float64(0.07706528782042721), np.float64(0.06025640577651248), np.float64(0.04285774010586747), np.float64(0.024869294216772097), np.float64(0.006291077594532329), np.float64(-0.012876884458928971), np.float64(-0.03263452726110923), np.float64(-0.05298169236323484), np.float64(-0.0739180078973151), np.float64(-0.09544263786510715), np.float64(-0.117553782380266), np.float64(-0.14024773122376755), np.float64(-0.1635171638718689), np.float64(-0.18734825982317677), np.float64(-0.21171606352061592), np.float64(-0.2365774965479303), np.float64(-0.26186151243005307), np.float64(-0.28745624542078224), np.float64(-0.3131936894444503), np.float64(-0.3388334533176788), np.float64(-0.3640483340118092), np.float64(-0.38841552683784814), np.float64(-0.4114178154382887), np.float64(-0.4324586074837263), np.float64(-0.4508929267087604), np.float64(-0.4660735203843385), np.float64(-0.4774076358612981), np.float64(-0.4844166943764409)], 'x': [0.0, 0.08776725131857337, 0.17553450263714673, 0.2633017539557201, 0.35106900527429347, 0.43883625659286685, 0.5266035079114402, 0.6143707592300136, 0.7021380105485869, 0.7899052618671604, 0.8776725131857337, 0.9654397645043071, 1.0532070158228803, 1.1409742671414538, 1.2287415184600272, 1.3165087697786007, 1.4042760210971739, 1.4920432724157473, 1.5798105237343207, 1.6675777750528942, 1.7553450263714674, 1.8431122776900408, 1.9308795290086143, 2.0186467803271877, 2.1064140316457607, 2.1941812829643346, 2.2819485342829076, 2.369715785601481, 2.4574830369200544, 2.545250288238628, 2.6330175395572013, 2.7207847908757747, 2.8085520421943477, 2.896319293512921, 2.9840865448314946, 3.071853796150068, 3.1596210474686415, 3.247388298787215, 3.3351555501057883, 3.4229228014243613, 3.5106900527429348, 3.598457304061508, 3.6862245553800816, 3.773991806698655, 3.8617590580172285, 3.949526309335802, 4.037293560654375, 4.125060811972949, 4.212828063291521, 4.300595314610096, 4.388362565928669, 4.476129817247242, 4.563897068565815, 4.6516643198843886, 4.739431571202962, 4.827198822521535, 4.914966073840109, 5.002733325158682, 5.090500576477256, 5.178267827795829, 5.266035079114403, 5.353802330432975, 5.4415695817515495, 5.529336833070122, 5.6171040843886955, 5.70487133570727, 5.792638587025842, 5.880405838344416, 5.968173089662989, 6.055940340981563, 6.143707592300136, 6.2314748436187095, 6.319242094937283, 6.407009346255856, 6.49477659757443, 6.582543848893002, 6.670311100211577, 6.75807835153015, 6.845845602848723, 6.933612854167297, 7.0213801054858695, 7.109147356804443, 7.196914608123016, 7.28468185944159, 7.372449110760163, 7.460216362078737, 7.54798361339731, 7.635750864715884, 7.723518116034457, 7.81128536735303, 7.899052618671604, 7.9868198699901765, 8.07458712130875, 8.162354372627323, 8.250121623945898, 8.33788887526447, 8.425656126583043, 8.513423377901617, 8.601190629220191, 8.688957880538764, 8.776725131857338, 8.86449238317591, 8.952259634494483, 9.040026885813058, 9.12779413713163, 9.215561388450205, 9.303328639768777, 9.391095891087351, 9.478863142405924, 9.566630393724498, 9.65439764504307, 9.742164896361645], 'dft_diff': array([ 0.66633005, 0.62982531, 0.56778137, 0.47793488, 0.36571899,
0.2405427 , 0.12162904, 0.02579476, -0.03741304, -0.07520363,
-0.10301683, -0.12385146, -0.13648871, -0.14431868, -0.14722234,
-0.14683972, -0.14305424, -0.13689753, -0.12835232, -0.11806561,
-0.10594326, -0.09381932, -0.08143863, -0.0703649 , -0.05937628,
-0.04905958, -0.03793027, -0.02731429, -0.01723666, -0.00782846,
0.00258692, 0.01284771, 0.02242221, 0.03076846, 0.04022345,
0.04862543, 0.05570803, 0.06403238, 0.07526112, 0.08126615,
0.09203293, 0.09975471, 0.09607931, 0.10213754, 0.10894576,
0.11313803, 0.11732094, 0.12119099, 0.12399686, 0.12664351,
0.12827891, 0.12919002, 0.12927592, 0.12966046, 0.12970443,
0.12927353, 0.12814053, 0.12733833, 0.12652905, 0.12592241,
0.12473051, 0.12366473, 0.12201654, 0.12020785, 0.11760552,
0.11514432, 0.11210087, 0.10900949, 0.1051188 , 0.10103996,
0.09632989, 0.09193829, 0.08716598, 0.08254777, 0.07743229,
0.07285787, 0.06799305, 0.06245872, 0.05690963, 0.05086577,
0.04461923, 0.03819407, 0.03188796, 0.02541822, 0.01778836,
0.00990201, 0.00165236, -0.006156 , -0.01591137, -0.02551323,
-0.03526733, -0.04436763, -0.0563042 , -0.06510262, -0.07068726,
-0.06983489, -0.07491237, -0.07717355, -0.06983063, -0.06193399,
-0.04712036, -0.02608055, 0.00580229, 0.06005829, 0.14670306,
0.25740299, 0.37666611, 0.48525685, 0.57306383, 0.63381916,
0.66857159, 0.67865586]), 'short_range': array([ 1.15311916, 1.11424201, 1.045189 , 0.9440084 , 0.81661191,
0.67300131, 0.53304685, 0.41421028, 0.3266353 , 0.26362983,
0.21017686, 0.16360479, 0.1253728 , 0.09225881, 0.06449372,
0.04050854, 0.02046292, 0.0033502 , -0.01079854, -0.02262298,
-0.03202525, -0.04083763, -0.0488041 , -0.05748802, -0.06566735,
-0.07392888, -0.08078801, -0.0875707 , -0.09430195, -0.10111284,
-0.10632678, -0.11110552, -0.11598076, -0.12149446, -0.12530964,
-0.12958805, -0.13459605, -0.13777251, -0.1374548 , -0.14177102,
-0.14073569, -0.14215559, -0.15438287, -0.15628675, -0.15685085,
-0.1594411 , -0.16145094, -0.16318385, -0.16539116, -0.1671679 ,
-0.16936611, -0.17169882, -0.17426695, -0.17594666, -0.17737715,
-0.17869273, -0.18012062, -0.18062793, -0.18055252, -0.1796847 ,
-0.17881235, -0.1772241 , -0.17562847, -0.17360356, -0.17178249,
-0.16923052, -0.16667101, -0.16356964, -0.1606778 , -0.15738433,
-0.15413229, -0.149972 , -0.14560264, -0.1404894 , -0.13528363,
-0.12894702, -0.12231103, -0.11575475, -0.10862346, -0.10139715,
-0.09378373, -0.08575915, -0.07702574, -0.06786617, -0.05927693,
-0.05035439, -0.04120538, -0.03102529, -0.02220245, -0.01263634,
-0.0026328 , 0.00861406, 0.01761381, 0.03034002, 0.04686652,
0.07041285, 0.0886048 , 0.11017471, 0.14188543, 0.17464351,
0.21474115, 0.2613757 , 0.31899598, 0.39889174, 0.51075139,
0.64581852, 0.78808392, 0.91771546, 1.02395676, 1.09989268,
1.14597923, 1.16307256]), 'shift': np.float64(-0.17772768440875789), 'check': [51, 62]}, 'pot_corr_uncertainty_md': {'stats': {'nobs': 11, 'minmax': (np.float64(-0.1806279282287892), np.float64(-0.17169881541916793)), 'mean': np.float64(-0.17772768440875789), 'variance': np.float64(7.992747159947843e-06), 'skewness': np.float64(0.9101502792448121), 'kurtosis': np.float64(-0.14368859021036062)}, 'potcorr': np.float64(-0.17772768440875789)}}, 1: {'pot_plot_data': {'Vr': [np.float64(-0.48678911089369303), np.float64(-0.484416694376441), np.float64(-0.47740763586129825), np.float64(-0.4660735203843387), np.float64(-0.45089292670876074), np.float64(-0.4324586074837264), np.float64(-0.41141781543828887), np.float64(-0.38841552683784836), np.float64(-0.3640483340118093), np.float64(-0.33883345331767883), np.float64(-0.3131936894444504), np.float64(-0.2874562454207824), np.float64(-0.26186151243005323), np.float64(-0.2365774965479304), np.float64(-0.211716063520616), np.float64(-0.18734825982317693), np.float64(-0.16351716387186893), np.float64(-0.14024773122376752), np.float64(-0.11755378238026601), np.float64(-0.09544263786510718), np.float64(-0.07391800789731512), np.float64(-0.0529816923632348), np.float64(-0.03263452726110925), np.float64(-0.012876884458928956), np.float64(0.006291077594532344), np.float64(0.024869294216772142), np.float64(0.0428577401058674), np.float64(0.06025640577651245), np.float64(0.07706528782042726), np.float64(0.09328438506364956), np.float64(0.10891369711851921), np.float64(0.1239532238623019), np.float64(0.13840296525773835), np.float64(0.15226292129398253), np.float64(0.1655330919680063), np.float64(0.17821347727899917), np.float64(0.1903040772267528), np.float64(0.20180489181121597), np.float64(0.21271592103237674), np.float64(0.22303716489023226), np.float64(0.23276862338478171), np.float64(0.24191029651602522), np.float64(0.2504621842839627), np.float64(0.25842428668859424), np.float64(0.26579660372991964), np.float64(0.272579135407939), np.float64(0.27877188172265244), np.float64(0.2843748426740598), np.float64(0.28938801826216104), np.float64(0.29381140848695636), np.float64(0.2976450133484455), np.float64(0.30088883284662865), np.float64(0.3035428669815058), np.float64(0.30560711575307703), np.float64(0.3070815791613421), np.float64(0.3079662572063013), np.float64(0.30826114988795417), np.float64(0.30796625720630105), np.float64(0.307081579161342), np.float64(0.30560711575307703), np.float64(0.3035428669815058), np.float64(0.30088883284662865), np.float64(0.29764501334844556), np.float64(0.29381140848695636), np.float64(0.28938801826216104), np.float64(0.28437484267405977), np.float64(0.2787718817226524), np.float64(0.272579135407939), np.float64(0.2657966037299196), np.float64(0.25842428668859424), np.float64(0.25046218428396283), np.float64(0.24191029651602525), np.float64(0.23276862338478177), np.float64(0.22303716489023212), np.float64(0.21271592103237674), np.float64(0.20180489181121608), np.float64(0.1903040772267528), np.float64(0.1782134772789991), np.float64(0.16553309196800636), np.float64(0.1522629212939826), np.float64(0.13840296525773835), np.float64(0.12395322386230184), np.float64(0.10891369711851916), np.float64(0.09328438506364957), np.float64(0.07706528782042725), np.float64(0.060256405776512464), np.float64(0.04285774010586747), np.float64(0.024869294216772128), np.float64(0.006291077594532344), np.float64(-0.012876884458928971), np.float64(-0.0326345272611092), np.float64(-0.0529816923632348), np.float64(-0.07391800789731517), np.float64(-0.09544263786510718), np.float64(-0.11755378238026604), np.float64(-0.14024773122376757), np.float64(-0.16351716387186893), np.float64(-0.18734825982317688), np.float64(-0.21171606352061592), np.float64(-0.2365774965479304), np.float64(-0.2618615124300532), np.float64(-0.2874562454207824), np.float64(-0.3131936894444504), np.float64(-0.33883345331767895), np.float64(-0.3640483340118093), np.float64(-0.38841552683784825), np.float64(-0.41141781543828887), np.float64(-0.4324586074837264), np.float64(-0.45089292670876063), np.float64(-0.4660735203843387), np.float64(-0.47740763586129825), np.float64(-0.484416694376441)], 'x': [0.0, 0.08776725131857337, 0.17553450263714673, 0.2633017539557201, 0.35106900527429347, 0.43883625659286685, 0.5266035079114402, 0.6143707592300136, 0.7021380105485869, 0.7899052618671604, 0.8776725131857337, 0.9654397645043071, 1.0532070158228803, 1.1409742671414538, 1.2287415184600272, 1.3165087697786007, 1.4042760210971739, 1.4920432724157473, 1.5798105237343207, 1.6675777750528942, 1.7553450263714674, 1.8431122776900408, 1.9308795290086143, 2.0186467803271877, 2.1064140316457607, 2.1941812829643346, 2.2819485342829076, 2.369715785601481, 2.4574830369200544, 2.545250288238628, 2.6330175395572013, 2.7207847908757747, 2.8085520421943477, 2.896319293512921, 2.9840865448314946, 3.071853796150068, 3.1596210474686415, 3.247388298787215, 3.3351555501057883, 3.4229228014243613, 3.5106900527429348, 3.598457304061508, 3.6862245553800816, 3.773991806698655, 3.8617590580172285, 3.949526309335802, 4.037293560654375, 4.125060811972949, 4.212828063291521, 4.300595314610096, 4.388362565928669, 4.476129817247242, 4.563897068565815, 4.6516643198843886, 4.739431571202962, 4.827198822521535, 4.914966073840109, 5.002733325158682, 5.090500576477256, 5.178267827795829, 5.266035079114403, 5.353802330432975, 5.4415695817515495, 5.529336833070122, 5.6171040843886955, 5.70487133570727, 5.792638587025842, 5.880405838344416, 5.968173089662989, 6.055940340981563, 6.143707592300136, 6.2314748436187095, 6.319242094937283, 6.407009346255856, 6.49477659757443, 6.582543848893002, 6.670311100211577, 6.75807835153015, 6.845845602848723, 6.933612854167297, 7.0213801054858695, 7.109147356804443, 7.196914608123016, 7.28468185944159, 7.372449110760163, 7.460216362078737, 7.54798361339731, 7.635750864715884, 7.723518116034457, 7.81128536735303, 7.899052618671604, 7.9868198699901765, 8.07458712130875, 8.162354372627323, 8.250121623945898, 8.33788887526447, 8.425656126583043, 8.513423377901617, 8.601190629220191, 8.688957880538764, 8.776725131857338, 8.86449238317591, 8.952259634494483, 9.040026885813058, 9.12779413713163, 9.215561388450205, 9.303328639768777, 9.391095891087351, 9.478863142405924, 9.566630393724498, 9.65439764504307, 9.742164896361645], 'dft_diff': array([ 0.55767228, 0.51904251, 0.45701816, 0.3683968 , 0.25907366,
0.13794417, 0.02308784, -0.0698924 , -0.12974783, -0.1642518 ,
-0.18746476, -0.20436431, -0.21202061, -0.21527958, -0.21297863,
-0.20891676, -0.20031495, -0.19109378, -0.17729287, -0.16384569,
-0.1482868 , -0.13415543, -0.11709871, -0.10078308, -0.08276479,
-0.0672694 , -0.05033257, -0.03619202, -0.0206622 , -0.00596788,
0.01182454, 0.02165696, 0.03941996, 0.0538409 , 0.05168237,
0.0653252 , 0.07617954, 0.08606432, 0.09483215, 0.10421716,
0.11033342, 0.11768419, 0.12392546, 0.13044558, 0.13429607,
0.13846255, 0.14187318, 0.14646932, 0.14975001, 0.15331151,
0.15569569, 0.15927007, 0.1619051 , 0.16489226, 0.16637153,
0.16816285, 0.16917156, 0.17112391, 0.17201164, 0.17317273,
0.17331806, 0.17412222, 0.17371859, 0.17395099, 0.1731255 ,
0.17267231, 0.17112919, 0.170188 , 0.16791603, 0.16580894,
0.16307411, 0.16054192, 0.15700156, 0.15391115, 0.14994775,
0.14613249, 0.14029909, 0.13446163, 0.12660812, 0.11980247,
0.11058196, 0.1018356 , 0.09076764, 0.08021142, 0.06511213,
0.04866343, 0.02521234, 0.02056854, 0.02443354, 0.0006386 ,
-0.0285603 , -0.03425367, -0.03083956, -0.03913871, -0.04979773,
-0.06074079, -0.06785069, -0.07300791, -0.07213549, -0.06877408,
-0.05852647, -0.0432959 , -0.01990322, 0.02287805, 0.09795057,
0.19677701, 0.30649289, 0.40736385, 0.48822557, 0.54182699,
0.57018305, 0.57396246]), 'short_range': array([ 1.04446139, 1.00345921, 0.9344258 , 0.83447032, 0.70996659,
0.57040277, 0.43450565, 0.31852313, 0.23430051, 0.17458165,
0.12572893, 0.08309193, 0.04984091, 0.02129792, -0.00126257,
-0.0215685 , -0.03679779, -0.05084605, -0.05973909, -0.06840305,
-0.07436879, -0.08117374, -0.08446418, -0.0879062 , -0.08905586,
-0.0921387 , -0.09319031, -0.09644843, -0.09772749, -0.09925226,
-0.09708915, -0.10229626, -0.09898301, -0.09842202, -0.11385072,
-0.11288828, -0.11412454, -0.11574058, -0.11788377, -0.11882001,
-0.1224352 , -0.12422611, -0.12653672, -0.12797871, -0.13150054,
-0.13411658, -0.13689871, -0.13790553, -0.13963801, -0.1404999 ,
-0.14194933, -0.14161876, -0.14163777, -0.14071486, -0.14071005,
-0.1398034 , -0.13908959, -0.13684234, -0.13506994, -0.13243439,
-0.1302248 , -0.12676661, -0.12392642, -0.11986042, -0.11626252,
-0.11170253, -0.10764269, -0.10239114, -0.09788057, -0.09261535,
-0.08738808, -0.08136838, -0.07576706, -0.06912601, -0.06276817,
-0.0556724 , -0.05000499, -0.04375184, -0.03892497, -0.03246045,
-0.02782101, -0.02211763, -0.01814606, -0.01307296, -0.01195316,
-0.01159298, -0.0176454 , -0.00430075, 0.01814246, 0.01351549,
0.00407423, 0.01872802, 0.04307845, 0.05630393, 0.06775606,
0.07950694, 0.09566647, 0.11434035, 0.13958057, 0.16780342,
0.20333504, 0.24416035, 0.29329047, 0.3617115 , 0.46199891,
0.58519254, 0.7179107 , 0.83982246, 0.9391185 , 1.00790051,
1.04759069, 1.05837915]), 'shift': np.float64(-0.13681022870604725), 'check': [51, 62]}, 'pot_corr_uncertainty_md': {'stats': {'nobs': 11, 'minmax': (np.float64(-0.1416377711175446), np.float64(-0.1267666101481178)), 'mean': np.float64(-0.13681022870604725), 'variance': np.float64(2.574561919584985e-05), 'skewness': np.float64(0.8081682819224428), 'kurtosis': np.float64(-0.663216779945198)}, 'potcorr': np.float64(-0.13681022870604725)}}, 2: {'pot_plot_data': {'Vr': [np.float64(-0.8382759399139681), np.float64(-0.8344043729641683), np.float64(-0.8230031255572401), np.float64(-0.8046808524393726), np.float64(-0.7803540122696649), np.float64(-0.7511243483170991), np.float64(-0.7181480008330221), np.float64(-0.6825211758954137), np.float64(-0.645199129733392), np.float64(-0.6069543469827123), np.float64(-0.5683700230957367), np.float64(-0.5298588532514938), np.float64(-0.49169534165257706), np.float64(-0.4540514588366575), np.float64(-0.4170288307366399), np.float64(-0.380684173612198), np.float64(-0.34504740743188667), np.float64(-0.31013346299965067), np.float64(-0.2759493926320397), np.float64(-0.24249835074631376), np.float64(-0.20978167400495862), np.float64(-0.1777998991777395), np.float64(-0.146553230600174), np.float64(-0.1160417420281747), np.float64(-0.08626545871047961), np.float64(-0.057224388845934684), np.float64(-0.02891853496038114), np.float64(-0.0013478977921671965), np.float64(0.02548752245388729), np.float64(0.05158772572385799), np.float64(0.07695271200426906), np.float64(0.10158248129192413), np.float64(0.1254770335861031), np.float64(0.14863636888665213), np.float64(0.1710604871935401), np.float64(0.19274938850676085), np.float64(0.21370307282631323), np.float64(0.23392154015219727), np.float64(0.25340479048441283), np.float64(0.2721528238229597), np.float64(0.29016564016783825), np.float64(0.3074432395190483), np.float64(0.32398562187658964), np.float64(0.3397927872404627), np.float64(0.354864735610667), np.float64(0.3692014669872029), np.float64(0.3828029813700704), np.float64(0.3956692787592693), np.float64(0.4078003591547997), np.float64(0.4191962225566618), np.float64(0.42985686896485503), np.float64(0.43978229837938), np.float64(0.4489725108002362), np.float64(0.4574275062274242), np.float64(0.46514728466094346), np.float64(0.4721318461007943), np.float64(0.4783811905469765), np.float64(0.4838953179994905), np.float64(0.48867422845833575), np.float64(0.4927179219235126), np.float64(0.49602639839502094), np.float64(0.4985996578728607), np.float64(0.5004377003570318), np.float64(0.5015405258475346), np.float64(0.5019081343443689), np.float64(0.5015405258475347), np.float64(0.5004377003570318), np.float64(0.4985996578728608), np.float64(0.4960263983950208), np.float64(0.4927179219235126), np.float64(0.48867422845833564), np.float64(0.48389531799949026), np.float64(0.4783811905469765), np.float64(0.4721318461007944), np.float64(0.4651472846609434), np.float64(0.45742750622742406), np.float64(0.4489725108002362), np.float64(0.4397822983793799), np.float64(0.4298568689648549), np.float64(0.4191962225566615), np.float64(0.4078003591547997), np.float64(0.3956692787592694), np.float64(0.38280298137007046), np.float64(0.369201466987203), np.float64(0.3548647356106671), np.float64(0.3397927872404627), np.float64(0.3239856218765897), np.float64(0.3074432395190483), np.float64(0.2901656401678383), np.float64(0.2721528238229598), np.float64(0.2534047904844128), np.float64(0.23392154015219735), np.float64(0.21370307282631335), np.float64(0.1927493885067608), np.float64(0.17106048719354017), np.float64(0.14863636888665221), np.float64(0.1254770335861031), np.float64(0.1015824812919241), np.float64(0.07695271200426908), np.float64(0.051587725723857995), np.float64(0.02548752245388737), np.float64(-0.001347897792167228), np.float64(-0.02891853496038117), np.float64(-0.05722438884593455), np.float64(-0.08626545871047958), np.float64(-0.1160417420281747), np.float64(-0.14655323060017397), np.float64(-0.17779989917773936), np.float64(-0.20978167400495862), np.float64(-0.2424983507463137), np.float64(-0.2759493926320397), np.float64(-0.3101334629996505), np.float64(-0.34504740743188667), np.float64(-0.38068417361219814), np.float64(-0.41702883073664), np.float64(-0.4540514588366576), np.float64(-0.49169534165257706), np.float64(-0.5298588532514938), np.float64(-0.5683700230957369), np.float64(-0.6069543469827122), np.float64(-0.645199129733392), np.float64(-0.682521175895414), np.float64(-0.7181480008330222), np.float64(-0.7511243483170991), np.float64(-0.780354012269665), np.float64(-0.8046808524393725), np.float64(-0.8230031255572401), np.float64(-0.8344043729641681)], 'x': [0.0, 0.084864078125, 0.16972815625, 0.254592234375, 0.3394563125, 0.42432039062500004, 0.50918446875, 0.5940485468750001, 0.678912625, 0.763776703125, 0.8486407812500001, 0.933504859375, 1.0183689375, 1.103233015625, 1.1880970937500002, 1.272961171875, 1.35782525, 1.4426893281250002, 1.52755340625, 1.612417484375, 1.6972815625000002, 1.782145640625, 1.86700971875, 1.9518737968750002, 2.036737875, 2.1216019531250003, 2.20646603125, 2.291330109375, 2.3761941875000003, 2.461058265625, 2.54592234375, 2.6307864218750003, 2.7156505, 2.800514578125, 2.8853786562500003, 2.970242734375, 3.0551068125, 3.1399708906250003, 3.22483496875, 3.309699046875, 3.3945631250000003, 3.479427203125, 3.56429128125, 3.6491553593750004, 3.7340194375, 3.818883515625, 3.9037475937500004, 3.988611671875, 4.07347575, 4.158339828125, 4.243203906250001, 4.328067984375, 4.4129320625, 4.497796140625001, 4.58266021875, 4.667524296875, 4.752388375000001, 4.837252453125, 4.92211653125, 5.006980609375001, 5.0918446875, 5.176708765625, 5.261572843750001, 5.346436921875, 5.431301, 5.516165078125001, 5.60102915625, 5.685893234375, 5.770757312500001, 5.855621390625, 5.94048546875, 6.025349546875001, 6.110213625, 6.195077703125, 6.279941781250001, 6.364805859375, 6.4496699375, 6.534534015625001, 6.61939809375, 6.704262171875, 6.789126250000001, 6.873990328125, 6.95885440625, 7.043718484375001, 7.1285825625, 7.213446640625, 7.298310718750001, 7.383174796875, 7.468038875, 7.552902953125001, 7.63776703125, 7.722631109375, 7.807495187500001, 7.892359265625, 7.97722334375, 8.062087421875, 8.1469515, 8.231815578125001, 8.31667965625, 8.401543734375, 8.486407812500001, 8.571271890625, 8.65613596875, 8.741000046875001, 8.825864125, 8.910728203125, 8.995592281250001, 9.080456359375, 9.1653204375, 9.250184515625001, 9.33504859375, 9.419912671875, 9.504776750000001, 9.589640828125, 9.67450490625, 9.759368984375001, 9.8442330625, 9.929097140625, 10.013961218750001, 10.098825296875, 10.183689375, 10.268553453125001, 10.35341753125, 10.438281609375, 10.523145687500001, 10.608009765625, 10.69287384375, 10.777737921875001], 'dft_diff': array([ 0.72939424, 0.67310138, 0.57533337, 0.43807158, 0.27052753,
0.09551881, -0.05584036, -0.15765689, -0.21329707, -0.24818511,
-0.27046155, -0.27920155, -0.28030455, -0.27452413, -0.26476114,
-0.25090374, -0.23566078, -0.21927531, -0.20308598, -0.18658868,
-0.17046205, -0.15380163, -0.1380438 , -0.12356968, -0.1114185 ,
-0.09799866, -0.08358376, -0.06906468, -0.05482421, -0.04017318,
-0.02576098, -0.01131246, 0.00275876, 0.01703011, 0.0309766 ,
0.04448993, 0.0571648 , 0.06956244, 0.08123724, 0.09204274,
0.10155703, 0.11082374, 0.12019046, 0.12917391, 0.13762446,
0.14410553, 0.15023946, 0.15661721, 0.16372356, 0.17085536,
0.17834881, 0.18560446, 0.19263787, 0.19916586, 0.20539878,
0.21097589, 0.21610983, 0.2204114 , 0.22429771, 0.22749926,
0.23033029, 0.23226623, 0.23381293, 0.23514185, 0.23687539,
0.23825344, 0.23909234, 0.23894755, 0.23793225, 0.2367082 ,
0.23603053, 0.23520907, 0.2344169 , 0.23301123, 0.23122901,
0.22833581, 0.22489221, 0.22055121, 0.2159104 , 0.2102221 ,
0.20386288, 0.19643599, 0.1890415 , 0.18116832, 0.17344787,
0.16539686, 0.15803658, 0.15093423, 0.14398414, 0.1352059 ,
0.12527812, 0.11438749, 0.10358998, 0.09189496, 0.08003302,
0.06685394, 0.05330238, 0.03814695, 0.02292914, 0.00641351,
-0.01023464, -0.02818467, -0.04574036, -0.06409426, -0.08250551,
-0.10231485, -0.12158156, -0.14074054, -0.15875272, -0.17328946,
-0.18222933, -0.18739561, -0.18962921, -0.19077296, -0.1893597 ,
-0.18251679, -0.17001688, -0.1486261 , -0.1176221 , -0.07557653,
-0.00324208, 0.11807924, 0.27369049, 0.43722437, 0.57717318,
0.67756291, 0.73263375, 0.74913555]), 'short_range': array([ 1.56767018, 1.50750575, 1.3983365 , 1.24275243, 1.05088154,
0.84664315, 0.66230764, 0.52486428, 0.43190206, 0.35876924,
0.29790848, 0.25065731, 0.21139079, 0.17952733, 0.1522677 ,
0.12978044, 0.10938663, 0.09085815, 0.07286341, 0.05590967,
0.03931962, 0.02399827, 0.00850943, -0.00752794, -0.02515305,
-0.04077427, -0.05466523, -0.06771678, -0.08031174, -0.0917609 ,
-0.10271369, -0.11289494, -0.12271827, -0.13160625, -0.14008388,
-0.14825945, -0.15653828, -0.1643591 , -0.17216755, -0.18011008,
-0.18860861, -0.19661949, -0.20379516, -0.21061887, -0.21724028,
-0.22509594, -0.23256352, -0.23905207, -0.2440768 , -0.24834087,
-0.25150806, -0.25417784, -0.25633465, -0.25826164, -0.25974851,
-0.26115596, -0.26227136, -0.26348392, -0.26437652, -0.26521866,
-0.26569611, -0.26633342, -0.26662477, -0.26639868, -0.26503274,
-0.26328709, -0.26134536, -0.25965211, -0.25809415, -0.25600972,
-0.2526437 , -0.24868625, -0.24396429, -0.23912061, -0.23391827,
-0.22909169, -0.2240803 , -0.21923109, -0.21394647, -0.20897412,
-0.20393748, -0.19923329, -0.19376148, -0.18803314, -0.18141686,
-0.17439593, -0.16594905, -0.15650901, -0.1461815 , -0.13694692,
-0.12812667, -0.11953405, -0.11011309, -0.10085443, -0.09102747,
-0.08178243, -0.07217466, -0.06343553, -0.05402357, -0.04517422,
-0.03572216, -0.02683677, -0.01682182, -0.00686987, 0.00375995,
0.0137269 , 0.02497167, 0.03705936, 0.05102895, 0.06920889,
0.09372007, 0.12273785, 0.1554182 , 0.18991121, 0.22766913,
0.27153466, 0.32167846, 0.38123275, 0.45074793, 0.53137781,
0.64195705, 0.80060042, 0.99183849, 1.18834872, 1.35752719,
1.48224376, 1.55563688, 1.58353992]), 'shift': np.float64(-0.26306298377681264), 'check': [59, 70]}, 'pot_corr_uncertainty_md': {'stats': {'nobs': 11, 'minmax': (np.float64(-0.2666247715572282), np.float64(-0.25600972156710367)), 'mean': np.float64(-0.26306298377681264), 'variance': np.float64(1.3904151463953328e-05), 'skewness': np.float64(0.7385828525109095), 'kurtosis': np.float64(-0.887685213920502)}, 'potcorr': np.float64(-0.26306298377681264)}}}, 'electrostatic': np.float64(2.157574), 'alignments': {0: np.float64(-0.17772768440875789), 1: np.float64(-0.13681022870604725), 2: np.float64(-0.26306298377681264)}, 'mean_alignments': np.float64(-0.1925336322972059), 'potential': np.float64(-0.3850672645944118)})
[ ]:
get_freysoldt_correction_from_locpot(
charge=2,
dielectric_constant=3.9,
defect_path_locpot=defect_path_locpot,
bulk_path_locpot=bulk_path_locpot,
get_plot=False,
get_correction_data=False)
np.float64(1.7725067354055881)
Kumagai#
DOI: https://doi.org/10.1103/PhysRevB.89.195205
Kumagai et al have extended the FNV approach (eFNV scheme), advantages are:
Corrections can be computed even when atomic positions are relaxed
Dielectric tensor is used instead of dielectric constant
This method employs the atomic site potential for determining the potential offset between the defect-induced potential and point charge potential, as opposed to the planar-averaged potential. It describes a point charge model with a dielectric tensor for evaluating long-range Coulomb interactions, which accounts for anisotropy.
defermi uses the pymatgen-analysis-defects library, which in turns uses the pydefect library, to compute the corrections. The workflow is easiest when importing data from a VASP calculation, but corrections can be computed also with DFT data from other codes, as long as the site potential data is available. To compute corrections directly from VASP directories, use the get_kumagai_correction function:
[9]:
from defermi.corrections.kumagai import get_kumagai_correction, get_kumagai_correction_from_structures
defect_path = '../defermi/tests/test_files/SiO2-defects/Defects/vacancies/Vac_O/q2/1-PBE-SCF'
bulk_path = '../defermi/tests/test_files/SiO2-defects/Bulk-2x2x2-supercell'
corr, ax = get_kumagai_correction(
defect_path=defect_path,
bulk_path=bulk_path,
charge=2,
dielectric_tensor=3.9, # we can also pass a constant or a 3x1 array - it is converted to a diagonal tensor
get_plot=True)
If you have simulation results from another DFT code, you can connect the site potentials to the Structure object by setting the the properties attribute for each Site object.
[14]:
from defermi.corrections.kumagai import _get_structure_with_pot_pmg
structure = _get_structure_with_pot_pmg(defect_path)
for site in structure:
print(site.properties) # set it manually for each site if you don't use VASP
{'potential': 86.386}
{'potential': 88.0658}
{'potential': 86.341}
{'potential': 86.3869}
{'potential': 86.3199}
{'potential': 86.7722}
{'potential': 86.3022}
{'potential': 86.3953}
{'potential': 88.0549}
{'potential': 86.3426}
{'potential': 86.3719}
{'potential': 86.2891}
{'potential': 86.7971}
{'potential': 86.3447}
{'potential': 86.434}
{'potential': 86.3876}
{'potential': 86.4281}
{'potential': 86.6581}
{'potential': 86.7154}
{'potential': 86.7306}
{'potential': 86.6499}
{'potential': 86.3644}
{'potential': 86.3323}
{'potential': 86.3659}
{'potential': 72.3537}
{'potential': 72.3643}
{'potential': 72.2952}
{'potential': 72.7778}
{'potential': 72.305}
{'potential': 72.4127}
{'potential': 72.3356}
{'potential': 72.4565}
{'potential': 73.6553}
{'potential': 72.3061}
{'potential': 72.4426}
{'potential': 72.2938}
{'potential': 72.5022}
{'potential': 72.3627}
{'potential': 72.4511}
{'potential': 73.6431}
{'potential': 72.5027}
{'potential': 72.4048}
{'potential': 72.3903}
{'potential': 72.4328}
{'potential': 72.3914}
{'potential': 72.4888}
{'potential': 72.3581}
{'potential': 72.539}
{'potential': 73.5017}
{'potential': 72.4747}
{'potential': 72.448}
{'potential': 72.4935}
{'potential': 72.4396}
{'potential': 72.3432}
{'potential': 72.379}
{'potential': 72.5514}
{'potential': 72.494}
{'potential': 72.5575}
{'potential': 72.6337}
{'potential': 73.3672}
{'potential': 72.3141}
{'potential': 72.3696}
{'potential': 72.2878}
{'potential': 73.6959}
{'potential': 72.3201}
{'potential': 72.3685}
{'potential': 72.4122}
{'potential': 73.5228}
{'potential': 72.3047}
{'potential': 72.4443}
{'potential': 72.3118}