def test_1D_plug(version):
    
    def q(x,y):
        return ones((len(x),len(y)))

    def V(x,y):
        return zeros((len(x), len(y)))
    
    if version == "scalar":
        def I(x,y):
            return 0 if abs(x-xc) > sigma else 2
    else: 
        def I(xv, yv):
            Iv = zeros((len(xv), len(yv)))
            for i in range(len(xv)):
                for j in range(len(yv)):
                    if abs(xv[j, i] - xc) > sigma:
                        Iv[i, j] = 0
                    else:
                        Iv[i, j] = 2
            return Iv
        
    def f(x,y,t):
        return zeros((len(x), len(y)))
        
    E, u, dx = solver(Lx, Ly, Nx, Ny, T, dt, c, I, q, V, f, b, version, oneD=True)
Exemple #2
0
def test_constant(version):
    def q(x, y):
        return ones((len(x), len(y))) * 0.8

    def V(x, y):
        return zeros((len(x), len(y)))

    def I(x, y):
        return 1.2

    def f(x, y, t):
        return zeros((len(x), len(y)))

    E, u, dx = solver(Lx,
                      Ly,
                      Nx,
                      Ny,
                      T,
                      dt,
                      c,
                      I,
                      q,
                      V,
                      f,
                      b,
                      version,
                      make_plot=False)
    if version == "scalar":
        print u
    else:
        print u[1:-1, 1:-1]
def run_Gaussian_flathill(version):
    def I(x, y):
        """Gaussian peak at (0, Ly/2)."""
        # return 2*exp(-0.5*((x-Lx/2.0)/(sigma))**2 - 0.5*((y-Ly/2.0)/(sigma))**2)
        return height * exp(-0.5 * ((x) / (sigma))**2 - 0.5 * ((y - Ly / 2.0) /
                                                               (sigma))**2)

    def B(x, y):
        return x - H0

    def V(x, y):
        return ones((len(x), len(y))) * factor

    def q(x, y):
        return g * (H0 - B(x, y))

    def f(x, y, t):
        return zeros((len(x), len(y)))

    E, u, dx = solver(Lx,
                      Ly,
                      Nx,
                      Ny,
                      T,
                      dt,
                      c,
                      I,
                      q,
                      V,
                      f,
                      b,
                      version,
                      B=B,
                      make_plot=True)
def test_standing_wave(version, w, Nx):
    Ny = Nx

    def q(x, y):
        return ones((len(x), len(y))) * q_const

    def f(x, y, t):
        return exp(-b * t) * cos(cx * x) * cos(cy * y) * (
            cos(w * t) *
            (q_const * cx**2 + q_const * cy**2 - w**2) + b * w * sin(w * t))

    def I(x, y):
        return cos(mx * x * pi / Lx) * cos(my * y * pi / Ly)

    def V(x, y):
        return -b * cos(mx * x * pi / Lx) * cos(my * y * pi / Ly)

    E_list, u, dx = solver(Lx,
                           Ly,
                           Nx,
                           Ny,
                           T,
                           dt,
                           c,
                           I,
                           q,
                           V,
                           f,
                           b,
                           version,
                           w=w,
                           exact=exact_standing_wave,
                           make_plot=False)
    return E_list, dx
def test_standing_wave(version, w, Nx):
    Ny = Nx
   
    def q(x,y):
        return ones((len(x),len(y))) * q_const

    def f(x,y,t):
       return exp(-b*t)*cos(cx*x)*cos(cy*y)*(cos(w*t)*(q_const*cx**2 + q_const*cy**2 - w**2) + b*w*sin(w*t))

    def I(x,y):
        return cos(mx*x*pi/Lx)*cos(my*y*pi/Ly)

    def V(x,y):
        return -b*cos(mx*x*pi/Lx)*cos(my*y*pi/Ly)
        
    E_list, u, dx = solver(Lx, Ly, Nx, Ny, T, dt, c, I, q, V, f, b, version, w=w, exact=exact_standing_wave, make_plot=False)
    return E_list, dx
