def get_weights_lin(h, Nbar, Y): """ it evaluates integral weights, which are used for upper-lower bounds calculation, with bilinear inclusion at rectangular area Parameters ---------- h - the parameter determining the size of inclusion (half-size of support) Nbar - no. of points of regular grid where the weights are evaluated Y - the size of periodic unit cell Returns ------- Wphi - integral weights at regular grid sizing Nbar """ d = np.size(Y) meas_puc = np.prod(Y) ZN2l = VecTri.get_ZNl(Nbar) Wphi = np.ones(Nbar) / meas_puc for ii in np.arange(d): Nshape = np.ones(d) Nshape[ii] = Nbar[ii] Nrep = np.copy(Nbar) Nrep[ii] = 1 Wphi *= h[ii]*np.tile(np.reshape((np.sinc(h[ii]*ZN2l[ii]/Y[ii]))**2, Nshape), Nrep) return Wphi
def get_weights_lin(h, Nbar, Y): """ it evaluates integral weights, which are used for upper-lower bounds calculation, with bilinear inclusion at rectangular area Parameters ---------- h - the parameter determining the size of inclusion (half-size of support) Nbar - no. of points of regular grid where the weights are evaluated Y - the size of periodic unit cell Returns ------- Wphi - integral weights at regular grid sizing Nbar """ d = np.size(Y) meas_puc = np.prod(Y) ZN2l = VecTri.get_ZNl(Nbar) Wphi = np.ones(Nbar) / meas_puc for ii in np.arange(d): Nshape = np.ones(d) Nshape[ii] = Nbar[ii] Nrep = np.copy(Nbar) Nrep[ii] = 1 Wphi *= h[ii] * np.tile( np.reshape((np.sinc(h[ii] * ZN2l[ii] / Y[ii]))**2, Nshape), Nrep) return Wphi