Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modélisation d'un laser

12 juin 2018 à 11:22:26

Bonjour,
je dois réaliser un certain nombre de modélisation afin d'extraire les caractéristique nécessaire à la réalisation d'un laser. La programmation est réalisée sous python. Mon problème est le suivant: les paramètre A et alphaS (l 39-41) génèrent trop de divergence. S'ils sont supérieur à 10^(-30), la valeur de S dépasse allègrement les 10^300, tandis que si les coefficient sont inférieur à 10^-30, S passe en dessous de -10^250.

from math import *
from cmath import *
from matplotlib.pyplot import *

'''Constant physics '''
kb=1.38064852*10**(-23)  #J/K
h=6.62607004*10**(-34)   #J*s or kg*m**2/s
hbar=h/(2*pi)            #J*s or kg*m**2/s
c=299792458              #m/s
e=1.6*10**(-19)          #C    
eV=1.60218*10**(-19)     #J
me=9.1094*10**(-31)      #kg


'''Factor to adjust'''
#Physical
T=300        #temperature                                       K
Ec=3.0*eV    #! Energie level of the conductive band            J
Ev=1.0*eV    #! Energie level of the valence band               J
Fc=2.5*eV    #! Fermi level, N-doped part                       J
Fv=2.0*eV    #! Fermi level, P-doped part                       J
mu1=1        #! refractive index of the active layer
mu2=2        #! refractive index of the layer surronding the active layer
w= 10**(-5)  #width of the refractive layer                     m   (x axis) -
dh=10**(-5)  #thickness of the mayer on top of the active layer m   (z axis) |
d= 10**(-5)  #thickness of the active layer                     m   (z axis) |
db=10**(-5)  #thickness of the mayer below the active layer     m   (z axis) |
l= 10**(-4)  #length of the chip                                m   (y axis) /
R1=0.5       #reflection coefficient face 1
R2=0.5       #reflection coefficient face 2

#empirical coefficients
A=4*10**(-30)            #Proportionality constante of stimulated emission
m=1             #index of proportionality between the length of the cavity and the phase constant
alphaS=4*10**(-29)     #losses in the cavity
C=1*10**(-29)   #coefficient of non radiative combination 
ce=0.030        #coefficient de poids effectif de l'electron
ct=0.40         #coefficient de poids effectiff des trous


'''Variables and table of values'''
#simulation wise
t=0.2         #total time of simulation                           ns 
N=10        #Number of iteration during the simulation
dt=t/N      #time step

#physicals
S=10    #photons
n=10    #electron density in the active layer
                            #p=10
def I(TeMpS):
    if (TeMpS<=t*0.001):
        return (0)
    elif (TeMpS<=0.2*t):
        return (0.01)
    else:
        return (0.05)    

#table
tabS=[S]
tabS2=[S**2]
tabn=[n]
tabt=[0]
tabI=[0]


'''Intermediate function'''
#energie gap
Eg=Ec-Ev  
#frequency of the laser
f=Eg/h
#masse effective de l'electron
meff=me*ce
#masse effective des trous
mh=me*ct
#optical path/actual lenght for the light
L=l*mu1
#Volume of the structure
V=w*l*(dh+d+db)
#probability of electrons in the conduction band
fc=1/(1+exp((Ec-Fc)/(kb*T))) 
#probability of electrons in the valence band
fv=1/(1+exp((Ev-Fv)/(kb*T))) 
#electron state density in conduction band 
Roc=(1/2*pi**2)*((2*meff/hbar**2)**(3/2))*((Ec-Eg)**(0.5))
#electron state density in valence band
Rov=(1/2*pi**2)*((2*mh/hbar**2)**(3/2))*((-Ev)**(0.5))
#net rate of stimulated emission
rst=(A*Roc*Rov*(fc-fv)) 
#wave length
Lambda=(h*c/(Ec-Ev)) 
#confinement factor
Gamma=(1/(1+(1/(2*(pi**2)*(mu1**2-mu2**2)*(d/Lambda)**2)))) 
#inversion factor
nsp=(fc*(1-fv)/(fc-fv)) 
#stimulated emission coefficient (Gamma took in account)
Rst=(rst*Gamma)
#spontaneous emissions
Rsp=(nsp*Rst) 
#non radiative recombination
Rnr=C*n*n*n  #i supposed that n~p in the active layer
#phase constant
Beta=(m*pi/L)
#refractive index of material
mue=(c*Beta/(2*pi*f))  
#life time of a photon in the cavity (without the variation of index of the cavity
TauPhM1prime=((c/mue)*(alphaS+log(1/(R1*R2))/(2*L))) 

'''#refractive index of material (with dispersion)
def mueBar(ftdt,ft,muetdt,muet):
    return (muetdt+ftdt*(muetdt-muet/(ftdt-ft)))
#life time of a photon in the cavity
def TauPhM1(ftdt,ft,muetdt,muet):
    return ((c/mueBar(ftdt,ft,muetdt,muet))*(alphaS+ln(1/(R1*R2))/(2*L)))'''


