Update html

This commit is contained in:
Sylvain Tricot 2025-07-17 15:55:07 +02:00
parent b3deba388a
commit 3077075b42
19 changed files with 516 additions and 12 deletions

View File

@ -359,7 +359,7 @@ document.write(`
<article class="bd-article">
<section class="tex2jax_ignore mathjax_ignore" id="activity-2-setting-up-the-experiment">
<h1>Activity 2: Setting up the “experiment”<a class="headerlink" href="#activity-2-setting-up-the-experiment" title="Link to this heading">#</a></h1>
<span id="exp-setup"></span><h1>Activity 2: Setting up the “experiment”<a class="headerlink" href="#activity-2-setting-up-the-experiment" title="Link to this heading">#</a></h1>
<p>To model a spectroscopy experiment, some parameters need to be correctly defined. In MsSpec, parameters are grouped in different categories (<code class="docutils literal notranslate"><span class="pre">detector_parameters</span></code>, <code class="docutils literal notranslate"><span class="pre">source_parameters</span></code>, <code class="docutils literal notranslate"><span class="pre">calculation_parameters</span></code>…). Each category is an attribute of your calculator object and contains different parameters.
For example, to define the angle of the incoming light with respect to the sample normal direction, you will use</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># (assuming your calculator variable is calc)</span>

View File

@ -359,7 +359,7 @@ document.write(`
<article class="bd-article">
<section class="tex2jax_ignore mathjax_ignore" id="activity-3-adsorbates-and-the-single-scattering-approach">
<h1>Activity 3: Adsorbates and the single scattering approach<a class="headerlink" href="#activity-3-adsorbates-and-the-single-scattering-approach" title="Link to this heading">#</a></h1>
<span id="ssc"></span><h1>Activity 3: Adsorbates and the single scattering approach<a class="headerlink" href="#activity-3-adsorbates-and-the-single-scattering-approach" title="Link to this heading">#</a></h1>
<p>Photoelectron diffraction is widely used to study the adsorption of atoms or molecules on a crystalline surface. Photoelectrons from adsorbates are scattered by the underlying surface, carrying information about the adsorption site, bond length and/or molecule orientation…. Thanks to a simulation, such information becomes quantitative with a high degree of accuracy.</p>
<p>Calculations of the multiple scattering using matrix inversion have the great advantage of being exact, including all scattering paths. On the other hand, memory consumption soon becomes a problem as the kinetic energy and number of atoms to be considered increase. As an approximation, it is possible to only consider a single scattering from the emitter to any atom in the cluster. This approximation is extremely computationally fast and can give satisfactory results for adsorbates. Well see later that this approach is rather too simplistic for most cases.</p>
<section id="oxygen-on-rh-001">

View File

@ -57,6 +57,8 @@
<script async="async" src="../_static/sphinx-thebe.js?v=c100c467"></script>
<script>var togglebuttonSelector = '.toggle, .admonition.dropdown';</script>
<script>const THEBE_JS_URL = "https://unpkg.com/thebe@0.8.2/lib/index.js"; const thebe_selector = ".thebe,.cell"; const thebe_selector_input = "pre"; const thebe_selector_output = ".output, .cell_output"</script>
<script>window.MathJax = {"options": {"processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script>
<script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'Activity08/Activity08';</script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
@ -317,7 +319,9 @@ document.write(`
</button>
`);
</script>
<button class="sidebar-toggle secondary-toggle btn btn-sm" title="Toggle secondary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="fa-solid fa-list"></span>
</button>
</div></div>
</div>
@ -333,6 +337,14 @@ document.write(`
<div id="print-main-content">
<div id="jb-print-toc">
<div>
<h2> Contents </h2>
</div>
<nav aria-label="Page">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#the-aluminium-nitride-aln-polarity">The Aluminium Nitride (AlN) polarity</a></li>
</ul>
</nav>
</div>
</div>
</div>
@ -344,6 +356,217 @@ document.write(`
<section class="tex2jax_ignore mathjax_ignore" id="activity-8-inequivalent-emitters-and-the-xpd-of-a-substrate">
<h1>Activity 8: Inequivalent emitters and the XPD of a substrate<a class="headerlink" href="#activity-8-inequivalent-emitters-and-the-xpd-of-a-substrate" title="Link to this heading">#</a></h1>
<p>XPD can be used to study the adsorption of atoms or molecules on surfaces (<a class="reference internal" href="../Activity03/Activity03.html#ssc"><span class="std std-ref">Activity 3</span></a>), or atomic substitutions on surfaces (<a class="reference internal" href="../Activity02/Activity02.html#exp-setup"><span class="std std-ref">Activity 2</span></a>). In this case, modeling is relatively straightforward, since only one emitter atom is involved.</p>
<p>We have seen from previous examples that, for kinetic energies <span class="math notranslate nohighlight">\(\gtrsim\)</span> 500 eV, the use of Rehr-Albers series expansion and scattering path filtering give access to the intensity of deeper emitter atoms (<a class="reference internal" href="../Activity07/Activity07.html#path-filtering"><span class="std std-ref">Activity 7</span></a>).
This is the key to computing the total photodiffraction signal of a <em>substrate</em>. As emitted photoelectrons originate from highly localized core levels around the atoms, the total signal corresponds to the (incoherent) sum of the intensities of all inequivalent emitters in the probed volume.</p>
<p>Lets take a look at how this is done on the following example.</p>
<section id="the-aluminium-nitride-aln-polarity">
<h2>The Aluminium Nitride (AlN) polarity<a class="headerlink" href="#the-aluminium-nitride-aln-polarity" title="Link to this heading">#</a></h2>
<p>In this example, we will compute polar diagrams of an aluminum nitride substrate.</p>
<p>In a work published in 1999, Lebedev <em>et al.</em> demonstrated that Photoelectron diffraction can be used as a non invasive tool to unambiguously state the polarity of an AlN surface. Aluminium nitride cristallizes in an hexagonal cell and the authors experimentally showed that the polarity of the surface can be controlled by the annealing temperature during the growth. Both polarities are sketched in the <a class="reference internal" href="#aln-fig1"><span class="std std-ref">figure</span></a> below.</p>
<div class="admonition seealso" id="aln-paper">
<p class="admonition-title">See also</p>
<p>based on this paper from V. Lebedev <em>et al.</em>
<a class="reference external" href="https://doi.org/10.1016/S0022-0248(99)00375-9">J. Cryst. Growth. <strong>207(4)</strong> p266-72 (1999)</a></p>
</div>
<figure class="align-default" id="aln-fig1">
<a class="reference internal image-reference" href="../_images/AlN-fig1.jpg"><img alt="AlN crystal direction" class="align-center" src="../_images/AlN-fig1.jpg" style="width: 600px;" />
</a>
<figcaption>
<p><span class="caption-number">Fig. 19 </span><span class="caption-text">AlN hexagonal lattice. Left) N polarity with nitrogen terminated surface and AlN<sub>4</sub> tetrahedrons pointing downward. Right) Al polarity with aluminium terminated surface and AlN<sub>4</sub> tetrahedrons pointing upward</span><a class="headerlink" href="#aln-fig1" title="Link to this image">#</a></p>
</figcaption>
</figure>
<p>The AlN(0001) and (00.-1) faces share the same crystallograpphic symmetry and the Al and N atoms have the same geometrical surrounding differing only in the exchange of Al and N atoms (<a class="reference internal" href="#aln-fig2"><span class="std std-numref">Fig. 20</span></a>).</p>
<p>It is thus expected that Al(2p) and N(1s) XPD patterns exhibit almost the same features with only small differences due to the contrast between Al and N scattering amplitudes.</p>
<figure class="align-default" id="aln-fig2">
<a class="reference internal image-reference" href="../_images/AlN-fig2.jpg"><img alt="AlN crystal direction" class="align-center" src="../_images/AlN-fig2.jpg" style="width: 600px;" />
</a>
<figcaption>
<p><span class="caption-number">Fig. 20 </span><span class="caption-text">Side views of N- or Al- terminated surfaces showing nearest neighbours main polar crystallographic directions. The inset shows the experimental Al(2p)/N(1s) ratio versus polar angle for both AlN polarities (taken from <a class="reference internal" href="#aln-paper">Lebedev <em>et al.</em></a>).</span><a class="headerlink" href="#aln-fig2" title="Link to this image">#</a></p>
</figcaption>
</figure>
<p>The strongest differences in photoemission intensities suitable for a quick and unambiguous determination of polarity were found in the (10-10) azimuthal plane at <strong>32°</strong> and <strong>59°</strong> (polar scans in the inset of <a class="reference internal" href="#aln-fig2"><span class="std std-numref">Fig. 20</span></a>).</p>
<p>These are the directions of short neighbor distances between the atoms of the same element (32°) and between Al and N atoms (58.5°), respectively.</p>
<div class="sd-tab-set docutils">
<input checked="checked" id="sd-tab-item-0" name="sd-tab-set-0" type="radio">
<label class="sd-tab-label" for="sd-tab-item-0">
<i class="fa-solid fa-circle-question"></i> Quiz</label><div class="sd-tab-content docutils">
<p>Using the crystal view in <a class="reference internal" href="#aln-fig1"><span class="std std-numref">Fig. 19</span></a> and assuming that we want to compute Al(2p) and N(1s) intensities for emitters located in 3 different planes to get a <em>substrate</em> signal. How many clusters do we need to build ?</p>
</div>
</div>
<div class="toggle docutils container">
<figure class="align-default" id="aln-fig3">
<a class="reference internal image-reference" href="../_images/AlN-fig3.jpg"><img alt="AlN number of clusters" class="align-center" src="../_images/AlN-fig3.jpg" style="width: 600px;" />
</a>
<figcaption>
<p><span class="caption-number">Fig. 21 </span><span class="caption-text">Number of different clusters to build for Al(2p) and N(1s) in 3 planes</span><a class="headerlink" href="#aln-fig3" title="Link to this image">#</a></p>
</figcaption>
</figure>
</div>
<div class="docutils">
</div>
<div class="sd-tab-set docutils">
<input checked="checked" id="sd-tab-item-1" name="sd-tab-set-1" type="radio">
<label class="sd-tab-label" for="sd-tab-item-1">
<i class="fa-solid fa-circle-question"></i> Quiz</label><div class="sd-tab-content docutils">
<p>Download <a class="reference download internal" download="" href="../_downloads/0e4320262cbcdc4d473d0b9d43e0f7e9/AlN.py"><span class="xref download myst">this script</span></a> and fill in the lines indicated by the comments “FILL HERE”. Run the calculation and check that you are reproducing polar scan of <a class="reference internal" href="#aln-fig2"><span class="std std-numref">Fig. 20</span></a>.</p>
</div>
</div>
<div class="toggle docutils container">
<figure class="align-default" id="aln-fig4">
<a class="reference internal image-reference" href="../_images/AlN-fig4.png"><img alt="AlN results" class="align-center" src="../_images/AlN-fig4.png" style="width: 600px;" />
</a>
<figcaption>
<p><span class="caption-number">Fig. 22 </span><span class="caption-text">Polar scans in the (10-10) azimuthal plane of AlN for Al polarity (left) and N polarity (right)</span><a class="headerlink" href="#aln-fig4" title="Link to this image">#</a></p>
</figcaption>
</figure>
<figure class="align-default" id="aln-fig5">
<a class="reference internal image-reference" href="../_images/AlN-fig5.jpg"><img alt="AlN results" class="align-center" src="../_images/AlN-fig5.jpg" style="width: 600px;" />
</a>
<figcaption>
<p><span class="caption-number">Fig. 23 </span><span class="caption-text">Al(2p)/N(1s) intensity ratio for both polarities</span><a class="headerlink" href="#aln-fig5" title="Link to this image">#</a></p>
</figcaption>
</figure>
<p>As can be seen in <a class="reference internal" href="#aln-fig5"><span class="std std-numref">Fig. 23</span></a>, the peaks at 32° and 58.5° are well reproduced by the calculation for an Al polarity. Some discreapancies arise between the experimental work and this simulation especially for large polar angles. This may be due to a too small cluster in diameter for the deeper emitters.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="hll"><span class="linenos"> 1</span><span class="ch">#!/usr/bin/env python</span>
</span><span class="linenos"> 2</span><span class="c1"># coding: utf8</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="kn">from</span><span class="w"> </span><span class="nn">ase.build</span><span class="w"> </span><span class="kn">import</span> <span class="n">bulk</span>
<span class="linenos"> 5</span><span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
<span class="linenos"> 6</span><span class="kn">from</span><span class="w"> </span><span class="nn">msspec.calculator</span><span class="w"> </span><span class="kn">import</span> <span class="n">MSSPEC</span><span class="p">,</span> <span class="n">XRaySource</span>
<span class="linenos"> 7</span><span class="kn">from</span><span class="w"> </span><span class="nn">msspec.utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">hemispherical_cluster</span><span class="p">,</span> <span class="n">get_atom_index</span>
<span class="linenos"> 8</span>
<span class="linenos"> 9</span><span class="k">def</span><span class="w"> </span><span class="nf">create_clusters</span><span class="p">(</span><span class="n">nplanes</span><span class="o">=</span><span class="mi">6</span><span class="p">):</span>
<span class="linenos"> 10</span> <span class="k">def</span><span class="w"> </span><span class="nf">get_AlN_tags_planes</span><span class="p">(</span><span class="n">side</span><span class="p">,</span> <span class="n">emitter</span><span class="p">):</span>
<span class="linenos"> 11</span> <span class="n">AlN</span> <span class="o">=</span> <span class="n">bulk</span><span class="p">(</span><span class="s1">&#39;AlN&#39;</span><span class="p">,</span> <span class="n">crystalstructure</span><span class="o">=</span><span class="s1">&#39;wurtzite&#39;</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="mf">3.11</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="mf">4.975</span><span class="p">)</span>
<span class="linenos"> 12</span> <span class="p">[</span><span class="n">atom</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s1">&#39;tag&#39;</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">atom</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">AlN</span><span class="p">)]</span>
<span class="linenos"> 13</span> <span class="k">if</span> <span class="n">side</span> <span class="o">==</span> <span class="s1">&#39;Al&#39;</span><span class="p">:</span>
<span class="linenos"> 14</span> <span class="n">AlN</span><span class="o">.</span><span class="n">rotate</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">],[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
<span class="linenos"> 15</span> <span class="n">Al_planes</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">nplanes</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos"> 16</span> <span class="n">N_planes</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">nplanes</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos"> 17</span> <span class="k">else</span><span class="p">:</span>
<span class="linenos"> 18</span> <span class="n">N_planes</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">nplanes</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos"> 19</span> <span class="n">Al_planes</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">nplanes</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="linenos"> 20</span> <span class="k">if</span> <span class="n">emitter</span> <span class="o">==</span> <span class="s1">&#39;Al&#39;</span><span class="p">:</span>
<span class="linenos"> 21</span> <span class="n">tags</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span>
<span class="linenos"> 22</span> <span class="n">planes</span> <span class="o">=</span> <span class="n">Al_planes</span>
<span class="linenos"> 23</span> <span class="k">else</span><span class="p">:</span>
<span class="linenos"> 24</span> <span class="n">tags</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
<span class="linenos"> 25</span> <span class="n">planes</span> <span class="o">=</span> <span class="n">N_planes</span>
<span class="linenos"> 26</span> <span class="k">return</span> <span class="n">AlN</span><span class="p">,</span> <span class="n">tags</span><span class="p">,</span> <span class="n">planes</span>
<span class="linenos"> 27</span>
<span class="linenos"> 28</span> <span class="n">clusters</span> <span class="o">=</span> <span class="p">[]</span>
<span class="linenos"> 29</span> <span class="k">for</span> <span class="n">side</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;Al&#39;</span><span class="p">,</span> <span class="s1">&#39;N&#39;</span><span class="p">):</span>
<span class="linenos"> 30</span> <span class="k">for</span> <span class="n">emitter</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;Al&#39;</span><span class="p">,</span> <span class="s1">&#39;N&#39;</span><span class="p">):</span>
<span class="linenos"> 31</span> <span class="n">AlN</span><span class="p">,</span> <span class="n">tags</span><span class="p">,</span> <span class="n">planes</span> <span class="o">=</span> <span class="n">get_AlN_tags_planes</span><span class="p">(</span><span class="n">side</span><span class="p">,</span> <span class="n">emitter</span><span class="p">)</span>
<span class="linenos"> 32</span> <span class="k">for</span> <span class="n">emitter_tag</span> <span class="ow">in</span> <span class="n">tags</span><span class="p">:</span>
<span class="linenos"> 33</span> <span class="k">for</span> <span class="n">emitter_plane</span> <span class="ow">in</span> <span class="n">planes</span><span class="p">:</span>
<span class="linenos"> 34</span> <span class="n">cluster</span> <span class="o">=</span> <span class="n">hemispherical_cluster</span><span class="p">(</span><span class="n">AlN</span><span class="p">,</span>
<span class="linenos"> 35</span> <span class="n">emitter_tag</span><span class="o">=</span><span class="n">emitter_tag</span><span class="p">,</span>
<span class="linenos"> 36</span> <span class="n">emitter_plane</span><span class="o">=</span><span class="n">emitter_plane</span><span class="p">,</span>
<span class="linenos"> 37</span> <span class="n">planes</span><span class="o">=</span><span class="n">emitter_plane</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
<span class="linenos"> 38</span> <span class="n">cluster</span><span class="o">.</span><span class="n">absorber</span> <span class="o">=</span> <span class="n">get_atom_index</span><span class="p">(</span><span class="n">cluster</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
<span class="linenos"> 39</span> <span class="n">cluster</span><span class="o">.</span><span class="n">info</span><span class="o">.</span><span class="n">update</span><span class="p">({</span>
<span class="linenos"> 40</span> <span class="s1">&#39;emitter_plane&#39;</span><span class="p">:</span> <span class="n">emitter_plane</span><span class="p">,</span>
<span class="linenos"> 41</span> <span class="s1">&#39;emitter_tag&#39;</span> <span class="p">:</span> <span class="n">emitter_tag</span><span class="p">,</span>
<span class="linenos"> 42</span> <span class="s1">&#39;emitter&#39;</span> <span class="p">:</span> <span class="n">emitter</span><span class="p">,</span>
<span class="linenos"> 43</span> <span class="s1">&#39;side&#39;</span> <span class="p">:</span> <span class="n">side</span><span class="p">,</span>
<span class="linenos"> 44</span> <span class="p">})</span>
<span class="linenos"> 45</span> <span class="n">clusters</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cluster</span><span class="p">)</span>
<span class="linenos"> 46</span> <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Added cluster </span><span class="si">{}</span><span class="s2">-side, emitter </span><span class="si">{}</span><span class="s2">(tag </span><span class="si">{:d}</span><span class="s2">) in &quot;</span>
<span class="linenos"> 47</span> <span class="s2">&quot;plane #</span><span class="si">{:d}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">side</span><span class="p">,</span> <span class="n">emitter</span><span class="p">,</span> <span class="n">emitter_tag</span><span class="p">,</span>
<span class="linenos"> 48</span> <span class="n">emitter_plane</span><span class="p">))</span>
<span class="linenos"> 49</span> <span class="k">return</span> <span class="n">clusters</span>
<span class="linenos"> 50</span>
<span class="linenos"> 51</span>
<span class="linenos"> 52</span><span class="k">def</span><span class="w"> </span><span class="nf">compute</span><span class="p">(</span><span class="n">clusters</span><span class="p">,</span> <span class="n">theta</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="o">-</span><span class="mf">20.</span><span class="p">,</span> <span class="mf">80.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">phi</span><span class="o">=</span><span class="mf">0.</span><span class="p">):</span>
<span class="linenos"> 53</span> <span class="n">data</span> <span class="o">=</span> <span class="kc">None</span>
<span class="linenos"> 54</span> <span class="k">for</span> <span class="n">ic</span><span class="p">,</span> <span class="n">cluster</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">clusters</span><span class="p">):</span>
<span class="linenos"> 55</span> <span class="c1"># Retrieve info from cluster object</span>
<span class="linenos"> 56</span> <span class="n">side</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">info</span><span class="p">[</span><span class="s1">&#39;side&#39;</span><span class="p">]</span>
<span class="linenos"> 57</span> <span class="n">emitter</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">info</span><span class="p">[</span><span class="s1">&#39;emitter&#39;</span><span class="p">]</span>
<span class="linenos"> 58</span> <span class="n">plane</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">info</span><span class="p">[</span><span class="s1">&#39;emitter_plane&#39;</span><span class="p">]</span>
<span class="linenos"> 59</span> <span class="n">tag</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">info</span><span class="p">[</span><span class="s1">&#39;emitter_tag&#39;</span><span class="p">]</span>
<span class="linenos"> 60</span>
<span class="linenos"> 61</span> <span class="c1"># Set the level and the kinetic energy</span>
<span class="linenos"> 62</span> <span class="k">if</span> <span class="n">emitter</span> <span class="o">==</span> <span class="s1">&#39;Al&#39;</span><span class="p">:</span>
<span class="linenos"> 63</span> <span class="n">level</span> <span class="o">=</span> <span class="s1">&#39;2p&#39;</span>
<span class="linenos"> 64</span> <span class="n">ke</span> <span class="o">=</span> <span class="mf">1407.</span>
<span class="linenos"> 65</span> <span class="k">elif</span> <span class="n">emitter</span> <span class="o">==</span> <span class="s1">&#39;N&#39;</span><span class="p">:</span>
<span class="linenos"> 66</span> <span class="n">level</span> <span class="o">=</span> <span class="s1">&#39;1s&#39;</span>
<span class="linenos"> 67</span> <span class="n">ke</span> <span class="o">=</span> <span class="mf">1083.</span>
<span class="linenos"> 68</span>
<span class="linenos"> 69</span> <span class="n">calc</span> <span class="o">=</span> <span class="n">MSSPEC</span><span class="p">(</span><span class="n">spectroscopy</span><span class="o">=</span><span class="s1">&#39;PED&#39;</span><span class="p">,</span> <span class="n">algorithm</span><span class="o">=</span><span class="s1">&#39;expansion&#39;</span><span class="p">)</span>
<span class="linenos"> 70</span>
<span class="linenos"> 71</span> <span class="n">calc</span><span class="o">.</span><span class="n">source_parameters</span><span class="o">.</span><span class="n">energy</span> <span class="o">=</span> <span class="n">XRaySource</span><span class="o">.</span><span class="n">AL_KALPHA</span>
<span class="linenos"> 72</span> <span class="n">calc</span><span class="o">.</span><span class="n">source_parameters</span><span class="o">.</span><span class="n">theta</span> <span class="o">=</span> <span class="o">-</span><span class="mi">35</span>
<span class="linenos"> 73</span>
<span class="linenos"> 74</span> <span class="n">calc</span><span class="o">.</span><span class="n">detector_parameters</span><span class="o">.</span><span class="n">angular_acceptance</span> <span class="o">=</span> <span class="mf">4.</span>
<span class="linenos"> 75</span> <span class="n">calc</span><span class="o">.</span><span class="n">detector_parameters</span><span class="o">.</span><span class="n">average_sampling</span> <span class="o">=</span> <span class="s1">&#39;medium&#39;</span>
<span class="linenos"> 76</span>
<span class="linenos"> 77</span> <span class="n">calc</span><span class="o">.</span><span class="n">calculation_parameters</span><span class="o">.</span><span class="n">scattering_order</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">min</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="n">plane</span><span class="p">))</span>
<span class="linenos"> 78</span> <span class="n">calc</span><span class="o">.</span><span class="n">calculation_parameters</span><span class="o">.</span><span class="n">path_filtering</span> <span class="o">=</span> <span class="s1">&#39;forward_scattering&#39;</span>
<span class="linenos"> 79</span> <span class="n">calc</span><span class="o">.</span><span class="n">calculation_parameters</span><span class="o">.</span><span class="n">off_cone_events</span> <span class="o">=</span> <span class="mi">1</span>
<span class="linenos"> 80</span> <span class="p">[</span><span class="n">a</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s1">&#39;forward_angle&#39;</span><span class="p">,</span> <span class="mf">30.</span><span class="p">)</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">cluster</span><span class="p">]</span>
<span class="linenos"> 81</span>
<span class="linenos"> 82</span> <span class="n">calc</span><span class="o">.</span><span class="n">set_atoms</span><span class="p">(</span><span class="n">cluster</span><span class="p">)</span>
<span class="linenos"> 83</span>
<span class="linenos"> 84</span> <span class="n">data</span> <span class="o">=</span> <span class="n">calc</span><span class="o">.</span><span class="n">get_theta_scan</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">level</span><span class="p">,</span> <span class="n">theta</span><span class="o">=</span><span class="n">theta</span><span class="p">,</span> <span class="n">phi</span><span class="o">=</span><span class="n">phi</span><span class="p">,</span>
<span class="linenos"> 85</span> <span class="n">kinetic_energy</span><span class="o">=</span><span class="n">ke</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">)</span>
<span class="linenos"> 86</span> <span class="n">dset</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="linenos"> 87</span> <span class="n">dset</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\&#39;</span><span class="si">{}</span><span class="se">\&#39;</span><span class="s2"> side - </span><span class="si">{}</span><span class="s2">(</span><span class="si">{}</span><span class="s2">) tag #</span><span class="si">{:d}</span><span class="s2">, plane #</span><span class="si">{:d}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="linenos"> 88</span> <span class="n">side</span><span class="p">,</span> <span class="n">emitter</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">plane</span><span class="p">)</span>
<span class="linenos"> 89</span>
<span class="linenos"> 90</span> <span class="k">return</span> <span class="n">data</span>
<span class="linenos"> 91</span>
<span class="linenos"> 92</span>
<span class="linenos"> 93</span><span class="k">def</span><span class="w"> </span><span class="nf">analysis</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
<span class="linenos"> 94</span> <span class="n">tmp_data</span> <span class="o">=</span> <span class="p">{}</span>
<span class="linenos"> 95</span> <span class="k">for</span> <span class="n">dset</span> <span class="ow">in</span> <span class="n">data</span><span class="p">:</span>
<span class="linenos"> 96</span> <span class="n">info</span> <span class="o">=</span> <span class="n">dset</span><span class="o">.</span><span class="n">get_cluster</span><span class="p">()</span><span class="o">.</span><span class="n">info</span>
<span class="linenos"> 97</span> <span class="n">side</span> <span class="o">=</span> <span class="n">info</span><span class="p">[</span><span class="s1">&#39;side&#39;</span><span class="p">]</span>
<span class="linenos"> 98</span> <span class="n">emitter</span> <span class="o">=</span> <span class="n">info</span><span class="p">[</span><span class="s1">&#39;emitter&#39;</span><span class="p">]</span>
<span class="linenos"> 99</span> <span class="k">try</span><span class="p">:</span>
<span class="linenos">100</span> <span class="n">key</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">{}</span><span class="s1">_</span><span class="si">{}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">side</span><span class="p">,</span> <span class="n">emitter</span><span class="p">)</span>
<span class="linenos">101</span> <span class="n">tmp_data</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">+=</span> <span class="n">dset</span><span class="o">.</span><span class="n">cross_section</span>
<span class="linenos">102</span> <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
<span class="linenos">103</span> <span class="n">tmp_data</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">dset</span><span class="o">.</span><span class="n">cross_section</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="linenos">104</span>
<span class="linenos">105</span> <span class="n">tmp_data</span><span class="p">[</span><span class="s1">&#39;theta&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">dset</span><span class="o">.</span><span class="n">theta</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="linenos">106</span> <span class="n">tmp_data</span><span class="p">[</span><span class="s1">&#39;Al_side&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tmp_data</span><span class="p">[</span><span class="s1">&#39;Al_Al&#39;</span><span class="p">]</span> <span class="o">/</span> <span class="n">tmp_data</span><span class="p">[</span><span class="s1">&#39;Al_N&#39;</span><span class="p">]</span>
<span class="linenos">107</span> <span class="n">tmp_data</span><span class="p">[</span><span class="s1">&#39;N_side&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">tmp_data</span><span class="p">[</span><span class="s1">&#39;N_Al&#39;</span><span class="p">]</span> <span class="o">/</span> <span class="n">tmp_data</span><span class="p">[</span><span class="s1">&#39;N_N&#39;</span><span class="p">]</span>
<span class="linenos">108</span>
<span class="linenos">109</span> <span class="c1"># now add all columns</span>
<span class="linenos">110</span> <span class="n">substrate_dset</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">add_dset</span><span class="p">(</span><span class="s1">&#39;Total substrate signal&#39;</span><span class="p">)</span>
<span class="linenos">111</span> <span class="n">substrate_dset</span><span class="o">.</span><span class="n">add_columns</span><span class="p">(</span><span class="o">**</span><span class="n">tmp_data</span><span class="p">)</span>
<span class="linenos">112</span>
<span class="linenos">113</span> <span class="n">view</span> <span class="o">=</span> <span class="n">substrate_dset</span><span class="o">.</span><span class="n">add_view</span><span class="p">(</span><span class="s1">&#39;Ratios&#39;</span><span class="p">,</span>
<span class="linenos">114</span> <span class="n">title</span><span class="o">=</span><span class="sa">r</span><span class="s1">&#39;Al(2p)/N(1s) ratios on both polar &#39;</span>
<span class="linenos">115</span> <span class="sa">r</span><span class="s1">&#39;sides of AlN in the (10$\bar</span><span class="si">{1}</span><span class="s1">$0) &#39;</span>
<span class="linenos">116</span> <span class="sa">r</span><span class="s1">&#39;azimuthal plane&#39;</span><span class="p">,</span>
<span class="linenos">117</span> <span class="n">xlabel</span><span class="o">=</span><span class="sa">r</span><span class="s1">&#39;$\Theta (\degree$)&#39;</span><span class="p">,</span>
<span class="linenos">118</span> <span class="n">ylabel</span><span class="o">=</span><span class="s1">&#39;Intenisty ratio&#39;</span><span class="p">)</span>
<span class="linenos">119</span> <span class="n">view</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s1">&#39;theta&#39;</span><span class="p">,</span> <span class="s1">&#39;Al_side&#39;</span><span class="p">,</span> <span class="n">legend</span><span class="o">=</span><span class="s1">&#39;Al side&#39;</span><span class="p">,</span>
<span class="linenos">120</span> <span class="n">where</span><span class="o">=</span><span class="s2">&quot;theta &gt;= 0 and theta &lt;=70&quot;</span><span class="p">)</span>
<span class="linenos">121</span> <span class="n">view</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s1">&#39;theta&#39;</span><span class="p">,</span> <span class="s1">&#39;N_side&#39;</span><span class="p">,</span> <span class="n">legend</span><span class="o">=</span><span class="s1">&#39;N side&#39;</span><span class="p">,</span>
<span class="linenos">122</span> <span class="n">where</span><span class="o">=</span><span class="s2">&quot;theta &gt;= 0 and theta &lt;=70&quot;</span><span class="p">)</span>
<span class="linenos">123</span> <span class="n">view</span><span class="o">.</span><span class="n">set_plot_options</span><span class="p">(</span><span class="n">autoscale</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="linenos">124</span>
<span class="linenos">125</span> <span class="k">return</span> <span class="n">data</span>
<span class="linenos">126</span>
<span class="linenos">127</span>
<span class="linenos">128</span><span class="n">clusters</span> <span class="o">=</span> <span class="n">create_clusters</span><span class="p">()</span>
<span class="linenos">129</span><span class="k">for</span> <span class="n">cluster</span> <span class="ow">in</span> <span class="n">clusters</span><span class="p">:</span>
<span class="linenos">130</span> <span class="n">cluster</span><span class="o">.</span><span class="n">edit</span><span class="p">()</span>
<span class="linenos">131</span><span class="n">exit</span><span class="p">()</span>
<span class="linenos">132</span><span class="n">data</span> <span class="o">=</span> <span class="n">compute</span><span class="p">(</span><span class="n">clusters</span><span class="p">)</span>
<span class="linenos">133</span><span class="n">data</span> <span class="o">=</span> <span class="n">analysis</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="linenos">134</span><span class="n">data</span><span class="o">.</span><span class="n">view</span><span class="p">()</span>
<span class="linenos">135</span>
</pre></div>
</div>
</div>
</section>
</section>
<script type="text/x-thebe-config">
@ -401,6 +624,21 @@ document.write(`
<div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
<div class="sidebar-secondary-item">
<div class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> Contents
</div>
<nav class="bd-toc-nav page-toc">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#the-aluminium-nitride-aln-polarity">The Aluminium Nitride (AlN) polarity</a></li>
</ul>
</nav></div>
</div></div>
</div>
<footer class="bd-footer-content">

View File

@ -0,0 +1,131 @@
#!/usr/bin/env python
# coding: utf8
from ase.build import bulk
import numpy as np
from msspec.calculator import MSSPEC, XRaySource
from msspec.utils import hemispherical_cluster, get_atom_index
def create_clusters(nplanes=6):
def get_AlN_tags_planes(side, emitter):
AlN = # AlN is a Wurtzite crystal with a=3.11 and c=4.975 angstroms # <= HERE
[atom.set('tag', i) for i, atom in enumerate(AlN)]
if side == 'Al':
AlN.rotate([0,0,1],[0,0,-1])
Al_planes = range(0, nplanes, 2)
N_planes = range(1, nplanes, 2)
else:
N_planes = range(0, nplanes, 2)
Al_planes = range(1, nplanes, 2)
if emitter == 'Al':
tags = [0, 2]
planes = Al_planes
else:
tags = [1, 3]
planes = N_planes
return AlN, tags, planes
clusters = []
for side in ('Al', 'N'):
for emitter in ('Al', 'N'):
AlN, tags, planes = get_AlN_tags_planes(side, emitter)
for emitter_tag in tags:
for emitter_plane in planes:
cluster = # hemis…, construct the cluster here with # <= HERE
# 2 planes below the emitter
cluster.absorber = get_atom_index(cluster, 0, 0, 0)
cluster.info.update({
'emitter_plane': emitter_plane,
'emitter_tag' : emitter_tag,
'emitter' : emitter,
'side' : side,
})
clusters.append(cluster)
print("Added cluster {}-side, emitter {}(tag {:d}) in "
"plane #{:d}".format(side, emitter, emitter_tag,
emitter_plane))
return clusters
def compute(clusters, theta=np.arange(-20., 80., 1.), phi=0.):
data = None
for ic, cluster in enumerate(clusters):
# Retrieve info from cluster object
side = cluster.info['side']
emitter = cluster.info['emitter']
plane = cluster.info['emitter_plane']
tag = cluster.info['emitter_tag']
# Set the level and the kinetic energy
if emitter == 'Al':
level = ##### # <= HERE
ke = ##### # <= HERE
elif emitter == 'N':
level = ##### # <= HERE
ke = ##### # <= HERE
calc = # Create a calculator using the RA series expansion algorithm # <= HERE
calc.source_parameters.energy = ##### # <= HERE
calc.source_parameters.theta = ##### # <= HERE
calc.detector_parameters.angular_acceptance = ##### # <= HERE
calc.detector_parameters.average_sampling = 'medium'
calc.calculation_parameters.scattering_order = max(1, min(4, plane))
calc.calculation_parameters.path_filtering = 'forward_scattering'
calc.calculation_parameters.off_cone_events = 1
[a.set('forward_angle', 30.) for a in cluster]
calc.set_atoms(cluster)
data = calc.get_theta_scan(level=level, theta=theta, phi=phi,
kinetic_energy=ke, data=data)
dset = data[-1]
dset.title = "\'{}\' side - {}({}) tag #{:d}, plane #{:d}".format(
side, emitter, level, tag, plane)
return data
def analysis(data):
tmp_data = {}
for dset in data:
info = dset.get_cluster().info
side = info['side']
emitter = info['emitter']
try:
key = '{}_{}'.format(side, emitter)
tmp_data[key] += dset.cross_section
except KeyError:
tmp_data[key] = dset.cross_section.copy()
tmp_data['theta'] = dset.theta.copy()
tmp_data['Al_side'] = tmp_data['Al_Al'] / tmp_data['Al_N']
tmp_data['N_side'] = tmp_data['N_Al'] / tmp_data['N_N']
# now add all columns
substrate_dset = data.add_dset('Total substrate signal')
substrate_dset.add_columns(**tmp_data)
view = substrate_dset.add_view('Ratios',
title=r'Al(2p)/N(1s) ratios on both polar '
r'sides of AlN in the (10$\bar{1}$0) '
r'azimuthal plane',
xlabel=r'$\Theta (\degree$)',
ylabel='Intenisty ratio')
view.select('theta', 'Al_side', legend='Al side',
where="theta >= 0 and theta <=70")
view.select('theta', 'N_side', legend='N side',
where="theta >= 0 and theta <=70")
view.set_plot_options(autoscale=True)
return data
clusters = create_clusters()
data = compute(clusters)
data = analysis(data)
data.view()

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

View File

@ -11,6 +11,7 @@
"tags": []
},
"source": [
"(exp-setup)=\n",
"# Activity 2: Setting up the \"experiment\"\n",
"\n",
"To model a spectroscopy experiment, some parameters need to be correctly defined. In MsSpec, parameters are grouped in different categories (`detector_parameters`, `source_parameters`, `calculation_parameters`...). Each category is an attribute of your calculator object and contains different parameters.\n",
@ -1199,7 +1200,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
"version": "3.11.13"
}
},
"nbformat": 4,

View File

@ -11,6 +11,7 @@
"tags": []
},
"source": [
"(ssc)=\n",
"# Activity 3: Adsorbates and the single scattering approach\n",
"\n",
"Photoelectron diffraction is widely used to study the adsorption of atoms or molecules on a crystalline surface. Photoelectrons from adsorbates are scattered by the underlying surface, carrying information about the adsorption site, bond length and/or molecule orientation…. Thanks to a simulation, such information becomes quantitative with a high degree of accuracy.\n",
@ -408,7 +409,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
"version": "3.11.13"
}
},
"nbformat": 4,

View File

@ -9,12 +9,145 @@
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1df76138-c957-4da2-bcc8-ec977c209b81",
"cell_type": "markdown",
"id": "394b0c02-f28e-4074-86e5-9dfdf0447adb",
"metadata": {},
"outputs": [],
"source": []
"source": [
"XPD can be used to study the adsorption of atoms or molecules on surfaces ([Activity 3](#ssc)), or atomic substitutions on surfaces ([Activity 2](#exp-setup)). In this case, modeling is relatively straightforward, since only one emitter atom is involved.\n",
"\n",
"We have seen from previous examples that, for kinetic energies $\\gtrsim$ 500 eV, the use of Rehr-Albers series expansion and scattering path filtering give access to the intensity of deeper emitter atoms ([Activity 7](#path-filtering)).\n",
"This is the key to computing the total photodiffraction signal of a *substrate*. As emitted photoelectrons originate from highly localized core levels around the atoms, the total signal corresponds to the (incoherent) sum of the intensities of all inequivalent emitters in the probed volume.\n",
"\n",
"Let's take a look at how this is done on the following example. \n",
"\n",
"\n",
"## The Aluminium Nitride (AlN) polarity\n",
"\n",
"In this example, we will compute polar diagrams of an aluminum nitride substrate.\n",
"\n",
"In a work published in 1999, Lebedev *et al.* demonstrated that Photoelectron diffraction can be used as a non invasive tool to unambiguously state the polarity of an AlN surface. Aluminium nitride cristallizes in an hexagonal cell and the authors experimentally showed that the polarity of the surface can be controlled by the annealing temperature during the growth. Both polarities are sketched in the [figure](#AlN-fig1) below.\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "5a4036dc-d087-419f-9a44-749a8b313d5c",
"metadata": {},
"source": [
"(aln-paper)=\n",
":::{seealso}\n",
"based on this paper from V. Lebedev *et al.*\n",
"[J. Cryst. Growth. **207(4)** p266-72 (1999)](https://doi.org/10.1016/S0022-0248(99)00375-9)\n",
":::"
]
},
{
"cell_type": "markdown",
"id": "fc1cf08e-77ba-49ea-99a9-8a7bac7c98c7",
"metadata": {},
"source": [
":::{figure-md} AlN-fig1\n",
"<img src=\"AlN-fig1.jpg\" alt=\"AlN crystal direction\" width=\"600px\" align=\"center\">\n",
"\n",
"AlN hexagonal lattice. Left) N polarity with nitrogen terminated surface and AlN{sub}`4` tetrahedrons pointing downward. Right) Al polarity with aluminium terminated surface and AlN{sub}`4` tetrahedrons pointing upward\n",
":::"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "fc180c7b-eb23-47c6-8d18-e092bc777843",
"metadata": {},
"source": [
"The AlN(0001) and (00.-1) faces share the same crystallograpphic symmetry and the Al and N atoms have the same geometrical surrounding differing only in the exchange of Al and N atoms ({numref}`Fig. %s <AlN-fig2>`).\n",
"\n",
"It is thus expected that Al(2p) and N(1s) XPD patterns exhibit almost the same features with only small differences due to the contrast between Al and N scattering amplitudes.\n",
"\n",
":::{figure-md} AlN-fig2\n",
"<img src=\"AlN-fig2.jpg\" alt=\"AlN crystal direction\" width=\"600px\" align=\"center\">\n",
"\n",
"Side views of N- or Al- terminated surfaces showing nearest neighbours main polar crystallographic directions. The inset shows the experimental Al(2p)/N(1s) ratio versus polar angle for both AlN polarities (taken from [Lebedev *et al.*](#aln-paper)).\n",
":::\n",
"\n",
"The strongest differences in photoemission intensities suitable for a quick and unambiguous determination of polarity were found in the (10-10) azimuthal plane at **32°** and **59°** (polar scans in the inset of {numref}`Fig. %s <AlN-fig2>`).\n",
"\n",
"These are the directions of short neighbor distances between the atoms of the same element (32°) and between Al and N atoms (58.5°), respectively.\n"
]
},
{
"cell_type": "markdown",
"id": "86c20245-abca-4587-bccf-90e0fb09f73c",
"metadata": {},
"source": [
"::::{tab-set}\n",
"\n",
":::{tab-item} <i class=\"fa-solid fa-circle-question\"></i> Quiz\n",
"Using the crystal view in {numref}`Fig. %s <AlN-fig1>` and assuming that we want to compute Al(2p) and N(1s) intensities for emitters located in 3 different planes to get a *substrate* signal. How many clusters do we need to build ? \n",
"\n",
":::\n",
"\n",
"::::"
]
},
{
"cell_type": "markdown",
"id": "8a3a48ef-196f-435a-b342-3a73e62160f8",
"metadata": {},
"source": [
":::{toggle}\n",
"\n",
":::{figure-md} AlN-fig3\n",
"<img src=\"AlN-fig3.jpg\" alt=\"AlN number of clusters\" width=\"600px\" align=\"center\">\n",
"\n",
"Number of different clusters to build for Al(2p) and N(1s) in 3 planes\n",
":::\n",
"\n",
":::"
]
},
{
"cell_type": "markdown",
"id": "82973b9c-bf0c-462a-8114-17ac1e83b799",
"metadata": {},
"source": [
"::::{tab-set}\n",
"\n",
":::{tab-item} <i class=\"fa-solid fa-circle-question\"></i> Quiz\n",
"Download [this script](AlN.py) and fill in the lines indicated by the comments “FILL HERE”. Run the calculation and check that you are reproducing polar scan of {numref}`Fig. %s <AlN-fig2>`.\n",
"\n",
":::\n",
"\n",
"::::"
]
},
{
"cell_type": "markdown",
"id": "abc64fdb-5895-4112-a987-66b3420d78eb",
"metadata": {},
"source": [
"```{toggle}\n",
"\n",
":::{figure-md} AlN-fig4\n",
"<img src=\"AlN-fig4.png\" alt=\"AlN results\" width=\"600px\" align=\"center\">\n",
"\n",
"Polar scans in the (10-10) azimuthal plane of AlN for Al polarity (left) and N polarity (right)\n",
":::\n",
"\n",
":::{figure-md} AlN-fig5\n",
"<img src=\"AlN-fig5.jpg\" alt=\"AlN results\" width=\"600px\" align=\"center\">\n",
"\n",
"Al(2p)/N(1s) intensity ratio for both polarities\n",
":::\n",
"\n",
"As can be seen in {numref}`Fig. %s <AlN-fig5>`, the peaks at 32° and 58.5° are well reproduced by the calculation for an Al polarity. Some discreapancies arise between the experimental work and this simulation especially for large polar angles. This may be due to a too small cluster in diameter for the deeper emitters.\n",
"\n",
":::{literalinclude} AlN_completed.py\n",
":lineno-match:\n",
":emphasize-lines: 1\n",
":::\n",
"\n",
"```"
]
}
],
"metadata": {
@ -33,7 +166,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
"version": "3.11.13"
}
},
"nbformat": 4,

Binary file not shown.

File diff suppressed because one or more lines are too long