Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes



  1. #1
    Metwurchr

    Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes


    ------

    Bonjour,
    Je tente de simuler un champ magnétique généré par une boucle de courant sur python.
    image_2021-06-06_161245.png
    J'ai ces équations dans la base sphérique que je veux passer dans la base cartésienne (O,ex,ey,ez)

    J'ai donc transformé mes paramètre r, phi et theta en fonction de x,y et z :
    image_2021-06-06_161701.png

    Et ensuite j'ai écrit mes vecteurs de la base sphérique en fonction de ex, ey et ez
    image_2021-06-06_161844.png

    Pour finalement obtenir mes composantes Bx, By et Bz en fonction de r, theta et phi (puis dans le programme en fonction de x,y et z)

    image_2021-06-06_162035.png

    J'imagine que je ne suis pas le premier à faire ça et j'aimerais savoir si mon raisonnement est bon.
    Je pense qu'il y a une erreur parce que le champ magnétique en 3d ne ressemble pas au champ magnétique auquel on pourrait s'attendre.

    image_2021-06-06_162246.png

    -----

  2. #2
    gts2

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Bonjour,

    Qu'utilisez-vous en Python pour calculer ?

    Autrement dit si tan(\phi)=y/x alors \phi=atan2(y,x), atan2 renvoyant entre -pi et +pi, contrairement à tan-1 qui est à image dans -pi/2 +pi/2..

  3. #3
    Metwurchr

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Alors j'utilise np.arctan(y/x) qui renvoie effectivement dans -pi/2, pi/2
    Par contre je ne suis pas sûr de comprendre cette histoire de atan2(y,x)

  4. #4
    obi76

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    atan2(y,x) vous donne le "vrai" angle entre -pi et pi, en prenant en compte le signe de y. En fait le ratio y/x ne vous permet pas de savoir si vous êtes entre -pi/2 et pi/2 ou entre pi/2 et 3pi/2. Pour ça il faut prendre en compte le signe de y, ce que atan ne fait pas, mais ce que atan2 fait (c'est d'ailleurs pour ça que les arguments y et x dans atan2 sont séparés, et pas dans atan où seul le ratio y/x est l'argument d'entrée, ce qui ne permet pas à la fonction de savoir si y est positif ou négatif).

    C'est un piège assez courant quand on code de la trigo.
    \o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/

  5. A voir en vidéo sur Futura
  6. #5
    Metwurchr

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Alors j'ai du modifier quelques trucs dans mon programme, notamment le fait que math.atan ne gère pas les array contrairement à np.arctan mais bref j'ai reussi.
    Ca inverse effectivement la moitié de mon plot3D.
    Nom : image_2021-06-06_210014.png
