# volume to examine volume_corner1 = (0, 0, 0) volume_corner2 = (.12, .12, .05) grid3D = np.mgrid[volume_corner1[0]:volume_corner2[0]:resolution, volume_corner1[1]:volume_corner2[1]:resolution, volume_corner1[2]:volume_corner2[2]:resolution] grid2D = np.mgrid[volume_corner1[0]:volume_corner2[0]:resolution / 2.0, volume_corner1[1]:volume_corner2[1]:resolution / 2.0, 0:1] # create list of grid points points3D = np.vstack(map(np.ravel, grid3D)).T points2D = np.vstack(map(np.ravel, grid2D)).T # calculate B field at given points bs = biotsavart.BiotSavart(wire=w1) bs.AddWire(w2) B = bs.CalculateB(points=points3D) Babs = np.linalg.norm(B, axis=1) B2D = bs.CalculateB(points=points2D) B2Dabs = np.linalg.norm(B2D, axis=1) B2Dabs = B2Dabs.clip(0, 0.01) B2Dabsgrid = B2Dabs.reshape(grid2D.shape[1:-1]).T # draw results # prepare axes a = vv.gca() a.cameraType = '3d'
# some basic calculations for testing import numpy as np import visvis as vv import wire import biotsavart # simple solenoid w = wire.Wire(path=wire.Wire.SolenoidPath(), discretization_length=0.01, current=100).Translate((0.1, 0.1, 0)).Rotate(axis=(1, 0, 0), deg=45) sol = biotsavart.BiotSavart(wire=w) resolution = 0.02 volume_corner1 = (-.2, -.3, -.2) volume_corner2 = (.3, .3, .4) grid = np.mgrid[volume_corner1[0]:volume_corner2[0]:resolution, volume_corner1[1]:volume_corner2[1]:resolution, volume_corner1[2]:volume_corner2[2]:resolution] # create list of grid points points = np.vstack(map(np.ravel, grid)).T # calculate B field at given points B = sol.CalculateB(points=points)
# some basic calculations for testing import numpy as np import visvis as vv import wire import biotsavart wirelist = [] # simple wire for i in range(21): wirelist.append(wire.Wire(path=wire.Wire.SinusoidalCircularPath(radius=0.5,amplitude=0.0,frequency=12.0,pts=200), discretization_length=0.01,current=2000).Translate([0.0,0.0,-0.5+i*0.05])) sol = biotsavart.BiotSavart(wire=wirelist[0]) for i in range(1,21): sol.AddWire(wirelist[i]) resolution = 0.1 volume_corner1 = (-0.9, -0.9, -0.9) volume_corner2 = (0.9, 0.9, 0.9) grid = np.mgrid[volume_corner1[0]:volume_corner2[0]:resolution, volume_corner1[1]:volume_corner2[1]:resolution, volume_corner1[2]:volume_corner2[2]:resolution] # create list of grid points points = np.vstack(map(np.ravel, grid)).T # calculate B field at given points B = sol.CalculateB(points=points)