Simulation au microscope électronique en Python: méthode multi-coupes (1)

Ça va commencer! Bonjour. Dans la continuité de la dernière fois (même si c'était il y a longtemps), cette fois est également l'analyse de la structure cristalline avec Python. Le code est GitHub [^ 1]

Article suivant: Simulation au microscope électronique en Python: méthode multi-coupes (2)

Remarque: si vous simulez comme un passe-temps (ration de passe-temps), il est difficile de déterminer si le résultat est vraiment correct, et le résultat affiché ici peut ne pas être physiquement correct. Je vous serais reconnaissant si vous pouviez signaler des erreurs.

microscope électronique

Un microscope électronique est un appareil qui vous permet de voir et d'analyser des objets minuscules en frappant un faisceau d'électrons contre un objet. Il existe d'autres méthodes pour observer des objets minuscules tels que les microscopes optiques et la diffraction des rayons X, qui ont été discutés dans l'article précédent, mais les faisceaux d'électrons ont des longueurs d'onde plus courtes que les rayons visibles et les rayons X, et présentent une résolution plus élevée. Je vais. Profitant de sa résolution, il est utilisé dans diverses situations telles que l'analyse structurale en physique physique et l'observation des tissus biologiques en biochimie. Il existe trois principaux types de microscopes électroniques: le microscope électronique à balayage (SEM), le microscope électronique à transmission (TEM) et le microscope électronique à transmission à balayage (STEM).

Microscope électronique à transmission (TEM)

Un microscope électronique à transmission (TEM) est un microscope qui irradie un objet avec des électrons et crée une image avec les électrons transmis. La structure interne est étudiée à partir de l'intensité du faisceau d'électrons transmis (onde transmise), et la structure cristalline est identifiée à partir de la diffraction (onde diffusée) du faisceau d'électrons. En tant que développement ultérieur, il existe une méthode appelée microscopie électronique à haute résolution (HREM) qui crée une image en interférant des ondes transmises et des ondes diffractées. En utilisant HREM, une haute résolution peut être obtenue afin que les arrangements atomiques individuels puissent être projetés tels quels. L'image créée par HREM est appelée une image de structure cristalline. Cette fois, le but est de créer une image de structure cristalline par simulation.

Explication des ondes diffractées et transmises

Les faisceaux d'électrons ayant la propriété des ondes, ils provoquent un phénomène de diffraction qui se propage autour des obstacles. Les obstacles dans le cristal sont des nuages d'électrons (potentiels) autour des atomes. Puisque les atomes sont régulièrement disposés dans le cristal, le potentiel est également périodiquement distribué, et la diffraction provoquée par ceci est $2dsin\theta = n \lambda$ Elle apparaît comme une onde diffractée uniquement lorsque la condition de Bragg indiquée par est satisfaite. Ces réflexions sont appelées réflexions de Bragg. d est l'espacement du plan cristallin, θ est l'angle entre le plan cristallin et le faisceau d'électrons incident, et λ est la longueur d'onde du faisceau d'électrons.

D'ailleurs, l'échantillon ciblé par TEM est très fin et a une épaisseur de l'ordre du nm. Lorsqu'un tel échantillon est irradié par un faisceau d'électrons, certains d'entre eux émettent sans provoquer de réflexion, d'absorption ou de diffusion. Un tel faisceau d'électrons est appelé une onde transmise. Étant donné que les phases de l'onde diffractée et de l'onde transmise sont différentes, la différence de phase peut être reflétée dans l'image en interférant l'une avec l'autre (en fait, la différence de phase n'est pas simplement réfléchie en interférant telle quelle, mais l'aberration sphérique décrite plus loin est réfléchie. C'est possible en l'utilisant).

Méthode multi-tranches

De là, nous expliquerons la méthode spécifique de simulation. Lorsqu'un faisceau d'électrons pénètre dans l'échantillon et est transmis ou diffracté pour former une image sur la face inférieure de l'échantillon, le faisceau d'électrons est émis en interagissant avec le potentiel de l'échantillon. Pour le reproduire dans une simulation, il est nécessaire de reproduire le potentiel à l'intérieur de l'échantillon, mais de reproduire complètement le potentiel d'un échantillon d'une épaisseur de plusieurs dizaines ou centaines de nm, un nombre énorme d'atomes , L'interaction qui accompagne le nuage d'électrons doit être calculée. Par conséquent, une méthode multi-tranches a été considérée dans laquelle l'échantillon a été découpé perpendiculairement à la direction incidente du faisceau d'électrons et calculé comme un empilement de tranches minces. Le faisceau d'électrons est diffusé en passant à travers la tranche, subit un changement de phase, se propage dans l'espace à la tranche suivante, subit à nouveau un changement de phase à la tranche suivante, et ainsi de suite, et une image de structure cristalline est créée sur la surface inférieure de l'échantillon. .. Voici un petit diagramme schématique. スクリーンショット 2020-05-26 14.45.32.png

Pour plus de simplicité, envisagez de passer à travers deux tranches et de créer une image sur le dessous. Lorsque l'onde incidente $ \ psi_0 $ est incidente sur la première tranche, nous appliquons l'approximation d'objet de phase, qui suppose que seul le changement de phase est reçu du potentiel $ V_p $ dans la tranche. Lorsqu'elle subit un changement de phase proportionnel au potentiel projeté, l'onde en bas de la tranche $ \psi_{1out}(x, y) = e^{i\sigma V_{p1}(x, y)} $ Ce sera. $ \ sigma = \ pi / \ lambda E $ ($ \ lambda $: longueur d'onde, E: tension d'accélération). De plus, en appliquant l'approximation d'objet de phase faible que le changement reçu de $ V_p (x, y) $ est petit, $ \psi_{1out} (x, y) = \\{1 + i\sigma V_{p1}(x, y) \\} $ $ q_1(x, y) = 1 + i\sigma V_{p1}(x, y) $ $ \psi_{1out}(x, y) = q_1(x, y)\psi_0(x, y) $ Ce sera. $ q (x, y) $ est appelé une fonction de transparence. $ \ Psi_1 $ qui a traversé la première tranche se propage à travers l'espace jusqu'à la deuxième tranche. La fonction de propagation $ p , qui représente la propagation des ondes, est $ p(x, y) = -\frac{1}{i\lambda \Delta z}e^{-ik\frac{(x^2 + y^2)}{2\Delta z}} $$ est. C'est aussi l'équation de diffraction de Fraunhofer. Ici, $ p (x, y) $ est une transformée de Fourier. Ce sera efficace plus tard. $ P(h, k) = -\frac{1}{i\lambda \Delta z}\int e^{-ik\frac{(x^2 + y^2)}{2\Delta z}} e^{-2\pi i(hx + ky)} dxdy = e^{2\pi i \zeta(h, k) \Delta z } $ Où $ \ zeta (h, k) $ est $ \zeta(h, k) = \frac{\lambda}{2}(h^2 + k^2) $ C'est ce qu'on appelle l'erreur d'excitation. De ce qui précède, la vague qui a atteint la deuxième tranche $ \psi_{2in}(x, y) = \psi_{1out}(x, y) \otimes p(x, y) $ Ce sera. $ \ Otimes $ représente une convolution. La vague qui a traversé la deuxième tranche est la même que la première tranche $ \psi_{2out}(x, y) = q_2(x, y)\psi_{2in}(x, y) $ est. De cette façon, répétez le calcul du nombre de tranches. Cependant, dans le calcul précédent, vous devez effectuer l'opération de convolution pour le nombre de tranches. Les convolutions sont généralement coûteuses à calculer et doivent être évitées pour les calculs directs. Alors, utilisez la formule suivante pour remplacer la convolution par la transformée de Fourier. $ F[f(x)\otimes g(x)] = F[f(x)]F[g(x)] $ Ensuite, la formule jusqu'à présent est $ \Psi_{out}(h, k) = F[q_2(x, y)F^{-1}[F[q_1(x, y)\psi_0(x, y)]P(h, k)]] $ Elle peut être calculée en répétant la transformée de Fourier et la transformée de Fourier inverse.

programme

Dans le calcul par la méthode multi-tranches, le potentiel de projection doit d'abord être préparé. Le potentiel projeté est obtenu par transformation de Fourier inverse du facteur de structure cristalline (en premier lieu, le facteur de structure cristalline est la transformée de Fourier du potentiel interne). Par conséquent, tout d'abord, le facteur de structure cristalline est calculé et la transformée de Fourier inverse est effectuée. L'explication du facteur de structure cristalline et la méthode de calcul peuvent être trouvées dans l'article précédent. Cette fois, l'échantillon est α-Fe (bcc), et la direction incidente est la direction d'axe z [001]. L'espacement des tranches $ \ Delta z $ est une constante de réseau / 2. Les coordonnées atomiques sont préremplies dans pos_1.csv et pos_2.csv. Le treillis inverse est généré par np.meshgrid () et appliqué par np.vectorize (). (Je ne connaissais pas np.vectorize () la dernière fois, alors je l'ai répertorié. C'était inutile ...)

fa = 0
hkl = [h, k, 0]
thkl = np.transpose(hkl)
dk = 1/((np.matmul(np.matmul(invG, thkl), hkl))**(1/2))
if(not np.isinf(dk)):
 sinthetalamb = lamb/(2*dk)
 for i in range(4):
  fa = fa + param_fe[i][0]*np.exp((-param_fe[i][1]*(sinthetalamb**2)))
            
 F = 0
 for i in r:
  F = F + fa*np.exp(1.0j*2*np.pi*(h*i[0] + k*i[1]))

Calculez la fonction de transmission $ q $ avec le facteur de structure cristalline $ F $ comme potentiel de projection $ V_p $ avec np.fft.ifft2 ().

Vp = np.fft.ifft2(F)
q = 1 + 1.0j*sigma*Vp

La fonction de propagation P est calculée à partir du début par transformée de Fourier.

zeta = lamb/2
zeta = zeta*(h**2 + k**2)
        
p = np.exp(1.0j*2*np.pi*zeta*deltaZ)

Effectue un calcul multi-tranches. Le faisceau d'électrons incident $ \ psi_1 $ est 1.

psi = np.ones((self.N, self.N))
psi = np.fft.fft2(q*psi)*p
psi = np.fft.ifft2(psi)

Répétez cette tranche par tranche. La sortie $ \ psi $ du calcul multi-tranches est un nombre complexe. L'intensité qui apparaît réellement comme une image est l'amplitude de l'onde $ I $, donc

I = np.abs(psi)**2

Ensuite, une image de la structure cristalline peut être obtenue ... Pas nécessairement.

Continuer vers (2)

Je suis désolé, je l'ai expliqué pendant longtemps, mais ce calcul ne donne pas une image de structure cristalline (pour être exact, une image de structure cristalline appropriée). En fait, il y a encore des facteurs à considérer. Cela fait longtemps, je vais donc passer au prochain article.

Les références

Je présenterai les articles et les livres auxquels j'ai fait référence lors de la rédaction de l'article.

code

Recommended Posts

Simulation au microscope électronique en Python: méthode multi-coupes (1)
Simulation au microscope électronique en Python: méthode multi-coupes (2)
Méthode Simplex (méthode unique) en Python
Méthode privée en python
Suppression des substitutions de méthode en Python
Simulation de diffraction des rayons X avec Python
Implémentation de la méthode de propagation d'étiquettes en Python
Simuler la méthode Monte Carlo en Python
Méthode Hash (méthode d'adresse ouverte) en Python
Méthode pour créer un environnement Python dans Xcode 6
Algorithme d'alignement par méthode d'insertion en Python
Simulation numérique en Python (2) - Agrégation déterminant la vitesse de diffusion (DLA)
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
Méta-analyse en Python
Unittest en Python
Apprenez le modèle de conception "Méthode de modèle" en Python
J'ai essayé la méthode des moindres carrés en Python
Époque en Python
Discord en Python
Pour remplacer dynamiquement la méthode suivante en python
Apprenez le modèle de conception "Méthode d'usine" en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
simulation ambisonique Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Essayez d'implémenter la méthode Monte Carlo en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Méthode Johnson (python)
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python