Partage
  • Partager sur Facebook
  • Partager sur Twitter

Propagation d'une onde plane monochromatique

    18 janvier 2019 à 16:49:43

    Bonjour, 

    Suite à un projet, je souhaite modéliser la propagation d'une onde plane monochromatique (puis un faisceau gaussien). 

    Ainsi, par soucis de simplification, j'ai discrétisé les équations de Maxwell par rapport à l'espace et au temps. (ci-joint une photo).

    Le but est d'obtenir 3 matrices (Ex, Ey, Hz) pour un temps t, et renouveler l'opération entre t=0 ( lorsqu'on allume la source lumineuse) jusqu'a un temps tn (pas du temps = dx/(2*c) avec c la célérité de la lumière dans le vide).  On prend dx=dy=longueur d'onde(=633nm)/10. Les dérivées ne sont pas calculables sur les bords donc on considère le champ nul (cas du conducteur parfait)

    Cependant, je rencontre des problèmes : 

    Tout d'abord, lorsque je remplis les matrices, je rencontre un problème pour remplir Ex,  car d'après son expression je dois utiliser Ex au temps précédent (celui ci vaut 0) ainsi que Hz dans deux positions différentes mais ayant la même valeur (liée à la source) donc la valeur de Ex est nulle et je n'ai pas d'évolution au cours du temps.
    Pour Ey, le remplissage s'effectue correctement mais j'obtiens des valeurs négatives (ci-joint notre code).
    Et enfin, je ne vois pas comment une périodicité peut apparaitre sur un affichage à un instant t. Cette périodicité ne devrait-elle pas se traduire par un affichage identique à l'instant t et à l'instant t+T plutôt que sur un seul affichage à un instant fixé ? (car on considère la propagation d'une onde plane , dont l'expression est en sin(wnt) avec n = l itération )

    Je remercie toute personne qui se penchera sur ce problème...

    ci-joint le code : 

    # In[7]:
    
    
    from math import *
    import numpy as np
    import matplotlib.pyplot as plt 
    
    #Définition conditions initiales 
    max=50
    Ex=np.zeros((max,max))
    Ey=np.zeros((max,max))
    Hz=np.zeros((max,max))
    
    #Definitions paramètres 
    lambdaa=633e-9
    deltaxy=lambdaa/10
    deltat=deltaxy/(2*3e8)
    epsilon=8.85e-12 * 1.52**2
    mu=4*pi*e-7
    
    Ho=1
    Eo=1
    w=2*pi*(3e8)/lambdaa
    c=3.00e8
    
    def progressionmat(Ex,Ey, Hz):
        for n in np.arange(1,50):   #(deltaxy/(2*c))):
            for j in range (0,max):
                Hz[0][j]=Ho*sin(w*n*deltat)
                #print(Hz)
                Ex[0][j]=Eo*sin(w*n*deltat)
                #print(Ex)
                Ey[0][j]=Eo*sin(w*n*deltat)
                #print(Ey)
                
            for i in range(1, max):
                for j in range(0, max):
                    Ex[i][j]=Ex[i][j]+(Hz[i][j]-Hz[i][j-1])*deltat/(deltaxy*epsilon)
                    #print(Ex)
                    Ey[i][j]=Ey[i][j]+(Hz[i-1][j]-Hz[i][j])*(deltat/(deltaxy*epsilon))
                    #print(Ey)
                for j in range(0, max):
                    Hz[i][j]= Hz[i][j]+((Ey[i][j]-Ey[i-1][j])/deltaxy-(Ex[i][j]-Ex[i][j-1])/deltaxy)*(-deltat/mu)
                    
            #a,b,c = progressionmat(Ex,Ey,Hz)
            #conversion_matrice(c)
            #affiche_matrice(c)
        return Ex, Ey, Hz
                    
    a,b, c = progressionmat(Ex,Ey, Hz) 
    print (b)
    
    def conversion_matrice(M):
        for i in range(0, max-1):
            for j in range(0, max-1):
                M[i][j]=log(abs(M[i][j]))
                    
                    
    def affiche_matrice(M):
        plt.pcolor(c)    
        plt.colorbar()
        plt.show()
    
    conversion_matrice(c)
    affiche_matrice(a)
    affiche_matrice(b)
    affiche_matrice(c)
    
    
    



    -
    Edité par AlBrouillard 19 janvier 2019 à 10:04:03

    • Partager sur Facebook
    • Partager sur Twitter

    Propagation d'une onde plane monochromatique

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown