Exemplo n.º 1
0
def plot_potential(elt):
    nelt = len(elt)
    (N, _) = problem_size(elt)
    N += (len(elt) - 1)
    u = np.zeros((N,))
    x_tot = np.zeros((N,))
    base = 0
    for el in elt:
        order = el['order']
        x = np.cos(np.pi * np.arange(order,-1,-1) / order)
        xelt = el['a'] * (1-x)/2 + el['b'] * (1+x)/2
        x_tot[base:base+order+1] = xelt[:];
        u[base:base+order+1] = eval_potential(el, xelt)
        base = base+order+1
    return (x_tot, u)
Exemplo n.º 2
0
def plane_forcing (elt, l):
    """
    Compute a forcing vector corresponding to the influence of an 
    incident wave of the form exp(l*x)
    """

    z = l/1.0j
    (N, _) = problem_size(elt)
    F = np.zeros((N,), dtype='complex_')
    base = 0

    for el in elt:
        order = el['order']
        x = np.cos(np.pi * np.arange(order,-1,-1) / order)
        xelt = el['a'] * (1-x)/2.0 + el['b'] * (1+x)/2.0
        F[base:base+order+1] = -eval_potential(el, xelt) * np.exp(z*xelt)
        F[base] = 0
        F[base+order] = 0
        base = base+order

    return F