def test_constant(version):
    def q(x, y):
        return ones((len(x), len(y))) * 0.8

    def V(x, y):
        return zeros((len(x), len(y)))

    def I(x, y):
        return 1.2

    def f(x, y, t):
        return zeros((len(x), len(y)))

    E, u, dx = solver(Lx, Ly, Nx, Ny, T, dt, c, I, q, V, f, b, version, make_plot=False)
    if version == "scalar":
        print u
    else:
        print u[1:-1, 1:-1]
def run_Gaussian_flathill(version):
    def I(x,y):
        """Gaussian peak at (0, Ly/2)."""
        # return 2*exp(-0.5*((x-Lx/2.0)/(sigma))**2 - 0.5*((y-Ly/2.0)/(sigma))**2)
        return height*exp(-0.5*((x)/(sigma))**2 - 0.5*((y-Ly/2.0)/(sigma))**2)

    def B(x,y):
        return x-H0

    def V(x,y):
        return ones((len(x),len(y)))*factor
            
    
    def q(x,y):
        return g*(H0-B(x,y))

    def f(x,y,t):
        return zeros((len(x),len(y)))
    
    E, u, dx = solver(Lx, Ly, Nx, Ny, T, dt, c, I, q, V, f, b, version, B=B, make_plot=True)
Exemple #8
0
def test_1D_plug(version):
    def q(x, y):
        return ones((len(x), len(y)))

    def V(x, y):
        return zeros((len(x), len(y)))

    if version == "scalar":

        def I(x, y):
            return 0 if abs(x - xc) > sigma else 2
    else:

        def I(xv, yv):
            Iv = zeros((len(xv), len(yv)))
            for i in range(len(xv)):
                for j in range(len(yv)):
                    if abs(xv[j, i] - xc) > sigma:
                        Iv[i, j] = 0
                    else:
                        Iv[i, j] = 2
            return Iv

    def f(x, y, t):
        return zeros((len(x), len(y)))

    E, u, dx = solver(Lx,
                      Ly,
                      Nx,
                      Ny,
                      T,
                      dt,
                      c,
                      I,
                      q,
                      V,
                      f,
                      b,
                      version,
                      oneD=True)
Exemple #9
0
def test_manufactured_solution(version, w, Nx):

    Ny = Nx

    def q(x, y):
        return x * y

    def f(x, y, t):
        f_val = exp(-b*t)*(cos(cx*x)*cos(cy*y)*(-w**2*cos(w*t) + b*w*sin(w*t)) + \
            cx*y*cos(cy*y)*cos(w*t)*(cx*x*cos(cx*x) + sin(cy*y)) + \
            cy*x*cos(cx*x)*cos(w*t)*(cy*y*cos(cy*y) + sin(cx*x)))
        return f_val

    def I(x, y):
        if version == "scalar":
            return m.cos(cx * x) * m.cos(cy * y)
        else:
            return cos(cx * x) * cos(cy * y)

    def V(x, y):
        return -b * cos(cx * x) * cos(cy * y)

    E_list, u, dx = solver(Lx,
                           Ly,
                           Nx,
                           Ny,
                           T,
                           dt,
                           c,
                           I,
                           q,
                           V,
                           f,
                           b,
                           version,
                           w=w,
                           exact=exact_manufactured_solution,
                           make_plot=False)
    return E_list, dx
def test_manufactured_solution(version, w, Nx):
   
    Ny = Nx

    def q(x,y):
        return x*y
    
    def f(x,y,t):
        f_val = exp(-b*t)*(cos(cx*x)*cos(cy*y)*(-w**2*cos(w*t) + b*w*sin(w*t)) + \
            cx*y*cos(cy*y)*cos(w*t)*(cx*x*cos(cx*x) + sin(cy*y)) + \
            cy*x*cos(cx*x)*cos(w*t)*(cy*y*cos(cy*y) + sin(cx*x)))
        return f_val
        
    def I(x,y):
        if version=="scalar":   
            return m.cos(cx*x)*m.cos(cy*y)
        else:
            return cos(cx*x)*cos(cy*y)
        
    def V(x,y):
        return -b*cos(cx*x)*cos(cy*y)
        
    E_list, u, dx = solver(Lx, Ly, Nx, Ny, T, dt, c, I, q, V, f, b, version, w=w, exact=exact_manufactured_solution, make_plot=False)
    return E_list, dx