Magpylib versión: 5.2.3
Modelos simples de una bobina
En Magpylib 5 conviene trabajar en SI:
En los gráficos mostraremos a menudo:
Además:
magpy.current.Loop → magpy.current.Circlemagpy.current.Line → magpy.current.Polylinepixi installpixi run labpixi run render-slidesCollectionLa aproximación más simple consiste en representar la bobina como varias espiras circulares iguales distribuidas sobre el eje z.
corriente = 10.0 # A
diametro = 0.010 # m
largo = 0.016 # m
n_espiras = 16
bobina_simple = magpy.Collection()
for z in np.linspace(-largo/2, largo/2, n_espiras):
espira = magpy.current.Circle(
current=corriente,
diameter=diametro,
position=(0, 0, z),
)
bobina_simple.add(espira)
print('Objeto creado:', bobina_simple)
print('Cantidad de espiras:', len(bobina_simple.children))Objeto creado: Collection(id=2199025618768)
Cantidad de espiras: 16
PolylineAhora representamos el conductor como una hélice.
t = np.linspace(0, n_espiras*2*np.pi, 1200)
radio = diametro/2
z_helice = np.linspace(-largo/2, largo/2, t.size)
vertices = np.c_[
radio*np.cos(t),
radio*np.sin(t),
z_helice,
]
bobina_helicoidal = magpy.current.Polyline(
current=corriente,
vertices=vertices,
)
print('Objeto creado:', bobina_helicoidal)
print('Cantidad de vértices usados:', len(vertices))Objeto creado: Polyline(id=2199025630800)
Cantidad de vértices usados: 1200
xs = np.linspace(-0.02, 0.02, 41)
zs = np.linspace(-0.02, 0.02, 41)
grid = np.array([[(x, 0, z) for x in xs] for z in zs])
B_simple = magpy.getB(bobina_simple, grid)
B_helice = magpy.getB(bobina_helicoidal, grid)
Bamp_simple = np.linalg.norm(B_simple, axis=2)
Bamp_helice = np.linalg.norm(B_helice, axis=2)
Bamp_simple_norm = Bamp_simple / Bamp_simple.max()
Bamp_helice_norm = Bamp_helice / Bamp_helice.max()
X_mm = grid[:, :, 0] * 1000
Z_mm = grid[:, :, 2] * 1000xzBz(z)puntos_medicion = np.array([
(0.0, 0.0, -0.020),
(0.0, 0.0, -0.010),
(0.0, 0.0, 0.000),
(0.0, 0.0, 0.010),
(0.0, 0.0, 0.020),
])
B_simple_pts = magpy.getB(bobina_simple, puntos_medicion)
B_helice_pts = magpy.getB(bobina_helicoidal, puntos_medicion)
tabla = pd.DataFrame({
'z [mm]': puntos_medicion[:, 2]*1000,
'Bz simple [mT]': B_simple_pts[:, 2]*1000,
'Bz helicoidal [mT]': B_helice_pts[:, 2]*1000,
})
tabla| z [mm] | Bz simple [mT] | Bz helicoidal [mT] | |
|---|---|---|---|
| 0 | -20.0 | 0.401836 | 0.385087 |
| 1 | -10.0 | 4.021168 | 3.719520 |
| 2 | 0.0 | 10.168379 | 10.658014 |
| 3 | 10.0 | 4.021168 | 3.719520 |
| 4 | 20.0 | 0.401836 | 0.385087 |
Objeto creado: Cylinder(id=2199047366352)
Polarización [T]: [0. 0. 1.2]
Dimensiones [m]: [0.015 0.005]
Posición [m]: [0. 0. 0.]
Collection permite construir una bobina por superposición de espiras.Polyline permite modelar una geometría más detallada.