Ignore:
Timestamp:
Oct 10, 2015 9:59:34 PM (7 years ago)
Author:
toby
Message:

rebuild docs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sphinxdocs/build/html/_modules/GSASIImath.html

    r1832 r1998  
    5252<span class="c">#GSASIImath - major mathematics routines</span>
    5353<span class="c">########### SVN repository information ###################</span>
    54 <span class="c"># $Date: 2015-05-01 10:30:34 -0500 (Fri, 01 May 2015) $</span>
     54<span class="c"># $Date: 2015-10-09 14:57:18 -0500 (Fri, 09 Oct 2015) $</span>
    5555<span class="c"># $Author: vondreele $</span>
    56 <span class="c"># $Revision: 1830 $</span>
     56<span class="c"># $Revision: 1996 $</span>
    5757<span class="c"># $URL: https://subversion.xray.aps.anl.gov/pyGSAS/trunk/GSASIImath.py $</span>
    58 <span class="c"># $Id: GSASIImath.py 1830 2015-05-01 15:30:34Z vondreele $</span>
     58<span class="c"># $Id: GSASIImath.py 1996 2015-10-09 19:57:18Z vondreele $</span>
    5959<span class="c">########### SVN repository information ###################</span>
    6060<span class="sd">&#39;&#39;&#39;</span>
     
    7777<span class="kn">import</span> <span class="nn">copy</span>
    7878<span class="kn">import</span> <span class="nn">GSASIIpath</span>
    79 <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">SetVersionNumber</span><span class="p">(</span><span class="s">&quot;$Revision: 1830 $&quot;</span><span class="p">)</span>
     79<span class="n">GSASIIpath</span><span class="o">.</span><span class="n">SetVersionNumber</span><span class="p">(</span><span class="s">&quot;$Revision: 1996 $&quot;</span><span class="p">)</span>
    8080<span class="kn">import</span> <span class="nn">GSASIIElem</span> <span class="kn">as</span> <span class="nn">G2el</span>
    8181<span class="kn">import</span> <span class="nn">GSASIIlattice</span> <span class="kn">as</span> <span class="nn">G2lat</span>
     
    8484<span class="kn">import</span> <span class="nn">numpy.fft</span> <span class="kn">as</span> <span class="nn">fft</span>
    8585<span class="kn">import</span> <span class="nn">scipy.optimize</span> <span class="kn">as</span> <span class="nn">so</span>
    86 <span class="kn">import</span> <span class="nn">pypowder</span> <span class="kn">as</span> <span class="nn">pyd</span>
     86<span class="kn">import</span> <span class="nn">pypowder</span> <span class="kn">as</span> <span class="nn">pwd</span>
     87<span class="k">if</span> <span class="n">GSASIIpath</span><span class="o">.</span><span class="n">GetConfigValue</span><span class="p">(</span><span class="s">&#39;debug&#39;</span><span class="p">):</span>
     88    <span class="kn">import</span> <span class="nn">pylab</span> <span class="kn">as</span> <span class="nn">pl</span>
    8789
    8890<span class="n">sind</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="o">/</span><span class="mf">180.</span><span class="p">)</span>
     
    190192            <span class="n">nfev</span> <span class="o">+=</span> <span class="mi">1</span>
    191193            <span class="n">chisq1</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">M2</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
    192             <span class="k">if</span> <span class="n">chisq1</span> <span class="o">&gt;</span> <span class="n">chisq0</span><span class="p">:</span>
     194            <span class="k">if</span> <span class="n">chisq1</span> <span class="o">&gt;</span> <span class="n">chisq0</span><span class="o">*</span><span class="p">(</span><span class="mf">1.</span><span class="o">+</span><span class="n">ftol</span><span class="p">):</span>
    193195                <span class="n">lam</span> <span class="o">*=</span> <span class="mf">10.</span>
     196                <span class="k">print</span> <span class="s">&#39;matrix modification needed; lambda now </span><span class="si">%.1e</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">lam</span><span class="p">)</span>
    194197            <span class="k">else</span><span class="p">:</span>
    195198                <span class="n">x0</span> <span class="o">+=</span> <span class="n">Xvec</span>
     
    339342    <span class="k">return</span> <span class="n">newAtoms</span>
    340343       
    341 <div class="viewcode-block" id="FindAtomIndexByIDs"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.FindAtomIndexByIDs">[docs]</a><span class="k">def</span> <span class="nf">FindAtomIndexByIDs</span><span class="p">(</span><span class="n">atomData</span><span class="p">,</span><span class="n">IDs</span><span class="p">,</span><span class="n">Draw</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
     344<div class="viewcode-block" id="FindAtomIndexByIDs"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.FindAtomIndexByIDs">[docs]</a><span class="k">def</span> <span class="nf">FindAtomIndexByIDs</span><span class="p">(</span><span class="n">atomData</span><span class="p">,</span><span class="n">loc</span><span class="p">,</span><span class="n">IDs</span><span class="p">,</span><span class="n">Draw</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
    342345    <span class="sd">&#39;&#39;&#39;finds the set of atom array indices for a list of atom IDs. Will search </span>
    343346<span class="sd">    either the Atom table or the drawAtom table.</span>
    344347<span class="sd">    </span>
    345348<span class="sd">    :param list atomData: Atom or drawAtom table containting coordinates, etc.</span>
     349<span class="sd">    :param int loc: location of atom id in atomData record</span>
    346350<span class="sd">    :param list IDs: atom IDs to be found</span>
    347351<span class="sd">    :param bool Draw: True if drawAtom table to be searched; False if Atom table</span>
     
    353357    <span class="n">indx</span> <span class="o">=</span> <span class="p">[]</span>
    354358    <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">atom</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">atomData</span><span class="p">):</span>
    355         <span class="k">if</span> <span class="n">Draw</span> <span class="ow">and</span> <span class="n">atom</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span> <span class="ow">in</span> <span class="n">IDs</span><span class="p">:</span>
     359        <span class="k">if</span> <span class="n">Draw</span> <span class="ow">and</span> <span class="n">atom</span><span class="p">[</span><span class="n">loc</span><span class="p">]</span> <span class="ow">in</span> <span class="n">IDs</span><span class="p">:</span>
    356360            <span class="n">indx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
    357         <span class="k">elif</span> <span class="n">atom</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="ow">in</span> <span class="n">IDs</span><span class="p">:</span>
     361        <span class="k">elif</span> <span class="n">atom</span><span class="p">[</span><span class="n">loc</span><span class="p">]</span> <span class="ow">in</span> <span class="n">IDs</span><span class="p">:</span>
    358362            <span class="n">indx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
    359363    <span class="k">return</span> <span class="n">indx</span>
     
    426430    <span class="k">return</span> <span class="n">XYZ</span>
    427431</div>
     432<span class="k">def</span> <span class="nf">FindNeighbors</span><span class="p">(</span><span class="n">phase</span><span class="p">,</span><span class="n">FrstName</span><span class="p">,</span><span class="n">AtNames</span><span class="p">,</span><span class="n">notName</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="p">):</span>
     433    <span class="n">General</span> <span class="o">=</span> <span class="n">phase</span><span class="p">[</span><span class="s">&#39;General&#39;</span><span class="p">]</span>
     434    <span class="n">cx</span><span class="p">,</span><span class="n">ct</span><span class="p">,</span><span class="n">cs</span><span class="p">,</span><span class="n">cia</span> <span class="o">=</span> <span class="n">General</span><span class="p">[</span><span class="s">&#39;AtomPtrs&#39;</span><span class="p">]</span>
     435    <span class="n">Atoms</span> <span class="o">=</span> <span class="n">phase</span><span class="p">[</span><span class="s">&#39;Atoms&#39;</span><span class="p">]</span>
     436    <span class="n">atNames</span> <span class="o">=</span> <span class="p">[</span><span class="n">atom</span><span class="p">[</span><span class="n">ct</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">atom</span> <span class="ow">in</span> <span class="n">Atoms</span><span class="p">]</span>
     437    <span class="n">Cell</span> <span class="o">=</span> <span class="n">General</span><span class="p">[</span><span class="s">&#39;Cell&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="mi">7</span><span class="p">]</span>
     438    <span class="n">Amat</span><span class="p">,</span><span class="n">Bmat</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">cell2AB</span><span class="p">(</span><span class="n">Cell</span><span class="p">)</span>
     439    <span class="n">atTypes</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>
     440    <span class="n">Radii</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">General</span><span class="p">[</span><span class="s">&#39;BondRadii&#39;</span><span class="p">])</span>
     441    <span class="n">DisAglCtls</span> <span class="o">=</span> <span class="n">General</span><span class="p">[</span><span class="s">&#39;DisAglCtls&#39;</span><span class="p">]</span>   
     442    <span class="n">radiusFactor</span> <span class="o">=</span> <span class="n">DisAglCtls</span><span class="p">[</span><span class="s">&#39;Factors&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
     443    <span class="n">AtInfo</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">atTypes</span><span class="p">,</span><span class="n">Radii</span><span class="p">))</span> <span class="c">#or General[&#39;BondRadii&#39;]</span>
     444    <span class="n">Orig</span> <span class="o">=</span> <span class="n">atNames</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">FrstName</span><span class="p">)</span>
     445    <span class="n">OId</span> <span class="o">=</span> <span class="n">Atoms</span><span class="p">[</span><span class="n">Orig</span><span class="p">][</span><span class="n">cia</span><span class="o">+</span><span class="mi">8</span><span class="p">]</span>
     446    <span class="n">OType</span> <span class="o">=</span> <span class="n">Atoms</span><span class="p">[</span><span class="n">Orig</span><span class="p">][</span><span class="n">ct</span><span class="p">]</span>
     447    <span class="n">XYZ</span> <span class="o">=</span> <span class="n">getAtomXYZ</span><span class="p">(</span><span class="n">Atoms</span><span class="p">,</span><span class="n">cx</span><span class="p">)</span>       
     448    <span class="n">Neigh</span> <span class="o">=</span> <span class="p">[]</span>
     449    <span class="n">Ids</span> <span class="o">=</span> <span class="p">[]</span>
     450    <span class="n">Dx</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">XYZ</span><span class="o">-</span><span class="n">XYZ</span><span class="p">[</span><span class="n">Orig</span><span class="p">])</span><span class="o">.</span><span class="n">T</span>
     451    <span class="n">dist</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">Dx</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">))</span>
     452    <span class="n">sumR</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">AtInfo</span><span class="p">[</span><span class="n">OType</span><span class="p">]</span><span class="o">+</span><span class="n">AtInfo</span><span class="p">[</span><span class="n">atom</span><span class="p">[</span><span class="n">ct</span><span class="p">]]</span> <span class="k">for</span> <span class="n">atom</span> <span class="ow">in</span> <span class="n">Atoms</span><span class="p">])</span>
     453    <span class="n">IndB</span> <span class="o">=</span> <span class="n">ma</span><span class="o">.</span><span class="n">nonzero</span><span class="p">(</span><span class="n">ma</span><span class="o">.</span><span class="n">masked_greater</span><span class="p">(</span><span class="n">dist</span><span class="o">-</span><span class="n">radiusFactor</span><span class="o">*</span><span class="n">sumR</span><span class="p">,</span><span class="mf">0.</span><span class="p">))</span>
     454    <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">IndB</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
     455        <span class="k">if</span> <span class="n">j</span> <span class="o">!=</span> <span class="n">Orig</span><span class="p">:</span>
     456            <span class="k">if</span> <span class="n">AtNames</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">!=</span> <span class="n">notName</span><span class="p">:</span>
     457                <span class="n">Neigh</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">AtNames</span><span class="p">[</span><span class="n">j</span><span class="p">],</span><span class="n">dist</span><span class="p">[</span><span class="n">j</span><span class="p">],</span><span class="bp">True</span><span class="p">])</span>
     458                <span class="n">Ids</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Atoms</span><span class="p">[</span><span class="n">j</span><span class="p">][</span><span class="n">cia</span><span class="o">+</span><span class="mi">8</span><span class="p">])</span>
     459    <span class="k">return</span> <span class="n">Neigh</span><span class="p">,[</span><span class="n">OId</span><span class="p">,</span><span class="n">Ids</span><span class="p">]</span>
     460   
     461<span class="k">def</span> <span class="nf">AddHydrogens</span><span class="p">(</span><span class="n">AtLookUp</span><span class="p">,</span><span class="n">General</span><span class="p">,</span><span class="n">Atoms</span><span class="p">,</span><span class="n">AddHydId</span><span class="p">):</span>
     462   
     463    <span class="k">def</span> <span class="nf">getTransMat</span><span class="p">(</span><span class="n">RXYZ</span><span class="p">,</span><span class="n">OXYZ</span><span class="p">,</span><span class="n">TXYZ</span><span class="p">,</span><span class="n">Amat</span><span class="p">):</span>
     464        <span class="n">Vec</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">OXYZ</span><span class="o">-</span><span class="n">TXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">RXYZ</span><span class="o">-</span><span class="n">TXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">]]))</span><span class="o">.</span><span class="n">T</span>           
     465        <span class="n">Vec</span> <span class="o">/=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">Vec</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">))[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span>
     466        <span class="n">Mat2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cross</span><span class="p">(</span><span class="n">Vec</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">Vec</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>      <span class="c">#UxV</span>
     467        <span class="n">Mat2</span> <span class="o">/=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">Mat2</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span>
     468        <span class="n">Mat3</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cross</span><span class="p">(</span><span class="n">Mat2</span><span class="p">,</span><span class="n">Vec</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>        <span class="c">#(UxV)xU</span>
     469        <span class="k">return</span> <span class="n">nl</span><span class="o">.</span><span class="n">inv</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">Vec</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">Mat2</span><span class="p">,</span><span class="n">Mat3</span><span class="p">]))</span>       
     470   
     471    <span class="n">cx</span><span class="p">,</span><span class="n">ct</span><span class="p">,</span><span class="n">cs</span><span class="p">,</span><span class="n">cia</span> <span class="o">=</span> <span class="n">General</span><span class="p">[</span><span class="s">&#39;AtomPtrs&#39;</span><span class="p">]</span>
     472    <span class="n">Cell</span> <span class="o">=</span> <span class="n">General</span><span class="p">[</span><span class="s">&#39;Cell&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="mi">7</span><span class="p">]</span>
     473    <span class="n">Amat</span><span class="p">,</span><span class="n">Bmat</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">cell2AB</span><span class="p">(</span><span class="n">Cell</span><span class="p">)</span>
     474    <span class="n">nBonds</span> <span class="o">=</span> <span class="n">AddHydId</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="nb">len</span><span class="p">(</span><span class="n">AddHydId</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
     475    <span class="n">Oatom</span> <span class="o">=</span> <span class="n">GetAtomsById</span><span class="p">(</span><span class="n">Atoms</span><span class="p">,</span><span class="n">AtLookUp</span><span class="p">,[</span><span class="n">AddHydId</span><span class="p">[</span><span class="mi">0</span><span class="p">],])[</span><span class="mi">0</span><span class="p">]</span>
     476    <span class="n">OXYZ</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">Oatom</span><span class="p">[</span><span class="n">cx</span><span class="p">:</span><span class="n">cx</span><span class="o">+</span><span class="mi">3</span><span class="p">])</span>
     477    <span class="k">if</span> <span class="s">&#39;I&#39;</span> <span class="ow">in</span> <span class="n">Oatom</span><span class="p">[</span><span class="n">cia</span><span class="p">]:</span>
     478        <span class="n">Uiso</span> <span class="o">=</span> <span class="n">Oatom</span><span class="p">[</span><span class="n">cia</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span>
     479    <span class="k">else</span><span class="p">:</span>
     480        <span class="n">Uiso</span> <span class="o">=</span> <span class="p">(</span><span class="n">Oatom</span><span class="p">[</span><span class="n">cia</span><span class="o">+</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span><span class="n">Oatom</span><span class="p">[</span><span class="n">cia</span><span class="o">+</span><span class="mi">3</span><span class="p">]</span><span class="o">+</span><span class="n">Oatom</span><span class="p">[</span><span class="n">cia</span><span class="o">+</span><span class="mi">4</span><span class="p">])</span><span class="o">/</span><span class="mf">3.0</span>       <span class="c">#simple average</span>
     481    <span class="n">Uiso</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">Uiso</span><span class="p">,</span><span class="mf">0.005</span><span class="p">)</span>                      <span class="c">#set floor!</span>
     482    <span class="n">Tatoms</span> <span class="o">=</span> <span class="n">GetAtomsById</span><span class="p">(</span><span class="n">Atoms</span><span class="p">,</span><span class="n">AtLookUp</span><span class="p">,</span><span class="n">AddHydId</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
     483    <span class="n">TXYZ</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">tatom</span><span class="p">[</span><span class="n">cx</span><span class="p">:</span><span class="n">cx</span><span class="o">+</span><span class="mi">3</span><span class="p">]</span> <span class="k">for</span> <span class="n">tatom</span> <span class="ow">in</span> <span class="n">Tatoms</span><span class="p">])</span> <span class="c">#3 x xyz</span>
     484    <span class="n">DX</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">TXYZ</span><span class="o">-</span><span class="n">OXYZ</span><span class="p">)</span><span class="o">.</span><span class="n">T</span>
     485    <span class="k">if</span> <span class="n">nBonds</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span>
     486        <span class="k">if</span> <span class="n">AddHydId</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
     487            <span class="n">Vec</span> <span class="o">=</span> <span class="n">TXYZ</span><span class="o">-</span><span class="n">OXYZ</span>
     488            <span class="n">Len</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">Vec</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">))</span>
     489            <span class="n">Vec</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">Vec</span><span class="o">/</span><span class="n">Len</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
     490            <span class="n">Len</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">Vec</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span>
     491            <span class="n">Hpos</span> <span class="o">=</span> <span class="n">OXYZ</span><span class="o">-</span><span class="mf">0.98</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Bmat</span><span class="p">,</span><span class="n">Vec</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="o">/</span><span class="n">Len</span>
     492            <span class="n">HU</span> <span class="o">=</span> <span class="mf">1.1</span><span class="o">*</span><span class="n">Uiso</span>
     493            <span class="k">return</span> <span class="p">[</span><span class="n">Hpos</span><span class="p">,],[</span><span class="n">HU</span><span class="p">,]</span>
     494        <span class="k">elif</span> <span class="n">AddHydId</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
     495            <span class="n">Vec</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">TXYZ</span><span class="o">-</span><span class="n">OXYZ</span><span class="p">)</span><span class="o">.</span><span class="n">T</span>
     496            <span class="n">Vec</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+=</span> <span class="n">Vec</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>            <span class="c">#U - along bisector</span>
     497            <span class="n">Vec</span> <span class="o">/=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">Vec</span><span class="o">**</span><span class="mi">2</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">))[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">]</span>
     498            <span class="n">Mat2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cross</span><span class="p">(</span><span class="n">Vec</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">Vec</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>      <span class="c">#UxV</span>
     499            <span class="n">Mat2</span> <span class="o">/=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">Mat2</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span>
     500            <span class="n">Mat3</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cross</span><span class="p">(</span><span class="n">Mat2</span><span class="p">,</span><span class="n">Vec</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>        <span class="c">#(UxV)xU</span>
     501            <span class="n">iMat</span> <span class="o">=</span> <span class="n">nl</span><span class="o">.</span><span class="n">inv</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">Vec</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">Mat2</span><span class="p">,</span><span class="n">Mat3</span><span class="p">]))</span>
     502            <span class="n">Hpos</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="o">-</span><span class="mf">0.97</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="mf">54.75</span><span class="p">),</span><span class="mf">0.97</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="mf">54.75</span><span class="p">),</span><span class="mf">0.</span><span class="p">],</span>
     503                <span class="p">[</span><span class="o">-</span><span class="mf">0.97</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="mf">54.75</span><span class="p">),</span><span class="o">-</span><span class="mf">0.97</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="mf">54.75</span><span class="p">),</span><span class="mf">0.</span><span class="p">]])</span>
     504            <span class="n">HU</span> <span class="o">=</span> <span class="mf">1.2</span><span class="o">*</span><span class="n">Uiso</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="mi">2</span><span class="p">)</span>
     505            <span class="n">Hpos</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Bmat</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">iMat</span><span class="p">,</span><span class="n">Hpos</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="o">+</span><span class="n">OXYZ</span>
     506            <span class="k">return</span> <span class="n">Hpos</span><span class="p">,</span><span class="n">HU</span>
     507        <span class="k">else</span><span class="p">:</span>
     508            <span class="n">Ratom</span> <span class="o">=</span> <span class="n">GetAtomsById</span><span class="p">(</span><span class="n">Atoms</span><span class="p">,</span><span class="n">AtLookUp</span><span class="p">,[</span><span class="n">AddHydId</span><span class="p">[</span><span class="mi">2</span><span class="p">],])[</span><span class="mi">0</span><span class="p">]</span>
     509            <span class="n">RXYZ</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">Ratom</span><span class="p">[</span><span class="n">cx</span><span class="p">:</span><span class="n">cx</span><span class="o">+</span><span class="mi">3</span><span class="p">])</span>
     510            <span class="n">iMat</span> <span class="o">=</span> <span class="n">getTransMat</span><span class="p">(</span><span class="n">RXYZ</span><span class="p">,</span><span class="n">OXYZ</span><span class="p">,</span><span class="n">TXYZ</span><span class="p">,</span><span class="n">Amat</span><span class="p">)</span>
     511            <span class="n">a</span> <span class="o">=</span> <span class="mf">0.96</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="mf">70.5</span><span class="p">)</span>
     512            <span class="n">b</span> <span class="o">=</span> <span class="mf">0.96</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="mf">70.5</span><span class="p">)</span>
     513            <span class="n">Hpos</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">a</span><span class="p">,</span><span class="mf">0.</span><span class="p">,</span><span class="o">-</span><span class="n">b</span><span class="p">],[</span><span class="n">a</span><span class="p">,</span><span class="o">-</span><span class="n">b</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="mf">30.</span><span class="p">),</span><span class="mf">0.5</span><span class="o">*</span><span class="n">b</span><span class="p">],[</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="mf">30.</span><span class="p">),</span><span class="mf">0.5</span><span class="o">*</span><span class="n">b</span><span class="p">]])</span>
     514            <span class="n">Hpos</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Bmat</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">iMat</span><span class="p">,</span><span class="n">Hpos</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="o">+</span><span class="n">OXYZ</span>
     515            <span class="n">HU</span> <span class="o">=</span> <span class="mf">1.5</span><span class="o">*</span><span class="n">Uiso</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="mi">3</span><span class="p">)</span>
     516            <span class="k">return</span> <span class="n">Hpos</span><span class="p">,</span><span class="n">HU</span>         
     517    <span class="k">elif</span> <span class="n">nBonds</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
     518        <span class="k">if</span> <span class="n">AddHydId</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
     519            <span class="n">Vec</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">TXYZ</span><span class="o">-</span><span class="n">OXYZ</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>               
     520            <span class="n">Len</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">Vec</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span>
     521            <span class="n">Vec</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.93</span><span class="o">*</span><span class="n">Vec</span><span class="o">/</span><span class="n">Len</span>
     522            <span class="n">Hpos</span> <span class="o">=</span> <span class="n">OXYZ</span><span class="o">+</span><span class="n">Vec</span>
     523            <span class="n">HU</span> <span class="o">=</span> <span class="mf">1.1</span><span class="o">*</span><span class="n">Uiso</span>
     524            <span class="k">return</span> <span class="p">[</span><span class="n">Hpos</span><span class="p">,],[</span><span class="n">HU</span><span class="p">,]</span>
     525        <span class="k">elif</span> <span class="n">AddHydId</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
     526            <span class="n">Ratom</span> <span class="o">=</span> <span class="n">GetAtomsById</span><span class="p">(</span><span class="n">Atoms</span><span class="p">,</span><span class="n">AtLookUp</span><span class="p">,[</span><span class="n">AddHydId</span><span class="p">[</span><span class="mi">2</span><span class="p">],])[</span><span class="mi">0</span><span class="p">]</span>
     527            <span class="n">RXYZ</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">Ratom</span><span class="p">[</span><span class="n">cx</span><span class="p">:</span><span class="n">cx</span><span class="o">+</span><span class="mi">3</span><span class="p">])</span>
     528            <span class="n">iMat</span> <span class="o">=</span> <span class="n">getTransMat</span><span class="p">(</span><span class="n">RXYZ</span><span class="p">,</span><span class="n">OXYZ</span><span class="p">,</span><span class="n">TXYZ</span><span class="p">,</span><span class="n">Amat</span><span class="p">)</span>
     529            <span class="n">a</span> <span class="o">=</span> <span class="mf">0.93</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="mf">60.</span><span class="p">)</span>
     530            <span class="n">b</span> <span class="o">=</span> <span class="mf">0.93</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="mf">60.</span><span class="p">)</span>
     531            <span class="n">Hpos</span> <span class="o">=</span> <span class="p">[[</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="n">a</span><span class="p">,</span><span class="o">-</span><span class="n">b</span><span class="p">,</span><span class="mi">0</span><span class="p">]]</span>
     532            <span class="n">Hpos</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Bmat</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">iMat</span><span class="p">,</span><span class="n">Hpos</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="o">+</span><span class="n">OXYZ</span>
     533            <span class="n">HU</span> <span class="o">=</span> <span class="mf">1.2</span><span class="o">*</span><span class="n">Uiso</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="mi">2</span><span class="p">)</span>
     534            <span class="k">return</span> <span class="n">Hpos</span><span class="p">,</span><span class="n">HU</span>
     535    <span class="k">else</span><span class="p">:</span>   <span class="c">#2 bonds</span>
     536        <span class="k">if</span> <span class="s">&#39;C&#39;</span> <span class="ow">in</span> <span class="n">Oatom</span><span class="p">[</span><span class="n">ct</span><span class="p">]:</span>
     537            <span class="n">Vec</span> <span class="o">=</span> <span class="n">TXYZ</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">-</span><span class="n">OXYZ</span>
     538            <span class="n">Len</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Amat</span><span class="p">,</span><span class="n">Vec</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span>
     539            <span class="n">Vec</span> <span class="o">=</span> <span class="o">-</span><span class="mf">0.93</span><span class="o">*</span><span class="n">Vec</span><span class="o">/</span><span class="n">Len</span>
     540            <span class="n">Hpos</span> <span class="o">=</span> <span class="n">OXYZ</span><span class="o">+</span><span class="n">Vec</span>
     541            <span class="n">HU</span> <span class="o">=</span> <span class="mf">1.1</span><span class="o">*</span><span class="n">Uiso</span>
     542            <span class="k">return</span> <span class="p">[</span><span class="n">Hpos</span><span class="p">,],[</span><span class="n">HU</span><span class="p">,]</span>
     543        <span class="k">elif</span> <span class="s">&#39;O&#39;</span> <span class="ow">in</span> <span class="n">Oatom</span><span class="p">[</span><span class="n">ct</span><span class="p">]:</span>
     544            <span class="n">mapData</span> <span class="o">=</span> <span class="n">General</span><span class="p">[</span><span class="s">&#39;Map&#39;</span><span class="p">]</span>
     545            <span class="n">Ratom</span> <span class="o">=</span> <span class="n">GetAtomsById</span><span class="p">(</span><span class="n">Atoms</span><span class="p">,</span><span class="n">AtLookUp</span><span class="p">,[</span><span class="n">AddHydId</span><span class="p">[</span><span class="mi">2</span><span class="p">],])[</span><span class="mi">0</span><span class="p">]</span>
     546            <span class="n">RXYZ</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">Ratom</span><span class="p">[</span><span class="n">cx</span><span class="p">:</span><span class="n">cx</span><span class="o">+</span><span class="mi">3</span><span class="p">])</span>
     547            <span class="n">iMat</span> <span class="o">=</span> <span class="n">getTransMat</span><span class="p">(</span><span class="n">RXYZ</span><span class="p">,</span><span class="n">OXYZ</span><span class="p">,</span><span class="n">TXYZ</span><span class="p">,</span><span class="n">Amat</span><span class="p">)</span>
     548            <span class="n">a</span> <span class="o">=</span> <span class="mf">0.82</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="mf">70.5</span><span class="p">)</span>
     549            <span class="n">b</span> <span class="o">=</span> <span class="mf">0.82</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="mf">70.5</span><span class="p">)</span>
     550            <span class="n">azm</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span><span class="mf">360.</span><span class="p">,</span><span class="mf">5.</span><span class="p">)</span>
     551            <span class="n">Hpos</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">a</span><span class="p">,</span><span class="n">b</span><span class="o">*</span><span class="n">cosd</span><span class="p">(</span><span class="n">x</span><span class="p">),</span><span class="n">b</span><span class="o">*</span><span class="n">sind</span><span class="p">(</span><span class="n">x</span><span class="p">)]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">azm</span><span class="p">])</span>
     552            <span class="n">Hpos</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">Bmat</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">iMat</span><span class="p">,</span><span class="n">Hpos</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="o">+</span><span class="n">OXYZ</span>
     553            <span class="n">Rhos</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">getRho</span><span class="p">(</span><span class="n">pos</span><span class="p">,</span><span class="n">mapData</span><span class="p">)</span> <span class="k">for</span> <span class="n">pos</span> <span class="ow">in</span> <span class="n">Hpos</span><span class="p">])</span>
     554            <span class="n">imax</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">Rhos</span><span class="p">)</span>
     555            <span class="n">HU</span> <span class="o">=</span> <span class="mf">1.5</span><span class="o">*</span><span class="n">Uiso</span>
     556            <span class="k">return</span> <span class="p">[</span><span class="n">Hpos</span><span class="p">[</span><span class="n">imax</span><span class="p">],],[</span><span class="n">HU</span><span class="p">,]</span>
     557    <span class="k">return</span> <span class="p">[],[]</span>
     558       
    428559<div class="viewcode-block" id="AtomUij2TLS"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.AtomUij2TLS">[docs]</a><span class="k">def</span> <span class="nf">AtomUij2TLS</span><span class="p">(</span><span class="n">atomData</span><span class="p">,</span><span class="n">atPtrs</span><span class="p">,</span><span class="n">Amat</span><span class="p">,</span><span class="n">Bmat</span><span class="p">,</span><span class="n">rbObj</span><span class="p">):</span>   <span class="c">#unfinished &amp; not used</span>
    429560    <span class="sd">&#39;&#39;&#39;default doc string</span>
     
    841972    <span class="k">return</span> <span class="n">Xanom</span>
    842973   
    843 <span class="k">def</span> <span class="nf">Modulation</span><span class="p">(</span><span class="n">waveTypes</span><span class="p">,</span><span class="n">SSUniq</span><span class="p">,</span><span class="n">SSPhi</span><span class="p">,</span><span class="n">FSSdata</span><span class="p">,</span><span class="n">XSSdata</span><span class="p">,</span><span class="n">USSdata</span><span class="p">):</span>
    844     <span class="kn">import</span> <span class="nn">scipy.special</span> <span class="kn">as</span> <span class="nn">sp</span>
    845     <span class="kn">import</span> <span class="nn">scipy.integrate</span> <span class="kn">as</span> <span class="nn">si</span>
    846     <span class="n">m</span> <span class="o">=</span> <span class="n">SSUniq</span><span class="o">.</span><span class="n">T</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
    847     <span class="n">nh</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="mi">1</span><span class="p">)</span>
    848     <span class="k">if</span> <span class="n">XSSdata</span><span class="o">.</span><span class="n">ndim</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">:</span>
    849         <span class="n">nh</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">XSSdata</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>       
    850     <span class="n">M</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">m</span><span class="o">&gt;</span><span class="mi">0</span><span class="p">,</span><span class="n">m</span><span class="o">+</span><span class="n">nh</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="n">m</span><span class="o">-</span><span class="n">nh</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">])</span>
    851     <span class="n">A</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">XSSdata</span><span class="p">[:</span><span class="mi">3</span><span class="p">])</span>
    852     <span class="n">B</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">XSSdata</span><span class="p">[</span><span class="mi">3</span><span class="p">:])</span>
    853     <span class="n">HdotA</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">A</span><span class="o">.</span><span class="n">T</span><span class="p">,</span><span class="n">SSUniq</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="n">T</span><span class="p">)</span><span class="o">+</span><span class="n">SSPhi</span><span class="p">)</span>
    854     <span class="n">HdotB</span> <span class="o">=</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">B</span><span class="o">.</span><span class="n">T</span><span class="p">,</span><span class="n">SSUniq</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="n">T</span><span class="p">)</span><span class="o">+</span><span class="n">SSPhi</span><span class="p">)</span>
    855     <span class="n">GpA</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">jn</span><span class="p">(</span><span class="n">M</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="n">twopi</span><span class="o">*</span><span class="n">HdotA</span><span class="p">)</span>
    856     <span class="n">GpB</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">jn</span><span class="p">(</span><span class="n">M</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="n">twopi</span><span class="o">*</span><span class="n">HdotB</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="mf">1.j</span><span class="p">)</span><span class="o">**</span><span class="n">M</span>
    857     <span class="n">Gp</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">GpA</span><span class="o">+</span><span class="n">GpB</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
    858     <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">Gp</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">imag</span><span class="p">(</span><span class="n">Gp</span><span class="p">)</span><span class="o">.</span><span class="n">T</span>
    859    
    860 <span class="k">def</span> <span class="nf">ModulationDerv</span><span class="p">(</span><span class="n">waveTypes</span><span class="p">,</span><span class="n">SSUniq</span><span class="p">,</span><span class="n">SSPhi</span><span class="p">,</span><span class="n">FSSdata</span><span class="p">,</span><span class="n">XSSdata</span><span class="p">,</span><span class="n">USSdata</span><span class="p">):</span>
    861     <span class="kn">import</span> <span class="nn">scipy.special</span> <span class="kn">as</span> <span class="nn">sp</span>
    862     <span class="n">m</span> <span class="o">=</span> <span class="n">SSUniq</span><span class="o">.</span><span class="n">T</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
    863     <span class="n">nh</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="mi">1</span><span class="p">)</span>
    864     <span class="k">if</span> <span class="n">XSSdata</span><span class="o">.</span><span class="n">ndim</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">:</span>
    865         <span class="n">nh</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">XSSdata</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>       
    866     <span class="n">M</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">m</span><span class="o">&gt;</span><span class="mi">0</span><span class="p">,</span><span class="n">m</span><span class="o">+</span><span class="n">nh</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="n">m</span><span class="o">-</span><span class="n">nh</span><span class="p">[:,</span><span class="n">np</span><span class="o">.</span><span class="n">newaxis</span><span class="p">])</span>
    867     <span class="n">A</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">a</span><span class="p">,</span><span class="n">b</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span><span class="p">,</span><span class="n">b</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">XSSdata</span><span class="p">[:</span><span class="mi">3</span><span class="p">],</span><span class="n">XSSdata</span><span class="p">[</span><span class="mi">3</span><span class="p">:])])</span>
    868     <span class="n">HdotA</span> <span class="o">=</span> <span class="n">twopi</span><span class="o">*</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">SSUniq</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="n">T</span><span class="p">,</span><span class="n">A</span><span class="o">.</span><span class="n">T</span><span class="p">)</span><span class="o">+</span><span class="n">SSPhi</span><span class="p">)</span>
    869     <span class="n">Gpm</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">jn</span><span class="p">(</span><span class="n">M</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="mi">1</span><span class="p">,</span><span class="n">HdotA</span><span class="p">)</span>
    870     <span class="n">Gpp</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">jn</span><span class="p">(</span><span class="n">M</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="mi">1</span><span class="p">,</span><span class="n">HdotA</span><span class="p">)</span>
    871     <span class="k">if</span> <span class="n">Gpm</span><span class="o">.</span><span class="n">ndim</span> <span class="o">&gt;</span> <span class="mi">3</span><span class="p">:</span> <span class="c">#sum over multiple harmonics</span>
    872         <span class="n">Gpm</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">Gpm</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
    873         <span class="n">Gpp</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">Gpp</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
    874     <span class="n">dGpdk</span> <span class="o">=</span> <span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">Gpm</span><span class="o">+</span><span class="n">Gpp</span><span class="p">)</span>
    875     <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">dGpdk</span><span class="p">),</span><span class="n">np</span><span class="o">.</span><span class="n">imag</span><span class="p">(</span><span class="n">dGpdk</span><span class="p">)</span>
    876    
    877 <span class="k">def</span> <span class="nf">posFourier</span><span class="p">(</span><span class="n">tau</span><span class="p">,</span><span class="n">psin</span><span class="p">,</span><span class="n">pcos</span><span class="p">):</span>
    878     <span class="n">A</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">ps</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">sin</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">tau</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">ps</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">psin</span><span class="p">)])</span>
     974<span class="c">################################################################################</span>
     975<span class="c">#### Modulation math</span>
     976<span class="c">################################################################################</span>
     977   
     978<div class="viewcode-block" id="Modulation"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.Modulation">[docs]</a><span class="k">def</span> <span class="nf">Modulation</span><span class="p">(</span><span class="n">waveTypes</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">FSSdata</span><span class="p">,</span><span class="n">XSSdata</span><span class="p">,</span><span class="n">USSdata</span><span class="p">,</span><span class="n">Mast</span><span class="p">):</span>
     979    <span class="sd">&#39;&#39;&#39;</span>
     980<span class="sd">    H: array nRefBlk x ops X hklt</span>
     981<span class="sd">    FSSdata: array 2 x atoms x waves    (sin,cos terms)</span>
     982<span class="sd">    XSSdata: array 2x3 x atoms X waves (sin,cos terms)</span>
     983<span class="sd">    USSdata: array 2x6 x atoms X waves (sin,cos terms)</span>
     984<span class="sd">    Mast: array orthogonalization matrix for Uij</span>
     985<span class="sd">    &#39;&#39;&#39;</span>
     986   
     987    <span class="n">nxs</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">newaxis</span>
     988    <span class="n">glTau</span><span class="p">,</span><span class="n">glWt</span> <span class="o">=</span> <span class="n">pwd</span><span class="o">.</span><span class="n">pygauleg</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span><span class="mf">1.</span><span class="p">,</span><span class="mi">32</span><span class="p">)</span>         <span class="c">#get Gauss-Legendre intervals &amp; weights</span>
     989    <span class="n">Ax</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">XSSdata</span><span class="p">[:</span><span class="mi">3</span><span class="p">])</span><span class="o">.</span><span class="n">T</span>   <span class="c">#atoms x waves x sin pos mods</span>
     990    <span class="n">Bx</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">XSSdata</span><span class="p">[</span><span class="mi">3</span><span class="p">:])</span><span class="o">.</span><span class="n">T</span>   <span class="c">#...cos pos mods</span>
     991    <span class="n">Af</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">FSSdata</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="c">#sin frac mods x waves x atoms</span>
     992    <span class="n">Bf</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">FSSdata</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="c">#cos frac mods...</span>
     993    <span class="n">Au</span> <span class="o">=</span> <span class="n">Mast</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">G2lat</span><span class="o">.</span><span class="n">U6toUij</span><span class="p">(</span><span class="n">USSdata</span><span class="p">[:</span><span class="mi">6</span><span class="p">]))</span><span class="o">.</span><span class="n">T</span>   <span class="c">#atoms x waves x sin Uij mods</span>
     994    <span class="n">Bu</span> <span class="o">=</span> <span class="n">Mast</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">G2lat</span><span class="o">.</span><span class="n">U6toUij</span><span class="p">(</span><span class="n">USSdata</span><span class="p">[</span><span class="mi">6</span><span class="p">:]))</span><span class="o">.</span><span class="n">T</span>   <span class="c">#...cos Uij mods</span>
     995   
     996    <span class="k">if</span> <span class="s">&#39;Fourier&#39;</span> <span class="ow">in</span> <span class="n">waveTypes</span><span class="p">:</span>
     997        <span class="n">nf</span> <span class="o">=</span> <span class="mi">0</span>
     998        <span class="n">nx</span> <span class="o">=</span> <span class="mi">0</span>
     999        <span class="n">XmodZ</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="n">Ax</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">Ax</span><span class="o">.</span><span class="n">shape</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">32</span><span class="p">))</span>
     1000        <span class="n">FmodZ</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="n">Af</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">Af</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="mi">32</span><span class="p">))</span>
     1001        <span class="k">if</span> <span class="s">&#39;Crenel&#39;</span> <span class="ow">in</span> <span class="n">waveTypes</span><span class="p">:</span>
     1002            <span class="n">nC</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s">&#39;Crenel&#39;</span> <span class="ow">in</span> <span class="n">waveTypes</span><span class="p">)</span>
     1003            <span class="n">nf</span> <span class="o">=</span> <span class="mi">1</span>
     1004            <span class="c">#FmodZ = 0   replace</span>
     1005    <span class="k">else</span><span class="p">:</span>
     1006        <span class="n">nx</span> <span class="o">=</span> <span class="mi">1</span>
     1007        <span class="k">if</span> <span class="s">&#39;Sawtooth&#39;</span> <span class="ow">in</span> <span class="n">waveTypes</span><span class="p">:</span>
     1008            <span class="n">nS</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s">&#39;Sawtooth&#39;</span> <span class="ow">in</span> <span class="n">waveTypes</span><span class="p">)</span>
     1009            <span class="c">#XmodZ = 0   replace</span>
     1010    <span class="k">if</span> <span class="n">Af</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
     1011        <span class="n">tauF</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">1.</span><span class="p">,</span><span class="n">Af</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">nf</span><span class="p">)[:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">glTau</span>  <span class="c">#Fwaves x 32</span>
     1012        <span class="n">FmodA</span> <span class="o">=</span> <span class="n">Af</span><span class="p">[:,</span><span class="n">nf</span><span class="p">:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauF</span><span class="p">[</span><span class="n">nxs</span><span class="p">,:,:])</span>   <span class="c">#atoms X Fwaves X 32</span>
     1013        <span class="n">FmodB</span> <span class="o">=</span> <span class="n">Bf</span><span class="p">[:,</span><span class="n">nf</span><span class="p">:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauF</span><span class="p">[</span><span class="n">nxs</span><span class="p">,:,:])</span>
     1014        <span class="n">Fmod</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">FmodA</span><span class="o">+</span><span class="n">FmodB</span><span class="o">+</span><span class="n">FmodC</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>             <span class="c">#atoms X 32; sum waves</span>
     1015    <span class="k">else</span><span class="p">:</span>
     1016        <span class="n">Fmod</span> <span class="o">=</span> <span class="mf">1.0</span>           
     1017    <span class="n">tauX</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">1.</span><span class="p">,</span><span class="n">Ax</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">nx</span><span class="p">)[:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">glTau</span>  <span class="c">#Xwaves x 32</span>
     1018    <span class="n">XmodA</span> <span class="o">=</span> <span class="n">Ax</span><span class="p">[:,</span><span class="n">nx</span><span class="p">:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauX</span><span class="p">[</span><span class="n">nxs</span><span class="p">,:,</span><span class="n">nxs</span><span class="p">,:])</span> <span class="c">#atoms X waves X pos X 32</span>
     1019    <span class="n">XmodB</span> <span class="o">=</span> <span class="n">Bx</span><span class="p">[:,</span><span class="n">nx</span><span class="p">:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauX</span><span class="p">[</span><span class="n">nxs</span><span class="p">,:,</span><span class="n">nxs</span><span class="p">,:])</span> <span class="c">#ditto</span>
     1020    <span class="n">Xmod</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">XmodA</span><span class="o">+</span><span class="n">XmodB</span><span class="o">+</span><span class="n">XmodZ</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>                <span class="c">#atoms X pos X 32; sum waves</span>
     1021    <span class="k">if</span> <span class="n">Au</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
     1022        <span class="n">tauU</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">1.</span><span class="p">,</span><span class="n">Au</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="mi">1</span><span class="p">)[:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">glTau</span>     <span class="c">#Uwaves x 32</span>
     1023        <span class="n">UmodA</span> <span class="o">=</span> <span class="n">Au</span><span class="p">[:,:,:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauU</span><span class="p">[</span><span class="n">nxs</span><span class="p">,:,</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,:])</span> <span class="c">#atoms x waves x 3x3 x 32</span>
     1024        <span class="n">UmodB</span> <span class="o">=</span> <span class="n">Bu</span><span class="p">[:,:,:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauU</span><span class="p">[</span><span class="n">nxs</span><span class="p">,:,</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,:])</span> <span class="c">#ditto</span>
     1025        <span class="n">Umod</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">swapaxes</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">UmodA</span><span class="o">+</span><span class="n">UmodB</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</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="c">#atoms x 3x3 x 32; sum waves</span>
     1026        <span class="n">HbH</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="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">H</span><span class="p">[:,:,</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,:</span><span class="mi">3</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">H</span><span class="p">[:,:,:</span><span class="mi">3</span><span class="p">],</span><span class="n">Umod</span><span class="p">),</span><span class="n">axis</span><span class="o">=-</span><span class="mi">1</span><span class="p">))</span> <span class="c"># refBlk x ops x atoms x 32 add Overhauser corr.?</span>
     1027    <span class="k">else</span><span class="p">:</span>
     1028        <span class="n">HbH</span> <span class="o">=</span> <span class="mf">1.0</span>
     1029    <span class="n">D</span> <span class="o">=</span> <span class="n">H</span><span class="p">[:,:,</span><span class="mi">3</span><span class="p">][:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">glTau</span><span class="p">[</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,:]</span>              <span class="c">#m*tau;refBlk x ops X 32</span>
     1030    <span class="n">HdotX</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">H</span><span class="p">[:,:,:</span><span class="mi">3</span><span class="p">],</span><span class="n">np</span><span class="o">.</span><span class="n">swapaxes</span><span class="p">(</span><span class="n">Xmod</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="o">+</span><span class="n">D</span><span class="p">[:,:,</span><span class="n">nxs</span><span class="p">,:]</span>     <span class="c">#refBlk X ops x atoms X 32</span>
     1031    <span class="n">sinHA</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">Fmod</span><span class="o">*</span><span class="n">HbH</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">HdotX</span><span class="p">)</span><span class="o">*</span><span class="n">glWt</span><span class="p">,</span><span class="n">axis</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>       <span class="c">#refBlk X ops x atoms; sum for G-L integration</span>
     1032    <span class="n">cosHA</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">Fmod</span><span class="o">*</span><span class="n">HbH</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">HdotX</span><span class="p">)</span><span class="o">*</span><span class="n">glWt</span><span class="p">,</span><span class="n">axis</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>       <span class="c">#ditto</span>
     1033<span class="c">#    GSASIIpath.IPyBreak()</span>
     1034    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">cosHA</span><span class="p">,</span><span class="n">sinHA</span><span class="p">])</span>             <span class="c"># 2 x refBlk x SGops x atoms</span>
     1035    </div>
     1036<div class="viewcode-block" id="ModulationDerv"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.ModulationDerv">[docs]</a><span class="k">def</span> <span class="nf">ModulationDerv</span><span class="p">(</span><span class="n">waveTypes</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">FSSdata</span><span class="p">,</span><span class="n">XSSdata</span><span class="p">,</span><span class="n">USSdata</span><span class="p">,</span><span class="n">Mast</span><span class="p">):</span>
     1037    <span class="sd">&#39;&#39;&#39;</span>
     1038<span class="sd">    H: array ops X hklt</span>
     1039<span class="sd">    FSSdata: array 2 x atoms x waves    (sin,cos terms)</span>
     1040<span class="sd">    XSSdata: array 2x3 x atoms X waves (sin,cos terms)</span>
     1041<span class="sd">    USSdata: array 2x6 x atoms X waves (sin,cos terms)</span>
     1042<span class="sd">    Mast: array orthogonalization matrix for Uij</span>
     1043<span class="sd">    &#39;&#39;&#39;</span>
     1044   
     1045    <span class="n">nxs</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">newaxis</span>
     1046    <span class="n">numeric</span> <span class="o">=</span> <span class="bp">False</span>   
     1047    <span class="n">cosHA</span><span class="p">,</span><span class="n">sinHA</span> <span class="o">=</span> <span class="n">Modulation</span><span class="p">(</span><span class="n">waveTypes</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">H</span><span class="p">,]),</span><span class="n">FSSdata</span><span class="p">,</span><span class="n">XSSdata</span><span class="p">,</span><span class="n">USSdata</span><span class="p">,</span><span class="n">Mast</span><span class="p">)</span>
     1048    <span class="n">Mf</span> <span class="o">=</span> <span class="p">[</span><span class="n">H</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],]</span><span class="o">+</span><span class="nb">list</span><span class="p">(</span><span class="n">FSSdata</span><span class="o">.</span><span class="n">T</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>    <span class="c">#ops x atoms x waves x 2 (sin+cos frac mods)</span>
     1049    <span class="n">dGdMfC</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="n">Mf</span><span class="p">)</span>
     1050    <span class="n">dGdMfS</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="n">Mf</span><span class="p">)</span>
     1051    <span class="n">Mx</span> <span class="o">=</span> <span class="p">[</span><span class="n">H</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],]</span><span class="o">+</span><span class="nb">list</span><span class="p">(</span><span class="n">XSSdata</span><span class="o">.</span><span class="n">T</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>   <span class="c">#ops x atoms x waves x 6 (sin+cos pos mods)</span>
     1052    <span class="n">dGdMxC</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="n">Mx</span><span class="p">)</span>
     1053    <span class="n">dGdMxS</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="n">Mx</span><span class="p">)</span>
     1054    <span class="n">Mu</span> <span class="o">=</span> <span class="p">[</span><span class="n">H</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],]</span><span class="o">+</span><span class="nb">list</span><span class="p">(</span><span class="n">USSdata</span><span class="o">.</span><span class="n">T</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>    <span class="c">#ops x atoms x waves x 12 (sin+cos Uij mods)</span>
     1055    <span class="n">dGdMuC</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="n">Mu</span><span class="p">)</span>
     1056    <span class="n">dGdMuS</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="n">Mu</span><span class="p">)</span>
     1057    <span class="k">if</span> <span class="n">numeric</span><span class="p">:</span>        <span class="c">#numeric derivatives - slow!! works for pos waves</span>
     1058        <span class="n">deltx</span> <span class="o">=</span> <span class="mf">0.00001</span>
     1059        <span class="n">deltf</span> <span class="o">=</span> <span class="mf">0.0001</span>
     1060        <span class="n">deltu</span> <span class="o">=</span> <span class="mf">0.000001</span>
     1061        <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">Mx</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span>  <span class="c">#atoms</span>
     1062            <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">Mx</span><span class="p">[</span><span class="mi">2</span><span class="p">]):</span>  <span class="c">#waves</span>
     1063                <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">Mx</span><span class="p">[</span><span class="mi">3</span><span class="p">]):</span>  <span class="c">#coeff</span>
     1064                    <span class="n">XSSdata</span><span class="p">[</span><span class="n">k</span><span class="p">,</span><span class="n">j</span><span class="p">,</span><span class="n">i</span><span class="p">]</span> <span class="o">+=</span> <span class="n">deltx</span>
     1065                    <span class="n">Cap</span><span class="p">,</span><span class="n">Sap</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">squeeze</span><span class="p">(</span><span class="n">Modulation</span><span class="p">(</span><span class="n">waveTypes</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">H</span><span class="p">,]),</span><span class="n">FSSdata</span><span class="p">,</span><span class="n">XSSdata</span><span class="p">,</span><span class="n">USSdata</span><span class="p">,</span><span class="n">Mast</span><span class="p">))</span>
     1066                    <span class="n">XSSdata</span><span class="p">[</span><span class="n">k</span><span class="p">,</span><span class="n">j</span><span class="p">,</span><span class="n">i</span><span class="p">]</span> <span class="o">-=</span> <span class="mi">2</span><span class="o">*</span><span class="n">deltx</span>
     1067                    <span class="n">Cam</span><span class="p">,</span><span class="n">Sam</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">squeeze</span><span class="p">(</span><span class="n">Modulation</span><span class="p">(</span><span class="n">waveTypes</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">H</span><span class="p">,]),</span><span class="n">FSSdata</span><span class="p">,</span><span class="n">XSSdata</span><span class="p">,</span><span class="n">USSdata</span><span class="p">,</span><span class="n">Mast</span><span class="p">))</span>
     1068                    <span class="n">XSSdata</span><span class="p">[</span><span class="n">k</span><span class="p">,</span><span class="n">j</span><span class="p">,</span><span class="n">i</span><span class="p">]</span> <span class="o">+=</span> <span class="n">deltx</span>
     1069                    <span class="n">dGdMxC</span><span class="p">[:,:,</span><span class="n">j</span><span class="p">,</span><span class="n">k</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span><span class="n">Cap</span><span class="o">-</span><span class="n">Cam</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">deltx</span><span class="p">)</span>
     1070                    <span class="n">dGdMxS</span><span class="p">[:,:,</span><span class="n">j</span><span class="p">,</span><span class="n">k</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span><span class="n">Sap</span><span class="o">-</span><span class="n">Sam</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">deltx</span><span class="p">)</span>
     1071    <span class="k">else</span><span class="p">:</span>   <span class="c">#analytic derivatives                 </span>
     1072        <span class="n">glTau</span><span class="p">,</span><span class="n">glWt</span> <span class="o">=</span> <span class="n">pwd</span><span class="o">.</span><span class="n">pygauleg</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span><span class="mf">1.</span><span class="p">,</span><span class="mi">32</span><span class="p">)</span>         <span class="c">#get Gauss-Legendre intervals &amp; weights</span>
     1073        <span class="n">Af</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">FSSdata</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="c">#sin frac mods x waves x atoms</span>
     1074        <span class="n">Bf</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">FSSdata</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="c">#cos frac mods...</span>
     1075        <span class="n">Ax</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">XSSdata</span><span class="p">[:</span><span class="mi">3</span><span class="p">])</span><span class="o">.</span><span class="n">T</span>   <span class="c">#...cos pos mods</span>
     1076        <span class="n">Bx</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">XSSdata</span><span class="p">[</span><span class="mi">3</span><span class="p">:])</span><span class="o">.</span><span class="n">T</span>   <span class="c">#...cos pos mods</span>
     1077        <span class="n">Au</span> <span class="o">=</span> <span class="n">Mast</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">G2lat</span><span class="o">.</span><span class="n">U6toUij</span><span class="p">(</span><span class="n">USSdata</span><span class="p">[:</span><span class="mi">6</span><span class="p">]))</span><span class="o">.</span><span class="n">T</span>   <span class="c">#atoms x waves x sin Uij mods</span>
     1078        <span class="n">Bu</span> <span class="o">=</span> <span class="n">Mast</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">G2lat</span><span class="o">.</span><span class="n">U6toUij</span><span class="p">(</span><span class="n">USSdata</span><span class="p">[</span><span class="mi">6</span><span class="p">:]))</span><span class="o">.</span><span class="n">T</span>   <span class="c">#...cos Uij mods</span>
     1079       
     1080        <span class="k">if</span> <span class="s">&#39;Fourier&#39;</span> <span class="ow">in</span> <span class="n">waveTypes</span><span class="p">:</span>
     1081            <span class="n">nf</span> <span class="o">=</span> <span class="mi">0</span>
     1082            <span class="n">nx</span> <span class="o">=</span> <span class="mi">0</span>
     1083            <span class="n">XmodZ</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="n">Ax</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">Ax</span><span class="o">.</span><span class="n">shape</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">32</span><span class="p">))</span>
     1084            <span class="n">FmodZ</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="n">Af</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">Af</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="mi">32</span><span class="p">))</span>
     1085            <span class="k">if</span> <span class="s">&#39;Crenel&#39;</span> <span class="ow">in</span> <span class="n">waveTypes</span><span class="p">:</span>
     1086                <span class="n">nC</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s">&#39;Crenel&#39;</span> <span class="ow">in</span> <span class="n">waveTypes</span><span class="p">)</span>
     1087                <span class="n">nf</span> <span class="o">=</span> <span class="mi">1</span>
     1088                <span class="c">#FmodZ = 0   replace</span>
     1089        <span class="k">else</span><span class="p">:</span>
     1090            <span class="n">nx</span> <span class="o">=</span> <span class="mi">1</span>
     1091            <span class="k">if</span> <span class="s">&#39;Sawtooth&#39;</span> <span class="ow">in</span> <span class="n">waveTypes</span><span class="p">:</span>
     1092                <span class="n">nS</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="s">&#39;Sawtooth&#39;</span> <span class="ow">in</span> <span class="n">waveTypes</span><span class="p">)</span>
     1093                <span class="c">#XmodZ = 0   replace</span>
     1094        <span class="n">tauX</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">1.</span><span class="p">,</span><span class="n">Ax</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">nx</span><span class="p">)[:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">glTau</span>  <span class="c">#Xwaves x 32</span>
     1095        <span class="n">StauX</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">Ax</span><span class="p">)[:,</span><span class="n">nx</span><span class="p">:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauX</span><span class="p">)[</span><span class="n">nxs</span><span class="p">,:,</span><span class="n">nxs</span><span class="p">,:]</span>   <span class="c">#also dXmod/dAx</span>
     1096        <span class="n">CtauX</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">Bx</span><span class="p">)[:,</span><span class="n">nx</span><span class="p">:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauX</span><span class="p">)[</span><span class="n">nxs</span><span class="p">,:,</span><span class="n">nxs</span><span class="p">,:]</span>   <span class="c">#also dXmod/dBx</span>
     1097        <span class="n">XmodA</span> <span class="o">=</span> <span class="n">Ax</span><span class="p">[:,</span><span class="n">nx</span><span class="p">:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">StauX</span> <span class="c">#atoms X waves X pos X 32</span>
     1098        <span class="n">XmodB</span> <span class="o">=</span> <span class="n">Bx</span><span class="p">[:,</span><span class="n">nx</span><span class="p">:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">CtauX</span> <span class="c">#ditto</span>
     1099        <span class="n">Xmod</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">XmodA</span><span class="o">+</span><span class="n">XmodB</span><span class="o">+</span><span class="n">XmodZ</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>                <span class="c">#atoms X pos X 32; sum waves</span>
     1100        <span class="n">D</span> <span class="o">=</span> <span class="n">H</span><span class="p">[:,</span><span class="mi">3</span><span class="p">][:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">glTau</span><span class="p">[</span><span class="n">nxs</span><span class="p">,:]</span>              <span class="c">#m*tau; ops X 32</span>
     1101        <span class="n">HdotX</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">H</span><span class="p">[:,:</span><span class="mi">3</span><span class="p">],</span><span class="n">np</span><span class="o">.</span><span class="n">swapaxes</span><span class="p">(</span><span class="n">Xmod</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="o">+</span><span class="n">D</span><span class="p">[:,</span><span class="n">nxs</span><span class="p">,:]</span>     <span class="c">#ops x atoms X 32</span>
     1102        <span class="k">if</span> <span class="n">Af</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
     1103            <span class="n">tauF</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">1.</span><span class="p">,</span><span class="n">Af</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">nf</span><span class="p">)[:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">glTau</span>  <span class="c">#Fwaves x 32</span>
     1104            <span class="n">StauF</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">Af</span><span class="p">)[:,</span><span class="n">nf</span><span class="p">:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauF</span><span class="p">)[</span><span class="n">nxs</span><span class="p">,:,:]</span> <span class="c">#also dFmod/dAf</span>
     1105            <span class="n">CtauF</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">Bf</span><span class="p">)[:,</span><span class="n">nf</span><span class="p">:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauF</span><span class="p">)[</span><span class="n">nxs</span><span class="p">,:,:]</span> <span class="c">#also dFmod/dBf</span>
     1106            <span class="n">FmodA</span> <span class="o">=</span> <span class="n">Af</span><span class="p">[:,</span><span class="n">nf</span><span class="p">:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">StauF</span>   <span class="c">#atoms X Fwaves X 32</span>
     1107            <span class="n">FmodB</span> <span class="o">=</span> <span class="n">Bf</span><span class="p">[:,</span><span class="n">nf</span><span class="p">:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">CtauF</span>
     1108            <span class="n">Fmod</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">FmodA</span><span class="o">+</span><span class="n">FmodB</span><span class="o">+</span><span class="n">FmodC</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>             <span class="c">#atoms X 32; sum waves</span>
     1109        <span class="k">else</span><span class="p">:</span>
     1110            <span class="n">Fmod</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">HdotX</span><span class="p">)</span>           
     1111        <span class="k">if</span> <span class="n">Au</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
     1112            <span class="n">tauU</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">1.</span><span class="p">,</span><span class="n">Au</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="mi">1</span><span class="p">)[:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">glTau</span>     <span class="c">#Uwaves x 32</span>
     1113            <span class="n">StauU</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">Au</span><span class="p">)[:,:,:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauU</span><span class="p">)[</span><span class="n">nxs</span><span class="p">,:,</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,:]</span>   <span class="c">#also dUmod/dAu</span>
     1114            <span class="n">CtauU</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">Bu</span><span class="p">)[:,:,:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">tauU</span><span class="p">)[</span><span class="n">nxs</span><span class="p">,:,</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,:]</span>   <span class="c">#also dUmod/dBu</span>
     1115            <span class="n">UmodA</span> <span class="o">=</span> <span class="n">Au</span><span class="p">[:,:,:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">StauU</span> <span class="c">#atoms x waves x 3x3 x 32</span>
     1116            <span class="n">UmodB</span> <span class="o">=</span> <span class="n">Bu</span><span class="p">[:,:,:,:,</span><span class="n">nxs</span><span class="p">]</span><span class="o">*</span><span class="n">CtauU</span> <span class="c">#ditto</span>
     1117            <span class="n">Umod</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">swapaxes</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">UmodA</span><span class="o">+</span><span class="n">UmodB</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</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="c">#atoms x 3x3 x 32; sum waves</span>
     1118            <span class="n">HbH</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="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">H</span><span class="p">[:,</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,:</span><span class="mi">3</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">H</span><span class="p">[:,:</span><span class="mi">3</span><span class="p">],</span><span class="n">Umod</span><span class="p">),</span><span class="n">axis</span><span class="o">=-</span><span class="mi">1</span><span class="p">))</span> <span class="c"># ops x atoms x 32 add Overhauser corr.?</span>
     1119        <span class="k">else</span><span class="p">:</span>
     1120            <span class="n">HbH</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">HdotX</span><span class="p">)</span>
     1121        <span class="n">HdotXA</span> <span class="o">=</span> <span class="n">H</span><span class="p">[:,</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,:</span><span class="mi">3</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">swapaxes</span><span class="p">(</span><span class="n">XmodA</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">2</span><span class="p">)[</span><span class="n">nxs</span><span class="p">,:,:,:,:]</span>  <span class="c">#ops x atoms x waves x 32 x xyz</span>
     1122        <span class="n">HdotXB</span> <span class="o">=</span> <span class="n">H</span><span class="p">[:,</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,</span><span class="n">nxs</span><span class="p">,:</span><span class="mi">3</span><span class="p">]</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">swapaxes</span><span class="p">(</span><span class="n">XmodB</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">2</span><span class="p">)[</span><span class="n">nxs</span><span class="p">,:,:,:,:]</span>
     1123        <span class="n">sinHA</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">Fmod</span><span class="o">*</span><span class="n">HbH</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">HdotX</span><span class="p">)</span><span class="o">*</span><span class="n">glWt</span><span class="p">,</span><span class="n">axis</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>       <span class="c">#ops x atoms x waves x xyz; sum for G-L integration</span>
     1124        <span class="n">cosHA</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">Fmod</span><span class="o">*</span><span class="n">HbH</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">twopi</span><span class="o">*</span><span class="n">HdotX</span><span class="p">)</span><span class="o">*</span><span class="n">glWt</span><span class="p">,</span><span class="n">axis</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>       <span class="c">#ditto</span>
     1125<span class="c">#    GSASIIpath.IPyBreak()</span>
     1126<span class="c">#    dHdXA = H[:,nxs,nxs,nxs,:3]*np.swapaxes(StauX,-1,-2)[nxs,:,:,:,:]    #ops x atoms x waves x 32 x xyz</span>
     1127<span class="c">#    dHdXB = H[:,nxs,nxs,nxs,:3]*np.swapaxes(CtauX,-1,-2)[nxs,:,:,:,:]              #ditto</span>
     1128<span class="c">#    dGdAx = np.sum((Fmod*HbH)[:,:,nxs,:,nxs]*(twopi*dHdXA*np.sin(twopi*HdotXA)+np.cos(twopi*HdotXA))*glWt[nxs,nxs,nxs,:,nxs],axis=-2)</span>
     1129<span class="c">## ops x atoms x waves x xyz - imaginary part</span>
     1130<span class="c">#    dGdBx = np.sum((Fmod*HbH)[:,:,nxs,:,nxs]*(twopi*dHdXB*np.cos(twopi*HdotXB)-np.sin(twopi*HdotXB))*glWt[nxs,nxs,nxs,:,nxs],axis=-2)</span>
     1131<span class="c">## ops x atoms x waves x xyz - real part</span>
     1132    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">cosHA</span><span class="p">,</span><span class="n">sinHA</span><span class="p">]),[</span><span class="n">dGdMfC</span><span class="p">,</span><span class="n">dGdMfS</span><span class="p">],[</span><span class="n">dGdMxC</span><span class="p">,</span><span class="n">dGdMxS</span><span class="p">],[</span><span class="n">dGdMuC</span><span class="p">,</span><span class="n">dGdMuS</span><span class="p">]</span>
     1133    </div>
     1134<span class="k">def</span> <span class="nf">posFourier</span><span class="p">(</span><span class="n">tau</span><span class="p">,</span><span class="n">psin</span><span class="p">,</span><span class="n">pcos</span><span class="p">,</span><span class="n">smul</span><span class="p">):</span>
     1135    <span class="n">A</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">ps</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">sin</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">tau</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">ps</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">psin</span><span class="p">)])</span>  <span class="c">#*smul</span>
    8791136    <span class="n">B</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">pc</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">cos</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="o">*</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">tau</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">pc</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">pcos</span><span class="p">)])</span>
    8801137    <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">A</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">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">B</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
     
    9001157    <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">A</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">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">B</span><span class="p">,</span><span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
    9011158   
     1159<div class="viewcode-block" id="ApplyModulation"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.ApplyModulation">[docs]</a><span class="k">def</span> <span class="nf">ApplyModulation</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">tau</span><span class="p">):</span>
     1160    <span class="sd">&#39;&#39;&#39;Applies modulation to drawing atom positions &amp; Uijs for given tau</span>
     1161<span class="sd">    &#39;&#39;&#39;</span>
     1162    <span class="n">generalData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;General&#39;</span><span class="p">]</span>
     1163    <span class="n">SGData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SGData&#39;</span><span class="p">]</span>
     1164    <span class="n">SSGData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SSGData&#39;</span><span class="p">]</span>
     1165    <span class="n">cx</span><span class="p">,</span><span class="n">ct</span><span class="p">,</span><span class="n">cs</span><span class="p">,</span><span class="n">cia</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;AtomPtrs&#39;</span><span class="p">]</span>
     1166    <span class="n">drawingData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;Drawing&#39;</span><span class="p">]</span>
     1167    <span class="n">dcx</span><span class="p">,</span><span class="n">dct</span><span class="p">,</span><span class="n">dcs</span><span class="p">,</span><span class="n">dci</span> <span class="o">=</span> <span class="n">drawingData</span><span class="p">[</span><span class="s">&#39;atomPtrs&#39;</span><span class="p">]</span>
     1168    <span class="n">atoms</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;Atoms&#39;</span><span class="p">]</span>
     1169    <span class="n">drawAtoms</span> <span class="o">=</span> <span class="n">drawingData</span><span class="p">[</span><span class="s">&#39;Atoms&#39;</span><span class="p">]</span>
     1170    <span class="n">Fade</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">drawAtoms</span><span class="p">))</span>
     1171    <span class="k">for</span> <span class="n">atom</span> <span class="ow">in</span> <span class="n">atoms</span><span class="p">:</span>   
     1172        <span class="n">atxyz</span> <span class="o">=</span> <span class="n">G2spc</span><span class="o">.</span><span class="n">MoveToUnitCell</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">atom</span><span class="p">[</span><span class="n">cx</span><span class="p">:</span><span class="n">cx</span><span class="o">+</span><span class="mi">3</span><span class="p">]))[</span><span class="mi">0</span><span class="p">]</span>
     1173        <span class="n">atuij</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">atom</span><span class="p">[</span><span class="n">cia</span><span class="o">+</span><span class="mi">2</span><span class="p">:</span><span class="n">cia</span><span class="o">+</span><span class="mi">8</span><span class="p">])</span>
     1174        <span class="n">waveType</span> <span class="o">=</span> <span class="n">atom</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="s">&#39;SS1&#39;</span><span class="p">][</span><span class="s">&#39;waveType&#39;</span><span class="p">]</span>
     1175        <span class="n">Sfrac</span> <span class="o">=</span> <span class="n">atom</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="s">&#39;SS1&#39;</span><span class="p">][</span><span class="s">&#39;Sfrac&#39;</span><span class="p">]</span>
     1176        <span class="n">Spos</span> <span class="o">=</span> <span class="n">atom</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="s">&#39;SS1&#39;</span><span class="p">][</span><span class="s">&#39;Spos&#39;</span><span class="p">]</span>
     1177        <span class="n">Sadp</span> <span class="o">=</span> <span class="n">atom</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="s">&#39;SS1&#39;</span><span class="p">][</span><span class="s">&#39;Sadp&#39;</span><span class="p">]</span>
     1178        <span class="n">indx</span> <span class="o">=</span> <span class="n">FindAtomIndexByIDs</span><span class="p">(</span><span class="n">drawAtoms</span><span class="p">,</span><span class="n">dci</span><span class="p">,[</span><span class="n">atom</span><span class="p">[</span><span class="n">cia</span><span class="o">+</span><span class="mi">8</span><span class="p">],],</span><span class="bp">True</span><span class="p">)</span>
     1179        <span class="k">for</span> <span class="n">ind</span> <span class="ow">in</span> <span class="n">indx</span><span class="p">:</span>
     1180            <span class="n">drawatom</span> <span class="o">=</span> <span class="n">drawAtoms</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
     1181            <span class="n">opr</span> <span class="o">=</span> <span class="n">drawatom</span><span class="p">[</span><span class="n">dcs</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
     1182            <span class="n">sop</span><span class="p">,</span><span class="n">ssop</span><span class="p">,</span><span class="n">icent</span> <span class="o">=</span> <span class="n">G2spc</span><span class="o">.</span><span class="n">OpsfromStringOps</span><span class="p">(</span><span class="n">opr</span><span class="p">,</span><span class="n">SGData</span><span class="p">,</span><span class="n">SSGData</span><span class="p">)</span>
     1183            <span class="n">sdet</span><span class="p">,</span><span class="n">ssdet</span><span class="p">,</span><span class="n">dtau</span><span class="p">,</span><span class="n">dT</span><span class="p">,</span><span class="n">tauT</span> <span class="o">=</span> <span class="n">G2spc</span><span class="o">.</span><span class="n">getTauT</span><span class="p">(</span><span class="n">tau</span><span class="p">,</span><span class="n">sop</span><span class="p">,</span><span class="n">ssop</span><span class="p">,</span><span class="n">atxyz</span><span class="p">)</span>
     1184            <span class="n">smul</span> <span class="o">=</span> <span class="n">sdet</span>         <span class="c"># n-fold vs m operator on wave</span>
     1185            <span class="n">tauT</span> <span class="o">*=</span> <span class="n">icent</span>       <span class="c">#invert wave on -1</span>
     1186            <span class="n">wave</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="mi">3</span><span class="p">)</span>
     1187            <span class="n">uwave</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="mi">6</span><span class="p">)</span>
     1188            <span class="c">#how do I handle Sfrac? - fade the atoms?</span>
     1189            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">Sfrac</span><span class="p">):</span>
     1190                <span class="n">scof</span> <span class="o">=</span> <span class="p">[]</span>
     1191                <span class="n">ccof</span> <span class="o">=</span> <span class="p">[]</span>
     1192                <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">sfrac</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">Sfrac</span><span class="p">):</span>
     1193                    <span class="k">if</span> <span class="ow">not</span> <span class="n">i</span> <span class="ow">and</span> <span class="s">&#39;Crenel&#39;</span> <span class="ow">in</span> <span class="n">waveType</span><span class="p">:</span>
     1194                        <span class="n">Fade</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span> <span class="o">+=</span> <span class="n">fracCrenel</span><span class="p">(</span><span class="n">tauT</span><span class="p">,</span><span class="n">sfrac</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span><span class="n">sfrac</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span>
     1195                    <span class="k">else</span><span class="p">:</span>
     1196                        <span class="n">scof</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sfrac</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
     1197                        <span class="n">ccof</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sfrac</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span>
     1198                    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">scof</span><span class="p">):</span>
     1199                        <span class="n">Fade</span><span class="p">[</span><span class="n">ind</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">fracFourier</span><span class="p">(</span><span class="n">tauT</span><span class="p">,</span><span class="n">scof</span><span class="p">,</span><span class="n">ccof</span><span class="p">))</span>                           
     1200            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">Spos</span><span class="p">):</span>
     1201                <span class="n">scof</span> <span class="o">=</span> <span class="p">[]</span>
     1202                <span class="n">ccof</span> <span class="o">=</span> <span class="p">[]</span>
     1203                <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">spos</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">Spos</span><span class="p">):</span>
     1204                    <span class="k">if</span> <span class="n">waveType</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;Sawtooth&#39;</span><span class="p">,</span><span class="s">&#39;ZigZag&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">i</span><span class="p">:</span>
     1205                        <span class="n">Toff</span> <span class="o">=</span> <span class="n">spos</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
     1206                        <span class="n">slopes</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">spos</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">:])</span>
     1207                        <span class="k">if</span> <span class="n">waveType</span> <span class="o">==</span> <span class="s">&#39;Sawtooth&#39;</span><span class="p">:</span>
     1208                            <span class="n">wave</span> <span class="o">=</span> <span class="n">posSawtooth</span><span class="p">(</span><span class="n">tauT</span><span class="p">,</span><span class="n">Toff</span><span class="p">,</span><span class="n">slopes</span><span class="p">)</span>
     1209                        <span class="k">elif</span> <span class="n">waveType</span> <span class="o">==</span> <span class="s">&#39;ZigZag&#39;</span><span class="p">:</span>
     1210                            <span class="n">wave</span> <span class="o">=</span> <span class="n">posZigZag</span><span class="p">(</span><span class="n">tauT</span><span class="p">,</span><span class="n">Toff</span><span class="p">,</span><span class="n">slopes</span><span class="p">)</span>
     1211                    <span class="k">else</span><span class="p">:</span>
     1212                        <span class="n">scof</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">spos</span><span class="p">[</span><span class="mi">0</span><span class="p">][:</span><span class="mi">3</span><span class="p">])</span>
     1213                        <span class="n">ccof</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">spos</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">3</span><span class="p">:])</span>
     1214                <span class="n">wave</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">posFourier</span><span class="p">(</span><span class="n">tauT</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">scof</span><span class="p">),</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">ccof</span><span class="p">),</span><span class="n">smul</span><span class="p">),</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
     1215            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">Sadp</span><span class="p">):</span>
     1216                <span class="n">scof</span> <span class="o">=</span> <span class="p">[]</span>
     1217                <span class="n">ccof</span> <span class="o">=</span> <span class="p">[]</span>
     1218                <span class="k">for</span> <span class="n">i</span><span class="p">,</span><span class="n">sadp</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">Sadp</span><span class="p">):</span>
     1219                    <span class="n">scof</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sadp</span><span class="p">[</span><span class="mi">0</span><span class="p">][:</span><span class="mi">6</span><span class="p">])</span>
     1220                    <span class="n">ccof</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sadp</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">6</span><span class="p">:])</span>
     1221                <span class="n">uwave</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">posFourier</span><span class="p">(</span><span class="n">tauT</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">scof</span><span class="p">),</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">ccof</span><span class="p">),</span><span class="n">smul</span><span class="p">),</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
     1222            <span class="k">if</span> <span class="n">atom</span><span class="p">[</span><span class="n">cia</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;A&#39;</span><span class="p">:</span>                   
     1223                <span class="n">X</span><span class="p">,</span><span class="n">U</span> <span class="o">=</span> <span class="n">G2spc</span><span class="o">.</span><span class="n">ApplyStringOps</span><span class="p">(</span><span class="n">opr</span><span class="p">,</span><span class="n">SGData</span><span class="p">,</span><span class="n">atxyz</span><span class="o">+</span><span class="n">wave</span><span class="p">,</span><span class="n">atuij</span><span class="o">+</span><span class="n">uwave</span><span class="p">)</span>
     1224                <span class="n">drawatom</span><span class="p">[</span><span class="n">dcx</span><span class="p">:</span><span class="n">dcx</span><span class="o">+</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">X</span>
     1225                <span class="n">drawatom</span><span class="p">[</span><span class="n">dci</span><span class="o">-</span><span class="mi">6</span><span class="p">:</span><span class="n">dci</span><span class="p">]</span> <span class="o">=</span> <span class="n">U</span>
     1226            <span class="k">else</span><span class="p">:</span>
     1227                <span class="n">X</span> <span class="o">=</span> <span class="n">G2spc</span><span class="o">.</span><span class="n">ApplyStringOps</span><span class="p">(</span><span class="n">opr</span><span class="p">,</span><span class="n">SGData</span><span class="p">,</span><span class="n">atxyz</span><span class="o">+</span><span class="n">wave</span><span class="p">)</span>
     1228                <span class="n">drawatom</span><span class="p">[</span><span class="n">dcx</span><span class="p">:</span><span class="n">dcx</span><span class="o">+</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">X</span>
     1229    <span class="k">return</span> <span class="n">drawAtoms</span><span class="p">,</span><span class="n">Fade</span>
     1230   
     1231<span class="c"># gauleg.py Gauss Legendre numerical quadrature, x and w computation </span>
     1232<span class="c"># integrate from a to b using n evaluations of the function f(x)  </span>
     1233<span class="c"># usage: from gauleg import gaulegf         </span>
     1234<span class="c">#        x,w = gaulegf( a, b, n)                                </span>
     1235<span class="c">#        area = 0.0                                            </span>
     1236<span class="c">#        for i in range(1,n+1):          #  yes, 1..n                   </span>
     1237<span class="c">#          area += w[i]*f(x[i])                                    </span>
     1238</div>
     1239<span class="kn">import</span> <span class="nn">math</span>
     1240<span class="k">def</span> <span class="nf">gaulegf</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
     1241  <span class="n">x</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="c"># x[0] unused</span>
     1242  <span class="n">w</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="c"># w[0] unused</span>
     1243  <span class="n">eps</span> <span class="o">=</span> <span class="mf">3.0E-14</span>
     1244  <span class="n">m</span> <span class="o">=</span> <span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
     1245  <span class="n">xm</span> <span class="o">=</span> <span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">b</span><span class="o">+</span><span class="n">a</span><span class="p">)</span>
     1246  <span class="n">xl</span> <span class="o">=</span> <span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">b</span><span class="o">-</span><span class="n">a</span><span class="p">)</span>
     1247  <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">1</span><span class="p">,</span><span class="n">m</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
     1248    <span class="n">z</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="mf">3.141592654</span><span class="o">*</span><span class="p">(</span><span class="n">i</span><span class="o">-</span><span class="mf">0.25</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mf">0.5</span><span class="p">))</span>
     1249    <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
     1250      <span class="n">p1</span> <span class="o">=</span> <span class="mf">1.0</span>
     1251      <span class="n">p2</span> <span class="o">=</span> <span class="mf">0.0</span>
     1252      <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
     1253        <span class="n">p3</span> <span class="o">=</span> <span class="n">p2</span>
     1254        <span class="n">p2</span> <span class="o">=</span> <span class="n">p1</span>
     1255        <span class="n">p1</span> <span class="o">=</span> <span class="p">((</span><span class="mf">2.0</span><span class="o">*</span><span class="n">j</span><span class="o">-</span><span class="mf">1.0</span><span class="p">)</span><span class="o">*</span><span class="n">z</span><span class="o">*</span><span class="n">p2</span><span class="o">-</span><span class="p">(</span><span class="n">j</span><span class="o">-</span><span class="mf">1.0</span><span class="p">)</span><span class="o">*</span><span class="n">p3</span><span class="p">)</span><span class="o">/</span><span class="n">j</span>
     1256
     1257      <span class="n">pp</span> <span class="o">=</span> <span class="n">n</span><span class="o">*</span><span class="p">(</span><span class="n">z</span><span class="o">*</span><span class="n">p1</span><span class="o">-</span><span class="n">p2</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">z</span><span class="o">*</span><span class="n">z</span><span class="o">-</span><span class="mf">1.0</span><span class="p">)</span>
     1258      <span class="n">z1</span> <span class="o">=</span> <span class="n">z</span>
     1259      <span class="n">z</span> <span class="o">=</span> <span class="n">z1</span> <span class="o">-</span> <span class="n">p1</span><span class="o">/</span><span class="n">pp</span>
     1260      <span class="k">if</span> <span class="nb">abs</span><span class="p">(</span><span class="n">z</span><span class="o">-</span><span class="n">z1</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="n">eps</span><span class="p">:</span>
     1261            <span class="k">break</span>
     1262
     1263    <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">xm</span> <span class="o">-</span> <span class="n">xl</span><span class="o">*</span><span class="n">z</span>
     1264    <span class="n">x</span><span class="p">[</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">xm</span> <span class="o">+</span> <span class="n">xl</span><span class="o">*</span><span class="n">z</span>
     1265    <span class="n">w</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="mf">2.0</span><span class="o">*</span><span class="n">xl</span><span class="o">/</span><span class="p">((</span><span class="mf">1.0</span><span class="o">-</span><span class="n">z</span><span class="o">*</span><span class="n">z</span><span class="p">)</span><span class="o">*</span><span class="n">pp</span><span class="o">*</span><span class="n">pp</span><span class="p">)</span>
     1266    <span class="n">w</span><span class="p">[</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">w</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
     1267  <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">w</span><span class="p">)</span>
     1268<span class="c"># end gaulegf </span>
     1269   
     1270   
     1271<div class="viewcode-block" id="BessJn"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.BessJn">[docs]</a><span class="k">def</span> <span class="nf">BessJn</span><span class="p">(</span><span class="n">nmax</span><span class="p">,</span><span class="n">x</span><span class="p">):</span>
     1272    <span class="sd">&#39;&#39;&#39; compute Bessel function J(n,x) from scipy routine &amp; recurrance relation</span>
     1273<span class="sd">    returns sequence of J(n,x) for n in range [-nmax...0...nmax]</span>
     1274<span class="sd">    </span>
     1275<span class="sd">    :param  integer nmax: maximul order for Jn(x)</span>
     1276<span class="sd">    :param  float x: argument for Jn(x)</span>
     1277<span class="sd">    </span>
     1278<span class="sd">    :returns numpy array: [J(-nmax,x)...J(0,x)...J(nmax,x)]</span>
     1279<span class="sd">    </span>
     1280<span class="sd">    &#39;&#39;&#39;</span>
     1281    <span class="kn">import</span> <span class="nn">scipy.special</span> <span class="kn">as</span> <span class="nn">sp</span>
     1282    <span class="n">bessJn</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="mi">2</span><span class="o">*</span><span class="n">nmax</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
     1283    <span class="n">bessJn</span><span class="p">[</span><span class="n">nmax</span><span class="p">]</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">j0</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
     1284    <span class="n">bessJn</span><span class="p">[</span><span class="n">nmax</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">j1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
     1285    <span class="n">bessJn</span><span class="p">[</span><span class="n">nmax</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="o">-</span><span class="n">bessJn</span><span class="p">[</span><span class="n">nmax</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span>
     1286    <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">2</span><span class="p">,</span><span class="n">nmax</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
     1287        <span class="n">bessJn</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="n">nmax</span><span class="p">]</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="p">(</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">bessJn</span><span class="p">[</span><span class="n">nmax</span><span class="o">+</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">/</span><span class="n">x</span><span class="o">-</span><span class="n">bessJn</span><span class="p">[</span><span class="n">nmax</span><span class="o">+</span><span class="n">i</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span>
     1288        <span class="n">bessJn</span><span class="p">[</span><span class="n">nmax</span><span class="o">-</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">bessJn</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="n">nmax</span><span class="p">]</span><span class="o">*</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">i</span>
     1289    <span class="k">return</span> <span class="n">bessJn</span>
     1290    </div>
     1291<div class="viewcode-block" id="BessIn"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.BessIn">[docs]</a><span class="k">def</span> <span class="nf">BessIn</span><span class="p">(</span><span class="n">nmax</span><span class="p">,</span><span class="n">x</span><span class="p">):</span>
     1292    <span class="sd">&#39;&#39;&#39; compute modified Bessel function I(n,x) from scipy routines &amp; recurrance relation</span>
     1293<span class="sd">    returns sequence of I(n,x) for n in range [-nmax...0...nmax]</span>
     1294<span class="sd">    </span>
     1295<span class="sd">    :param  integer nmax: maximul order for In(x)</span>
     1296<span class="sd">    :param  float x: argument for In(x)</span>
     1297<span class="sd">    </span>
     1298<span class="sd">    :returns numpy array: [I(-nmax,x)...I(0,x)...I(nmax,x)]</span>
     1299<span class="sd">    </span>
     1300<span class="sd">    &#39;&#39;&#39;</span>
     1301    <span class="kn">import</span> <span class="nn">scipy.special</span> <span class="kn">as</span> <span class="nn">sp</span>
     1302    <span class="n">bessIn</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="mi">2</span><span class="o">*</span><span class="n">nmax</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
     1303    <span class="n">bessIn</span><span class="p">[</span><span class="n">nmax</span><span class="p">]</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">i0</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
     1304    <span class="n">bessIn</span><span class="p">[</span><span class="n">nmax</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">sp</span><span class="o">.</span><span class="n">i1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
     1305    <span class="n">bessIn</span><span class="p">[</span><span class="n">nmax</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">bessIn</span><span class="p">[</span><span class="n">nmax</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span>
     1306    <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">2</span><span class="p">,</span><span class="n">nmax</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
     1307        <span class="n">bessIn</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="n">nmax</span><span class="p">]</span> <span class="o">=</span> <span class="n">bessIn</span><span class="p">[</span><span class="n">nmax</span><span class="o">+</span><span class="n">i</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="p">(</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">bessIn</span><span class="p">[</span><span class="n">nmax</span><span class="o">+</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">/</span><span class="n">x</span>
     1308        <span class="n">bessIn</span><span class="p">[</span><span class="n">nmax</span><span class="o">-</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">bessIn</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="n">nmax</span><span class="p">]</span>
     1309    <span class="k">return</span> <span class="n">bessIn</span>
     1310       
     1311   
    9021312<span class="c">################################################################################</span>
    9031313<span class="c">##### distance, angle, planes, torsion stuff </span>
    9041314<span class="c">################################################################################</span>
    905 
     1315</div>
    9061316<div class="viewcode-block" id="getSyXYZ"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.getSyXYZ">[docs]</a><span class="k">def</span> <span class="nf">getSyXYZ</span><span class="p">(</span><span class="n">XYZ</span><span class="p">,</span><span class="n">ops</span><span class="p">,</span><span class="n">SGData</span><span class="p">):</span>
    9071317    <span class="sd">&#39;&#39;&#39;default doc string</span>
     
    17062116        <span class="k">for</span> <span class="n">hist</span> <span class="ow">in</span> <span class="n">Gangls</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
    17072117            <span class="n">Refs</span> <span class="o">=</span> <span class="n">refData</span><span class="p">[</span><span class="n">hist</span><span class="p">]</span>
    1708             <span class="n">wt</span> <span class="o">=</span> <span class="mf">1.0</span>    <span class="c">#   np.sqrt(np.abs(Refs[:,5]))?</span>
    1709             <span class="n">sumObs</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">Refs</span><span class="p">[:,</span><span class="mi">5</span><span class="p">])</span>
     2118            <span class="n">Refs</span><span class="p">[:,</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">Refs</span><span class="p">[:,</span><span class="mi">5</span><span class="p">]</span><span class="o">&gt;</span><span class="mf">0.</span><span class="p">,</span><span class="n">Refs</span><span class="p">[:,</span><span class="mi">5</span><span class="p">],</span><span class="mf">0.</span><span class="p">)</span>
     2119            <span class="n">wt</span> <span class="o">=</span> <span class="mf">1.</span><span class="o">/</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">Refs</span><span class="p">[:,</span><span class="mi">4</span><span class="p">],</span><span class="o">.</span><span class="mi">25</span><span class="p">))</span>
     2120<span class="c">#            wt = 1./np.max(Refs[:,4],.25)</span>
     2121            <span class="n">sumObs</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">wt</span><span class="o">*</span><span class="n">Refs</span><span class="p">[:,</span><span class="mi">5</span><span class="p">])</span>
    17102122            <span class="n">Refs</span><span class="p">[:,</span><span class="mi">6</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.</span>
    17112123            <span class="n">H</span> <span class="o">=</span> <span class="n">Refs</span><span class="p">[:,:</span><span class="mi">3</span><span class="p">]</span>
     
    17342146            <span class="n">Refs</span> <span class="o">=</span> <span class="n">refData</span><span class="p">[</span><span class="n">hist</span><span class="p">]</span>
    17352147            <span class="n">H</span> <span class="o">=</span> <span class="n">Refs</span><span class="p">[:,:</span><span class="mi">3</span><span class="p">]</span>
    1736             <span class="n">wt</span> <span class="o">=</span> <span class="mf">1.0</span>    <span class="c">#   np.sqrt(np.abs(Refs[:,5]))?</span>
     2148            <span class="n">wt</span> <span class="o">=</span> <span class="mf">1.</span><span class="o">/</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">Refs</span><span class="p">[:,</span><span class="mi">4</span><span class="p">],</span><span class="o">.</span><span class="mi">25</span><span class="p">))</span>
     2149<span class="c">#            wt = 1./np.max(Refs[:,4],.25)</span>
    17372150            <span class="n">phi</span><span class="p">,</span><span class="n">beta</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">CrsAng</span><span class="p">(</span><span class="n">H</span><span class="p">,</span><span class="n">cell</span><span class="p">,</span><span class="n">SGData</span><span class="p">)</span>
    17382151            <span class="n">psi</span><span class="p">,</span><span class="n">gam</span><span class="p">,</span><span class="n">dPdA</span><span class="p">,</span><span class="n">dGdA</span> <span class="o">=</span> <span class="n">G2lat</span><span class="o">.</span><span class="n">SamAng</span><span class="p">(</span><span class="n">Refs</span><span class="p">[:,</span><span class="mi">3</span><span class="p">]</span><span class="o">/</span><span class="mf">2.</span><span class="p">,</span><span class="n">Gangls</span><span class="p">[</span><span class="n">hist</span><span class="p">],</span><span class="n">Sangls</span><span class="p">,</span><span class="bp">False</span><span class="p">)</span> <span class="c">#assume not Bragg-Brentano!</span>
     
    17952208            <span class="k">break</span>
    17962209   
    1797 <span class="c">#    for hist in keyList:</span>
    1798 <span class="c">#        print &#39; Texture corrections for &#39;+hist</span>
    1799 <span class="c">#        for ref in refData[hist]:</span>
    1800 <span class="c">#            print &#39; %d %d %d %.3f %.3f&#39;%(int(ref[0]),int(ref[1]),int(ref[2]),ref[5],ref[6])</span>
    18012210    <span class="k">if</span> <span class="n">ncyc</span><span class="p">:</span>
    18022211        <span class="k">for</span> <span class="n">parm</span> <span class="ow">in</span> <span class="n">parmDict</span><span class="p">:</span>
     
    19082317<span class="sd">    &#39;&#39;&#39;</span>
    19092318    <span class="n">generalData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">&#39;General&#39;</span><span class="p">]</span>
    1910     <span class="n">mapData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;4DmapData&#39;</span><span class="p">]</span>
     2319    <span class="n">map4DData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;4DmapData&#39;</span><span class="p">]</span>
     2320    <span class="n">mapData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;Map&#39;</span><span class="p">]</span>
    19112321    <span class="n">dmin</span> <span class="o">=</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;Resolution&#39;</span><span class="p">]</span>
    19122322    <span class="n">SGData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">&#39;SGData&#39;</span><span class="p">]</span>
     
    19252335        <span class="k">if</span> <span class="n">ref</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">&gt;</span> <span class="n">dmin</span><span class="p">:</span>
    19262336            <span class="n">Fosq</span><span class="p">,</span><span class="n">Fcsq</span><span class="p">,</span><span class="n">ph</span> <span class="o">=</span> <span class="n">ref</span><span class="p">[</span><span class="mi">9</span><span class="p">:</span><span class="mi">12</span><span class="p">]</span>
     2337            <span class="n">Fosq</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">Fosq</span><span class="o">&gt;</span><span class="mf">0.</span><span class="p">,</span><span class="n">Fosq</span><span class="p">,</span><span class="mf">0.</span><span class="p">)</span>    <span class="c">#can&#39;t use Fo^2 &lt; 0</span>
    19272338            <span class="n">Uniq</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">ref</span><span class="p">[:</span><span class="mi">4</span><span class="p">],</span><span class="n">SSGMT</span><span class="p">)</span>
    19282339            <span class="n">Phi</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">inner</span><span class="p">(</span><span class="n">ref</span><span class="p">[:</span><span class="mi">4</span><span class="p">],</span><span class="n">SSGT</span><span class="p">)</span>
     
    19352346                <span class="n">phasem</span> <span class="o">=</span> <span class="nb">complex</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="o">-</span><span class="n">b</span><span class="p">)</span>
    19362347                <span class="k">if</span> <span class="s">&#39;Fobs&#39;</span> <span class="ow">in</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;MapType&#39;</span><span class="p">]:</span>
    1937                     <span class="n">F</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">Fosq</span><span class="o">&gt;</span><span class="mf">0.</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">Fosq</span><span class="p">),</span><span class="mf">0.</span><span class="p">)</span>
     2348                    <span class="n">F</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">Fosq</span><span class="p">)</span>
    19382349                    <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="n">hkl</span><span class="o">+</span><span class="n">Hmax</span>
    19392350                    <span class="n">Fhkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">F</span><span class="o">*</span><span class="n">phasep</span>
    19402351                    <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="o">-</span><span class="n">hkl</span><span class="o">+</span><span class="n">Hmax</span>
    19412352                    <span class="n">Fhkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">F</span><span class="o">*</span><span class="n">phasem</span>
     2353                <span class="k">elif</span> <span class="s">&#39;Fcalc&#39;</span> <span class="ow">in</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;MapType&#39;</span><span class="p">]:</span>
     2354                    <span class="n">F</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">Fcsq</span><span class="p">)</span>
     2355                    <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="n">hkl</span><span class="o">+</span><span class="n">Hmax</span>
     2356                    <span class="n">Fhkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">F</span><span class="o">*</span><span class="n">phasep</span>
     2357                    <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="o">-</span><span class="n">hkl</span><span class="o">+</span><span class="n">Hmax</span>
     2358                    <span class="n">Fhkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">F</span><span class="o">*</span><span class="n">phasem</span>                   
    19422359                <span class="k">elif</span> <span class="s">&#39;delt-F&#39;</span> <span class="ow">in</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;MapType&#39;</span><span class="p">]:</span>
    1943                     <span class="n">dF</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">Fosq</span><span class="o">&gt;</span><span class="mf">0.</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">Fosq</span><span class="p">),</span><span class="mf">0.</span><span class="p">)</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">Fcsq</span><span class="p">)</span>
     2360                    <span class="n">dF</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">Fosq</span><span class="p">)</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">Fcsq</span><span class="p">)</span>
    19442361                    <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="n">hkl</span><span class="o">+</span><span class="n">Hmax</span>
    19452362                    <span class="n">Fhkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">dF</span><span class="o">*</span><span class="n">phasep</span>
    19462363                    <span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span> <span class="o">=</span> <span class="o">-</span><span class="n">hkl</span><span class="o">+</span><span class="n">Hmax</span>
    19472364                    <span class="n">Fhkl</span><span class="p">[</span><span class="n">h</span><span class="p">,</span><span class="n">k</span><span class="p">,</span><span class="n">l</span><span class="p">,</span><span class="n">m</span><span class="p">]</span> <span class="o">=</span> <span class="n">dF</span><span class="o">*</span><span class="n">phasem</span>
    1948     <span class="n">rho</span> <span class="o">=</span> <span class="n">fft</span><span class="o">.</span><span class="n">fftn</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftshift</span><span class="p">(</span><span class="n">Fhkl</span><span class="p">))</span><span class="o">/</span><span class="n">cell</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>
    1949     <span class="k">print</span> <span class="s">&#39;Fourier map time: </span><span class="si">%.4f</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">time0</span><span class="p">),</span><span class="s">&#39;no. elements: </span><span class="si">%d</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">Fhkl</span><span class="o">.</span><span class="n">size</span><span class="p">)</span>
     2365    <span class="n">SSrho</span> <span class="o">=</span> <span class="n">fft</span><span class="o">.</span><span class="n">fftn</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftshift</span><span class="p">(</span><span class="n">Fhkl</span><span class="p">))</span><span class="o">/</span><span class="n">cell</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>          <span class="c">#4D map </span>
     2366    <span class="n">rho</span> <span class="o">=</span> <span class="n">fft</span><span class="o">.</span><span class="n">fftn</span><span class="p">(</span><span class="n">fft</span><span class="o">.</span><span class="n">fftshift</span><span class="p">(</span><span class="n">Fhkl</span><span class="p">[:,:,:,</span><span class="n">maxM</span><span class="o">+</span><span class="mi">1</span><span class="p">]))</span><span class="o">/</span><span class="n">cell</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>    <span class="c">#3D map</span>
     2367    <span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">SSrho</span><span class="p">)</span>
     2368    <span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rhoMax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]))</span>
     2369    <span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;minmax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])]</span>
     2370    <span class="n">map4DData</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span>
    19502371    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">reflDict</span><span class="p">[</span><span class="s">&#39;Type&#39;</span><span class="p">]</span>
    19512372    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">real</span><span class="p">(</span><span class="n">rho</span><span class="p">)</span>
    19522373    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rhoMax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]))</span>
    19532374    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;minmax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])]</span>
    1954     <span class="k">return</span> <span class="n">mapData</span>
     2375    <span class="k">print</span> <span class="s">&#39;Fourier map time: </span><span class="si">%.4f</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span><span class="o">-</span><span class="n">time0</span><span class="p">),</span><span class="s">&#39;no. elements: </span><span class="si">%d</span><span class="s">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">Fhkl</span><span class="o">.</span><span class="n">size</span><span class="p">)</span>
    19552376</div>
    19562377<div class="viewcode-block" id="FourierMap"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.FourierMap">[docs]</a><span class="k">def</span> <span class="nf">FourierMap</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">reflDict</span><span class="p">):</span>
     
    19832404                <span class="n">hkl</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">hkl</span><span class="p">,</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;i&#39;</span><span class="p">)</span>
    19842405                <span class="n">dp</span> <span class="o">=</span> <span class="mf">360.</span><span class="o">*</span><span class="n">Phi</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>                <span class="c">#and phi</span>
    1985                 <span class="n">a</span> <span class="o">=</span> <span class="n">cosd</span><span class="p">(</span><span class="n">ph</span><span class="p">)</span>
    1986                 <span class="n">b</span> <span class="o">=</span> <span class="n">sind</span><span class="p">(</span><span class="n">ph</span><span class="p">)</span>
    1987                 <span class="n">phasep</span> <span class="o">=</span> <span class="nb">complex</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">)</span><span class="o">+</span><span class="n">dp</span>
    1988                 <span class="n">phasem</span> <span class="o">=</span> <span class="nb">complex</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="o">-</span><span class="n">b</span><span class="p">)</span><span class="o">-</span><span class="n">dp</span>
     2406                <span class="n">a</span> <span class="o">=</span> <span class="n">cosd</span><span class="p">(</span><span class="n">ph</span><span class="o">+</span><span class="n">dp</span><span class="p">)</span>
     2407                <span class="n">b</span> <span class="o">=</span> <span class="n">sind</span><span class="p">(</span><span class="n">ph</span><span class="o">+</span><span class="n">dp</span><span class="p">)</span>
     2408                <span class="n">phasep</span> <span class="o">=</span> <span class="nb">complex</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">)</span>
     2409                <span class="n">phasem</span> <span class="o">=</span> <span class="nb">complex</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="o">-</span><span class="n">b</span><span class="p">)</span>
    19892410                <span class="k">if</span> <span class="s">&#39;Fobs&#39;</span> <span class="ow">in</span> <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;MapType&#39;</span><span class="p">]:</span>
    19902411                    <span class="n">F</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">Fosq</span><span class="o">&gt;</span><span class="mf">0.</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">Fosq</span><span class="p">),</span><span class="mf">0.</span><span class="p">)</span>
     
    20222443    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rhoMax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]))</span>
    20232444    <span class="n">mapData</span><span class="p">[</span><span class="s">&#39;minmax&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])]</span>
    2024     <span class="k">return</span> <span class="n">mapData</span>
    20252445   
    20262446<span class="c"># map printing for testing purposes</span></div>
     
    23902810    <span class="k">return</span> <span class="n">mapData</span><span class="p">,</span><span class="n">map4DData</span>
    23912811    </div>
     2812<div class="viewcode-block" id="getRho"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.getRho">[docs]</a><span class="k">def</span> <span class="nf">getRho</span><span class="p">(</span><span class="n">xyz</span><span class="p">,</span><span class="n">mapData</span><span class="p">):</span>
     2813    <span class="sd">&#39;&#39;&#39; get scattering density at a point by 8-point interpolation</span>
     2814<span class="sd">    param xyz: coordinate to be probed</span>
     2815<span class="sd">    param: mapData: dict of map data</span>
     2816<span class="sd">    </span>
     2817<span class="sd">    :returns: density at xyz</span>
     2818<span class="sd">    &#39;&#39;&#39;</span>
     2819    <span class="n">rollMap</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">rho</span><span class="p">,</span><span class="n">roll</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">roll</span><span class="p">(</span><span class="n">rho</span><span class="p">,</span><span class="n">roll</span><span class="p">[</span><span class="mi">0</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="n">roll</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">),</span><span class="n">roll</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
     2820    <span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">mapData</span><span class="p">):</span>
     2821        <span class="k">return</span> <span class="mf">0.0</span>
     2822    <span class="n">rho</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">mapData</span><span class="p">[</span><span class="s">&#39;rho&#39;</span><span class="p">])</span>     <span class="c">#don&#39;t mess up original</span>
     2823    <span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">rho</span><span class="p">):</span>
     2824        <span class="k">return</span> <span class="mf">0.0</span>
     2825    <span class="n">mapShape</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">rho</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
     2826    <span class="n">mapStep</span> <span class="o">=</span> <span class="mf">1.</span><span class="o">/</span><span class="n">mapShape</span>
     2827    <span class="n">X</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">xyz</span><span class="p">)</span><span class="o">%</span><span class="mf">1.</span>    <span class="c">#get into unit cell</span>
     2828    <span class="n">I</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">X</span><span class="o">*</span><span class="n">mapShape</span><span class="p">,</span><span class="n">dtype</span><span class="o">=</span><span class="s">&#39;int&#39;</span><span class="p">)</span>
     2829    <span class="n">D</span> <span class="o">=</span> <span class="n">X</span><span class="o">-</span><span class="n">I</span><span class="o">*</span><span class="n">mapStep</span>         <span class="c">#position inside map cell</span>
     2830    <span class="n">D12</span> <span class="o">=</span> <span class="n">D</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">D</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
     2831    <span class="n">D13</span> <span class="o">=</span> <span class="n">D</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">D</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
     2832    <span class="n">D23</span> <span class="o">=</span> <span class="n">D</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">D</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
     2833    <span class="n">D123</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">prod</span><span class="p">(</span><span class="n">D</span><span class="p">)</span>
     2834    <span class="n">Rho</span> <span class="o">=</span> <span class="n">rollMap</span><span class="p">(</span><span class="n">rho</span><span class="p">,</span><span class="o">-</span><span class="n">I</span><span class="p">)</span>    <span class="c">#shifts map so point is in corner</span>
     2835    <span class="n">R</span> <span class="o">=</span> <span class="n">Rho</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="o">*</span><span class="p">(</span><span class="mf">1.</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">D</span><span class="p">))</span><span class="o">+</span><span class="n">Rho</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">D</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="n">Rho</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">D</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="n">Rho</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">D</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">+</span>  \
     2836        <span class="n">Rho</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">D123</span><span class="o">+</span><span class="n">Rho</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">D23</span><span class="o">-</span><span class="n">D123</span><span class="p">)</span><span class="o">+</span><span class="n">Rho</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">D13</span><span class="o">-</span><span class="n">D123</span><span class="p">)</span><span class="o">+</span><span class="n">Rho</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">D12</span><span class="o">-</span><span class="n">D123</span><span class="p">)</span><span class="o">+</span>  \
     2837        <span class="n">Rho</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="o">*</span><span class="p">(</span><span class="n">D12</span><span class="o">+</span><span class="n">D13</span><span class="o">+</span><span class="n">D23</span><span class="o">-</span><span class="n">D123</span><span class="p">)</span><span class="o">-</span><span class="n">Rho</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">D13</span><span class="o">+</span><span class="n">D23</span><span class="o">-</span><span class="n">D123</span><span class="p">)</span><span class="o">-</span>    \
     2838        <span class="n">Rho</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">D23</span><span class="o">+</span><span class="n">D12</span><span class="o">-</span><span class="n">D123</span><span class="p">)</span><span class="o">-</span><span class="n">Rho</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="p">(</span><span class="n">D13</span><span class="o">+</span><span class="n">D12</span><span class="o">-</span><span class="n">D123</span><span class="p">)</span>   
     2839    <span class="k">return</span> <span class="n">R</span>
     2840       </div>
    23922841<div class="viewcode-block" id="SearchMap"><a class="viewcode-back" href="../GSASIImath.html#GSASIImath.SearchMap">[docs]</a><span class="k">def</span> <span class="nf">SearchMap</span><span class="p">(</span><span class="n">generalData</span><span class="p">,</span><span class="n">drawingData</span><span class="p">,</span><span class="n">Neg</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
    23932842    <span class="sd">&#39;&#39;&#39;Does a search of a density map for peaks meeting the criterion of peak</span>
Note: See TracChangeset for help on using the changeset viewer.