mirror of https://github.com/phonopy/phono3py.git
144 lines
9.6 KiB
Python
144 lines
9.6 KiB
Python
import numpy as np
|
|
from phono3py.phonon3.frequency_shift import ImagToReal
|
|
|
|
si_pbesol_Delta = [
|
|
[-0.0057666, -0.0057666, -0.01639729, -0.14809965,
|
|
-0.15091765, -0.15091765],
|
|
[-0.02078728, -0.02102094, -0.06573269, -0.11432603,
|
|
-0.1366966, -0.14371315]]
|
|
|
|
# imag-self-energy Si-PBEsol 50x50x50 gp=5, bi=4, 101 points, 300K
|
|
im_part = [
|
|
[0.00000000, 0.00000000, -0.00000000, -0.17502231, 0.15346111, -0.17945834],
|
|
[0.30692220, 0.01806856, 0.30692220, -0.16920492, 0.46038331, -0.16365925],
|
|
[0.61384440, 0.01589160, 0.61384440, -0.16212453, 0.76730551, -0.16255142],
|
|
[0.92076670, 0.02380339, 0.92076670, -0.15566180, 1.07422781, -0.14846963],
|
|
[1.22768890, 0.01315187, 1.22768890, -0.15157188, 1.38115001, -0.15255014],
|
|
[1.53461110, 0.01241287, 1.53461110, -0.15413573, 1.68807221, -0.15661242],
|
|
[1.84153330, 0.01655055, 1.84153330, -0.15569954, 1.99499441, -0.15674342],
|
|
[2.14845550, 0.01969602, 2.14845550, -0.15564923, 2.30191661, -0.15637907],
|
|
[2.45537780, 0.02252765, 2.45537780, -0.15531174, 2.60883891, -0.15625306],
|
|
[2.76230000, 0.02691930, 2.76230000, -0.15365292, 2.91576111, -0.15201740],
|
|
[3.06922220, 0.02475023, 3.06922220, -0.15309757, 3.22268331, -0.15454755],
|
|
[3.37614440, 0.02532607, 3.37614440, -0.15651778, 3.52960551, -0.16175600],
|
|
[3.68306660, 0.03602159, 3.68306660, -0.15865515, 3.83652771, -0.16182615],
|
|
[3.98998880, 0.05106424, 3.98998880, -0.15232719, 4.14344991, -0.14636197],
|
|
[4.29691110, 0.04942215, 4.29691110, -0.14286877, 4.45037221, -0.13884419],
|
|
[4.60383330, 0.04743276, 4.60383330, -0.13616044, 4.75729441, -0.13070861],
|
|
[4.91075550, 0.03704510, 4.91075550, -0.13451543, 5.06421661, -0.13595808],
|
|
[5.21767770, 0.03753973, 5.21767770, -0.13618869, 5.37113881, -0.13567135],
|
|
[5.52459990, 0.03459364, 5.52459990, -0.13779247, 5.67806101, -0.13908850],
|
|
[5.83152220, 0.03271319, 5.83152220, -0.14253431, 5.98498331, -0.14723358],
|
|
[6.13844440, 0.03745922, 6.13844440, -0.14893067, 6.29190551, -0.15626936],
|
|
[6.44536660, 0.05559848, 6.44536660, -0.14810882, 6.59882771, -0.14526573],
|
|
[6.75228880, 0.05867653, 6.75228880, -0.14097793, 6.90574991, -0.13755625],
|
|
[7.05921100, 0.05604704, 7.05921100, -0.13717411, 7.21267211, -0.13652728],
|
|
[7.36613330, 0.05504001, 7.36613330, -0.13726128, 7.51959441, -0.13874339],
|
|
[7.67305550, 0.05652625, 7.67305550, -0.13993408, 7.82651661, -0.14408372],
|
|
[7.97997770, 0.06240436, 7.97997770, -0.14576140, 8.13343881, -0.15820101],
|
|
[8.28689990, 0.10092140, 8.28689990, -0.13696233, 8.44036101, -0.12619055],
|
|
[8.59382210, 0.10902384, 8.59382210, -0.10873717, 8.74728321, -0.08703708],
|
|
[8.90074440, 0.08072530, 8.90074440, -0.09038381, 9.05420551, -0.08352097],
|
|
[9.20766660, 0.06583828, 9.20766660, -0.08754704, 9.36112771, -0.08530118],
|
|
[9.51458880, 0.05922221, 9.51458880, -0.08677909, 9.66804991, -0.08380690],
|
|
[9.82151100, 0.05210708, 9.82151100, -0.08538955, 9.97497211, -0.08201858],
|
|
[10.12843320, 0.04195877, 10.12843320, -0.08628698, 10.28189431, -0.08605125],
|
|
[10.43535540, 0.03640973, 10.43535540, -0.08926293, 10.58881651, -0.08922281],
|
|
[10.74227770, 0.03161926, 10.74227770, -0.09229747, 10.89573881, -0.09260320],
|
|
[11.04919990, 0.02747982, 11.04919990, -0.09559236, 11.20266101, -0.09607112],
|
|
[11.35612210, 0.02331264, 11.35612210, -0.09941310, 11.50958321, -0.10042705],
|
|
[11.66304430, 0.01934637, 11.66304430, -0.10433882, 11.81650541, -0.10655268],
|
|
[11.96996650, 0.01742919, 11.96996650, -0.10999070, 12.12342761, -0.11254137],
|
|
[12.27688880, 0.01642395, 12.27688880, -0.11579515, 12.43034991, -0.11881080],
|
|
[12.58381100, 0.01653080, 12.58381100, -0.12181202, 12.73727211, -0.12539373],
|
|
[12.89073320, 0.01847230, 12.89073320, -0.12752746, 13.04419431, -0.13095792],
|
|
[13.19765540, 0.02112150, 13.19765540, -0.13254545, 13.35111651, -0.13587267],
|
|
[13.50457760, 0.02444066, 13.50457760, -0.13690465, 13.65803871, -0.14001936],
|
|
[13.81149990, 0.02829078, 13.81149990, -0.14042046, 13.96496101, -0.14291648],
|
|
[14.11842210, 0.03131753, 14.11842210, -0.14355821, 14.27188321, -0.14629683],
|
|
[14.42534430, 0.03485810, 14.42534430, -0.14675759, 14.57880541, -0.14956490],
|
|
[14.73226650, 0.03861495, 14.73226650, -0.15008451, 14.88572761, -0.15333389],
|
|
[15.03918870, 0.04245030, 15.03918870, -0.15501100, 15.19264981, -0.16252591],
|
|
[15.34611090, 0.06057473, 15.34611090, -0.15505840, 15.49957201, -0.15479515],
|
|
[15.65303320, 0.07274080, 15.65303320, -0.14431515, 15.80649431, -0.13469340],
|
|
[15.95995540, 0.06258294, 15.95995540, -0.13462767, 16.11341651, -0.13055151],
|
|
[16.26687760, 0.05477421, 16.26687760, -0.13242231, 16.42033871, -0.13011069],
|
|
[16.57379980, 0.04595002, 16.57379980, -0.13487523, 16.72726091, -0.13657130],
|
|
[16.88072200, 0.04328879, 16.88072200, -0.13971552, 17.03418311, -0.14108667],
|
|
[17.18764430, 0.03989395, 17.18764430, -0.14502441, 17.34110541, -0.14719684],
|
|
[17.49456650, 0.03510881, 17.49456650, -0.15404092, 17.64802761, -0.16178730],
|
|
[17.80148870, 0.04248327, 17.80148870, -0.16350350, 17.95494981, -0.16997033],
|
|
[18.10841090, 0.05566754, 18.10841090, -0.16498797, 18.26187201, -0.16267822],
|
|
[18.41533310, 0.05322413, 18.41533310, -0.16315793, 18.56879421, -0.16185245],
|
|
[18.72225540, 0.04584598, 18.72225540, -0.16728464, 18.87571651, -0.17091468],
|
|
[19.02917760, 0.04431502, 19.02917760, -0.17583217, 19.18263871, -0.18086609],
|
|
[19.33609980, 0.04542894, 19.33609980, -0.18531039, 19.48956091, -0.19116259],
|
|
[19.64302200, 0.04833528, 19.64302200, -0.19528564, 19.79648311, -0.20199495],
|
|
[19.94994420, 0.05347985, 19.94994420, -0.20533785, 20.10340531, -0.21233040],
|
|
[20.25686650, 0.05998606, 20.25686650, -0.21513590, 20.41032761, -0.22255508],
|
|
[20.56378870, 0.06858559, 20.56378870, -0.22407308, 20.71724981, -0.23055675],
|
|
[20.87071090, 0.07553732, 20.87071090, -0.23316286, 21.02417201, -0.24196281],
|
|
[21.17763310, 0.09064383, 21.17763310, -0.23840032, 21.33109421, -0.23806037],
|
|
[21.48455530, 0.08270184, 21.48455530, -0.24767121, 21.63801641, -0.25937673],
|
|
[21.79147750, 0.09072967, 21.79147750, -0.26600436, 21.94493861, -0.27938536],
|
|
[22.09839980, 0.10259460, 22.09839980, -0.28592152, 22.25186091, -0.30267109],
|
|
[22.40532200, 0.12101333, 22.40532200, -0.30840412, 22.55878311, -0.32971565],
|
|
[22.71224420, 0.15177729, 22.71224420, -0.33072803, 22.86570531, -0.35359688],
|
|
[23.01916640, 0.19181153, 23.01916640, -0.35054553, 23.17262751, -0.37699712],
|
|
[23.32608860, 0.24848809, 23.32608860, -0.36598088, 23.47954971, -0.39807450],
|
|
[23.63301090, 0.34499595, 23.63301090, -0.35876330, 23.78647201, -0.37855123],
|
|
[23.93993310, 0.49327447, 23.93993310, -0.26831457, 24.09339421, -0.17409299],
|
|
[24.24685530, 0.40006724, 24.24685530, -0.17140614, 24.40031641, -0.13889293],
|
|
[24.55377750, 0.34760851, 24.55377750, -0.14783974, 24.70723861, -0.13412952],
|
|
[24.86069970, 0.30317216, 24.86069970, -0.15888409, 25.01416081, -0.17963238],
|
|
[25.16762200, 0.33322578, 25.16762200, -0.17167226, 25.32108311, -0.17415734],
|
|
[25.47454420, 0.35144904, 25.47454420, -0.16212651, 25.62800531, -0.15536503],
|
|
[25.78146640, 0.35148009, 25.78146640, -0.15035690, 25.93492751, -0.14583107],
|
|
[26.08838860, 0.34905833, 26.08838860, -0.14376190, 26.24184971, -0.13879909],
|
|
[26.39531080, 0.33465253, 26.39531080, -0.14717542, 26.54877191, -0.14970062],
|
|
[26.70223310, 0.31456139, 26.70223310, -0.17194816, 26.85569421, -0.18987552],
|
|
[27.00915530, 0.29131735, 27.00915530, -0.23704431, 27.16261641, -0.29398685],
|
|
[27.31607750, 0.27077320, 27.31607750, -0.41396317, 27.46953861, -0.69109183],
|
|
[27.62299970, 0.94365766, 27.62299970, -0.36884202, 27.77646081, -0.20261848],
|
|
[27.92992190, 0.91472686, 27.92992190, -0.10951941, 28.08338301, -0.03652445],
|
|
[28.23684410, 0.95154463, 28.23684410, 0.06420057, 28.39030521, 0.15966223],
|
|
[28.54376640, 0.92964660, 28.54376640, 0.23570425, 28.69722751, 0.32280986],
|
|
[28.85068860, 0.93839909, 28.85068860, 0.43903796, 29.00414971, 0.61423452],
|
|
[29.15761080, 0.74652306, 29.15761080, 0.65024262, 29.31107191, 0.83571262],
|
|
[29.46453300, 0.34728541, 29.46453300, 0.69271590, 29.61799411, 0.68733525],
|
|
[29.77145520, 0.22582690, 29.77145520, 0.61472084, 29.92491631, 0.61177020],
|
|
[30.07837750, 0.13978699, 30.07837750, 0.55787878, 30.23183861, 0.55917305],
|
|
[30.38529970, 0.04681884, 30.38529970, 0.49416084, 30.53876081, 0.47067328],
|
|
[30.69222190, 0.00000000, 30.69222190, 0.41736574, 30.84568301, 0.38214163]]
|
|
|
|
|
|
def test_frequency_shift(si_pbesol):
|
|
si_pbesol.mesh_numbers = [9, 9, 9]
|
|
si_pbesol.init_phph_interaction()
|
|
_, delta = si_pbesol.run_frequency_shift(
|
|
[1, 103],
|
|
temperatures=[300, ],
|
|
write_hdf5=False,
|
|
run_on_bands=True)
|
|
np.testing.assert_allclose(si_pbesol_Delta, delta[0, :, 0], atol=1e-5)
|
|
|
|
|
|
def test_RealToImag():
|
|
vals = np.array(im_part)
|
|
i2r = ImagToReal(vals[:, 1], vals[:, 0])
|
|
i2r.run()
|
|
pick_one_vals = -1 * i2r.re_part # -1 to make it freq-shift
|
|
pick_one_freqs = i2r.frequency_points
|
|
i2r.run(method='half_shift')
|
|
half_shift_vals = -1 * i2r.re_part # -1 to make it freq-shift
|
|
half_shift_freqs = i2r.frequency_points
|
|
# for f, im, f1, re1, f2, re2, in zip(
|
|
# vals[:, 0], vals[:, 1],
|
|
# pick_one_freqs, pick_one_vals,
|
|
# half_shift_freqs, half_shift_vals):
|
|
# print("[%.8f, %.8f, %.8f, %.8f, %.8f, %.8f]," % (f, im, f1, re1, f2, re2))
|
|
np.testing.assert_allclose(vals[:, 2], pick_one_freqs, atol=1e-5)
|
|
np.testing.assert_allclose(vals[:, 3], pick_one_vals, atol=1e-5)
|
|
np.testing.assert_allclose(vals[:, 4], half_shift_freqs, atol=1e-5)
|
|
np.testing.assert_allclose(vals[:, 5], half_shift_vals, atol=1e-5)
|