p1 = 0 for a, setup in enumerate(wfs.setups): ni = setup.ni p2 = p1 + ni * (ni + 1) // 2 # NOTE: Distrbibutes the matrices to more processors than necessary self.D_asp[a] = D_sp[:, p1:p2].copy() self.Dresp_asp[a] = Dresp_sp[:, p1:p2].copy() self.Dxc_D_asp[a] = Dxc_D_sp[:, p1:p2].copy() self.Dxc_Dresp_asp[a] = Dxc_Dresp_sp[:, p1:p2].copy() print "Proc", world.rank, " reading atom ", a p1 = p2 if __name__ == "__main__": from gpaw.xc_functional import XCFunctional xc = XCFunctional('LDA') dx = 1e-3 Ntot = 100000 x = np.array(range(1, Ntot + 1)) * dx kf = (2 * x)**(1. / 2) n_g = kf**3 / (3 * pi**2) v_g = np.zeros(Ntot) e_g = np.zeros(Ntot) xc.calculate_spinpaired(e_g, n_g, v_g) vresp = v_g - 2 * e_g / n_g f = open('response.dat', 'w') for xx, v in zip(x, vresp): print >> f, xx, v f.close()
self.D_asp[a] = D_sp[:, p1:p2].copy() self.Dresp_asp[a] = Dresp_sp[:, p1:p2].copy() self.Dxc_D_asp[a] = Dxc_D_sp[:, p1:p2].copy() self.Dxc_Dresp_asp[a] = Dxc_Dresp_sp[:, p1:p2].copy() print("Proc", world.rank, " reading atom ", a) p1 = p2 # Dsp and Dresp need to be redistributed self.just_read = True if __name__ == "__main__": from gpaw.xc_functional import XCFunctional xc = XCFunctional('LDA') dx = 1e-3 Ntot = 100000 x = np.array(range(1,Ntot+1))*dx kf = (2*x)**(1./2) n_g = kf**3 / (3*pi**2) v_g = np.zeros(Ntot) e_g = np.zeros(Ntot) xc.calculate_spinpaired(e_g, n_g, v_g) vresp = v_g - 2*e_g / n_g f = open('response.dat','w') for xx, v in zip(x, vresp): print(xx, v, file=f) f.close()