예제 #1
0
def test_Plasma3D_add_magnetostatics():
    r"""Function to test add_magnetostatic function
    """
    dipole = magnetostatics.MagneticDipole(
        np.array([0, 0, 1]) * u.A * u.m * u.m,
        np.array([0, 0, 0]) * u.m)
    cw = magnetostatics.CircularWire(np.array([0, 0, 1]),
                                     np.array([0, 0, 0]) * u.m, 1 * u.m,
                                     1 * u.A)
    gw_cw = cw.to_GeneralWire()
    iw = magnetostatics.InfiniteStraightWire(np.array([0, 1, 0]),
                                             np.array([0, 0, 0]) * u.m,
                                             1 * u.A)
    plasma = plasma3d.Plasma3D(domain_x=np.linspace(-2, 2, 30) * u.m,
                               domain_y=np.linspace(0, 0, 1) * u.m,
                               domain_z=np.linspace(-2, 2, 20) * u.m)

    plasma.add_magnetostatic(dipole, cw, gw_cw, iw)
예제 #2
0
    'Circular coil field in x-z plane, generated by a circular coil in the x-y plane'
)
plt.streamplot(plasma.x.value, plasma.z.value, U, W)

############################################################
# a circular wire can be described as parametric equation and converted to GeneralWire

gw_cw = cw.to_GeneralWire()

# the calculated magnetic field is close
print(gw_cw.magnetic_field([0, 0, 0]) - cw.magnetic_field([0, 0, 0]))

############################################################
# A infinite straight wire

iw = magnetostatics.InfiniteStraightWire(np.array([0, 1, 0]),
                                         np.array([0, 0, 0]) * u.m, 1 * u.A)
print(iw)

############################################################
# initialize a a plasma, where the magnetic field will be calculated on
plasma = Plasma3D(domain_x=np.linspace(-2, 2, 30) * u.m,
                  domain_y=np.linspace(0, 0, 1) * u.m,
                  domain_z=np.linspace(-2, 2, 20) * u.m)

# add the infinite straight wire field to it
plasma.add_magnetostatic(iw)

X, Z = plasma.grid[0, :, 0, :], plasma.grid[2, :, 0, :]
U = plasma.magnetic_field[0, :,
                          0, :].value.T  # because grid uses 'ij' indexing
W = plasma.magnetic_field[2, :,