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)
'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, :,