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

Last change on this file since 1708 was 1513, checked in by toby, 9 years ago

update and rebuild docs

  • Property svn:mime-type set to text/html
File size: 83.2 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-08-01 15:19:48 -0500 (Fri, 01 Aug 2014) $</span>
60<span class="c"># $Author: vondreele $</span>
61<span class="c"># $Revision: 1453 $</span>
62<span class="c"># $URL: https://subversion.xor.aps.anl.gov/pyGSAS/trunk/GSASIIElem.py $</span>
63<span class="c"># $Id: GSASIIElem.py 1453 2014-08-01 20:19:48Z vondreele $</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: 1453 $&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="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>
214    <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>
215    <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>
216    <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>
217    <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>
218    <span class="n">isotopes</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
219    <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>
220    <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>
221    <span class="k">for</span> <span class="n">isotope</span> <span class="ow">in</span> <span class="n">isotopes</span><span class="p">:</span>
222        <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>
223        <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>
224            <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>
225        <span class="k">else</span><span class="p">:</span>
226            <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>
227    <span class="k">return</span> <span class="n">AtomInfo</span>
228        </div>
229<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>
230    <span class="sd">&quot;&quot;&quot;Read atom orbital scattering cross sections for fprime calculations via Cromer-Lieberman algorithm</span>
231
232<span class="sd">    :param El: 2 character element symbol</span>
233<span class="sd">    :return: Orbs: list of orbitals each a dictionary with detailed orbital information used by FPcalc</span>
234
235<span class="sd">    each dictionary is:</span>
236
237<span class="sd">    * &#39;OrbName&#39;: Orbital name read from file</span>
238<span class="sd">    * &#39;IfBe&#39; 0/2 depending on orbital</span>
239<span class="sd">    * &#39;BindEn&#39;: binding energy</span>
240<span class="sd">    * &#39;BB&#39;: BindEn/0.02721</span>
241<span class="sd">    * &#39;XSectIP&#39;: 5 cross section inflection points</span>
242<span class="sd">    * &#39;ElEterm&#39;: energy correction term</span>
243<span class="sd">    * &#39;SEdge&#39;: absorption edge for orbital</span>
244<span class="sd">    * &#39;Nval&#39;: 10/11 depending on IfBe</span>
245<span class="sd">    * &#39;LEner&#39;: 10/11 values of log(energy)</span>
246<span class="sd">    * &#39;LXSect&#39;: 10/11 values of log(cross section)</span>
247
248<span class="sd">    &quot;&quot;&quot;</span>
249    <span class="n">AU</span> <span class="o">=</span> <span class="mf">2.80022e+7</span>
250    <span class="n">C1</span> <span class="o">=</span> <span class="mf">0.02721</span>
251    <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>
252    <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>
253    <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>
254    <span class="k">try</span><span class="p">:</span>
255        <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>
256    <span class="k">except</span><span class="p">:</span>
257        <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>
258        <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
259    <span class="n">S</span> <span class="o">=</span> <span class="s">&#39;1&#39;</span>
260    <span class="n">Orbs</span> <span class="o">=</span> <span class="p">[]</span>
261    <span class="k">while</span> <span class="n">S</span><span class="p">:</span>
262        <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>
263        <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>
264            <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>
265            <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>
266            <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>
267            <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>
268            <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>
269            <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>
270            <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>
271            <span class="n">BB</span> <span class="o">=</span> <span class="n">BindEn</span><span class="o">/</span><span class="n">C1</span>
272            <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>
273            <span class="n">Energy</span> <span class="o">=</span> <span class="p">[]</span>
274            <span class="n">XSect</span> <span class="o">=</span> <span class="p">[]</span>
275            <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>
276                <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>
277                <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>
278            <span class="n">XSecIP</span> <span class="o">=</span> <span class="p">[]</span>
279            <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>
280            <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>
281            <span class="k">if</span> <span class="n">IfBe</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
282                <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>
283                <span class="n">Nval</span> <span class="o">=</span> <span class="mi">11</span>
284            <span class="k">else</span><span class="p">:</span>
285                <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>
286                <span class="k">del</span> <span class="n">Energy</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span>
287                <span class="k">del</span> <span class="n">XSect</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span>
288                <span class="n">Nval</span> <span class="o">=</span> <span class="mi">10</span>
289                <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>
290            <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>
291            <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>
292            <span class="n">Energy</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
293            <span class="n">X</span> <span class="o">=</span> <span class="p">[]</span>
294            <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">Energy</span><span class="p">:</span>
295                <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>
296            <span class="n">XSect</span> <span class="o">=</span> <span class="n">X</span>
297            <span class="n">LEner</span> <span class="o">=</span> <span class="p">[]</span>
298            <span class="n">LXSect</span> <span class="o">=</span> <span class="p">[]</span>
299            <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>
300                <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>
301                <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>
302                    <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>
303                <span class="k">else</span><span class="p">:</span>
304                    <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>
305            <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>
306            <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>
307            <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>
308    <span class="n">xsec</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
309    <span class="k">return</span> <span class="n">Orbs</span>
310    </div>
311<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>
312    <span class="sd">&quot;&quot;&quot;Read magnetic form factor data from atomdata.asc file</span>
313
314<span class="sd">    :param El: 2 character element symbol</span>
315<span class="sd">    :return: MagFormFactors: list of all magnetic form factors dictionaries for element El.</span>
316
317<span class="sd">    each dictionary contains:</span>
318
319<span class="sd">    * &#39;Symbol&#39;:Symbol</span>
320<span class="sd">    * &#39;Z&#39;:Z</span>
321<span class="sd">    * &#39;mfa&#39;: 4 MA coefficients</span>
322<span class="sd">    * &#39;nfa&#39;: 4 NA coefficients</span>
323<span class="sd">    * &#39;mfb&#39;: 4 MB coefficients</span>
324<span class="sd">    * &#39;nfb&#39;: 4 NB coefficients</span>
325<span class="sd">    * &#39;mfc&#39;: MC coefficient</span>
326<span class="sd">    * &#39;nfc&#39;: NC coefficient</span>
327<span class="sd">    </span>
328<span class="sd">    &quot;&quot;&quot;</span>
329    <span class="n">MagFormFactors</span> <span class="o">=</span> <span class="p">[]</span>
330    <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>
331    <span class="k">for</span> <span class="n">mag</span> <span class="ow">in</span> <span class="n">mags</span><span class="p">:</span>
332        <span class="n">magData</span> <span class="o">=</span> <span class="p">{}</span>
333        <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>
334        <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>
335        <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>
336        <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>
337        <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>
338        <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>
339        <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>
340        <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>
341        <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>
342        <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>
343        <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>
344    <span class="k">return</span> <span class="n">MagFormFactors</span>
345</div>
346<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>
347    <span class="sd">&quot;&quot;&quot;compute value of form factor</span>
348
349<span class="sd">    :param El: element dictionary defined in GetFormFactorCoeff </span>
350<span class="sd">    :param SQ: (sin-theta/lambda)**2</span>
351<span class="sd">    :return: real part of form factor</span>
352<span class="sd">    &quot;&quot;&quot;</span>
353    <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>
354    <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>
355    <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>
356    <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>
357        </div>
358<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>
359    <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>
360    <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>
361    <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>
362        <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>
363        <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>
364            <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>
365            <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>
366            <span class="n">T0</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E0</span>
367            <span class="n">T1</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E1</span>
368            <span class="n">T2</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E2</span>
369            <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>
370            <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>
371            <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>
372            <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>
373            <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>
374        <span class="k">else</span><span class="p">:</span>
375            <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>
376    <span class="k">return</span> <span class="n">FP</span><span class="p">,</span><span class="n">FPP</span>
377   
378<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>
379    <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>
380    <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>
381    <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>
382    <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>
383        <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>
384            <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>
385            <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>
386            <span class="n">T0</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E0</span>
387            <span class="n">T1</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E1</span>
388            <span class="n">T2</span> <span class="o">=</span> <span class="n">Emev</span><span class="o">-</span><span class="n">E2</span>
389            <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>
390            <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>
391            <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>
392            <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>
393            <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>
394        <span class="k">else</span><span class="p">:</span>
395            <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>
396    <span class="k">return</span> <span class="n">FP</span><span class="p">,</span><span class="n">FPP</span>
397   
398<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>
399    <span class="sd">&quot;&quot;&quot;compute Compton scattering factor</span>
400
401<span class="sd">    :param El: element dictionary </span>
402<span class="sd">    :param SQ: (sin-theta/lambda)**2</span>
403<span class="sd">    :return: compton scattering factor</span>
404<span class="sd">    &quot;&quot;&quot;</span>   
405    <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>
406    <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>
407    <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>       
408    <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> 
409            </div>
410<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>
411    <span class="sd">&quot;&quot;&quot;Compute real &amp; imaginary resonant X-ray scattering factors</span>
412
413<span class="sd">    :param Orbs: list of orbital dictionaries as defined in GetXsectionCoeff</span>
414<span class="sd">    :param KEv: x-ray energy in keV</span>
415<span class="sd">    :return: C: (f&#39;,f&quot;,mu): real, imaginary parts of resonant scattering &amp; atomic absorption coeff.</span>
416<span class="sd">    &quot;&quot;&quot;</span>
417    <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>
418        <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>
419        <span class="n">j</span> <span class="o">=</span> <span class="n">Nval</span><span class="o">-</span><span class="mi">1</span>
420        <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>
421        <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>
422            <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>
423        <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>
424        <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>
425        <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>
426        <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>
427           <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>
428           <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>
429        <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>
430        <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>
431        <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>
432        <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>
433        <span class="k">return</span> <span class="n">C</span>
434   
435    <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>
436        <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>
437        <span class="mf">0.23931433524968</span><span class="p">,</span><span class="mf">0.11846344252810</span><span class="p">)</span>
438        <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>
439        <span class="mf">0.76923465505284</span><span class="p">,</span><span class="mf">0.95308992296933</span><span class="p">)</span>
440       
441        <span class="n">D</span> <span class="o">=</span> <span class="mf">0.0</span>
442        <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>
443        <span class="n">R2</span> <span class="o">=</span> <span class="n">RX</span><span class="o">**</span><span class="mi">2</span>
444        <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>
445        <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>
446            <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>
447            <span class="n">X2</span> <span class="o">=</span> <span class="n">X</span><span class="o">**</span><span class="mi">2</span>
448            <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>
449            <span class="k">if</span> <span class="n">ISig</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
450                <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>
451            <span class="k">elif</span> <span class="n">ISig</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
452                <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>
453            <span class="k">elif</span> <span class="n">ISig</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
454                <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>
455                <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>
456            <span class="k">else</span><span class="p">:</span>
457                <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>
458            <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>
459            <span class="n">D</span> <span class="o">+=</span> <span class="n">A</span><span class="o">*</span><span class="n">S</span>
460        <span class="k">return</span> <span class="n">D</span> 
461   
462    <span class="n">AU</span> <span class="o">=</span> <span class="mf">2.80022e+7</span>
463    <span class="n">C1</span> <span class="o">=</span> <span class="mf">0.02721</span>
464    <span class="n">C</span> <span class="o">=</span> <span class="mf">137.0367</span>
465    <span class="n">FP</span> <span class="o">=</span> <span class="mf">0.0</span>
466    <span class="n">FPP</span> <span class="o">=</span> <span class="mf">0.0</span>
467    <span class="n">Mu</span> <span class="o">=</span> <span class="mf">0.0</span>
468    <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>
469    <span class="n">RX</span> <span class="o">=</span> <span class="n">KEv</span><span class="o">/</span><span class="n">C1</span>
470    <span class="k">if</span> <span class="n">Orbs</span><span class="p">:</span>
471        <span class="k">for</span> <span class="n">Orb</span> <span class="ow">in</span> <span class="n">Orbs</span><span class="p">:</span>
472            <span class="n">CX</span> <span class="o">=</span> <span class="mf">0.0</span>
473            <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>
474            <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>
475            <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>
476            <span class="k">if</span> <span class="n">BindEn</span> <span class="o">&lt;=</span> <span class="n">KEv</span><span class="p">:</span>
477                <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>
478                <span class="n">Mu</span> <span class="o">+=</span> <span class="n">CX</span>
479                <span class="n">CX</span> <span class="o">/=</span> <span class="n">AU</span>
480            <span class="n">Corr</span> <span class="o">=</span> <span class="mf">0.0</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="ow">and</span> <span class="n">BindEn</span> <span class="o">&gt;=</span> <span class="n">KEv</span><span class="p">:</span>
482                <span class="n">CX</span> <span class="o">=</span> <span class="mf">0.0</span>
483                <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>
484                <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>
485            <span class="k">else</span><span class="p">:</span>
486                <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>
487                <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>
488            <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>
489            <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>
490            <span class="n">FP</span> <span class="o">+=</span> <span class="n">FPI</span>
491            <span class="n">FPP</span> <span class="o">+=</span> <span class="n">FPPI</span>
492        <span class="n">FP</span> <span class="o">-=</span> <span class="n">ElEterm</span>
493   
494    <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>
495   
496</pre></div></div>
497
498          </div>
499        </div>
500      </div>
501      <div class="sphinxsidebar">
502        <div class="sphinxsidebarwrapper">
503            <p class="logo"><a href="../index.html">
504              <img class="logo" src="../_static/G2_html_logo.png" alt="Logo"/>
505            </a></p>
506<div id="searchbox" style="display: none">
507  <h3>Quick search</h3>
508    <form class="search" action="../search.html" method="get">
509      <input type="text" name="q" />
510      <input type="submit" value="Go" />
511      <input type="hidden" name="check_keywords" value="yes" />
512      <input type="hidden" name="area" value="default" />
513    </form>
514    <p class="searchtip" style="font-size: 90%">
515    Enter search terms or a module, class or function name.
516    </p>
517</div>
518<script type="text/javascript">$('#searchbox').show(0);</script>
519        </div>
520      </div>
521      <div class="clearer"></div>
522    </div>
523    <div class="related">
524      <h3>Navigation</h3>
525      <ul>
526        <li class="right" style="margin-right: 10px">
527          <a href="../genindex.html" title="General Index"
528             >index</a></li>
529        <li class="right" >
530          <a href="../py-modindex.html" title="Python Module Index"
531             >modules</a> |</li>
532        <li><a href="../index.html">GSAS-II 0.2.0 documentation</a> &raquo;</li>
533          <li><a href="index.html" >Module code</a> &raquo;</li> 
534      </ul>
535    </div>
536    <div class="footer">
537        &copy; Copyright 2013, Von Dreele and Toby for Argonne National Laboratory.
538      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
539    </div>
540  </body>
541</html>
Note: See TracBrowser for help on using the repository browser.