Example #1
0
def symboundary(cells,
                xmin,
                xmax,
                ymin,
                ymax,
                symbols=sy.sympify('x, y, x0, y0, x1, y1')):

    BC = {}
    assign = assignfunctionto(BC)

    x, y, x0, y0, x1, y1 = symbols
    I = integration_2d_regular(x, y, x0, y0, x1, y1)

    @assign((1, False))
    def _(σ):
        ι = I[0](σ)
        λ = sy.lambdify((x0, y0), ι, 'numpy')
        ((X0, X1), Y), (X, (Y0, Y1)) = cells[1, False]

        βx = zeros_like(X0)
        m = (X0 == xmin)
        βx[m] -= λ(X0[m], Y[m])
        m = (X1 == xmax)
        βx[m] += λ(X1[m], Y[m])

        βy = zeros_like(Y0)
        m = (Y0 == ymin)
        βy[m] -= λ(X[m], Y0[m])
        m = (Y1 == ymax)
        βy[m] += λ(X[m], Y1[m])

        return βx, βy

    @assign((2, False))
    def _(σ):
        ι = I[1](σ)
        λ = (sy.lambdify((x0, x1, y), ι[0],
                         'numpy'), sy.lambdify((x, y0, y1), ι[1], 'numpy'))
        ((X0, Y0), (X1, Y1)) = cells[2, False]

        β = zeros_like(X0)
        m = (Y0 == ymin)
        β[m] += λ[0](X0[m], X1[m], Y0[m])
        m = (X1 == xmax)
        β[m] += λ[1](X1[m], Y0[m], Y1[m])
        m = (Y1 == ymax)
        β[m] += λ[0](X1[m], X0[m], Y1[m])
        m = (X0 == xmin)
        β[m] += λ[1](X0[m], Y1[m], Y0[m])

        return β

    return BC
Example #2
0
File: grid2.py Project: drufat/dec
def symboundary(cells, xmin, xmax, ymin, ymax, symbols=sy.sympify('x, y, x0, y0, x1, y1')):

    BC = {}
    assign = assignfunctionto(BC)

    x, y, x0, y0, x1, y1 = symbols
    I = integration_2d_regular(x, y, x0, y0, x1, y1)

    @assign((1, False))
    def _(σ):
        ι = I[0](σ)
        λ = sy.lambdify((x0, y0), ι, 'numpy')
        ((X0, X1), Y), (X, (Y0, Y1)) = cells[1, False]

        βx = zeros_like(X0)
        m = (X0==xmin)
        βx[m] -= λ(X0[m], Y[m])
        m = (X1==xmax)
        βx[m] += λ(X1[m], Y[m])

        βy = zeros_like(Y0)
        m = (Y0==ymin)
        βy[m] -= λ(X[m], Y0[m])
        m = (Y1==ymax)
        βy[m] += λ(X[m], Y1[m])

        return βx, βy

    @assign((2, False))
    def _(σ):
        ι = I[1](σ)
        λ = (sy.lambdify((x0, x1, y), ι[0], 'numpy'),
             sy.lambdify((x, y0, y1), ι[1], 'numpy'))
        ((X0, Y0), (X1, Y1)) = cells[2, False]

        β = zeros_like(X0)
        m = (Y0==ymin)
        β[m] += λ[0](X0[m], X1[m], Y0[m])
        m = (X1==xmax)
        β[m] += λ[1](X1[m], Y0[m], Y1[m])
        m = (Y1==ymax)
        β[m] += λ[0](X1[m], X0[m], Y1[m])
        m = (X0==xmin)
        β[m] += λ[1](X0[m], Y1[m], Y0[m])

        return β

    return BC
Example #3
0
File: grid2.py Project: drufat/dec
def symprojection(cells, symbols=sy.sympify('x, y, x0, y0, x1, y1')):

    P = {}
    assign = assignfunctionto(P)

    x, y, x0, y0, x1, y1 = symbols
    I = integration_2d_regular(x, y, x0, y0, x1, y1)

    def primaldual(t):

        @assign((0, t))
        def _(σ):
            (X0, Y0) = cells[0, t]
            ι = I[0](σ)
            λ = sy.lambdify((x0, y0), ι, 'numpy')
            return λ(X0, Y0) + zeros_like(X0)

        @assign((1, t))
        def _(σ):
            ((X0, X1), Y), (X, (Y0, Y1)) = cells[1, t]
            ι = I[1](σ)
            λ = (sy.lambdify((x0, x1, y), ι[0], 'numpy'),
                 sy.lambdify((x, y0, y1), ι[1], 'numpy'))
            return (λ[0](X0, X1, Y) + zeros_like(X0),
                    λ[1](X, Y0, Y1) + zeros_like(Y0))

        @assign((2, t))
        def _(σ):
            ((X0, Y0), (X1, Y1)) = cells[2, t]
            ι = I[2](σ)
            λ = sy.lambdify((x0, y0, x1, y1), ι, 'numpy')
            return λ(X0, Y0, X1, Y1) + zeros_like(X0)

    for t in (True, False):
        primaldual(t)

    return P
Example #4
0
def symprojection(cells, symbols=sy.sympify('x, y, x0, y0, x1, y1')):

    P = {}
    assign = assignfunctionto(P)

    x, y, x0, y0, x1, y1 = symbols
    I = integration_2d_regular(x, y, x0, y0, x1, y1)

    def primaldual(t):
        @assign((0, t))
        def _(σ):
            (X0, Y0) = cells[0, t]
            ι = I[0](σ)
            λ = sy.lambdify((x0, y0), ι, 'numpy')
            return λ(X0, Y0) + zeros_like(X0)

        @assign((1, t))
        def _(σ):
            ((X0, X1), Y), (X, (Y0, Y1)) = cells[1, t]
            ι = I[1](σ)
            λ = (sy.lambdify((x0, x1, y), ι[0],
                             'numpy'), sy.lambdify((x, y0, y1), ι[1], 'numpy'))
            return (λ[0](X0, X1, Y) + zeros_like(X0),
                    λ[1](X, Y0, Y1) + zeros_like(Y0))

        @assign((2, t))
        def _(σ):
            ((X0, Y0), (X1, Y1)) = cells[2, t]
            ι = I[2](σ)
            λ = sy.lambdify((x0, y0, x1, y1), ι, 'numpy')
            return λ(X0, Y0, X1, Y1) + zeros_like(X0)

    for t in (True, False):
        primaldual(t)

    return P