shenfun.optimization package¶
Submodules¶
shenfun.optimization.cython module¶
- shenfun.optimization.cython.Cheb.chebval(x, c)¶
- shenfun.optimization.cython.convolve.convolve_1D(u, v, uv, k)¶
- shenfun.optimization.cython.convolve.convolve_real_1D(u, v, uv, k)¶
- shenfun.optimization.cython.evaluate.evaluate_2D(b, u, P, r2c, M, start)¶
- shenfun.optimization.cython.evaluate.evaluate_3D(b, u, P, r2c, M, start)¶
- shenfun.optimization.cython.evaluate.evaluate_lm_2D(bases, b, u, x0, x1, w0, w1, r2c, M, start)¶
- shenfun.optimization.cython.evaluate.evaluate_lm_3D(bases, b, u, x0, x1, x2, w0, w1, w2, r2c, M, start)¶
- shenfun.optimization.cython.la.Biharmonic_Solve(b, u, u0, u1, u2, l0, l1, ak, bk, a0, axis=0)¶
- shenfun.optimization.cython.la.Biharmonic_factor_oe_pr(odd, a, b, l0, l1)¶
- shenfun.optimization.cython.la.Biharmonic_factor_pr(a, b, l0, l1, axis)¶
- shenfun.optimization.cython.la.Biharmonic_factor_pr_1D(a, b, l0, l1)¶
- shenfun.optimization.cython.la.Biharmonic_factor_pr_2D(axis, a, b, l0, l1)¶
- shenfun.optimization.cython.la.Biharmonic_factor_pr_3D(axis, a, b, l0, l1)¶
- shenfun.optimization.cython.la.DiagMA_Solve(u, data, axis)¶
- shenfun.optimization.cython.la.DiagMA_Solve_2D(u, data, axis)¶
- shenfun.optimization.cython.la.DiagMA_Solve_3D(u, data, axis)¶
- shenfun.optimization.cython.la.DiagMA_inner_solve(u, data)¶
- shenfun.optimization.cython.la.FDMA_LU(data)¶
- shenfun.optimization.cython.la.FDMA_Solve(u, data, axis)¶
- shenfun.optimization.cython.la.FDMA_inner_solve(u, data)¶
- shenfun.optimization.cython.la.HeptaDMA_LU(data)¶
- shenfun.optimization.cython.la.HeptaDMA_Solve(u, data, axis)¶
- shenfun.optimization.cython.la.HeptaDMA_inner_solve(u, data)¶
- shenfun.optimization.cython.la.LU_Biharmonic(a0, alfa, beta, sii, siu, siuu, ail, aii, aiu, bill, bil, bii, biu, biuu, u0, u1, u2, l0, l1, axis)¶
- shenfun.optimization.cython.la.LU_Biharmonic_1D(a, b, c, sii, siu, siuu, ail, aii, aiu, bill, bil, bii, biu, biuu, u0, u1, u2, l0, l1)¶
- shenfun.optimization.cython.la.LU_Biharmonic_2D_n(axis, alfa, beta, ceta, sii, siu, siuu, ail, aii, aiu, bill, bil, bii, biu, biuu, u0, u1, u2, l0, l1)¶
- shenfun.optimization.cython.la.LU_Biharmonic_3D_n(axis, alfa, beta, ceta, sii, siu, siuu, ail, aii, aiu, bill, bil, bii, biu, biuu, u0, u1, u2, l0, l1)¶
- shenfun.optimization.cython.la.LU_Helmholtz(A, B, A_s, B_s, neumann, d0, d1, d2, L, axis)¶
- shenfun.optimization.cython.la.LU_Helmholtz_1D(A, B, A_scale, B_scale, neumann, d0, d1, d2, L)¶
- shenfun.optimization.cython.la.LU_Helmholtz_2D(A, B, axis, A_scale, B_scale, neumann, d0, d1, d2, L)¶
- shenfun.optimization.cython.la.LU_Helmholtz_3D(A, B, axis, A_scale, B_scale, neumann, d0, d1, d2, L)¶
- shenfun.optimization.cython.la.LU_oe_Biharmonic_1D(odd, a, b, c, sii, siu, siuu, ail, aii, aiu, bill, bil, bii, biu, biuu, u0, u1, u2, l0, l1)¶
- shenfun.optimization.cython.la.PDMA_LU(data)¶
- shenfun.optimization.cython.la.PDMA_Solve(u, data, axis)¶
- shenfun.optimization.cython.la.PDMA_inner_solve(u, data)¶
- shenfun.optimization.cython.la.Poisson_Solve_ADD(A, b, u, axis=0)¶
- shenfun.optimization.cython.la.Poisson_Solve_ADD_2D_ptr(d, d1, scale, b, u, axis)¶
- shenfun.optimization.cython.la.Poisson_Solve_ADD_3D_ptr(d, d1, scale, b, u, axis)¶
- shenfun.optimization.cython.la.Solve_Biharmonic_1D(fk, uk, u0, u1, u2, l0, l1, a, b, ac)¶
- shenfun.optimization.cython.la.Solve_Biharmonic_2D_n(axis, fk, uk, u0, u1, u2, l0, l1, a, b, a0)¶
- shenfun.optimization.cython.la.Solve_Biharmonic_3D_n(axis, fk, uk, u0, u1, u2, l0, l1, a, b, a0)¶
- shenfun.optimization.cython.la.Solve_Helmholtz(b, u, neumann, d0, d1, d2, L, axis)¶
- shenfun.optimization.cython.la.Solve_Helmholtz_1D(fk, u_hat, neumann, d0, d1, d2, L)¶
- shenfun.optimization.cython.la.Solve_Helmholtz_2D_ptr(axis, fk, u_hat, neumann, d0, d1, d2, L)¶
- shenfun.optimization.cython.la.Solve_Helmholtz_3D_ptr(axis, fk, u_hat, neumann, d0, d1, d2, L)¶
- shenfun.optimization.cython.la.Solve_oe_Biharmonic_1D(odd, fk, uk, u0, u1, u2, l0, l1, a, b, ac)¶
Solve (aS+b*A+cB)x = f, where S, A and B are 4th order Laplace, stiffness and mass matrices of Shen with Dirichlet BC
- shenfun.optimization.cython.la.SolverGeneric1ND_solve_data(u, data, sol, naxes, is_zero_index)¶
- shenfun.optimization.cython.la.TDMA_LU(data)¶
- shenfun.optimization.cython.la.TDMA_O_LU(data)¶
- shenfun.optimization.cython.la.TDMA_O_Solve(u, data, axis)¶
- shenfun.optimization.cython.la.TDMA_O_inner_solve(u, data)¶
- shenfun.optimization.cython.la.TDMA_Solve(u, data, axis)¶
- shenfun.optimization.cython.la.TDMA_inner_solve(u, data)¶
- shenfun.optimization.cython.la.ThreeDMA_Solve(u, data, axis)¶
- shenfun.optimization.cython.la.ThreeDMA_inner_solve(u, data)¶
- shenfun.optimization.cython.la.TwoDMA_Solve(u, data, axis)¶
- shenfun.optimization.cython.la.TwoDMA_inner_solve(u, data)¶
- shenfun.optimization.cython.Matvec.ADD_matvec(v, b, axis, dd)¶
- shenfun.optimization.cython.Matvec.ATT_matvec(v, b, axis)¶
- shenfun.optimization.cython.Matvec.BBD_matvec(v, b, axis, ld, dd, ud, uud)¶
- shenfun.optimization.cython.Matvec.BDN_matvec(v, b, axis, ld, dd, ud)¶
- shenfun.optimization.cython.Matvec.Biharmonic_matvec(v, b, a0, alfa, beta, sii, siu, siuu, ail, aii, aiu, bill, bil, bii, biu, biuu, axis=0)¶
- shenfun.optimization.cython.Matvec.CBD_matvec(v, b, axis, ld, ud, udd)¶
- shenfun.optimization.cython.Matvec.CDB_matvec(v, b, axis, lld, ld, ud)¶
- shenfun.optimization.cython.Matvec.CDD_matvec(v, b, axis, ld, ud)¶
- shenfun.optimization.cython.Matvec.CDN_matvec(v, b, axis, ld, ud)¶
- shenfun.optimization.cython.Matvec.CLL_matvec(v, b, axis)¶
- shenfun.optimization.cython.Matvec.CTSD_matvec(v, b, axis)¶
- shenfun.optimization.cython.Matvec.CTT_matvec(v, b, axis)¶
- shenfun.optimization.cython.Matvec.GLL_matvec(v, b, axis)¶
- shenfun.optimization.cython.Matvec.Helmholtz_Neumann_matvec(v, b, alfa, beta, A, B, axis)¶
- shenfun.optimization.cython.Matvec.Helmholtz_matvec(v, b, alfa, beta, A, B, axis)¶
- shenfun.optimization.cython.Matvec.Pentadiagonal_matvec(v, b, axis, ldd, ld, dd, ud, udd)¶
- shenfun.optimization.cython.Matvec.SBB_matvec(v, b, axis, dd)¶
- shenfun.optimization.cython.Matvec.Tridiagonal_matvec(v, b, axis, ld, dd, ud)¶
- shenfun.optimization.cython.Matvec.imult(array, scale)¶
- shenfun.optimization.cython.transforms.FMMcheb(input_array, output_array, axis, Nn, A, Nk, T, Th, ThT, D, Mmin, s, diags, trans)¶
- shenfun.optimization.cython.transforms.FMMdirect1(input_array, output_array, axis, a, n0, trans)¶
- shenfun.optimization.cython.transforms.FMMdirect2(input_array, output_array, axis, a, h, Nd, n0, trans)¶
- shenfun.optimization.cython.transforms.FMMdirect3(input_array, output_array, axis, dn, a, h, Nd, n0)¶
- shenfun.optimization.cython.transforms.FMMdirect4(input_array, output_array, axis, dn, a, n0)¶
- shenfun.optimization.cython.transforms.Lambda(x)¶
Return
\[\Lambda(x) =\]rac{Gamma(x+ rac{1}{2})}{Gamma(x+1)}
x : array of floats
- shenfun.optimization.cython.transforms.cheb2leg(input_array, output_array, axis=0)¶
- shenfun.optimization.cython.transforms.chebval(x, u)¶
- shenfun.optimization.cython.transforms.evaluate_expansion_all(input_array, output_array, x, axis, a)¶
- shenfun.optimization.cython.transforms.leg2cheb(input_array, output_array, axis=0, transpose=0)¶
- shenfun.optimization.cython.transforms.normf(u)¶
- shenfun.optimization.cython.transforms.restricted_product(L, input_array, output_array, x, i0, i1, a0, axis, a)¶
- shenfun.optimization.cython.transforms.scalar_product(input_array, output_array, x, w, axis, a)¶
shenfun.optimization.numba module¶
- shenfun.optimization.numba.biharmonic.Biharmonic_Solve(b, u, u0, u1, u2, l0, l1, ak, bk, a0, axis=0)[source]¶
- shenfun.optimization.numba.biharmonic.Biharmonic_matvec(v, b, a0, alfa, beta, sii, siu, siuu, ail, aii, aiu, bill, bil, bii, biu, biuu, axis)[source]¶
- shenfun.optimization.numba.biharmonic.LU_Biharmonic(a0, alfa, beta, sii, siu, siuu, ail, aii, aiu, bill, bil, bii, biu, biuu, u0, u1, u2, l0, l1, axis)[source]¶
- shenfun.optimization.numba.helmholtz.Helmholtz_Neumann_matvec(v, b, alfa, beta, A, B, axis)[source]¶
- shenfun.optimization.numba.helmholtz.LU_Helmholtz(A, B, A_s, B_s, neumann, d0, d1, d2, L, axis)[source]¶
- shenfun.optimization.numba.transforms.evaluate_expansion_all(input_array, output_array, x, axis, a)[source]¶
- shenfun.optimization.numba.transforms.leg2cheb(input_array, output_array=None, axis=0, transpose=False)[source]¶
Module contents¶
Module for optimized functions
Some methods performed in Python may be slowing down solvers. In this optimization module we place optimized functions that are to be used instead of default Python methods. Some methods are implemented solely in Cython and only called from within the regular Python modules.
- shenfun.optimization.optimizer(func, wrap=True)[source]¶
Decorator used to wrap calls to optimized versions of functions.
The optimized version must be implemented in the cython or numba modules. For example, the
la.TDMA
linear algebra solver has a method calledSolve()
, which is implemented with faster (optimized) code inTDMA_Solve()
andTDMA_Solve()
.- Parameters:
func (The function to optimize)
wrap (bool, optional) – If True, return function wrapped using functools wraps. If False, return unwrapped function.