Beispiel #1
0
def test_2layer_area():
    er1, t1 = 5.0, 1e-3
    er2, t2 = 1.0, 3e-3
    A = 3.0
    pp1 = ParallelPlates((er1, er2), (t1, t2))
    pp2 = ParallelPlates((er1, er2), (t1, t2), area=A)
    Va = 25.0
    X = np.linspace(0, t1 + t2, 11)
    assert pp1.capacitance() == approx(pp2.capacitance() / A)
    assert pp1.efield(X, Va) == approx(pp2.efield(X, Va))
    assert pp1.potential(X, Va) == approx(pp2.potential(X, Va))
Beispiel #2
0
def test_potential_2layer():
    er1, t1 = 5.0, 1e-3
    er2, t2 = 1.0, 3e-3
    pp = ParallelPlates((er1, er2), (t1, t2))
    X = np.linspace(0, 4e-3, 5)
    V = pp.potential(X, 200)
    assert V == approx([0, 12.5, 75, 137.5, 200])
def test_poisson_1d_dielectric2():
    pp = ParallelPlates((1.0, 5.0, 1.0), (2e-3, 1e-3, 1e-3))
    v0 = 0
    v1 = 200
    X, er = pp.get_arrays(101)
    V = fdm.poisson_1d(X, dielectric=er, v_left=v0, v_right=v1, conv=1e-7)
    Va = pp.potential(X, v1 - v0, v0)
    assert V == approx(Va, abs=0.01)
def test_poisson_1d():
    pp = ParallelPlates(1.0, 5e-3)
    X, _ = pp.get_arrays(101)
    v0 = -2
    v1 = 5
    V = fdm.poisson_1d(X, v_left=v0, v_right=v1, conv=1e-5)
    Va = pp.potential(X, v1 - v0, v0)
    assert V == approx(Va, abs=0.01)
def test_gauss_1d_dielectric():
    pp = ParallelPlates((2.0, 4.0), (3e-3, 2e-3))
    X, er = pp.get_arrays(101)
    v1 = 10.0
    V = pp.potential(X, v1)
    Q = np.array([fdm.gauss_1d(X, V, er, i) for i in range(1, len(X) - 1)])
    Qa = pp.charge(v1)
    assert Q == approx(Qa)
Beispiel #6
0
def test_potential():
    t = 1e-3
    N = 5
    pp = ParallelPlates(3.5, t)
    X = np.linspace(0, t, N)
    Va = 10.0
    expected = Va / t * X
    potential = pp.potential(X, Va)
    assert potential == approx(expected)
Beispiel #7
0
def test_potential_ref():
    t = 1e-3
    N = 5
    pp = ParallelPlates(3.5, t)
    X = np.linspace(0, t, N)
    Va = 10.0
    Vref = 5.0
    expected = Va / t * X + Vref
    potential = pp.potential(X, Va, Vref=Vref)
    assert potential == approx(expected)
Beispiel #8
0
def test_efield_pplate():
    er1, t1 = 5.0, 1e-3
    er2, t2 = 1.0, 3e-3
    Va = 200
    pp = ParallelPlates((er1, er2), (t1, t2))
    X, dx = np.linspace(0, 4e-3, 21, retstep=True)
    V = pp.potential(X, Va)
    E = pp.efield(X, Va)
    Ec = em.efield_1d(V, dx)
    assert Ec[:5] == approx(E[:5])
    # discontinuity at boundary [5]
    assert Ec[6:] == approx(E[6:])
Beispiel #9
0
def test_efield_pplate_fdm():
    er1, t1 = 5.0, 1e-3
    er2, t2 = 1.0, 3e-3
    Va = 200
    pp = ParallelPlates((er1, er2), (t1, t2))
    X, dx = np.linspace(0, 4e-3, 21, retstep=True)
    V = pp.potential(X, Va)
    E = em.efield_1d(V, dx)

    er = np.where(X[:-1] < t1, er1, er2)
    Vfdm = fdm.poisson_1d(X, dielectric=er, v_right=Va)
    Efdm = em.efield_1d(Vfdm, dx)
    assert Efdm == approx(E, rel=0.001)