Пример #1
0
def test_reconstruction():

    k = 3

    x = np.linspace(-2.0, 2.0)
    grid = pyweno.grid.Grid(boundaries=x)
    fbar = grid.average(f)

    weno5 = pyweno.clweno5.CLWENO5PM(ctx=ctx)

    fbndry = uf(x[:-1])
    fp = np.zeros(grid.N)
    fm = np.zeros(grid.N)

    weno5.reconstruct(fbar, fp, fm)

    d  = fbndry[k+1:-k] - fp[k+1:-k]
    l2 = math.sqrt(np.dot(d, d))

    print d
    print l2

    assert l2 < 1e-5, "CLWENO5PM (+) is broken"

    d  = fbndry[k+1:-k] - fm[k+1:-k]
    l2 = math.sqrt(np.dot(d, d))

    print d
    print l2

    assert l2 < 1e-5, "CLWENO5PM (-) is broken"
Пример #2
0
def test_by_reconstructing_uniform():

    K = range(3, 4)
    x = np.linspace(-1.0, 1.0, 1001)
    grid = pyweno.grid.Grid(boundaries=x)

    # f and f' evaluated at boundaries
    fbndry = uf(x)

    # average of f
    fbar = grid.average(f)

    for k in K:

        for s in (0,):                  # XXX: test more s values

            weno = pyweno.clweno.CLWENO(ctx=ctx, grid=grid, order=k)
            weno.precompute_reconstruction('left')

            weno2 = pyweno.weno.WENO(grid=grid, order=k)
            weno2.precompute_reconstruction('left')

            # f reconstructed at boundaries
            frcnst = np.zeros(grid.N)

            weno.smoothness(fbar)
            weno2.smoothness(fbar)

            weno.weights('left')
#            weno.weights('left')
            weno2.weights('left')

            print weno.wr['left']
            print weno2.wr['left']
            
            weno.reconstruct(fbar, 'left', frcnst, s=s) #, compute_weights=False)
#            print weno.wr['left']
#            print weno2.wr['left']

            # assert
            d  = fbndry[:-1] - frcnst[:]
            l2 = math.sqrt(np.dot(d, d))

            print l2

            assert l2 < 1e-8, "WENO (k=%d, left) is broken" % (k)
Пример #3
0
# explicitly define the function f that we will reconstruct ...
def f(x):
    if x < 0.0:
        return math.sin(x)

    return math.cos(x)

uf = numpy.frompyfunc(f, 1, 1)

# load the weno reconstructor from the cache
x = numpy.linspace(-5.0, 5.0, 21)
grid = pyweno.grid.Grid(x)
weno = pyweno.clweno.CLPMWENO(3)

# average f
fb = grid.average(f)

# allocate arrays for reconstruction
fm = numpy.zeros(grid.N)
fp = numpy.zeros(grid.N)

# reconstruct!
weno.reconstruct(fb, fp, fm)

print fp
print fm

# plot results
import matplotlib
matplotlib.use('Agg')