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.apply_bmask_1D(u, mask)[source]
shenfun.optimization.numba.apply_bmask_2D(u, mask)[source]
shenfun.optimization.numba.apply_bmask_3D(u, mask)[source]
shenfun.optimization.numba.apply_bmask_4D(u, mask)[source]
shenfun.optimization.numba.apply_bxmask(u_hat, mask)[source]
shenfun.optimization.numba.apply_mask(u_hat, mask)[source]
shenfun.optimization.numba.apply_mask_1D(u, mask)[source]
shenfun.optimization.numba.apply_mask_2D(u, mask)[source]
shenfun.optimization.numba.apply_mask_3D(u, mask)[source]
shenfun.optimization.numba.apply_mask_4D(u, mask)[source]
shenfun.optimization.numba.cross2D(c, a, b)[source]
shenfun.optimization.numba.cross3D(c, a, b)[source]
shenfun.optimization.numba.crossND(c, a, b)[source]
shenfun.optimization.numba.outer2D(a, b, c, symmetric)[source]
shenfun.optimization.numba.outer3D(a, b, c, symmetric)[source]
shenfun.optimization.numba.biharmonic.Biharmonic_Solve(b, u, u0, u1, u2, l0, l1, ak, bk, a0, axis=0)[source]
shenfun.optimization.numba.biharmonic.Biharmonic_factor_pr(a, b, l0, l1, axis)[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.ANN_matvec(v, b, A, axis=0)[source]
shenfun.optimization.numba.helmholtz.Helmholtz_Neumann_matvec(v, b, alfa, beta, A, B, axis)[source]
shenfun.optimization.numba.helmholtz.Helmholtz_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.helmholtz.Poisson_Solve_ADD(A, b, u, axis=0)[source]
shenfun.optimization.numba.helmholtz.Poisson_Solve_ADD_1D(d, d1, scale, b, u)[source]
shenfun.optimization.numba.helmholtz.Solve_Helmholtz(b, u, neumann, d0, d1, d2, L, axis)[source]
shenfun.optimization.numba.pdma.PDMA_LU(data)[source]

LU decomposition

shenfun.optimization.numba.pdma.PDMA_Solve(x, data, axis=0)[source]
shenfun.optimization.numba.pdma.PDMA_inner_solve(u, data)[source]
shenfun.optimization.numba.tdma.TDMA_LU(data)[source]
shenfun.optimization.numba.tdma.TDMA_O_LU(data)[source]
shenfun.optimization.numba.tdma.TDMA_O_Solve(x, data, axis=0)[source]
shenfun.optimization.numba.tdma.TDMA_O_inner_solve(u, data)[source]
shenfun.optimization.numba.tdma.TDMA_Solve(x, data, axis=0)[source]
shenfun.optimization.numba.tdma.TDMA_inner_solve(u, data)[source]
shenfun.optimization.numba.threedma.ThreeDMA_Solve(x, data, axis=0)[source]
shenfun.optimization.numba.threedma.ThreeDMA_inner_solve(u, data)[source]
shenfun.optimization.numba.twodma.TwoDMA_Solve(x, data, axis=0)[source]
shenfun.optimization.numba.twodma.TwoDMA_inner_solve(u, data)[source]
shenfun.optimization.numba.diagma.DiagMA_Solve(x, data, axis=0)[source]
shenfun.optimization.numba.diagma.DiagMA_inner_solve(u, data)[source]
shenfun.optimization.numba.fdma.FDMA_LU(data)[source]
shenfun.optimization.numba.fdma.FDMA_Solve(x, data, axis=0)[source]
shenfun.optimization.numba.fdma.FDMA_inner_solve(u, data)[source]
shenfun.optimization.numba.transforms.FMMdirect1(u, v, a, n0, trans)[source]
shenfun.optimization.numba.transforms.FMMdirect2(u, v, a, h, Nd, n0, trans)[source]
shenfun.optimization.numba.transforms.FMMdirect3(u, v, dn, a, h, Nd, n0)[source]
shenfun.optimization.numba.transforms.FMMdirect4(u, v, dn, a, n0)[source]
shenfun.optimization.numba.transforms.cheb2leg(input_array, output_array=None, axis=0)[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]
shenfun.optimization.numba.transforms.restricted_product(space, input_array, output_array, x, i0, i1, a0, axis, a)[source]
shenfun.optimization.numba.transforms.scalar_product(input_array, output_array, x, w, axis, a)[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 called Solve(), which is implemented with faster (optimized) code in TDMA_Solve() and TDMA_Solve().

Parameters:
  • func (The function to optimize)

  • wrap (bool, optional) – If True, return function wrapped using functools wraps. If False, return unwrapped function.

class shenfun.optimization.runtimeoptimizer(func)[source]

Bases: object