Affichages : 449
Taille : 94,6 Ko
    Honnêtement ça me semble pas mal (mieux qu'avant). Je ne sais pas trop si c'est juste n'hésitez pas à donner votre avis
    Au fait je l'ai pas précisé dans le premier message mais les vecteurs sont normalisés pour qu'on y voit quelque chose.

  7. #6
    gts2

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Bonjour,

    Vu que le problème est de symétrie de révolution autour l'axe porté par le moment magnétique, faites deux ou trois coupes dans un plan contenant cet axe, cela sera plus lisible pour vérifier la cohérence.

  8. #7
    Metwurchr

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Alors ça c'est une idée super intelligente !
    Nom : image_2021-06-06_220316.png
Affichages : 445
Taille : 22,7 Ko
    ça m'a tout l'air d'être cohérent en tout cas
    Merci beaucoup pour votre aide

  9. #8
    obi76

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    En tous cas la coupe parait nickelle. Si c'est pareil dans tous les plans possédant cet axe, c'est tout bon (regardez dans le plan perpendiculaire)
    \o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/

  10. #9
    Metwurchr

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Alors j'avoue que je suis un peu déçu par le plan donné par la droite d'équation X=Y et Z
    Nom : image_2021-06-06_224146.png
Affichages : 459
Taille : 32,3 Ko

  11. #10
    obi76

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Donc il reste un problème...

    Cette histoire de atan2, je pense, permettrait d'améliorer les choses, testez-le...
    \o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/

  12. #11
    Metwurchr

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    C'est déjà fait ça, et effectivement ça a amélioré les choses.
    D'ailleurs voici ma fonction qui transforme mes coordonnées sphériques en cartésiennes :
    Nom : image_2021-06-06_224539.png
Affichages : 414
Taille : 6,0 Ko

    Je vais essayer de jouer sur d'autres paramètres mais là je sèche un peu
    Dernière modification par Metwurchr ; 06/06/2021 à 22h47.

  13. #12
    obi76

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Là ce soir je n'ai pas la motivation, mais si vous mettiez tout le code, je regarderai peut-être ça demain, sinon d'autres pourront regarder d'ici là...
    \o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/

  14. #13
    Metwurchr

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    J'ai créer un google collab pour vous partager le code
    Je vais continuer à chercher également de mon côté
    https://colab.research.google.com/dr...r9?usp=sharing
    merci pour l'aide
    Dernière modification par Metwurchr ; 06/06/2021 à 23h00.

  15. #14
    obi76

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    si vous aviez autre chose que gogole (qui est blacklisté chez moi, et pour cause...) ce serait parfait

    Ce ne sont pas les alternatives libres qui manquent
    Dernière modification par obi76 ; 06/06/2021 à 23h45.
    \o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/

  16. #15
    Metwurchr

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Bon ce sera pas très beau sans les couleurs mais voila le code
    Code:
    import numpy as npimport matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d.axes3d import Axes3D
    import math
    
    
    mu0 = 4*np.pi*10**-7
    S = 0.45 #surface d'une spire
    n = 125 #nombre de spires
    t= 5#on définit le temps à 5 secondes dans cette simulation pour avoir un courant maximum
    
    
    def I(t): #Courant dans la bobine. Une impulsion de 0.2s à 457kHZ toutes les secondes
        t = t%1
        if t <=0.2:
            return 3*np.cos(2*np.pi*457*10**3*t)
        else :
            return 0
        
    def cartSphe(x, y, z): #transformation des coordonnées cartésiennes en sphérique
        r = np.sqrt(x**2+y**2+z**2)
        theta = math.acos(z/r)
        phi = math.atan2(y,x)
        return r,theta,phi
    
    
    def spheCart(r, theta, phi, Br, Btheta): #transformation des coordonnées sphériques en cartésiennes
        Bx = Br*np.sin(theta)*np.sin(phi)+Btheta*np.cos(theta)*np.cos(phi)
        By = Br*np.sin(theta)*np.cos(phi)+Btheta*np.cos(theta)*np.sin(phi)
        Bz = Br*np.cos(theta)-Btheta*np.sin(theta)
        return Bx,By,Bz
        
    M = lambda t: n*S*I(t) #Moment magnétique
        
    
    
    def champ(x, y, z): #définition du champ magnétique dans les coordonnées sphériques
        r,theta,phi = cartSphe(x, y, z)
        Br = (mu0*M(t)*np.cos(theta))/(2*np.pi*r**3)
        Btheta = (mu0*M(t)*np.sin(theta))/(4*np.pi*r**3)
        Bphi = 0
        return spheCart(r, theta, phi, Br, Btheta)
    
    
    """
    Affichage des résultats
    """
    
    
    
    
    fig = plt.figure()
    ax = Axes3D(fig)
    
    
    
    
    LX, LY, LZ = 10,10,10  #paramètres de maillage xyz
    gridwidth=2 # où on calcule les points
    X, Y, Z= np.meshgrid(np.arange(-LX, LX, gridwidth), np.arange(-LY, LY,gridwidth),np.arange(-LZ, LZ, gridwidth) ) #Génération de maillage
    
    
    R = np.sqrt(X**2+Y**2+Z**2)
    #Coordonnées de position et charge de la charge ponctuelle
    X1,Y1, Z1=0,0,0
    Q1=1
    R1=np.sqrt((X-X1)**2+(Y-Y1)**2+(Z-Z1)**2)
    ax.scatter3D(X1,Y1,Z1,"^", color='blue')
    
    
    
    
    U = np.zeros((LX,LY,LZ));V = np.zeros((LX,LY,LZ));W = np.zeros((LX,LY,LZ)) #Remplissage des vecteurs
    for L in range(len(X)):
        for l in range(len(X[L])):
            for h in range(len(X[L][l])):
                U[L,l,h],V[L,l,h],W[L,l,h] = champ(X[L,l,h],Y[L,l,h],Z[L,l,h])
                
    
    
    
    
    
    
    ax.quiver(X, Y, Z, U, V, W, color='red',length=1, normalize=True)
    
    
    ax.set_xlim([-LX, LX])
    ax.set_ylim([-LY, LY])
    ax.set_zlim([-LZ, LZ])
    plt.title('Modélisation du champ magnétique en 3D')
    ax.set_xlabel('axe X')
    ax.set_ylabel('axe Y')
    ax.set_zlabel('axe Z')
    plt.savefig('champ magnétique.png', dpi = 500)
    plt.show()

  17. #16
    gts2

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Avec

    Bx = Br*np.sin(theta)*np.cos(phi)+B theta*np.cos(theta)*np.cos(phi )
    By = Br*np.sin(theta)*np.sin(phi)+B theta*np.cos(theta)*np.sin(phi )

    Cela donne :

    Nom : champ magnétique.jpg
Affichages : 463
Taille : 56,4 Ko

  18. #17
    Metwurchr

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Vous avez parfaitement raison, c'est ce que je dois faire.
    Mais par contre cela ne change rien sur le plan diagonal
    Nom : image_2021-06-07_100600.png
Affichages : 421
Taille : 31,1 Ko
    Dernière modification par Metwurchr ; 07/06/2021 à 10h09.

  19. #18
    Metwurchr

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    ah quoique
    Ca a l'air pas mal comme ça en fait
    Nom : image_2021-06-07_103106.png
Affichages : 467
Taille : 57,6 Ko

  20. #19
    Metwurchr

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Je viens de tout retester, ça marche parfaitement, c'était effectivement le problème de l'atan2 et une erreur de calcul qui m'a fait inversé un cos et un sin.
    Merci à tout les deux pour votre aide

  21. #20
    gts2

    Re : Champ magnétique généré par un dipôle magnétique en coordonnées cartésiennes

    Bonne continuation.

Discussions similaires

  1. Champ magnétique d'un dipôle
    Par invite8528a881 dans le forum Physique
    Réponses: 0
    Dernier message: 22/05/2019, 17h56
  2. Champ magnétique d'un dipôle
    Par invite70e181ce dans le forum Physique
    Réponses: 3
    Dernier message: 18/06/2015, 06h55
  3. Réponses: 36
    Dernier message: 28/06/2014, 15h31
  4. Réponses: 3
    Dernier message: 07/02/2005, 16h17