SST Lab Dokuwiki Header header picture

ユーザ用ツール

サイト用ツール


abinitio:ase_atom

文書の過去の版を表示しています。


<html>

<h1>The Atom object<a class=“headerlink” href=“#the-atom-object” title=“Permalink to this headline”>¶</a></h1> <p>ASE defines a python class called <a class=“reference internal” href=“#ase.atom.Atom” title=“ase.atom.Atom”>

py py-class docutils literal notranslate"
<span class="pre">Atom</span>

</a> to setup and handle atoms in electronic structure and molecular simulations. From a python script, atoms can be created like this:</p> <div class=“doctest highlight-default notranslate”><div class=“highlight”><pre><span></span><span class=“gp”>&gt;&gt;&gt; </span><span class=“kn”>from</span> <span class=“nn”>ase</span> <span class=“kn”>import</span> <span class=“n”>Atom</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>a1</span> <span class=“o”>=</span> <span class=“n”>Atom</span><span class=“p”>(</span><span class=“s1”>&#39;Si&#39;</span><span class=“p”>,</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=“gp”>&gt;&gt;&gt; </span><span class=“n”>a2</span> <span class=“o”>=</span> <span class=“n”>Atom</span><span class=“p”>(</span><span class=“s1”>&#39;H&#39;</span><span class=“p”>,</span> <span class=“p”>(</span><span class=“mf”>1.3</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=“n”>mass</span><span class=“o”>=</span><span class=“mi”>2</span><span class=“p”>)</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>a3</span> <span class=“o”>=</span> <span class=“n”>Atom</span><span class=“p”>(</span><span class=“mi”>14</span><span class=“p”>,</span> <span class=“n”>position</span><span class=“o”>=</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=“c1”># same as a1</span> </pre></div> </div> <dl class=“py class”> <dt class=“sig sig-object py” id=“ase.atom.Atom”> <em class=“property”><span class=“pre”>class</span><span class=“w”> </span></em><span class=“sig-prename descclassname”><span class=“pre”>ase.atom.</span></span><span class=“sig-name descname”><span class=“pre”>Atom</span></span><span class=“sig-paren”>(</span><em class=“sig-param”><span class=“n”><span class=“pre”>symbol</span></span><span class=“o”><span class=“pre”>=</span></span><span class=“default_value”><span class=“pre”>'X'</span></span></em>, <em class=“sig-param”><span class=“n”><span class=“pre”>position</span></span><span class=“o”><span class=“pre”>=</span></span><span class=“default_value”><span class=“pre”>(0,</span> <span class=“pre”>0,</span> <span class=“pre”>0)</span></span></em>, <em class=“sig-param”><span class=“n”><span class=“pre”>tag</span></span><span class=“o”><span class=“pre”>=</span></span><span class=“default_value”><span class=“pre”>None</span></span></em>, <em class=“sig-param”><span class=“n”><span class=“pre”>momentum</span></span><span class=“o”><span class=“pre”>=</span></span><span class=“default_value”><span class=“pre”>None</span></span></em>, <em class=“sig-param”><span class=“n”><span class=“pre”>mass</span></span><span class=“o”><span class=“pre”>=</span></span><span class=“default_value”><span class=“pre”>None</span></span></em>, <em class=“sig-param”><span class=“n”><span class=“pre”>magmom</span></span><span class=“o”><span class=“pre”>=</span></span><span class=“default_value”><span class=“pre”>None</span></span></em>, <em class=“sig-param”><span class=“n”><span class=“pre”>charge</span></span><span class=“o”><span class=“pre”>=</span></span><span class=“default_value”><span class=“pre”>None</span></span></em>, <em class=“sig-param”><span class=“n”><span class=“pre”>atoms</span></span><span class=“o”><span class=“pre”>=</span></span><span class=“default_value”><span class=“pre”>None</span></span></em>, <em class=“sig-param”><span class=“n”><span class=“pre”>index</span></span><span class=“o”><span class=“pre”>=</span></span><span class=“default_value”><span class=“pre”>None</span></span></em><span class=“sig-paren”>)</span><a class=“reference internal” href=“../_modules/ase/atom.html#Atom”><span class=“viewcode-link”><span class=“pre”>[source]</span></span></a><a class=“headerlink” href=“#ase.atom.Atom” title=“Permalink to this definition”>¶</a></dt> <dd><p>Class for representing a single atom.</p> <p>Parameters:</p> <dl class=“simple”> <dt>symbol: str or int</dt><dd><p>Can be a chemical symbol (str) or an atomic number (int).</p> </dd> <dt>position: sequence of 3 floats</dt><dd><p>Atomic position.</p> </dd> <dt>tag: int</dt><dd><p>Special purpose tag.</p> </dd> <dt>momentum: sequence of 3 floats</dt><dd><p>Momentum for atom.</p> </dd> <dt>mass: float</dt><dd><p>Atomic mass in atomic units.</p> </dd> <dt>magmom: float or 3 floats</dt><dd><p>Magnetic moment.</p> </dd> <dt>charge: float</dt><dd><p>Atomic charge.</p> </dd> </dl> </dd></dl>

<p>The first argument to the constructor of an <a class=“reference internal” href=“#ase.atom.Atom” title=“ase.atom.Atom”>

py py-class docutils literal notranslate"
<span class="pre">Atom</span>

</a> object is the chemical symbol, and the second argument is the position in Å units (see <a class=“reference internal” href=“units.html#module-ase.units” title=“ase.units”>

py py-mod docutils literal notranslate"
<span class="pre">ase.units</span>

</a>). The position can be any numerical sequence of length three. The properties of an atom can also be set using keywords like it is done in the <em>a2</em> and <em>a3</em> examples above.</p> <p>More examples:</p> <div class=“doctest highlight-default notranslate”><div class=“highlight”><pre><span></span><span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>a</span> <span class=“o”>=</span> <span class=“n”>Atom</span><span class=“p”>(</span><span class=“s1”>&#39;O&#39;</span><span class=“p”>,</span> <span class=“n”>charge</span><span class=“o”>=-</span><span class=“mi”>2</span><span class=“p”>)</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>b</span> <span class=“o”>=</span> <span class=“n”>Atom</span><span class=“p”>(</span><span class=“mi”>8</span><span class=“p”>,</span> <span class=“n”>charge</span><span class=“o”>=-</span><span class=“mi”>2</span><span class=“p”>)</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>c</span> <span class=“o”>=</span> <span class=“n”>Atom</span><span class=“p”>(</span><span class=“s1”>&#39;H&#39;</span><span class=“p”>,</span> <span class=“p”>(</span><span class=“mi”>1</span><span class=“p”>,</span> <span class=“mi”>2</span><span class=“p”>,</span> <span class=“mi”>3</span><span class=“p”>),</span> <span class=“n”>magmom</span><span class=“o”>=</span><span class=“mi”>1</span><span class=“p”>)</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“nb”>print</span><span class=“p”>(</span><span class=“n”>a</span><span class=“o”>.</span><span class=“n”>charge</span><span class=“p”>,</span> <span class=“n”>a</span><span class=“o”>.</span><span class=“n”>position</span><span class=“p”>)</span> <span class=“go”>-2 [ 0. 0. 0.]</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>c</span><span class=“o”>.</span><span class=“n”>x</span> <span class=“o”>=</span> <span class=“mf”>0.0</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>c</span><span class=“o”>.</span><span class=“n”>position</span> <span class=“go”>array([ 0., 2., 3.])</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>b</span><span class=“o”>.</span><span class=“n”>symbol</span> <span class=“go”>&#39;O&#39;</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>c</span><span class=“o”>.</span><span class=“n”>tag</span> <span class=“o”>=</span> <span class=“mi”>42</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>c</span><span class=“o”>.</span><span class=“n”>number</span> <span class=“go”>1</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>c</span><span class=“o”>.</span><span class=“n”>symbol</span> <span class=“o”>=</span> <span class=“s1”>&#39;Li&#39;</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>c</span><span class=“o”>.</span><span class=“n”>number</span> <span class=“go”>3</span> </pre></div> </div> <p>If the atom object belongs to an Atoms object, then assigning values to the atom attributes will change the corresponding arrays of the atoms object:</p> <div class=“doctest highlight-default notranslate”><div class=“highlight”><pre><span></span><span class=“gp”>&gt;&gt;&gt; </span><span class=“kn”>from</span> <span class=“nn”>ase</span> <span class=“kn”>import</span> <span class=“n”>Atoms</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>OH</span> <span class=“o”>=</span> <span class=“n”>Atoms</span><span class=“p”>(</span><span class=“s1”>&#39;OH&#39;</span><span class=“p”>)</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>OH</span><span class=“p”>[</span><span class=“mi”>0</span><span class=“p”>]</span><span class=“o”>.</span><span class=“n”>charge</span> <span class=“o”>=</span> <span class=“o”>-</span><span class=“mi”>1</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>OH</span><span class=“o”>.</span><span class=“n”>get_initial_charges</span><span class=“p”>()</span> <span class=“go”>array([-1., 0.])</span> </pre></div> </div> <p>Another example:</p> <div class=“doctest highlight-default notranslate”><div class=“highlight”><pre><span></span><span class=“gp”>&gt;&gt;&gt; </span><span class=“k”>for</span> <span class=“n”>atom</span> <span class=“ow”>in</span> <span class=“n”>bulk</span><span class=“p”>:</span> <span class=“gp”>… </span> <span class=“k”>if</span> <span class=“n”>atom</span><span class=“o”>.</span><span class=“n”>symbol</span> <span class=“o”>==</span> <span class=“s1”>&#39;Ni&#39;</span><span class=“p”>:</span> <span class=“gp”>… </span> <span class=“n”>atom</span><span class=“o”>.</span><span class=“n”>magmom</span> <span class=“o”>=</span> <span class=“mf”>0.7</span> <span class=“c1”># set initial magnetic moment</span> </pre></div> </div> <p>The different properties of an atom can be obtained and changed via attributes (

literal notranslate"
<span class="pre">position</span>

,

literal notranslate"
<span class="pre">number</span>

,

literal notranslate"
<span class="pre">tag</span>

,

literal notranslate"
<span class="pre">momentum</span>

,

literal notranslate"
<span class="pre">mass</span>

,

literal notranslate"
<span class="pre">magmom</span>

,

literal notranslate"
<span class="pre">charge</span>

,

literal notranslate"
<span class="pre">x</span>

,

literal notranslate"
<span class="pre">y</span>

,

literal notranslate"
<span class="pre">z</span>

):</p> <div class=“doctest highlight-default notranslate”><div class=“highlight”><pre><span></span><span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>a1</span><span class=“o”>.</span><span class=“n”>position</span> <span class=“o”>=</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=“gp”>&gt;&gt;&gt; </span><span class=“n”>a1</span><span class=“o”>.</span><span class=“n”>position</span> <span class=“go”>[1, 0, 0]</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>a1</span><span class=“o”>.</span><span class=“n”>z</span> <span class=“o”>=</span> <span class=“mf”>2.5</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>a1</span><span class=“o”>.</span><span class=“n”>position</span> <span class=“go”>[1, 0, 2.5]</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>a2</span><span class=“o”>.</span><span class=“n”>magmom</span> <span class=“o”>=</span> <span class=“mf”>1.0</span> </pre></div> </div> <p>That last line will set the initial magnetic moment that some calculators use (similar to the <a class=“reference internal” href=“atoms.html#ase.Atoms.set_initial_magnetic_moments” title=“ase.Atoms.set_initial_magnetic_moments”>

py py-meth docutils literal notranslate"
<span class="pre">set_initial_magnetic_moments()</span>

</a> method).</p> <div class=“admonition note”> <p class=“admonition-title”>Note</p> <p>The

literal notranslate"
<span class="pre">position</span>

and

literal notranslate"
<span class="pre">momentum</span>

attributes refer to mutable objects, so in some cases, you may want to use

literal notranslate"
<span class="pre">a1.position.copy()</span>

in order to avoid changing the position of

literal notranslate"
<span class="pre">a1</span>

by accident.</p> </div> <section id=“getting-an-atom-from-an-atoms-object”> <h2>Getting an Atom from an Atoms object<a class=“headerlink” href=“#getting-an-atom-from-an-atoms-object” title=“Permalink to this headline”>¶</a></h2> <p>Indexing an <a class=“reference internal” href=“atoms.html#ase.Atoms” title=“ase.Atoms”>

py py-class docutils literal notranslate"
<span class="pre">Atoms</span>

</a> object returns an <a class=“reference internal” href=“#ase.atom.Atom” title=“ase.atom.Atom”>

py py-class docutils literal notranslate"
<span class="pre">Atom</span>

</a> object still remembering that it belongs to the collective <a class=“reference internal” href=“atoms.html#ase.Atoms” title=“ase.Atoms”>

py py-class docutils literal notranslate"
<span class="pre">Atoms</span>

</a>: Modifying it will also change the atoms object:</p> <div class=“doctest highlight-default notranslate”><div class=“highlight”><pre><span></span><span class=“gp”>&gt;&gt;&gt; </span><span class=“kn”>from</span> <span class=“nn”>ase.build</span> <span class=“kn”>import</span> <span class=“n”>molecule</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>atoms</span> <span class=“o”>=</span> <span class=“n”>molecule</span><span class=“p”>(</span><span class=“s1”>&#39;CH4&#39;</span><span class=“p”>)</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>atoms</span><span class=“o”>.</span><span class=“n”>get_positions</span><span class=“p”>()</span> <span class=“go”>array(0. , 0. , 0. ],</span> <span class="go"> [ 0.629118, 0.629118, 0.629118],</span> <span class="go"> [-0.629118, -0.629118, 0.629118],</span> <span class="go"> [ 0.629118, -0.629118, -0.629118],</span> <span class="go"> [-0.629118, 0.629118, -0.629118)</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>a</span> <span class=“o”>=</span> <span class=“n”>atoms</span><span class=“p”>[</span><span class=“mi”>2</span><span class=“p”>]</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>a</span> <span class=“go”>Atom(&#39;H&#39;, [-0.62911799999999996, -0.62911799999999996, 0.62911799999999996], index=2)</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>a</span><span class=“o”>.</span><span class=“n”>x</span> <span class=“o”>=</span> <span class=“mi”>0</span> <span class=“gp”>&gt;&gt;&gt; </span><span class=“n”>atoms</span><span class=“o”>.</span><span class=“n”>get_positions</span><span class=“p”>()</span> <span class=“go”>array(0. , 0. , 0. ],</span> <span class="go"> [ 0.629118, 0.629118, 0.629118],</span> <span class="go"> [ 0. , -0.629118, 0.629118],</span> <span class="go"> [ 0.629118, -0.629118, -0.629118],</span> <span class="go"> [-0.629118, 0.629118, -0.629118)</span> </pre></div> </div> <div class=“admonition seealso”> <p class=“admonition-title”>See also</p> <dl class=“simple”> <dt><a class=“reference internal” href=“atoms.html#module-ase” title=“ase”>

py py-mod docutils literal notranslate"
<span class="pre">ase</span>

</a>:</dt><dd><p>More information about how to use collections of atoms.</p> </dd> <dt><a class=“reference internal” href=“calculators/calculators.html#module-ase.calculators” title=“ase.calculators: Energy, force and stress calculators.”>

py py-mod docutils literal notranslate"
<span class="pre">ase.calculators</span>

</a>:</dt><dd><p>Information about how to calculate forces and energies of atoms.</p> </dd> </dl> </div> </section> </section>

         </div>
        </div>
        <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
      <a href="dimer.html" class="btn btn-neutral float-left" title="Dimer method" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
      <a href="transport/transport.html" class="btn btn-neutral float-right" title="Electron transport" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
  </div>
<hr/>
<div role="contentinfo">
  <p>&#169; Copyright 2022, ASE-developers.
    <span class="lastupdated">Last updated on Tue, 23 Aug 2022 07:38:04.
    </span></p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
  <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
  provided by <a href="https://readthedocs.org">Read the Docs</a>.

</html>

abinitio/ase_atom.1661241507.txt.gz · 最終更新: 2022/08/23 16:58 by kimi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki