def test_QuadOneOverR_1(): f = lambda x: 1 / (x - 0.4) exact = np.log(3.0 / 2.0) qi = piessens(2, 0.4, nonsingular_N = 10) qx = np.array(qi.x) qw = np.array(qi.w) est = np.sum(f(qx) * qw) np.testing.assert_almost_equal(exact, est)
def test_plot_single_integral_kernel(): msh = simple_line_mesh(2) x = np.linspace(0.0, 1, 1000) kernel = TractionKernel(1.0, 0.25) bf = basis_funcs.basis_from_degree(8) bf1 = ConstantBasis((1.0, 1.0)) k = np.zeros_like(x) k_int = np.zeros_like(x) for (i, x_val) in enumerate(x): q = quadrature.piessens(16, x_val, 16) kernel.set_interior_data([x_val, 0.0], [0.0,1.0]) kd = kernel.get_interior_integral_data([1.0, 0.0], [0.0, 1.0]) k[i] = kernel._call(kd, 0, 1) k_int[i] = single_integral(msh.elements[1].mapping.eval, kernel, bf1, bf, q, 0, 4)[0][1]