Changeset 1998 for sphinxdocs/build/html/_modules/GSASIImath.html
- Timestamp:
- Oct 10, 2015 9:59:34 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sphinxdocs/build/html/_modules/GSASIImath.html
r1832 r1998 52 52 <span class="c">#GSASIImath - major mathematics routines</span> 53 53 <span class="c">########### SVN repository information ###################</span> 54 <span class="c"># $Date: 2015- 05-01 10:30:34 -0500 (Fri, 01 May2015) $</span>54 <span class="c"># $Date: 2015-10-09 14:57:18 -0500 (Fri, 09 Oct 2015) $</span> 55 55 <span class="c"># $Author: vondreele $</span> 56 <span class="c"># $Revision: 1 830$</span>56 <span class="c"># $Revision: 1996 $</span> 57 57 <span class="c"># $URL: https://subversion.xray.aps.anl.gov/pyGSAS/trunk/GSASIImath.py $</span> 58 <span class="c"># $Id: GSASIImath.py 1 830 2015-05-01 15:30:34Z vondreele $</span>58 <span class="c"># $Id: GSASIImath.py 1996 2015-10-09 19:57:18Z vondreele $</span> 59 59 <span class="c">########### SVN repository information ###################</span> 60 60 <span class="sd">'''</span> … … 77 77 <span class="kn">import</span> <span class="nn">copy</span> 78 78 <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">"$Revision: 1 830$"</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">"$Revision: 1996 $"</span><span class="p">)</span> 80 80 <span class="kn">import</span> <span class="nn">GSASIIElem</span> <span class="kn">as</span> <span class="nn">G2el</span> 81 81 <span class="kn">import</span> <span class="nn">GSASIIlattice</span> <span class="kn">as</span> <span class="nn">G2lat</span> … … 84 84 <span class="kn">import</span> <span class="nn">numpy.fft</span> <span class="kn">as</span> <span class="nn">fft</span> 85 85 <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">'debug'</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> 87 89 88 90 <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> … … 190 192 <span class="n">nfev</span> <span class="o">+=</span> <span class="mi">1</span> 191 193 <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">></span> <span class="n">chisq0</span><span class=" p">:</span>194 <span class="k">if</span> <span class="n">chisq1</span> <span class="o">></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> 193 195 <span class="n">lam</span> <span class="o">*=</span> <span class="mf">10.</span> 196 <span class="k">print</span> <span class="s">'matrix modification needed; lambda now </span><span class="si">%.1e</span><span class="s">'</span><span class="o">%</span><span class="p">(</span><span class="n">lam</span><span class="p">)</span> 194 197 <span class="k">else</span><span class="p">:</span> 195 198 <span class="n">x0</span> <span class="o">+=</span> <span class="n">Xvec</span> … … 339 342 <span class="k">return</span> <span class="n">newAtoms</span> 340 343 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> 342 345 <span class="sd">'''finds the set of atom array indices for a list of atom IDs. Will search </span> 343 346 <span class="sd"> either the Atom table or the drawAtom table.</span> 344 347 <span class="sd"> </span> 345 348 <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> 346 350 <span class="sd"> :param list IDs: atom IDs to be found</span> 347 351 <span class="sd"> :param bool Draw: True if drawAtom table to be searched; False if Atom table</span> … … 353 357 <span class="n">indx</span> <span class="o">=</span> <span class="p">[]</span> 354 358 <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> 356 360 <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> 358 362 <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> 359 363 <span class="k">return</span> <span class="n">indx</span> … … 426 430 <span class="k">return</span> <span class="n">XYZ</span> 427 431 </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">''</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">'General'</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">'AtomPtrs'</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">'Atoms'</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">'Cell'</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">'AtomTypes'</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">'BondRadii'</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">'DisAglCtls'</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">'Factors'</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['BondRadii']</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">'AtomPtrs'</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">'Cell'</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">'I'</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">'C'</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">'O'</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">'Map'</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 428 559 <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 & not used</span> 429 560 <span class="sd">'''default doc string</span> … … 841 972 <span class="k">return</span> <span class="n">Xanom</span> 842 973 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">></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">></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">></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">></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">></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">'''</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"> '''</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 & 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">'Fourier'</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">'Crenel'</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">'Crenel'</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">'Sawtooth'</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">'Sawtooth'</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">'''</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"> '''</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 & 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">'Fourier'</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">'Crenel'</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">'Crenel'</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">'Sawtooth'</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">'Sawtooth'</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> 879 1136 <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> 880 1137 <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> … … 900 1157 <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> 901 1158 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">'''Applies modulation to drawing atom positions & Uijs for given tau</span> 1161 <span class="sd"> '''</span> 1162 <span class="n">generalData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">'General'</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">'SGData'</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">'SSGData'</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">'AtomPtrs'</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">'Drawing'</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">'atomPtrs'</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">'Atoms'</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">'Atoms'</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">'SS1'</span><span class="p">][</span><span class="s">'waveType'</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">'SS1'</span><span class="p">][</span><span class="s">'Sfrac'</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">'SS1'</span><span class="p">][</span><span class="s">'Spos'</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">'SS1'</span><span class="p">][</span><span class="s">'Sadp'</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">'Crenel'</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">'Sawtooth'</span><span class="p">,</span><span class="s">'ZigZag'</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">'Sawtooth'</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">'ZigZag'</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">'A'</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"><=</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">''' compute Bessel function J(n,x) from scipy routine & 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"> '''</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">''' compute modified Bessel function I(n,x) from scipy routines & 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"> '''</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 902 1312 <span class="c">################################################################################</span> 903 1313 <span class="c">##### distance, angle, planes, torsion stuff </span> 904 1314 <span class="c">################################################################################</span> 905 1315 </div> 906 1316 <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> 907 1317 <span class="sd">'''default doc string</span> … … 1706 2116 <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> 1707 2117 <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">></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> 1710 2122 <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> 1711 2123 <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> … … 1734 2146 <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> 1735 2147 <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> 1737 2150 <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> 1738 2151 <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> … … 1795 2208 <span class="k">break</span> 1796 2209 1797 <span class="c"># for hist in keyList:</span>1798 <span class="c"># print ' Texture corrections for '+hist</span>1799 <span class="c"># for ref in refData[hist]:</span>1800 <span class="c"># print ' %d %d %d %.3f %.3f'%(int(ref[0]),int(ref[1]),int(ref[2]),ref[5],ref[6])</span>1801 2210 <span class="k">if</span> <span class="n">ncyc</span><span class="p">:</span> 1802 2211 <span class="k">for</span> <span class="n">parm</span> <span class="ow">in</span> <span class="n">parmDict</span><span class="p">:</span> … … 1908 2317 <span class="sd"> '''</span> 1909 2318 <span class="n">generalData</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="s">'General'</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">'4DmapData'</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">'4DmapData'</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">'Map'</span><span class="p">]</span> 1911 2321 <span class="n">dmin</span> <span class="o">=</span> <span class="n">mapData</span><span class="p">[</span><span class="s">'Resolution'</span><span class="p">]</span> 1912 2322 <span class="n">SGData</span> <span class="o">=</span> <span class="n">generalData</span><span class="p">[</span><span class="s">'SGData'</span><span class="p">]</span> … … 1925 2335 <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">></span> <span class="n">dmin</span><span class="p">:</span> 1926 2336 <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">></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't use Fo^2 < 0</span> 1927 2338 <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> 1928 2339 <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> … … 1935 2346 <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> 1936 2347 <span class="k">if</span> <span class="s">'Fobs'</span> <span class="ow">in</span> <span class="n">mapData</span><span class="p">[</span><span class="s">'MapType'</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">></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> 1938 2349 <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> 1939 2350 <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> 1940 2351 <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> 1941 2352 <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">'Fcalc'</span> <span class="ow">in</span> <span class="n">mapData</span><span class="p">[</span><span class="s">'MapType'</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> 1942 2359 <span class="k">elif</span> <span class="s">'delt-F'</span> <span class="ow">in</span> <span class="n">mapData</span><span class="p">[</span><span class="s">'MapType'</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">></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> 1944 2361 <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> 1945 2362 <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> 1946 2363 <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> 1947 2364 <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">'Fourier map time: </span><span class="si">%.4f</span><span class="s">'</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">'no. elements: </span><span class="si">%d</span><span class="s">'</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">'rho'</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">'rhoMax'</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">'rho'</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">'rho'</span><span class="p">]))</span> 2369 <span class="n">map4DData</span><span class="p">[</span><span class="s">'minmax'</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">'rho'</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">'rho'</span><span class="p">])]</span> 2370 <span class="n">map4DData</span><span class="p">[</span><span class="s">'Type'</span><span class="p">]</span> <span class="o">=</span> <span class="n">reflDict</span><span class="p">[</span><span class="s">'Type'</span><span class="p">]</span> 1950 2371 <span class="n">mapData</span><span class="p">[</span><span class="s">'Type'</span><span class="p">]</span> <span class="o">=</span> <span class="n">reflDict</span><span class="p">[</span><span class="s">'Type'</span><span class="p">]</span> 1951 2372 <span class="n">mapData</span><span class="p">[</span><span class="s">'rho'</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> 1952 2373 <span class="n">mapData</span><span class="p">[</span><span class="s">'rhoMax'</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">'rho'</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">'rho'</span><span class="p">]))</span> 1953 2374 <span class="n">mapData</span><span class="p">[</span><span class="s">'minmax'</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">'rho'</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">'rho'</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">'Fourier map time: </span><span class="si">%.4f</span><span class="s">'</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">'no. elements: </span><span class="si">%d</span><span class="s">'</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> 1955 2376 </div> 1956 2377 <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> … … 1983 2404 <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">'i'</span><span class="p">)</span> 1984 2405 <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> 1989 2410 <span class="k">if</span> <span class="s">'Fobs'</span> <span class="ow">in</span> <span class="n">mapData</span><span class="p">[</span><span class="s">'MapType'</span><span class="p">]:</span> 1990 2411 <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">></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> … … 2022 2443 <span class="n">mapData</span><span class="p">[</span><span class="s">'rhoMax'</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">'rho'</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">'rho'</span><span class="p">]))</span> 2023 2444 <span class="n">mapData</span><span class="p">[</span><span class="s">'minmax'</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">'rho'</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">'rho'</span><span class="p">])]</span> 2024 <span class="k">return</span> <span class="n">mapData</span>2025 2445 2026 2446 <span class="c"># map printing for testing purposes</span></div> … … 2390 2810 <span class="k">return</span> <span class="n">mapData</span><span class="p">,</span><span class="n">map4DData</span> 2391 2811 </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">''' 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"> '''</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">'rho'</span><span class="p">])</span> <span class="c">#don'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">'int'</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> 2392 2841 <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> 2393 2842 <span class="sd">'''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.