source: sphinxdocs/build/html/_modules/GSASIIElem.html @ 1709

Last change on this file since 1709 was 1709, checked in by toby, 8 years ago

change sphinx docs links; rebuild & fixing minor formatting

  • Property svn:mime-type set to text/html
File size: 84.4 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5<html xmlns="http://www.w3.org/1999/xhtml">
6  <head>
7    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8   
9    <title>GSASIIElem &mdash; GSAS-II 0.2.0 documentation</title>
10   
11    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
12    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
13   
14    <script type="text/javascript">
15      var DOCUMENTATION_OPTIONS = {
16        URL_ROOT:    '../',
17        VERSION:     '0.2.0',
18        COLLAPSE_INDEX: false,
19        FILE_SUFFIX: '.html',
20        HAS_SOURCE:  true
21      };
22    </script>
23    <script type="text/javascript" src="../_static/jquery.js"></script>
24    <script type="text/javascript" src="../_static/underscore.js"></script>
25    <script type="text/javascript" src="../_static/doctools.js"></script>
26    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
27    <link rel="top" title="GSAS-II 0.2.0 documentation" href="../index.html" />
28    <link rel="up" title="Module code" href="index.html" /> 
29  </head>
30  <body>
31    <div class="related">
32      <h3>Navigation</h3>
33      <ul>
34        <li class="right" style="margin-right: 10px">
35          <a href="../genindex.html" title="General Index"
36             accesskey="I">index</a></li>
37        <li class="right" >
38          <a href="../py-modindex.html" title="Python Module Index"
39             >modules</a> |</li>
40        <li><a href="../index.html">GSAS-II 0.2.0 documentation</a> &raquo;</li>
41          <li><a href="index.html" accesskey="U">Module code</a> &raquo;</li> 
42      </ul>
43    </div> 
44
45    <div class="document">
46      <div class="documentwrapper">
47        <div class="bodywrapper">
48          <div class="body">
49           
50  <h1>Source code for GSASIIElem</h1><div class="highlight"><pre>
51<span class="c"># -*- coding: utf-8 -*-</span>
52<span class="sd">&quot;&quot;&quot;</span>
53<span class="sd">*GSASIIElem: functions for element types*</span>
54<span class="sd">-----------------------------------------</span>
55
56<span class="sd">&quot;&quot;&quot;</span>
57<span class="c"># Copyright: 2008, Robert B. Von Dreele &amp; Brian H. Toby (Argonne National Laboratory)</span>
58<span class="c">########### SVN repository information ###################</span>
59<span class="c"># $Date: 2014-12-01 12:39:26 -0600 (Mon, 01 Dec 2014) $</span>
60<span class="c"># $Author: toby $</span>
61<span class="c"># $Revision: 1589 $</span>
62<span class="c"># $URL: https://subversion.xray.aps.anl.gov/pyGSAS/trunk/GSASIIElem.py $</span>
63<span class="c"># $Id: GSASIIElem.py 1589 2014-12-01 18:39:26Z toby $</span>
64<span class="c">########### SVN repository information ###################</span>
65
66<span class="kn">import</span> <span class="nn">math</span>
67<span class="kn">import</span> <span class="nn">os.path</span>
68<span class="kn">import</span> <span class="nn">GSASIIpath</span>
69<span class="n">GSASIIpath</span><span class="o">.</span><span class="n">SetVersionNumber</span><span class="p">(</span><span class="s">&quot;$Revision: 1589 $&quot;</span><span class="p">)</span>
70<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
71<span class="kn">import</span> <span class="nn">atmdata</span>
72
73<span class="n">getElSym</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">sym</span><span class="p">:</span> <span class="n">sym</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;+&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;-&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span>
74<div class="viewcode-block" id="GetFormFactorCoeff"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.GetFormFactorCoeff">[docs]</a><span class="k">def</span> <span class="nf">GetFormFactorCoeff</span><span class="p">(</span><span class="n">El</span><span class="p">):</span>
75    <span class="sd">&quot;&quot;&quot;Read X-ray form factor coefficients from `atomdata.py` file</span>
76
77<span class="sd">    :param str El: element 1-2 character symbol, case irrevelant</span>
78<span class="sd">    :return: `FormFactors`: list of form factor dictionaries</span>
79<span class="sd">    </span>
80<span class="sd">    Each X-ray form factor dictionary is:</span>
81<span class="sd">    </span>
82<span class="sd">    * `Symbol`: 4 character element symbol with valence (e.g. &#39;NI+2&#39;)</span>
83<span class="sd">    * `Z`: atomic number</span>
84<span class="sd">    * `fa`: 4 A coefficients</span>
85<span class="sd">    * `fb`: 4 B coefficients</span>
86<span class="sd">    * `fc`: C coefficient</span>
87<span class="sd">    </span>
88<span class="sd">    &quot;&quot;&quot;</span>
89   
90    <span class="n">Els</span> <span class="o">=</span> <span class="n">El</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
91    <span class="n">valences</span> <span class="o">=</span> <span class="p">[</span><span class="n">ky</span> <span class="k">for</span> <span class="n">ky</span> <span class="ow">in</span> <span class="n">atmdata</span><span class="o">.</span><span class="n">XrayFF</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">if</span> <span class="n">Els</span> <span class="o">==</span> <span class="n">getElSym</span><span class="p">(</span><span class="n">ky</span><span class="p">)]</span>
92    <span class="n">FormFactors</span> <span class="o">=</span> <span class="p">[</span><span class="n">atmdata</span><span class="o">.</span><span class="n">XrayFF</span><span class="p">[</span><span class="n">val</span><span class="p">]</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">valences</span><span class="p">]</span>
93    <span class="k">for</span> <span class="n">Sy</span><span class="p">,</span><span class="n">FF</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">valences</span><span class="p">,</span><span class="n">FormFactors</span><span class="p">):</span>
94        <span class="n">FF</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;Symbol&#39;</span><span class="p">:</span><span class="n">Sy</span><span class="o">.</span><span class="n">upper</span><span class="p">()})</span>
95    <span class="k">return</span> <span class="n">FormFactors</span>
96    </div>
97<div class="viewcode-block" id="GetFFtable"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.GetFFtable">[docs]</a><span class="k">def</span> <span class="nf">GetFFtable</span><span class="p">(</span><span class="n">atomTypes</span><span class="p">):</span>
98    <span class="sd">&#39;&#39;&#39; returns a dictionary of form factor data for atom types found in atomTypes</span>
99
100<span class="sd">    :param list atomTypes: list of atom types</span>
101<span class="sd">    :return: FFtable, dictionary of form factor data; key is atom type</span>
102
103<span class="sd">    &#39;&#39;&#39;</span>
104    <span class="n">FFtable</span> <span class="o">=</span> <span class="p">{}</span>
105    <span class="k">for</span> <span class="n">El</span> <span class="ow">in</span> <span class="n">atomTypes</span><span class="p">:</span>
106        <span class="n">FFs</span> <span class="o">=</span> <span class="n">GetFormFactorCoeff</span><span class="p">(</span><span class="n">getElSym</span><span class="p">(</span><span class="n">El</span><span class="p">))</span>
107        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">FFs</span><span class="p">:</span>
108            <span class="k">if</span> <span class="n">item</span><span class="p">[</span><span class="s">&#39;Symbol&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">El</span><span class="o">.</span><span class="n">upper</span><span class="p">():</span>
109                <span class="n">FFtable</span><span class="p">[</span><span class="n">El</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span>
110    <span class="k">return</span> <span class="n">FFtable</span>
111    </div>
112<div class="viewcode-block" id="GetBLtable"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.GetBLtable">[docs]</a><span class="k">def</span> <span class="nf">GetBLtable</span><span class="p">(</span><span class="n">General</span><span class="p">):</span>
113    <span class="sd">&#39;&#39;&#39; returns a dictionary of neutron scattering length data for atom types &amp; isotopes found in General</span>
114
115<span class="sd">    :param dict General: dictionary of phase info.; includes AtomTypes &amp; Isotopes</span>
116<span class="sd">    :return: BLtable, dictionary of scattering length data; key is atom type</span>
117<span class="sd">    &#39;&#39;&#39;</span>
118    <span class="n">atomTypes</span> <span class="o">=</span> <span class="n">General</span><span class="p">[</span><span class="s">&#39;AtomTypes&#39;</span><span class="p">]</span>
119    <span class="n">BLtable</span> <span class="o">=</span> <span class="p">{}</span>
120    <span class="n">isotope</span> <span class="o">=</span> <span class="n">General</span><span class="p">[</span><span class="s">&#39;Isotope&#39;</span><span class="p">]</span>
121    <span class="k">for</span> <span class="n">El</span> <span class="ow">in</span> <span class="n">atomTypes</span><span class="p">:</span>
122        <span class="n">ElS</span> <span class="o">=</span> <span class="n">getElSym</span><span class="p">(</span><span class="n">El</span><span class="p">)</span>
123        <span class="k">if</span> <span class="s">&#39;Nat&#39;</span> <span class="ow">in</span> <span class="n">isotope</span><span class="p">[</span><span class="n">El</span><span class="p">]:</span>
124            <span class="n">BLtable</span><span class="p">[</span><span class="n">El</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">isotope</span><span class="p">[</span><span class="n">El</span><span class="p">],</span><span class="n">atmdata</span><span class="o">.</span><span class="n">AtmBlens</span><span class="p">[</span><span class="n">ElS</span><span class="o">+</span><span class="s">&#39;_&#39;</span><span class="p">]]</span>
125        <span class="k">else</span><span class="p">:</span>
126            <span class="n">BLtable</span><span class="p">[</span><span class="n">El</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">isotope</span><span class="p">[</span><span class="n">El</span><span class="p">],</span><span class="n">atmdata</span><span class="o">.</span><span class="n">AtmBlens</span><span class="p">[</span><span class="n">ElS</span><span class="o">+</span><span class="s">&#39;_&#39;</span><span class="o">+</span><span class="n">isotope</span><span class="p">[</span><span class="n">El</span><span class="p">]]]</span>
127    <span class="k">return</span> <span class="n">BLtable</span>
128        </div>
129<div class="viewcode-block" id="getFFvalues"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.getFFvalues">[docs]</a><span class="k">def</span> <span class="nf">getFFvalues</span><span class="p">(</span><span class="n">FFtables</span><span class="p">,</span><span class="n">SQ</span><span class="p">,</span><span class="n">ifList</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
130    <span class="s">&#39;Needs a doc string&#39;</span>
131    <span class="k">if</span> <span class="n">ifList</span><span class="p">:</span>
132        <span class="n">FFvals</span> <span class="o">=</span> <span class="p">[]</span>
133        <span class="k">for</span> <span class="n">El</span> <span class="ow">in</span> <span class="n">FFtables</span><span class="p">:</span>
134            <span class="n">FFvals</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ScatFac</span><span class="p">(</span><span class="n">FFtables</span><span class="p">[</span><span class="n">El</span><span class="p">],</span><span class="n">SQ</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
135    <span class="k">else</span><span class="p">:</span>
136        <span class="n">FFvals</span> <span class="o">=</span> <span class="p">{}</span>
137        <span class="k">for</span> <span class="n">El</span> <span class="ow">in</span> <span class="n">FFtables</span><span class="p">:</span>
138            <span class="n">FFvals</span><span class="p">[</span><span class="n">El</span><span class="p">]</span> <span class="o">=</span> <span class="n">ScatFac</span><span class="p">(</span><span class="n">FFtables</span><span class="p">[</span><span class="n">El</span><span class="p">],</span><span class="n">SQ</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
139    <span class="k">return</span> <span class="n">FFvals</span>
140    </div>
141<div class="viewcode-block" id="getBLvalues"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.getBLvalues">[docs]</a><span class="k">def</span> <span class="nf">getBLvalues</span><span class="p">(</span><span class="n">BLtables</span><span class="p">,</span><span class="n">ifList</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
142    <span class="s">&#39;Needs a doc string&#39;</span>
143    <span class="k">if</span> <span class="n">ifList</span><span class="p">:</span>
144        <span class="n">BLvals</span> <span class="o">=</span> <span class="p">[]</span>
145        <span class="k">for</span> <span class="n">El</span> <span class="ow">in</span> <span class="n">BLtables</span><span class="p">:</span>
146            <span class="k">if</span> <span class="s">&#39;BW-LS&#39;</span> <span class="ow">in</span> <span class="n">El</span><span class="p">:</span>
147                <span class="n">BLvals</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">BLtables</span><span class="p">[</span><span class="n">El</span><span class="p">][</span><span class="mi">1</span><span class="p">][</span><span class="s">&#39;BW-LS&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
148            <span class="k">else</span><span class="p">:</span>
149                <span class="n">BLvals</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">BLtables</span><span class="p">[</span><span class="n">El</span><span class="p">][</span><span class="mi">1</span><span class="p">][</span><span class="s">&#39;SL&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
150    <span class="k">else</span><span class="p">:</span>
151        <span class="n">BLvals</span> <span class="o">=</span> <span class="p">{}</span>
152        <span class="k">for</span> <span class="n">El</span> <span class="ow">in</span> <span class="n">BLtables</span><span class="p">:</span>
153            <span class="k">if</span> <span class="s">&#39;BW-LS&#39;</span> <span class="ow">in</span> <span class="n">El</span><span class="p">:</span>
154                <span class="n">BLvals</span><span class="p">[</span><span class="n">El</span><span class="p">]</span> <span class="o">=</span> <span class="n">BLtables</span><span class="p">[</span><span class="n">El</span><span class="p">][</span><span class="mi">1</span><span class="p">][</span><span class="s">&#39;BW-LS&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
155            <span class="k">else</span><span class="p">:</span>
156                <span class="n">BLvals</span><span class="p">[</span><span class="n">El</span><span class="p">]</span> <span class="o">=</span> <span class="n">BLtables</span><span class="p">[</span><span class="n">El</span><span class="p">][</span><span class="mi">1</span><span class="p">][</span><span class="s">&#39;SL&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
157    <span class="k">return</span> <span class="n">BLvals</span>
158        </div>
159<div class="viewcode-block" id="GetFFC5"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.GetFFC5">[docs]</a><span class="k">def</span> <span class="nf">GetFFC5</span><span class="p">(</span><span class="n">ElSym</span><span class="p">):</span>
160    <span class="sd">&#39;&#39;&#39;Get 5 term form factor and Compton scattering data</span>
161
162<span class="sd">    :param ElSym: str(1-2 character element symbol with proper case);</span>
163<span class="sd">    :return El: dictionary with 5 term form factor &amp; compton coefficients</span>
164<span class="sd">    &#39;&#39;&#39;</span>
165    <span class="kn">import</span> <span class="nn">FormFactors</span> <span class="kn">as</span> <span class="nn">FF</span>
166    <span class="n">El</span> <span class="o">=</span> <span class="p">{}</span>
167    <span class="n">FF5</span> <span class="o">=</span> <span class="n">FF</span><span class="o">.</span><span class="n">FFac5term</span><span class="p">[</span><span class="n">ElSym</span><span class="p">]</span>
168    <span class="n">El</span><span class="p">[</span><span class="s">&#39;fa&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">FF5</span><span class="p">[:</span><span class="mi">5</span><span class="p">]</span>
169    <span class="n">El</span><span class="p">[</span><span class="s">&#39;fc&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">FF5</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span>
170    <span class="n">El</span><span class="p">[</span><span class="s">&#39;fb&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">FF5</span><span class="p">[</span><span class="mi">6</span><span class="p">:]</span>
171    <span class="n">Cmp5</span> <span class="o">=</span> <span class="n">FF</span><span class="o">.</span><span class="n">Compton</span><span class="p">[</span><span class="n">ElSym</span><span class="p">]</span>
172    <span class="n">El</span><span class="p">[</span><span class="s">&#39;cmpz&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Cmp5</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
173    <span class="n">El</span><span class="p">[</span><span class="s">&#39;cmpa&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Cmp5</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">6</span><span class="p">]</span>
174    <span class="n">El</span><span class="p">[</span><span class="s">&#39;cmpb&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Cmp5</span><span class="p">[</span><span class="mi">6</span><span class="p">:]</span>
175    <span class="k">return</span> <span class="n">El</span>
176    </div>
177<div class="viewcode-block" id="CheckElement"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.CheckElement">[docs]</a><span class="k">def</span> <span class="nf">CheckElement</span><span class="p">(</span><span class="n">El</span><span class="p">):</span>
178    <span class="sd">&#39;&#39;&#39;Check if element El is in the periodic table</span>
179
180<span class="sd">    :param str El: One or two letter element symbol, capitaliztion ignored</span>
181<span class="sd">    :returns: True if the element is found</span>
182
183<span class="sd">    &#39;&#39;&#39;</span>
184    <span class="kn">import</span> <span class="nn">ElementTable</span> <span class="kn">as</span> <span class="nn">ET</span>
185    <span class="n">Elements</span> <span class="o">=</span> <span class="p">[]</span>
186    <span class="k">for</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">ET</span><span class="o">.</span><span class="n">ElTable</span><span class="p">:</span>
187        <span class="n">Elements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">elem</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
188    <span class="k">if</span> <span class="n">El</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span> <span class="ow">in</span> <span class="n">Elements</span><span class="p">:</span>
189        <span class="k">return</span> <span class="bp">True</span>
190    <span class="k">else</span><span class="p">:</span>
191        <span class="k">return</span> <span class="bp">False</span> 
192</div>
193<div class="viewcode-block" id="FixValence"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.FixValence">[docs]</a><span class="k">def</span> <span class="nf">FixValence</span><span class="p">(</span><span class="n">El</span><span class="p">):</span>
194    <span class="s">&#39;Returns the element symbol, even when a valence is present&#39;</span>
195    <span class="k">if</span> <span class="s">&#39;+&#39;</span> <span class="ow">in</span> <span class="n">El</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span> <span class="c">#converts An+/- to A+/-n</span>
196        <span class="n">num</span> <span class="o">=</span> <span class="n">El</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span>
197        <span class="n">El</span> <span class="o">=</span> <span class="n">El</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">num</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="s">&#39;+&#39;</span><span class="o">+</span><span class="n">num</span>
198    <span class="k">if</span> <span class="s">&#39;+0&#39;</span> <span class="ow">in</span> <span class="n">El</span><span class="p">:</span>
199        <span class="n">El</span> <span class="o">=</span> <span class="n">El</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;+0&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
200    <span class="k">if</span> <span class="s">&#39;-&#39;</span> <span class="ow">in</span> <span class="n">El</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
201        <span class="n">num</span> <span class="o">=</span> <span class="n">El</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span>
202        <span class="n">El</span> <span class="o">=</span> <span class="n">El</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">num</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="s">&#39;-&#39;</span><span class="o">+</span><span class="n">num</span>
203    <span class="k">if</span> <span class="s">&#39;-0&#39;</span> <span class="ow">in</span> <span class="n">El</span><span class="p">:</span>
204        <span class="n">El</span> <span class="o">=</span> <span class="n">El</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;-0&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
205    <span class="k">return</span> <span class="n">El</span>
206    </div>
207<div class="viewcode-block" id="GetAtomInfo"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.GetAtomInfo">[docs]</a><span class="k">def</span> <span class="nf">GetAtomInfo</span><span class="p">(</span><span class="n">El</span><span class="p">):</span>
208    <span class="s">&#39;reads element information from atmdata.py&#39;</span>
209    <span class="kn">import</span> <span class="nn">ElementTable</span> <span class="kn">as</span> <span class="nn">ET</span>
210    <span class="n">Elements</span> <span class="o">=</span> <span class="p">[</span><span class="n">elem</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="k">for</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">ET</span><span class="o">.</span><span class="n">ElTable</span><span class="p">]</span>
211    <span class="n">AtomInfo</span> <span class="o">=</span> <span class="p">{}</span>
212    <span class="n">ElS</span> <span class="o">=</span> <span class="n">getElSym</span><span class="p">(</span><span class="n">El</span><span class="p">)</span>
213    <span class="k">if</span> <span class="n">El</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">atmdata</span><span class="o">.</span><span class="n">XrayFF</span><span class="p">:</span>
214        <span class="k">if</span> <span class="n">ElS</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">atmdata</span><span class="o">.</span><span class="n">XrayFF</span><span class="p">:</span>
215            <span class="k">print</span><span class="p">(</span><span class="s">&#39;Atom type &#39;</span><span class="o">+</span><span class="n">El</span><span class="o">+</span><span class="s">&#39; not found, using UNK&#39;</span><span class="p">)</span>
216            <span class="k">return</span> <span class="c"># not sure what this element should be!</span>
217        <span class="k">print</span><span class="p">(</span><span class="s">&#39;Atom type &#39;</span><span class="o">+</span><span class="n">El</span><span class="o">+</span><span class="s">&#39; not found, using &#39;</span><span class="o">+</span><span class="n">ElS</span><span class="p">)</span>
218        <span class="n">El</span> <span class="o">=</span> <span class="n">ElS</span>
219    <span class="n">AtomInfo</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">([</span><span class="s">&#39;Drad&#39;</span><span class="p">,</span><span class="s">&#39;Arad&#39;</span><span class="p">,</span><span class="s">&#39;Vdrad&#39;</span><span class="p">,</span><span class="s">&#39;Hbrad&#39;</span><span class="p">],</span><span class="n">atmdata</span><span class="o">.</span><span class="n">AtmSize</span><span class="p">[</span><span class="n">ElS</span><span class="p">])))</span>
220    <span class="n">AtomInfo</span><span class="p">[</span><span class="s">&#39;Symbol&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">El</span>
221    <span class="n">AtomInfo</span><span class="p">[</span><span class="s">&#39;Color&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">ET</span><span class="o">.</span><span class="n">ElTable</span><span class="p">[</span><span class="n">Elements</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">ElS</span><span class="p">)][</span><span class="mi">6</span><span class="p">]</span>
222    <span class="n">AtomInfo</span><span class="p">[</span><span class="s">&#39;Z&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">atmdata</span><span class="o">.</span><span class="n">XrayFF</span><span class="p">[</span><span class="n">El</span><span class="p">][</span><span class="s">&#39;Z&#39;</span><span class="p">]</span>
223    <span class="n">isotopes</span> <span class="o">=</span> <span class="p">[</span><span class="n">ky</span> <span class="k">for</span> <span class="n">ky</span> <span class="ow">in</span> <span class="n">atmdata</span><span class="o">.</span><span class="n">AtmBlens</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">if</span> <span class="n">ElS</span> <span class="o">==</span> <span class="n">ky</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;_&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]]</span>
224    <span class="n">isotopes</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
225    <span class="n">AtomInfo</span><span class="p">[</span><span class="s">&#39;Mass&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">atmdata</span><span class="o">.</span><span class="n">AtmBlens</span><span class="p">[</span><span class="n">isotopes</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="s">&#39;Mass&#39;</span><span class="p">]</span>    <span class="c">#default to nat. abund.</span>
226    <span class="n">AtomInfo</span><span class="p">[</span><span class="s">&#39;Isotopes&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
227    <span class="k">for</span> <span class="n">isotope</span> <span class="ow">in</span> <span class="n">isotopes</span><span class="p">:</span>
228        <span class="n">data</span> <span class="o">=</span> <span class="n">atmdata</span><span class="o">.</span><span class="n">AtmBlens</span><span class="p">[</span><span class="n">isotope</span><span class="p">]</span>
229        <span class="k">if</span> <span class="n">isotope</span> <span class="o">==</span> <span class="n">ElS</span><span class="o">+</span><span class="s">&#39;_&#39;</span><span class="p">:</span>
230            <span class="n">AtomInfo</span><span class="p">[</span><span class="s">&#39;Isotopes&#39;</span><span class="p">][</span><span class="s">&#39;Nat. Abund.&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span>
231        <span class="k">else</span><span class="p">:</span>
232            <span class="n">AtomInfo</span><span class="p">[</span><span class="s">&#39;Isotopes&#39;</span><span class="p">][</span><span class="n">isotope</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;_&#39;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">data</span>
233    <span class="k">return</span> <span class="n">AtomInfo</span>
234        </div>
235<div class="viewcode-block" id="GetXsectionCoeff"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.GetXsectionCoeff">[docs]</a><span class="k">def</span> <span class="nf">GetXsectionCoeff</span><span class="p">(</span><span class="n">El</span><span class="p">):</span>
236    <span class="sd">&quot;&quot;&quot;Read atom orbital scattering cross sections for fprime calculations via Cromer-Lieberman algorithm</span>
237
238<span class="sd">    :param El: 2 character element symbol</span>
239<span class="sd">    :return: Orbs: list of orbitals each a dictionary with detailed orbital information used by FPcalc</span>
240
241<span class="sd">    each dictionary is:</span>
242
243<span class="sd">    * &#39;OrbName&#39;: Orbital name read from file</span>
244<span class="sd">    * &#39;IfBe&#39; 0/2 depending on orbital</span>
245<span class="sd">    * &#39;BindEn&#39;: binding energy</span>
246<span class="sd">    * &#39;BB&#39;: BindEn/0.02721</span>
247<span class="sd">    * &#39;XSectIP&#39;: 5 cross section inflection points</span>
248<span class="sd">    * &#39;ElEterm&#39;: energy correction term</span>
249<span class="sd">    * &#39;SEdge&#39;: absorption edge for orbital</span>
250<span class="sd">    * &#39;Nval&#39;: 10/11 depending on IfBe</span>
251<span class="sd">    * &#39;LEner&#39;: 10/11 values of log(energy)</span>
252<span class="sd">    * &#39;LXSect&#39;: 10/11 values of log(cross section)</span>
253
254<span class="sd">    &quot;&quot;&quot;</span>
255    <span class="n">AU</span> <span class="o">=</span> <span class="mf">2.80022e+7</span>
256    <span class="n">C1</span> <span class="o">=</span> <span class="mf">0.02721</span>
257    <span class="n">ElS</span> <span class="o">=</span> <span class="n">El</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
258    <span class="n">ElS</span> <span class="o">=</span> <span class="n">ElS</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
259    <span class="n">filename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">__file__</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span><span class="s">&#39;Xsect.dat&#39;</span><span class="p">)</span>
260    <span class="k">try</span><span class="p">:</span>
261        <span class="n">xsec</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span><span class="s">&#39;Ur&#39;</span><span class="p">)</span>
262    <span class="k">except</span><span class="p">:</span>
263        <span class="k">print</span> <span class="s">&#39;**** ERROR - File Xsect.dat not found in directory </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">filename</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
264        <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
265    <span class="n">S</span> <span class="o">=</span> <span class="s">&#39;1&#39;</span>
266    <span class="n">Orbs</span> <span class="o">=</span> <span class="p">[]</span>
267    <span class="k">while</span> <span class="n">S</span><span class="p">:</span>
268        <span class="n">S</span> <span class="o">=</span> <span class="n">xsec</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
269        <span class="k">if</span> <span class="n">S</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="n">ElS</span><span class="p">:</span>
270            <span class="n">S</span> <span class="o">=</span> <span class="n">S</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">xsec</span><span class="o">.</span><span class="n">readline</span><span class="p">()[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">xsec</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
271            <span class="n">OrbName</span> <span class="o">=</span> <span class="n">S</span><span class="p">[</span><span class="mi">9</span><span class="p">:</span><span class="mi">14</span><span class="p">]</span>
272            <span class="n">S</span> <span class="o">=</span> <span class="n">S</span><span class="p">[</span><span class="mi">14</span><span class="p">:]</span>
273            <span class="n">IfBe</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">S</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
274            <span class="n">S</span> <span class="o">=</span> <span class="n">S</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
275            <span class="n">val</span> <span class="o">=</span> <span class="n">S</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
276            <span class="n">BindEn</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">val</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
277            <span class="n">BB</span> <span class="o">=</span> <span class="n">BindEn</span><span class="o">/</span><span class="n">C1</span>
278            <span class="n">Orb</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;OrbName&#39;</span><span class="p">:</span><span class="n">OrbName</span><span class="p">,</span><span class="s">&#39;IfBe&#39;</span><span class="p">:</span><span class="n">IfBe</span><span class="p">,</span><span class="s">&#39;BindEn&#39;</span><span class="p">:</span><span class="n">BindEn</span><span class="p">,</span><span class="s">&#39;BB&#39;</span><span class="p">:</span><span class="n">BB</span><span class="p">}</span>
279            <span class="n">Energy</span> <span class="o">=</span> <span class="p">[]</span>
280            <span class="n">XSect</span> <span class="o">=</span> <span class="p">[]</span>
281            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">11</span><span class="p">):</span>
282                <span class="n">Energy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">val</span><span class="p">[</span><span class="mi">2</span><span class="o">*</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]))</span>
283                <span class="n">XSect</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">val</span><span class="p">[</span><span class="mi">2</span><span class="o">*</span><span class="n">i</span><span class="o">+</span><span class="mi">2</span><span class="p">]))</span>
284            <span class="n">XSecIP</span> <span class="o">=</span> <span class="p">[]</span>
285            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span> <span class="n">XSecIP</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">XSect</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">5</span><span class="p">]</span><span class="o">/</span><span class="n">AU</span><span class="p">)</span>
286            <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;XSecIP&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">XSecIP</span>
287            <span class="k">if</span> <span class="n">IfBe</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
288                <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;SEdge&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">XSect</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span><span class="o">/</span><span class="n">AU</span>
289                <span class="n">Nval</span> <span class="o">=</span> <span class="mi">11</span>
290            <span class="k">else</span><span class="p">:</span>
291                <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;ElEterm&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">XSect</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span>
292                <span class="k">del</span> <span class="n">Energy</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span>
293                <span class="k">del</span> <span class="n">XSect</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span>
294                <span class="n">Nval</span> <span class="o">=</span> <span class="mi">10</span>
295                <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;SEdge&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
296            <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;Nval&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">Nval</span>
297            <span class="n">D</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">Energy</span><span class="p">,</span><span class="n">XSect</span><span class="p">))</span>
298            <span class="n">Energy</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
299            <span class="n">X</span> <span class="o">=</span> <span class="p">[]</span>
300            <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">Energy</span><span class="p">:</span>
301                <span class="n">X</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">D</span><span class="p">[</span><span class="n">key</span><span class="p">])</span>
302            <span class="n">XSect</span> <span class="o">=</span> <span class="n">X</span>
303            <span class="n">LEner</span> <span class="o">=</span> <span class="p">[]</span>
304            <span class="n">LXSect</span> <span class="o">=</span> <span class="p">[]</span>
305            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">Nval</span><span class="p">):</span>
306                <span class="n">LEner</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">Energy</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
307                <span class="k">if</span> <span class="n">XSect</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.0</span><span class="p">:</span>
308                    <span class="n">LXSect</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">XSect</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
309                <span class="k">else</span><span class="p">:</span>
310                    <span class="n">LXSect</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mf">0.0</span><span class="p">)</span>
311            <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;LEner&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">LEner</span>
312            <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;LXSect&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">LXSect</span>
313            <span class="n">Orbs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Orb</span><span class="p">)</span>
314    <span class="n">xsec</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
315    <span class="k">return</span> <span class="n">Orbs</span>
316    </div>
317<div class="viewcode-block" id="GetMagFormFacCoeff"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.GetMagFormFacCoeff">[docs]</a><span class="k">def</span> <span class="nf">GetMagFormFacCoeff</span><span class="p">(</span><span class="n">El</span><span class="p">):</span>
318    <span class="sd">&quot;&quot;&quot;Read magnetic form factor data from atomdata.asc file</span>
319
320<span class="sd">    :param El: 2 character element symbol</span>
321<span class="sd">    :return: MagFormFactors: list of all magnetic form factors dictionaries for element El.</span>
322
323<span class="sd">    each dictionary contains:</span>
324
325<span class="sd">    * &#39;Symbol&#39;:Symbol</span>
326<span class="sd">    * &#39;Z&#39;:Z</span>
327<span class="sd">    * &#39;mfa&#39;: 4 MA coefficients</span>
328<span class="sd">    * &#39;nfa&#39;: 4 NA coefficients</span>
329<span class="sd">    * &#39;mfb&#39;: 4 MB coefficients</span>
330<span class="sd">    * &#39;nfb&#39;: 4 NB coefficients</span>
331<span class="sd">    * &#39;mfc&#39;: MC coefficient</span>
332<span class="sd">    * &#39;nfc&#39;: NC coefficient</span>
333<span class="sd">    </span>
334<span class="sd">    &quot;&quot;&quot;</span>
335    <span class="n">MagFormFactors</span> <span class="o">=</span> <span class="p">[]</span>
336    <span class="n">mags</span> <span class="o">=</span> <span class="p">[</span><span class="n">ky</span> <span class="k">for</span> <span class="n">ky</span> <span class="ow">in</span> <span class="n">atmdata</span><span class="o">.</span><span class="n">MagFF</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">if</span> <span class="n">El</span> <span class="o">==</span> <span class="n">getElSym</span><span class="p">(</span><span class="n">ky</span><span class="p">)]</span>
337    <span class="k">for</span> <span class="n">mag</span> <span class="ow">in</span> <span class="n">mags</span><span class="p">:</span>
338        <span class="n">magData</span> <span class="o">=</span> <span class="p">{}</span>
339        <span class="n">data</span> <span class="o">=</span> <span class="n">atmdata</span><span class="o">.</span><span class="n">MagFF</span><span class="p">[</span><span class="n">mag</span><span class="p">]</span>
340        <span class="n">magData</span><span class="p">[</span><span class="s">&#39;Symbol&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">mag</span>
341        <span class="n">magData</span><span class="p">[</span><span class="s">&#39;Z&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">atmdata</span><span class="o">.</span><span class="n">XrayFF</span><span class="p">[</span><span class="n">getElSym</span><span class="p">(</span><span class="n">mags</span><span class="p">)][</span><span class="s">&#39;Z&#39;</span><span class="p">]</span>
342        <span class="n">magData</span><span class="p">[</span><span class="s">&#39;mfa&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;M&#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="ow">in</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="mi">4</span><span class="p">,</span><span class="mi">6</span><span class="p">]]</span>
343        <span class="n">magdata</span><span class="p">[</span><span class="s">&#39;mfb&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;M&#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="ow">in</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="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">]]</span>
344        <span class="n">magdata</span><span class="p">[</span><span class="s">&#39;mfc&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;M&#39;</span><span class="p">][</span><span class="mi">8</span><span class="p">]</span>
345        <span class="n">magData</span><span class="p">[</span><span class="s">&#39;nfa&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;N&#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="ow">in</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="mi">4</span><span class="p">,</span><span class="mi">6</span><span class="p">]]</span>
346        <span class="n">magdata</span><span class="p">[</span><span class="s">&#39;nfb&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">[</span><span class="s">&#39;N&#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="ow">in</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="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">]]</span>
347        <span class="n">magdata</span><span class="p">[</span><span class="s">&#39;nfc&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;N&#39;</span><span class="p">][</span><span class="mi">8</span><span class="p">]</span>
348        <span class="n">magdata</span><span class="p">[</span><span class="s">&#39;g-fac&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;N&#39;</span><span class="p">][</span><span class="mi">9</span><span class="p">]</span>
349        <span class="n">MagFormFactors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">magdata</span><span class="p">)</span>
350    <span class="k">return</span> <span class="n">MagFormFactors</span>
351</div>
352<div class="viewcode-block" id="ScatFac"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.ScatFac">[docs]</a><span class="k">def</span> <span class="nf">ScatFac</span><span class="p">(</span><span class="n">El</span><span class="p">,</span> <span class="n">SQ</span><span class="p">):</span>
353    <span class="sd">&quot;&quot;&quot;compute value of form factor</span>
354
355<span class="sd">    :param El: element dictionary defined in GetFormFactorCoeff </span>
356<span class="sd">    :param SQ: (sin-theta/lambda)**2</span>
357<span class="sd">    :return: real part of form factor</span>
358<span class="sd">    &quot;&quot;&quot;</span>
359    <span class="n">fa</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">El</span><span class="p">[</span><span class="s">&#39;fa&#39;</span><span class="p">])</span>
360    <span class="n">fb</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">El</span><span class="p">[</span><span class="s">&#39;fb&#39;</span><span class="p">])</span>
361    <span class="n">t</span> <span class="o">=</span> <span class="o">-</span><span class="n">fb</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="n">SQ</span>
362    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">fa</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">t</span><span class="p">)[:],</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">+</span><span class="n">El</span><span class="p">[</span><span class="s">&#39;fc&#39;</span><span class="p">]</span>
363        </div>
364<span class="k">def</span> <span class="nf">BlenResCW</span><span class="p">(</span><span class="n">Els</span><span class="p">,</span><span class="n">BLtables</span><span class="p">,</span><span class="n">wave</span><span class="p">):</span>
365    <span class="n">FP</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">Els</span><span class="p">))</span>
366    <span class="n">FPP</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">Els</span><span class="p">))</span>
367    <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">El</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">Els</span><span class="p">):</span>
368        <span class="n">BL</span> <span class="o">=</span> <span class="n">BLtables</span><span class="p">[</span><span class="n">El</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
369        <span class="k">if</span> <span class="s">&#39;BW-LS&#39;</span> <span class="ow">in</span> <span class="n">BL</span><span class="p">:</span>
370            <span class="n">Re</span><span class="p">,</span><span class="n">Im</span><span class="p">,</span><span class="n">E0</span><span class="p">,</span><span class="n">gam</span><span class="p">,</span><span class="n">A</span><span class="p">,</span><span class="n">E1</span><span class="p">,</span><span class="n">B</span><span class="p">,</span><span class="n">E2</span> <span class="o">=</span> <span class="n">BL</span><span class="p">[</span><span class="s">&#39;BW-LS&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span>
371            <span class="n">Emev</span> <span class="o">=</span> <span class="mf">81.80703</span><span class="o">/</span><span class="n">wave</span><span class="o">**</span><span class="mi">2</span>
372            <span class="n">T0</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E0</span>
373            <span class="n">T1</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E1</span>
374            <span class="n">T2</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E2</span>
375            <span class="n">D0</span> <span class="o">=</span> <span class="n">T0</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="n">gam</span><span class="o">**</span><span class="mi">2</span>
376            <span class="n">D1</span> <span class="o">=</span> <span class="n">T1</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="n">gam</span><span class="o">**</span><span class="mi">2</span>
377            <span class="n">D2</span> <span class="o">=</span> <span class="n">T2</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="n">gam</span><span class="o">**</span><span class="mi">2</span>
378            <span class="n">FP</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">Re</span><span class="o">*</span><span class="p">(</span><span class="n">T0</span><span class="o">/</span><span class="n">D0</span><span class="o">+</span><span class="n">A</span><span class="o">*</span><span class="n">T1</span><span class="o">/</span><span class="n">D1</span><span class="o">+</span><span class="n">B</span><span class="o">*</span><span class="n">T2</span><span class="o">/</span><span class="n">D2</span><span class="p">)</span>
379            <span class="n">FPP</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">Im</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">/</span><span class="n">D0</span><span class="o">+</span><span class="n">A</span><span class="o">/</span><span class="n">D1</span><span class="o">+</span><span class="n">B</span><span class="o">/</span><span class="n">D2</span><span class="p">)</span>
380        <span class="k">else</span><span class="p">:</span>
381            <span class="n">FPP</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">BL</span><span class="p">[</span><span class="s">&#39;SL&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>    <span class="c">#for Li, B, etc.</span>
382    <span class="k">return</span> <span class="n">FP</span><span class="p">,</span><span class="n">FPP</span>
383   
384<span class="k">def</span> <span class="nf">BlenResTOF</span><span class="p">(</span><span class="n">Els</span><span class="p">,</span><span class="n">BLtables</span><span class="p">,</span><span class="n">wave</span><span class="p">):</span>
385    <span class="n">FP</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">Els</span><span class="p">),</span><span class="nb">len</span><span class="p">(</span><span class="n">wave</span><span class="p">)))</span>
386    <span class="n">FPP</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="nb">len</span><span class="p">(</span><span class="n">Els</span><span class="p">),</span><span class="nb">len</span><span class="p">(</span><span class="n">wave</span><span class="p">)))</span>
387    <span class="n">BL</span> <span class="o">=</span> <span class="p">[</span><span class="n">BLtables</span><span class="p">[</span><span class="n">el</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">Els</span><span class="p">]</span>
388    <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">El</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">Els</span><span class="p">):</span>
389        <span class="k">if</span> <span class="s">&#39;BW-LS&#39;</span> <span class="ow">in</span> <span class="n">BL</span><span class="p">[</span><span class="n">i</span><span class="p">]:</span>
390            <span class="n">Re</span><span class="p">,</span><span class="n">Im</span><span class="p">,</span><span class="n">E0</span><span class="p">,</span><span class="n">gam</span><span class="p">,</span><span class="n">A</span><span class="p">,</span><span class="n">E1</span><span class="p">,</span><span class="n">B</span><span class="p">,</span><span class="n">E2</span> <span class="o">=</span> <span class="n">BL</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="s">&#39;BW-LS&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span>
391            <span class="n">Emev</span> <span class="o">=</span> <span class="mf">81.80703</span><span class="o">/</span><span class="n">wave</span><span class="o">**</span><span class="mi">2</span>
392            <span class="n">T0</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E0</span>
393            <span class="n">T1</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E1</span>
394            <span class="n">T2</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E2</span>
395            <span class="n">D0</span> <span class="o">=</span> <span class="n">T0</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="n">gam</span><span class="o">**</span><span class="mi">2</span>
396            <span class="n">D1</span> <span class="o">=</span> <span class="n">T1</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="n">gam</span><span class="o">**</span><span class="mi">2</span>
397            <span class="n">D2</span> <span class="o">=</span> <span class="n">T2</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="n">gam</span><span class="o">**</span><span class="mi">2</span>
398            <span class="n">FP</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">Re</span><span class="o">*</span><span class="p">(</span><span class="n">T0</span><span class="o">/</span><span class="n">D0</span><span class="o">+</span><span class="n">A</span><span class="o">*</span><span class="n">T1</span><span class="o">/</span><span class="n">D1</span><span class="o">+</span><span class="n">B</span><span class="o">*</span><span class="n">T2</span><span class="o">/</span><span class="n">D2</span><span class="p">)</span>
399            <span class="n">FPP</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">Im</span><span class="o">*</span><span class="p">(</span><span class="mi">1</span><span class="o">/</span><span class="n">D0</span><span class="o">+</span><span class="n">A</span><span class="o">/</span><span class="n">D1</span><span class="o">+</span><span class="n">B</span><span class="o">/</span><span class="n">D2</span><span class="p">)</span>
400        <span class="k">else</span><span class="p">:</span>
401            <span class="n">FPP</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">wave</span><span class="p">))</span><span class="o">*</span><span class="n">BL</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="s">&#39;SL&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>    <span class="c">#for Li, B, etc.</span>
402    <span class="k">return</span> <span class="n">FP</span><span class="p">,</span><span class="n">FPP</span>
403   
404<div class="viewcode-block" id="ComptonFac"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.ComptonFac">[docs]</a><span class="k">def</span> <span class="nf">ComptonFac</span><span class="p">(</span><span class="n">El</span><span class="p">,</span><span class="n">SQ</span><span class="p">):</span>
405    <span class="sd">&quot;&quot;&quot;compute Compton scattering factor</span>
406
407<span class="sd">    :param El: element dictionary </span>
408<span class="sd">    :param SQ: (sin-theta/lambda)**2</span>
409<span class="sd">    :return: compton scattering factor</span>
410<span class="sd">    &quot;&quot;&quot;</span>   
411    <span class="n">ca</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">El</span><span class="p">[</span><span class="s">&#39;cmpa&#39;</span><span class="p">])</span>
412    <span class="n">cb</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">El</span><span class="p">[</span><span class="s">&#39;cmpb&#39;</span><span class="p">])</span>
413    <span class="n">t</span> <span class="o">=</span> <span class="o">-</span><span class="n">cb</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="n">SQ</span>       
414    <span class="k">return</span> <span class="n">El</span><span class="p">[</span><span class="s">&#39;cmpz&#39;</span><span class="p">]</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">ca</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">t</span><span class="p">),</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> 
415            </div>
416<div class="viewcode-block" id="FPcalc"><a class="viewcode-back" href="../GSASIIutil.html#GSASIIElem.FPcalc">[docs]</a><span class="k">def</span> <span class="nf">FPcalc</span><span class="p">(</span><span class="n">Orbs</span><span class="p">,</span> <span class="n">KEv</span><span class="p">):</span>
417    <span class="sd">&quot;&quot;&quot;Compute real &amp; imaginary resonant X-ray scattering factors</span>
418
419<span class="sd">    :param Orbs: list of orbital dictionaries as defined in GetXsectionCoeff</span>
420<span class="sd">    :param KEv: x-ray energy in keV</span>
421<span class="sd">    :return: C: (f&#39;,f&quot;,mu): real, imaginary parts of resonant scattering &amp; atomic absorption coeff.</span>
422<span class="sd">    &quot;&quot;&quot;</span>
423    <span class="k">def</span> <span class="nf">Aitken</span><span class="p">(</span><span class="n">Orb</span><span class="p">,</span> <span class="n">LKev</span><span class="p">):</span>
424        <span class="n">Nval</span> <span class="o">=</span> <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;Nval&#39;</span><span class="p">]</span>
425        <span class="n">j</span> <span class="o">=</span> <span class="n">Nval</span><span class="o">-</span><span class="mi">1</span>
426        <span class="n">LEner</span> <span class="o">=</span> <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;LEner&#39;</span><span class="p">]</span>
427        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">Nval</span><span class="p">):</span>
428            <span class="k">if</span> <span class="n">LEner</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&lt;=</span> <span class="n">LKev</span><span class="p">:</span> <span class="n">j</span> <span class="o">=</span> <span class="n">i</span>
429        <span class="k">if</span> <span class="n">j</span> <span class="o">&gt;</span> <span class="n">Nval</span><span class="o">-</span><span class="mi">3</span><span class="p">:</span> <span class="n">j</span><span class="o">=</span> <span class="n">Nval</span><span class="o">-</span><span class="mi">3</span>
430        <span class="n">T</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="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>
431        <span class="n">LXSect</span> <span class="o">=</span> <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;LXSect&#39;</span><span class="p">]</span>
432        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span>
433           <span class="n">T</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">LXSect</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="n">j</span><span class="p">]</span>
434           <span class="n">T</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">LEner</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="n">j</span><span class="p">]</span><span class="o">-</span><span class="n">LKev</span>
435        <span class="n">T</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">T</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span><span class="o">-</span><span class="n">T</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">T</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span><span class="o">/</span><span class="p">(</span><span class="n">LEner</span><span class="p">[</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">LEner</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
436        <span class="n">T</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">T</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">-</span><span class="n">T</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">T</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span><span class="o">/</span><span class="p">(</span><span class="n">LEner</span><span class="p">[</span><span class="n">j</span><span class="o">+</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">LEner</span><span class="p">[</span><span class="n">j</span><span class="p">])</span>
437        <span class="n">T</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">T</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">T</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="o">-</span><span class="n">T</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">T</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span><span class="o">/</span><span class="p">(</span><span class="n">LEner</span><span class="p">[</span><span class="n">j</span><span class="o">+</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">LEner</span><span class="p">[</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
438        <span class="n">C</span> <span class="o">=</span> <span class="n">T</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
439        <span class="k">return</span> <span class="n">C</span>
440   
441    <span class="k">def</span> <span class="nf">DGauss</span><span class="p">(</span><span class="n">Orb</span><span class="p">,</span><span class="n">CX</span><span class="p">,</span><span class="n">RX</span><span class="p">,</span><span class="n">ISig</span><span class="p">):</span>
442        <span class="n">ALG</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.11846344252810</span><span class="p">,</span><span class="mf">0.23931433524968</span><span class="p">,</span><span class="mf">0.284444444444</span><span class="p">,</span>
443        <span class="mf">0.23931433524968</span><span class="p">,</span><span class="mf">0.11846344252810</span><span class="p">)</span>
444        <span class="n">XLG</span> <span class="o">=</span> <span class="p">(</span><span class="mf">0.04691007703067</span><span class="p">,</span><span class="mf">0.23076534494716</span><span class="p">,</span><span class="mf">0.5</span><span class="p">,</span>
445        <span class="mf">0.76923465505284</span><span class="p">,</span><span class="mf">0.95308992296933</span><span class="p">)</span>
446       
447        <span class="n">D</span> <span class="o">=</span> <span class="mf">0.0</span>
448        <span class="n">B2</span> <span class="o">=</span> <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;BB&#39;</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span>
449        <span class="n">R2</span> <span class="o">=</span> <span class="n">RX</span><span class="o">**</span><span class="mi">2</span>
450        <span class="n">XSecIP</span> <span class="o">=</span> <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;XSecIP&#39;</span><span class="p">]</span>
451        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span>
452            <span class="n">X</span> <span class="o">=</span> <span class="n">XLG</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
453            <span class="n">X2</span> <span class="o">=</span> <span class="n">X</span><span class="o">**</span><span class="mi">2</span>
454            <span class="n">XS</span> <span class="o">=</span> <span class="n">XSecIP</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
455            <span class="k">if</span> <span class="n">ISig</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
456                <span class="n">S</span> <span class="o">=</span> <span class="n">BB</span><span class="o">*</span><span class="p">(</span><span class="n">XS</span><span class="o">*</span><span class="p">(</span><span class="n">B2</span><span class="o">/</span><span class="n">X2</span><span class="p">)</span><span class="o">-</span><span class="n">CX</span><span class="o">*</span><span class="n">R2</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">R2</span><span class="o">*</span><span class="n">X2</span><span class="o">-</span><span class="n">B2</span><span class="p">)</span>
457            <span class="k">elif</span> <span class="n">ISig</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
458                <span class="n">S</span> <span class="o">=</span> <span class="mf">0.5</span><span class="o">*</span><span class="n">BB</span><span class="o">*</span><span class="n">B2</span><span class="o">*</span><span class="n">XS</span><span class="o">/</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">X</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">R2</span><span class="o">*</span><span class="n">X2</span><span class="o">-</span><span class="n">X</span><span class="o">*</span><span class="n">B2</span><span class="p">))</span>
459            <span class="k">elif</span> <span class="n">ISig</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
460                <span class="n">T</span> <span class="o">=</span> <span class="n">X</span><span class="o">*</span><span class="n">X2</span><span class="o">*</span><span class="n">R2</span><span class="o">-</span><span class="n">B2</span><span class="o">/</span><span class="n">X</span>
461                <span class="n">S</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">BB</span><span class="o">*</span><span class="p">(</span><span class="n">XS</span><span class="o">*</span><span class="n">B2</span><span class="o">/</span><span class="p">(</span><span class="n">T</span><span class="o">*</span><span class="n">X2</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span><span class="o">-</span><span class="p">(</span><span class="n">CX</span><span class="o">*</span><span class="n">R2</span><span class="o">/</span><span class="n">T</span><span class="p">))</span>
462            <span class="k">else</span><span class="p">:</span>
463                <span class="n">S</span> <span class="o">=</span> <span class="n">BB</span><span class="o">*</span><span class="n">B2</span><span class="o">*</span><span class="p">(</span><span class="n">XS</span><span class="o">-</span><span class="n">Orb</span><span class="p">[</span><span class="s">&#39;SEdge&#39;</span><span class="p">]</span><span class="o">*</span><span class="n">X2</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">R2</span><span class="o">*</span><span class="n">X2</span><span class="o">**</span><span class="mi">2</span><span class="o">-</span><span class="n">X2</span><span class="o">*</span><span class="n">B2</span><span class="p">)</span>
464            <span class="n">A</span> <span class="o">=</span> <span class="n">ALG</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
465            <span class="n">D</span> <span class="o">+=</span> <span class="n">A</span><span class="o">*</span><span class="n">S</span>
466        <span class="k">return</span> <span class="n">D</span> 
467   
468    <span class="n">AU</span> <span class="o">=</span> <span class="mf">2.80022e+7</span>
469    <span class="n">C1</span> <span class="o">=</span> <span class="mf">0.02721</span>
470    <span class="n">C</span> <span class="o">=</span> <span class="mf">137.0367</span>
471    <span class="n">FP</span> <span class="o">=</span> <span class="mf">0.0</span>
472    <span class="n">FPP</span> <span class="o">=</span> <span class="mf">0.0</span>
473    <span class="n">Mu</span> <span class="o">=</span> <span class="mf">0.0</span>
474    <span class="n">LKev</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">KEv</span><span class="p">)</span>
475    <span class="n">RX</span> <span class="o">=</span> <span class="n">KEv</span><span class="o">/</span><span class="n">C1</span>
476    <span class="k">if</span> <span class="n">Orbs</span><span class="p">:</span>
477        <span class="k">for</span> <span class="n">Orb</span> <span class="ow">in</span> <span class="n">Orbs</span><span class="p">:</span>
478            <span class="n">CX</span> <span class="o">=</span> <span class="mf">0.0</span>
479            <span class="n">BB</span> <span class="o">=</span> <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;BB&#39;</span><span class="p">]</span>
480            <span class="n">BindEn</span> <span class="o">=</span> <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;BindEn&#39;</span><span class="p">]</span>
481            <span class="k">if</span> <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;IfBe&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span> <span class="n">ElEterm</span> <span class="o">=</span> <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;ElEterm&#39;</span><span class="p">]</span>
482            <span class="k">if</span> <span class="n">BindEn</span> <span class="o">&lt;=</span> <span class="n">KEv</span><span class="p">:</span>
483                <span class="n">CX</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">Aitken</span><span class="p">(</span><span class="n">Orb</span><span class="p">,</span><span class="n">LKev</span><span class="p">))</span>
484                <span class="n">Mu</span> <span class="o">+=</span> <span class="n">CX</span>
485                <span class="n">CX</span> <span class="o">/=</span> <span class="n">AU</span>
486            <span class="n">Corr</span> <span class="o">=</span> <span class="mf">0.0</span>
487            <span class="k">if</span> <span class="n">Orb</span><span class="p">[</span><span class="s">&#39;IfBe&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">BindEn</span> <span class="o">&gt;=</span> <span class="n">KEv</span><span class="p">:</span>
488                <span class="n">CX</span> <span class="o">=</span> <span class="mf">0.0</span>
489                <span class="n">FPI</span> <span class="o">=</span> <span class="n">DGauss</span><span class="p">(</span><span class="n">Orb</span><span class="p">,</span><span class="n">CX</span><span class="p">,</span><span class="n">RX</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
490                <span class="n">Corr</span> <span class="o">=</span> <span class="mf">0.5</span><span class="o">*</span><span class="n">Orb</span><span class="p">[</span><span class="s">&#39;SEdge&#39;</span><span class="p">]</span><span class="o">*</span><span class="n">BB</span><span class="o">**</span><span class="mi">2</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">log</span><span class="p">((</span><span class="n">RX</span><span class="o">-</span><span class="n">BB</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="o">-</span><span class="n">RX</span><span class="o">-</span><span class="n">BB</span><span class="p">))</span><span class="o">/</span><span class="n">RX</span>
491            <span class="k">else</span><span class="p">:</span>
492                <span class="n">FPI</span> <span class="o">=</span> <span class="n">DGauss</span><span class="p">(</span><span class="n">Orb</span><span class="p">,</span><span class="n">CX</span><span class="p">,</span><span class="n">RX</span><span class="p">,</span><span class="n">Orb</span><span class="p">[</span><span class="s">&#39;IfBe&#39;</span><span class="p">])</span>
493                <span class="k">if</span> <span class="n">CX</span> <span class="o">!=</span> <span class="mf">0.0</span><span class="p">:</span> <span class="n">Corr</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.5</span><span class="o">*</span><span class="n">CX</span><span class="o">*</span><span class="n">RX</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">log</span><span class="p">((</span><span class="n">RX</span><span class="o">+</span><span class="n">BB</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">RX</span><span class="o">-</span><span class="n">BB</span><span class="p">))</span>
494            <span class="n">FPI</span> <span class="o">=</span> <span class="p">(</span><span class="n">FPI</span><span class="o">+</span><span class="n">Corr</span><span class="p">)</span><span class="o">*</span><span class="n">C</span><span class="o">/</span><span class="p">(</span><span class="mf">2.0</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
495            <span class="n">FPPI</span> <span class="o">=</span> <span class="n">C</span><span class="o">*</span><span class="n">CX</span><span class="o">*</span><span class="n">RX</span><span class="o">/</span><span class="p">(</span><span class="mf">4.0</span><span class="o">*</span><span class="n">math</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span>
496            <span class="n">FP</span> <span class="o">+=</span> <span class="n">FPI</span>
497            <span class="n">FPP</span> <span class="o">+=</span> <span class="n">FPPI</span>
498        <span class="n">FP</span> <span class="o">-=</span> <span class="n">ElEterm</span>
499   
500    <span class="k">return</span> <span class="p">(</span><span class="n">FP</span><span class="p">,</span> <span class="n">FPP</span><span class="p">,</span> <span class="n">Mu</span><span class="p">)</span>
501   
502</pre></div></div>
503
504          </div>
505        </div>
506      </div>
507      <div class="sphinxsidebar">
508        <div class="sphinxsidebarwrapper">
509            <p class="logo"><a href="../index.html">
510              <img class="logo" src="../_static/G2_html_logo.png" alt="Logo"/>
511            </a></p>
512<div id="searchbox" style="display: none">
513  <h3>Quick search</h3>
514    <form class="search" action="../search.html" method="get">
515      <input type="text" name="q" />
516      <input type="submit" value="Go" />
517      <input type="hidden" name="check_keywords" value="yes" />
518      <input type="hidden" name="area" value="default" />
519    </form>
520    <p class="searchtip" style="font-size: 90%">
521    Enter search terms or a module, class or function name.
522    </p>
523</div>
524<script type="text/javascript">$('#searchbox').show(0);</script>
525        </div>
526      </div>
527      <div class="clearer"></div>
528    </div>
529    <div class="related">
530      <h3>Navigation</h3>
531      <ul>
532        <li class="right" style="margin-right: 10px">
533          <a href="../genindex.html" title="General Index"
534             >index</a></li>
535        <li class="right" >
536          <a href="../py-modindex.html" title="Python Module Index"
537             >modules</a> |</li>
538        <li><a href="../index.html">GSAS-II 0.2.0 documentation</a> &raquo;</li>
539          <li><a href="index.html" >Module code</a> &raquo;</li> 
540      </ul>
541    </div>
542    <div class="footer">
543        &copy; Copyright 2013, Von Dreele and Toby for Argonne National Laboratory.
544      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
545    </div>
546  </body>
547</html>
Note: See TracBrowser for help on using the repository browser.