'''Differential equations/programme'''
it=0
i=0
while it<=t:
    print(i)
    i+=1
    dS=S*(Rst-TauPhM1prime)+Rsp
    dn=(I(it)/e*V)-Rsp-Rnr-Rst*(S/V)
    S+=dS
    n+=dn
    tabS.append(S)
    #tabS2.append(S.real**2+S.imag**2)
    tabn.append(n)
    tabI.append(I(it))
    it+=dt
    tabt.append(it)

figure(1)
subplot(211)
plot(tabt,tabI, 'r')
subplot(212)
plot(tabt,tabS,'b')
show()

Les équations utilisées sont les suivantes:

Bien à vous.

Matthias



  • Partager sur Facebook
  • Partager sur Twitter
12 juin 2018 à 11:31:04

Et qu'est-ce que tu veux qu'on fasse?
  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2018 à 23:06:38

Bin déjà une remarque constructive.

Je me rends compte cependant que je ne suis peut-être pas au bon endroit pour régler le problème, puisqu'il provient sans doute des équations et non pas d'une erreur de programmation comme je le pensais initialement.
Je vais clore le sujet de toute façon, je suis passé à un autre modèle.

  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2018 à 23:49:31

Bonjour,

Merci de rester courtois, la communauté essaie de vous aider, je ne sais pas si votre message était à prendre au second degré mais il n'avais pas l'air d'en avoir la vocation a mes yeux et il me parais un peu agressif.

Ceci dit, pour avoir des remarques pertinentes vous devriez commencer par poster au bon endroit, si vous pensez que votre problème viens d'une erreur de formule et pas de code et que vous vous êtes trompé de catégorie, vous pouvez demander a un modérateur de le déplacer dans la section approprié, tout le monde a le droit de se tromper.

Cordialement.

-
Edité par cyp86 23 juin 2018 à 23:53:31

  • Partager sur Facebook
  • Partager sur Twitter

Am I dev ? 0x90

25 juin 2018 à 9:23:34

Bonjour,

Je pense être aussi courtois que mon interlocuteur. Si de l'agressivité à été perçu, il serait peut-être bon d'en questionner la cause plutôt que ses conséquences. Vous admettrez que la réponse de "thetui" manque au moins de tact.
Si j'ai posté le sujet ici, c'est justement parce que je pensais que l'erreur venait du code et non pas des mathématique. En ce sens, je pense que mon choix faisait sens. Ma remarque à posteriori viens d'une réflexion réalisé plusieurs jours après l'envoie du message initiale. Cependant, j'admets avoir relu le code seul, je suis donc peut-être dans l'erreur.

Bien à vous.
  • Partager sur Facebook
  • Partager sur Twitter
25 juin 2018 à 10:01:52

Tu explicites ton problème sans expliciter ce que tu cherches, pour quelqu'un qui n'a pas le nez dedans ton post est incompréhensible, thetui te demande ce que tu cherches à faire, aucun raison pour se montrer agressif. Ceci dit si tu veux de l'aide sur ton problème qui semble un brin compliqué n'hésite pas à donner le maximum de détails pour que tout le monde puisse le comprendre !
  • Partager sur Facebook
  • Partager sur Twitter
25 juin 2018 à 12:00:00

Bonjour,

J'admet que je pensais avoir bien explicité mon problème. Je vais donc essayer de le reformuler:
Mes deux coefficients génère de la divergence, alors que normalement le système ne devrait générer aucune réponse si le courant I est nul. (I étant la variable de contrôle du système). Je veux donc une réponse nulle. D'autre part, le courant n'a pas assez d'impacte, et je ne sais pas à quoi c'est du. J'aimerais savoir si tout ces problèmes viennent d'une erreur de programmation ou si tout est en ordre.
Je ne sais pas quel autre détail je pourrais donner, et je suis désolé si ce poste parait obscure.

Ce n'est pas mon premier poste, et bien sur, il m'est déjà arrivé de ne pas donner assez d'informations. Mais les formulations des réponses étaient autrement plus courtoises, et c'est ce qui m'a fait réagir.

Bien à vous.

  • Partager sur Facebook
  • Partager sur Twitter
25 juin 2018 à 14:05:36

Bonjour,

Je suis desole si mon premier post t'as semblé agressif ou s'il manquait de tact.

Mais tu es ici sur un forumm d'info et tu te présente en te plaignant d'une divergence qui a (vraisemblablement) une cause mathematique.

Je me permettait donc de te demander ce que tu attendais de nous.

Soit tes formules sont fausses et je ne peux définitivement pas t'aider.

Soit tu rencontres un problème purement informatique et je peux (peut-etre) t'aider.

Encore désolé si j'ai pu choquer/ donner l'air d'etre irrespectueux.

  • Partager sur Facebook
  • Partager sur Twitter
25 juin 2018 à 14:24:18

N'en parlons plus, fin du débat, tout le monde est quitte. Maintenant si quelqu'un sais comment régler ce problème, qu'il n'hésite pas a se manifester parce-que ce n'est pas DU TOUT dans mes cordes :lol:.

(Et du-coup @MatthiasPac, tu peu enlever le résolu sur ton sujet et le basculer dans mathématique si tu veux .. :))

Cordialement.

  • Partager sur Facebook
  • Partager sur Twitter

Am I dev ? 0x90

26 juin 2018 à 8:49:02

Bonjour,

Tout d'abord, j'aimerais te présenter mes plus plates excuses, thetui, concernant ma réaction emportée.

En ce qui concerne le déplacement, je veux bien. Je vais marquer ce message, si j'ai bien compris, c'est la procédure à suivre.

Bien à vous

  • Partager sur Facebook
  • Partager sur Twitter
26 juin 2018 à 9:35:39

Sujet déplacé.

Et ça fait plaisir à lire, des échanges polis et des excuses pour emportement, merci à vous d'être des humains décents :)

Bonne journée !

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)

28 juin 2018 à 10:49:02

Bonjour, 

Quel modèle utilises-tu? effectivement, il y a au moins une dizaine de modèle possible pour un laser et, effectivement aussi, comme les systemes différentiels sont non-linéaires, tu as des bifurcations par rapport au paramètre utilisé (je ne sais pas quel est ton niveau de compréhension des laser). Si tu ne le sais pas encore, suivant la valeur des parametres, tu peux avoir des comportements avec faisceaux continu, ou du pulsing, voir même des états d'équilibre.... D'ou ma question :pourquoi ce modèle? As-tu réellement besoin de tant de "clarté" dans ton modèle? je veux dire : ne peux-tu pas utiliser ton modèle à un niveau supérieur, c'est-a-dire en grey-box par rapport à des paramêtres comme les valeurs de tensions etc... Tu peux trouver des bons modèles avec seulement 5-6 paramètres, ce qui te simplifierait déja le problème. 

Amicalement, 

J-C

  • Partager sur Facebook
  • Partager sur Twitter
28 juin 2018 à 12:13:23

Bonjour

Je ne sais pas si le modèle que j'utilise a un nom. Pour faire simple, je suis en stage, j'ai des connaissance basique sur la physique des semi-conducteurs, (statique et dynamique) et on m'a demandé de modéliser un laser. Comme je ne savais pas trop par où commencer, mon tuteur m'a prêté Laser diode modulation and noise de K.Petermann, où j'ai lut/appris les principes qui me manquait. (J'ai aussi lutIntroduction to solid state physic de c.Kittel pour certaines équations qui me manquaient). Bien sur, les équations ci-dessus viennent de là, et même s'il existe des paramètres intermédiaires, j'ai préféré expliciter le plus possibles, afin de me raccrocher à la physique que je connaissais (celle des SC.) C'est vrai que je pourrais utiliser un système de boite noire, mais je ne possède pas les valeurs à donner à ces coefficients.

Bien à vous.

Matthias

  • Partager sur Facebook
  • Partager sur Twitter
28 juin 2018 à 12:42:04

Re-bonjour, 

Oui effectivement c'est un cas où il est délicat de dire à son tuteur qu'on a pas utilisé la documentation qu'il nous avait donné à lire... Quand vous parlez de divergence, c'est bien de divergence numérique, donc d'instabilité? je vois que vous utilisez de l'Euler explicite, vous êtes certain d'être dans la région de convergence?  pas sur qu'un pas de 0.02 soit suffisant, surtout pour ce type de modèle... je vous conseillerais donc soit de diviser le pas par 1000, ou d'utiliser la toolbox de Python prévue pour les equa diff, et de voir s'il y a un mieux. Si cela est toujours problèmatique, c'est p-e que vous n'êtes tout simplement pas dans le domaine de modélisation, dans l'article, ne parle-t-il pas d'un range à ne pas sortir quant aux paramètres. Enfin, comme je vous l'ai dit, p-e est-ce une histoire de bifurcation... il faudra alors pe réaliser une étude de bifurcation pour justifier les problèmes que vous avez rencontré. 

Bon travail, 

jc

  • Partager sur Facebook
  • Partager sur Twitter
29 juin 2018 à 9:24:31

Bonjour,

Je suis certain d'être dans une région de convergence. En effet, un laser à besoin d'une source d'énergie pour s'activer. Ainsi, si le courant est nul (ce qui est le cas avec certains des réglages que j'ai utilisés), la quantité de porteurs de charge devrait rester stable, et celle de photons, nulle.

Le livre ne parle pas de paramètre limites. Même si c'était le cas, j'ai utilisé les dimension d'un laser qui existe déjà pour tester mon modèle. (présenté dans l'article: 40-Gb/s Direct modulation with high extinction ratio operation of 1,3-µm InGaAlAs multiquantum well ridge waveguide distributed feedback lasers, de K.Nakahara, T.Tsuchiya,T.Kitatani,K.Shinoda,T.Taniguchi,T.Kikawa,M.Aoki et M.Mukaikubo).

J'ai sans doute mal compris, mais je tiens à préciser que j'ai lu toute la documentation qui m'a été fourni, en plus de mes recherches personnelles dans le domaine.

Merci pour ces conseils, je vais les appliquer, et commencer par tenter de réduire le pas.

Bien à vous.

  • Partager sur Facebook
  • Partager sur Twitter