layer.set_calculator(calc) layer.get_potential_energy() response = calc.hamiltonian.xc.xcs['RESPONSE'] response.calculate_delta_xc() E_ks, dis = response.calculate_delta_xc_perturbation() calc.write('MoS2.gpw', mode='all') else: dis = 0.5345 bse = BSE('MoS2.gpw', ecut=10, valence_bands=[8], conduction_bands=[9], eshift=dis, nbands=15, write_h=False, write_v=False, wfile=None, mode='BSE', truncation='2D') w_w, alpha_w = bse.get_polarizability(filename='bse.csv', pbc=[True, True, False], eta=0.02, w_w=np.linspace(0., 5., 5001)) w_ = 0.833 I_ = 26.51 w, I = findpeak(w_w[:1000], alpha_w.imag[:1000]) equal(w, w_, 0.01) equal(I, I_, 0.1)
df.get_polarizability(filename='pol_rpa_MoS2.csv', pbc=[True, True, False]) bse = BSE('gs_MoS2.gpw', spinors=True, ecut=ecut, valence_bands=[8], conduction_bands=[9], nbands=50, eshift=eshift, mode='BSE', txt='bse_MoS2.txt') bse.get_polarizability(filename='pol_bse_MoS2.csv', eta=eta, pbc=[True, True, False], write_eig='bse_MoS2_eig.dat', w_w=np.linspace(0, 5, 5001)) bse = BSE('gs_MoS2.gpw', spinors=True, ecut=ecut, valence_bands=[8], conduction_bands=[9], truncation='2D', nbands=50, eshift=eshift, mode='BSE', txt='bse_MoS2_trun.txt') bse.get_polarizability(filename='pol_bse_MoS2_trun.csv',