Example #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)
"""

import plasmapy as pp
from plasmapy.physics import magnetostatics
from plasmapy.classes.sources import Plasma3D
import numpy as np
import astropy.units as u
import matplotlib.pyplot as plt
import itertools

############################################################
# Some common magnetostatic fields can be generated and added to a plasma object.
# A dipole

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

############################################################
# 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 dipole field to it
plasma.add_magnetostatic(dipole)

X, Z = plasma.grid[0, :, 0, :], plasma.grid[2, :, 0, :]