<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel rdf:about="https://community.wolfram.com">
    <title>Community RSS Feed</title>
    <link>https://community.wolfram.com</link>
    <description>RSS Feed for Wolfram Community showing ideas tagged with Material Sciences sorted by most likes.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/787142" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2027803" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3501343" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2305648" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2415323" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/828033" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2062346" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2388782" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1374495" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1732535" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3100855" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3032057" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3010647" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2914905" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2825040" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2540813" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3638297" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3528683" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3314703" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3210091" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/787142">
    <title>Crystallica: A package to plot crystal structures</title>
    <link>https://community.wolfram.com/groups/-/m/t/787142</link>
    <description>## General information and download links ##&#xD;
&#xD;
If you&amp;#039;re interested in crystal structures, you can now download the Crystallica application from the Wolfram Library Archive, and then you can do things like this:&#xD;
&#xD;
    Needs[&amp;#034;Crystallica`&amp;#034;];&#xD;
    CrystalPlot[&#xD;
    {{5.4,0,0},{0,5.4,0},{0,0,5.4}},&#xD;
    {{0,0,0},{0,0,.5},{0,.5,0},{.5,0,0},{.24,.24,.24},{.24,.76,.76},{.76,.24,.76},{.76,.76,.24}},&#xD;
    {1,2,2,2,3,3,3,3},&#xD;
    AtomCol-&amp;gt;{&amp;#034;Firebrick&amp;#034;,&amp;#034;YellowGreen&amp;#034;,White},AtomRad-&amp;gt;.4,&#xD;
    BondStyle-&amp;gt;2,BondDist-&amp;gt;3,&#xD;
    CellLineStyle-&amp;gt;False,AddQ-&amp;gt;True,Lighting-&amp;gt;{{&amp;#034;Directional&amp;#034;,White,ImageScaled[{0,0,1}]}},Background-&amp;gt;Black]&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
Here are the download links for Crystallica and two other packages you may need:&#xD;
&#xD;
[Crystallica][2] - contains the functions `CrystalPlot` and `CrystalChange`&#xD;
&#xD;
[CifImport][3] - contains an import function for CIF files&#xD;
&#xD;
[VaspImport][4] - contains an import function for files related to [VASP][5]&#xD;
&#xD;
Once you&amp;#039;ve installed Crystallica (by saving the entire Crystallica folder - not the zip archive - to `$USerBaseDirectory/Applications` and re-starting the Kernel), you can enter Crystallica into the Documentation Center and you&amp;#039;ll find lots of useful examples. Most of the examples in this post are taken from the Documentation. For the other two packages, just install them and evaluate this:&#xD;
&#xD;
    ?CifImport&#xD;
    ?VaspImport&#xD;
&#xD;
I&amp;#039;ll first show you a few things the `CrystalPlot` function can do when you already have crystal structure data inside Mathematica, wherever it may have come from. Then we&amp;#039;ll take a look at how to get the data into Mathematica in the first place, which is where `CifImport` and `VaspImport` will come into play - but we&amp;#039;ll get data from other sources as well. I&amp;#039;ll cover the different import solutions in separate replies to this thread, because I have a feeling that I&amp;#039;ll be rambling on and on and on...&#xD;
&#xD;
## Simple plot ##&#xD;
&#xD;
Traditional ball-and-stick plots are usually just fine, so the simplest thing you can do is this:&#xD;
&#xD;
    CrystalPlot[&#xD;
    {{4.5,0,0},{0,4.5,0},{0,0,3}},&#xD;
    {{0,0,0},{.5,.5,.5},{.2,.8,.5},{.3,.3,0},{.7,.7,0},{.8,.2,.5}},&#xD;
    {1,1,2,2,2,2}]&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
As you can see, `CrystalPlot` expects three arguments. The first one contains the lattice vectors, which are simply the three vectors that create the parallelepiped that constitutes the cell. The second argument contains the atomic coordinates, but they&amp;#039;re given in the basis of the lattice vectors (which is quite useful in crystallography). The third argument is a list of integers that gives the atom types, with one entry for each atom. If you want to plot a molecule instead, you can call `CrystalPlot` with just two arguments: A list of atom coordinates in cartesian space, and a list of atom types. Everything else you see in the plot - the atoms, bonds, colours, arrows etc. - represents the default settings of various layout options.&#xD;
&#xD;
## Advanced atoms and bonds ##&#xD;
&#xD;
Let&amp;#039;s take a look at some more advanced options just for fun. For instance, atoms and bonds can look any way you need them to, because you can specify your own functions for them. You can also fine-tune where to put bonds and what to do with their thickness and colour in a physically (or chemically) meaningful way, but I won&amp;#039;t show that here. So here are some customized atoms and bonds:&#xD;
&#xD;
    Row[Table[&#xD;
    CrystalPlot[{{4,0,0},{0,4,0},{0,0,4}},{{0,0,0},{.4,.4,.4},{.8,.8,.8}},{1,2,3},&#xD;
    AtomRad-&amp;gt;{.4,1.2,.7},AtomFunction-&amp;gt;style,ImageSize-&amp;gt;400],&#xD;
    {style,{&#xD;
    (Ball[#1,#2]&amp;amp;),&#xD;
    (Scale[Sphere[#1,#2],{1,1,.5}]&amp;amp;),&#xD;
    ({EdgeForm[Thick],Opacity[.7],Cuboid[#1-.5*#2,#1+.5*#2]}&amp;amp;)&#xD;
    }}]]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
    Row[Table[&#xD;
    CrystalPlot[{{0,0,0},{5,0,0},{2.5,4,0}},{1,2,3},BondDist-&amp;gt;6,BondStyle-&amp;gt;style,ImageSize-&amp;gt;400],&#xD;
    {style,{&#xD;
    1,&#xD;
    Function[{bonds,partcol},Table[{If[ii&amp;lt;.5,partcol[#,1],partcol[#,2]],Sphere[bonds[[#,1]]+ii*(bonds[[#,2]]-bonds[[#,1]]),.15]},{ii,0,1,1/9}]&amp;amp;/@Range[Length[bonds]]],&#xD;
    Function[{bonds,partcol},Module[{spiral,points,rad=.05},&#xD;
    spiral[atoms_]:=Module[{scale=.5,dist=atoms[[2]]-atoms[[1]],curls=60,normal,rot,scaled},&#xD;
    normal=Table[{scale*Cos[ii],scale*Sin[ii],.1*ii},{ii,0,curls,\[Pi]/10}];&#xD;
    scaled={#[[1]],#[[2]],10*Norm[dist]/curls*#[[3]]}&amp;amp;/@normal;&#xD;
    rot=scaled.Quiet[RotationMatrix[{dist,{0,0,1}}]];&#xD;
    Join[{atoms[[1]]},#+atoms[[1]]&amp;amp;/@(rot[[25;;-25]]),{atoms[[2]]}]];&#xD;
    points=spiral/@bonds;&#xD;
    {partcol[#,1],Tube[BSplineCurve[points[[#,;;Round[Length[points[[#]]]/2]]],rad]],partcol[#,2],Tube[BSplineCurve[points[[#,Round[Length[points[[#]]]/2];;]],rad]]}&amp;amp;/@Range[Length[bonds]]&#xD;
    ]]&#xD;
    }}]]&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
## Lattice planes ##&#xD;
&#xD;
Crystallica can also add lattice planes to the plot. You can specify them using [h,k,l] Miller indices and distance to the origin.&#xD;
&#xD;
    CrystalPlot[{{3,0,0},{0,3,0},{0,0,3}},{{0,0,0}},{1},&#xD;
    AddQ-&amp;gt;True,AtomRad-&amp;gt;.3,AtomCol-&amp;gt;&amp;#034;CadmiumYellow&amp;#034;,Sysdim-&amp;gt;2,CellLineStyle-&amp;gt;2,&#xD;
    LatticePlanes-&amp;gt;Table[{{1,1,1},dist},{dist,1,5}],ContourStyle-&amp;gt;{&amp;#034;TerreVerte&amp;#034;,Opacity[.7]},BoundaryStyle-&amp;gt;Thick]&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
## Coordination polyhedra ##&#xD;
&#xD;
You can automatically search for and plot coordination polyhedra. This is not limited to the commonly occurring tetrahedra and octahedra - you can actually look for polyhedra with arbitrary numbers of corners. There are also options to fine-tune both the searching and the rendering.&#xD;
&#xD;
    plot[corners_,mixed_]:=CrystalPlot[{{0,0,0},{0,0,1.8},{-.9,-1.5,-.6},{-.9,1.5,-.6},{1.7,0,-.6},{.8,.8,.8}},{1,2,2,2,2,3},&#xD;
    BondStyle-&amp;gt;False,ImageSize-&amp;gt;250,&#xD;
    PolyMode[corners]-&amp;gt;{&amp;#034;Show&amp;#034;-&amp;gt;All,&amp;#034;AllowMixed&amp;#034;-&amp;gt;mixed},PolyStyle[corners]-&amp;gt;Directive[Opacity[.5],EdgeForm[Thick]]];&#xD;
    Grid[{{&#xD;
    &amp;#034;&amp;#034;,&#xD;
    &amp;#034;Search for polyhedra with \n4 corners&amp;#034;,&#xD;
    &amp;#034;Search for polyhedra with \n5 corners&amp;#034;&#xD;
    },{&#xD;
    &amp;#034;Allow \nmixed corners&amp;#034;,&#xD;
    plot[4,True],&#xD;
    plot[5,True]&#xD;
    },{&#xD;
    &amp;#034;Don&amp;#039;t allow \nmixed corners&amp;#034;,&#xD;
    plot[4,False],&#xD;
    plot[5,False]&#xD;
    }},Dividers-&amp;gt;All]&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
    CrystalPlot[{{2.5,-4.3,0},{2.5,4.3,0},{0,0,5.5}},&#xD;
    {{.5,0,0},{0,.5,.7},{.5,.5,.3},{.2,.4,.5},{.6,.8,.2},{.2,.8,.8},{.8,.6,.5},{.4,.2,.2},{.8,.2,.8}},{1,1,1,2,2,2,2,2,2},&#xD;
    PolyMode[4]-&amp;gt;True,PolyStyle[4]-&amp;gt;EdgeForm[None],AddQ-&amp;gt;True,&#xD;
    Sysdim-&amp;gt;2,AtomRad-&amp;gt;0,CellLineStyle-&amp;gt;False,AtomCol-&amp;gt;{&amp;#034;SlateGray&amp;#034;,&amp;#034;Firebrick&amp;#034;},&#xD;
    ViewAngle-&amp;gt;.4,ViewPoint-&amp;gt;{3.2,0,1.1},ViewVertical-&amp;gt;{.5,0,1.2}]&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
## Other things ##&#xD;
&#xD;
Visualization aside, you can also build supercells, change cell shapes, or add, remove and sort atoms... but that&amp;#039;s a bit boring to read, so I&amp;#039;ll refer you to the Documentation page of the `CrystalChange` function instead.&#xD;
&#xD;
If you&amp;#039;re interested, we can use this thread to talk about any questions you may have, or you can share your use of the package (if you decide to use it). I&amp;#039;m not offering full support here, but I&amp;#039;ll be floating around, and I&amp;#039;d like to hear your feedback. We don&amp;#039;t have any intentions to be involved in further development. But if you have a good idea and some time, then by all means, work on it for yourself, or host it on your favourite code collaboration site.&#xD;
&#xD;
Bianca Eifert and Christian Heiliger&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=teaser.png&amp;amp;userId=69107&#xD;
  [2]: http://library.wolfram.com/infocenter/MathSource/9372/&#xD;
  [3]: http://library.wolfram.com/infocenter/MathSource/9373/&#xD;
  [4]: http://library.wolfram.com/infocenter/MathSource/9375/&#xD;
  [5]: http://vasp.at/&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=9692simple.png&amp;amp;userId=69107&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=atoms.png&amp;amp;userId=69107&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=bonds.png&amp;amp;userId=69107&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=planes.png&amp;amp;userId=69107&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=polys.png&amp;amp;userId=69107&#xD;
  [11]: http://community.wolfram.com//c/portal/getImageAttachment?filename=polys2.png&amp;amp;userId=69107&#xD;
  [12]: http://rruff.geo.arizona.edu/AMS/CIF_text_files/13532_cif.txt&#xD;
  [13]: http://cms.mpi.univie.ac.at/vasp/vasp/POSCAR_file.html&#xD;
  [14]: http://wiki.jmol.org/index.php/File:Caffeine.mol</description>
    <dc:creator>Bianca Eifert</dc:creator>
    <dc:date>2016-02-05T18:43:18Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2027803">
    <title>[WSS20] Cellular Automata (CA) on 3D Lattices</title>
    <link>https://community.wolfram.com/groups/-/m/t/2027803</link>
    <description>![Examples of 3D Lattices and CA on them][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=imgleading.jpg&amp;amp;userId=1971688&#xD;
  [2]: https://www.wolframcloud.com/obj/b5a12940-5871-4006-b168-745737090965</description>
    <dc:creator>Radhika Prasad</dc:creator>
    <dc:date>2020-07-14T11:43:23Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3501343">
    <title>[WSRP25] Interlocked: computational chainmail engineering</title>
    <link>https://community.wolfram.com/groups/-/m/t/3501343</link>
    <description>![Interlocked: computational chainmail engineering][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2025-07-10at4.03.37%E2%80%AFPM.png&amp;amp;userId=3489769&#xD;
  [2]: https://www.wolframcloud.com/obj/05eb3d4b-bac8-468c-be6f-952fb37a1284</description>
    <dc:creator>Rakhi Jain</dc:creator>
    <dc:date>2025-07-10T20:08:50Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2305648">
    <title>QTAIM: a package for quantum theory of atoms in molecules</title>
    <link>https://community.wolfram.com/groups/-/m/t/2305648</link>
    <description>![enter image description here][1]&#xD;
&#xD;
Hello All,&#xD;
&#xD;
(I have set Independence Day (Observed) as my pencils-down moment to publicize a Wolfram Language/Mathematica package for performing computations and visualizing results from Quantum Theory of Atoms In Molecules (QTAIM) calculations on electronic structure theory wave functions.&#xD;
&#xD;
QTAIM endeavors the answer the question, &amp;#034;Are there discernable atoms inside of molecules?&amp;#034;  The answer according to Bader and co-workers is yes, if you define an atom as the basin/union of all steepest ascent paths and a nucleus, which is the attractor. Since there is zero-flux between these regions, they are proper quantum subsystems, just like the molecule/crystal is.&#xD;
&#xD;
Here is the water molecule (H2O) in this representation:&#xD;
&#xD;
![Atomic Basins][2]&#xD;
&#xD;
What motivated me to get going on creating a package was the new SliceVectorPlot3D routines, which make plotting these quantities a dream:&#xD;
&#xD;
![Gradient Field on Planes of Symmetr][3]&#xD;
&#xD;
The code is hosted here:&#xD;
https://github.com/ecbrown/QTAIM.wl&#xD;
&#xD;
which has this code and more extensive discussion.&#xD;
&#xD;
Wolfram Language/Mathematica is great for this. Great algorithms like ABM differential equation solver, and excellent graphics for 2D/3D fields. I t features several ways to get data in, so it can be file-based or scripted from PySCF.&#xD;
&#xD;
Well, I should keep it brief, and I look forward to any comments you have.&#xD;
&#xD;
Best regards,&#xD;
Eric&#xD;
&#xD;
&#xD;
&#xD;
An overview of the methods and results can be found here:&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][4]&#xD;
&#xD;
&#xD;
  [DON&amp;#039;T DELETE: Original notebook]: https://www.wolframcloud.com/obj/c70b8f04-b2fd-45f1-9077-f9827fe82357&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=QTAIM_hero.jpg&amp;amp;userId=20103&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=7578atoms-are-defined-as-the-union-of-gradient-paths-and-attractor.png&amp;amp;userId=62741&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=stream-plot-3d-of-electron-density-gradient-of-water.png&amp;amp;userId=62741&#xD;
  [4]: https://www.wolframcloud.com/obj/71988d27-d090-4df4-84b6-ec3fd7564308</description>
    <dc:creator>Eric Brown</dc:creator>
    <dc:date>2021-07-05T17:39:53Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2415323">
    <title>Kinematics of 3D printed anti earthquake system that mimics human bones</title>
    <link>https://community.wolfram.com/groups/-/m/t/2415323</link>
    <description>*WOLFRAM MATERIALS for the ARTICLE:*&#xD;
&amp;gt; Fraternali, F., Singh, N., Amendola, A., Benzoni, G., Milton, G.W.&#xD;
&#xD;
&amp;gt; A biomimetic sliding-stretching approach to seismic isolation.&#xD;
&#xD;
&amp;gt; NONLINEAR DYNAMICS (2021), DOI: https://doi.org/10.1007/s11071-021-06980-5&#xD;
&#xD;
&amp;gt; NATURE, Research Highlights: https://www.nature.com/articles/d41586-021-03506-2&#xD;
&#xD;
&amp;gt; [Full article in PDF][1]&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][3]&#xD;
&#xD;
&#xD;
  [1]: https://link.springer.com/content/pdf/10.1007/s11071-021-06980-5.pdf&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=d41586-021-03506-2_19896092.gif&amp;amp;userId=20103&#xD;
  [3]: https://www.wolframcloud.com/obj/e97c56e0-8896-44ef-aa0c-ab291da4c73d</description>
    <dc:creator>Fernando Fraternali</dc:creator>
    <dc:date>2021-11-29T18:52:25Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/828033">
    <title>It&amp;#039;s raining crystal structures: Cloud-based VASP viewer</title>
    <link>https://community.wolfram.com/groups/-/m/t/828033</link>
    <description>You may remember that I&amp;#039;ve already posted [packages for crystal structure plots][1]. I just wanted to dump a piece of code here that&amp;#039;s based on these packages and will let you plot crystal structures from [VASP][2] input/output files on a webpage... in case anyone else is using VASP.&#xD;
&#xD;
For anyone who wants to try the app but doesn&amp;#039;t have a VASP file handy, here&amp;#039;s a sample you can copy and paste into a plain text file:&#xD;
&#xD;
    Rutile&#xD;
       1.00000000000000     &#xD;
         4.5937300000000000    0.0000000000000000    0.0000000000000000&#xD;
         0.0000000000000000    4.5937300000000000    0.0000000000000000&#xD;
         0.0000000000000000    0.0000000000000000    2.9581200000000000&#xD;
       Ti    O&#xD;
         2     4&#xD;
    Direct&#xD;
      0.0000000000000000  0.0000000000000000  0.0000000000000000&#xD;
      0.5000000000000000  0.5000000000000000  0.5000000000000000&#xD;
      0.3053000000000000  0.3053000000000000  0.0000000000000000&#xD;
      0.6947000000000000  0.6947000000000000  0.0000000000000000&#xD;
      0.8053000000000000  0.1947000000000000  0.5000000000000000&#xD;
      0.1947000000000000  0.8053000000000000  0.5000000000000000&#xD;
    &#xD;
The actual code is below the image. Have fun!&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
    CloudDeploy[FormFunction[{&#xD;
       {{&amp;#034;file&amp;#034;, &amp;#034;Upload a VASP POSCAR or CONTCAR file here:&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
          &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;UploadedFile&amp;#034;|&amp;gt;}, {&#xD;
        {&amp;#034;sysdim&amp;#034;, &amp;#034;Periodic repetitions&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
          &amp;#034;Interpreter&amp;#034; -&amp;gt; &#xD;
           Restricted[&#xD;
            DelimitedSequence[&amp;#034;Integer&amp;#034;, &#xD;
             &amp;#034; &amp;#034; | &amp;#034;,&amp;#034; | &amp;#034;;&amp;#034; | &amp;#034;/&amp;#034; | &amp;#034;x&amp;#034; | &amp;#034;X&amp;#034;], 3], &amp;#034;Input&amp;#034; -&amp;gt; &amp;#034;1x1x1&amp;#034;|&amp;gt;,&#xD;
        {&amp;#034;retractq&amp;#034;, &amp;#034;Retract atoms to cell?&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
          &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;Boolean&amp;#034;, &amp;#034;Input&amp;#034; -&amp;gt; False|&amp;gt;,&#xD;
        {&amp;#034;addq&amp;#034;, &amp;#034;Add periodic duplicates of atoms?&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
          &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;Boolean&amp;#034;, &amp;#034;Input&amp;#034; -&amp;gt; False|&amp;gt;,&#xD;
        {&amp;#034;atomrad&amp;#034;, &amp;#034;Atom radius&amp;#034;} -&amp;gt; &amp;lt;|&amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;ComputedReal&amp;#034;, &#xD;
          &amp;#034;Input&amp;#034; -&amp;gt; 0.4|&amp;gt;,&#xD;
        {&amp;#034;bonddist&amp;#034;, &amp;#034;Maximum bond length&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
          &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;ComputedReal&amp;#034;, &amp;#034;Input&amp;#034; -&amp;gt; 2.1|&amp;gt;,&#xD;
        {&amp;#034;monobond&amp;#034;, &amp;#034;Want to pick your own bond color?&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
          &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;Boolean&amp;#034;, &amp;#034;Input&amp;#034; -&amp;gt; False|&amp;gt;,&#xD;
        {&amp;#034;bondcol&amp;#034;, &amp;#034;Bond color&amp;#034;} -&amp;gt; &amp;lt;|&amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;ComputedColor&amp;#034;, &#xD;
          &amp;#034;Input&amp;#034; -&amp;gt; GrayLevel[.8]|&amp;gt;,&#xD;
        {&amp;#034;bondrad&amp;#034;, &amp;#034;Bond radius&amp;#034;} -&amp;gt; &amp;lt;|&amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;ComputedReal&amp;#034;, &#xD;
          &amp;#034;Input&amp;#034; -&amp;gt; 0.1|&amp;gt;,&#xD;
        {&amp;#034;linecol&amp;#034;, &amp;#034;Cell outline color&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
          &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;ComputedColor&amp;#034;, &amp;#034;Input&amp;#034; -&amp;gt; Black|&amp;gt;,&#xD;
        {&amp;#034;linerad&amp;#034;, &amp;#034;Cell outline radius&amp;#034;} -&amp;gt; &amp;lt;|&#xD;
          &amp;#034;Interpreter&amp;#034; -&amp;gt; &amp;#034;ComputedReal&amp;#034;, &amp;#034;Input&amp;#034; -&amp;gt; 0.02|&amp;gt;&#xD;
        }},&#xD;
      &#xD;
      Module[{file, sysdim, retractq, addq, atomrad, bonddist, monobond, &#xD;
         bondcol, bondrad, linecol, linerad,&#xD;
         data, speciesQ, atomcol, chemoffset, chgoffset, lattscale, &#xD;
         lattvec, coord, conf, coordP, confP, new, tubearrow, lines, &#xD;
         atoms, tuples, bonds},&#xD;
        &#xD;
        file = #file;&#xD;
        sysdim = #sysdim;&#xD;
        retractq = #retractq;&#xD;
        addq = #addq;&#xD;
        atomrad = #atomrad;&#xD;
        bonddist = #bonddist;&#xD;
        monobond = #monobond;&#xD;
        bondcol = #bondcol;&#xD;
        bondrad = #bondrad;&#xD;
        linecol = #linecol;&#xD;
        linerad = #linerad;&#xD;
        &#xD;
        (*import: *)&#xD;
        data = Import[file, &amp;#034;Table&amp;#034;];&#xD;
        (*offset if chemical species are given: *)&#xD;
        speciesQ = MatchQ[data[[6]], {_String ..}];&#xD;
        atomcol[type_] := &#xD;
         If[speciesQ, ColorData[&amp;#034;Atoms&amp;#034;, data[[6, type]]], &#xD;
          ColorData[97, type]];&#xD;
        chemoffset = If[speciesQ, 1, 0];&#xD;
        (*offset for missing &amp;#034;Selective Dynamics&amp;#034; line as is common in \&#xD;
    CHG/CHGCAR: *)&#xD;
        chgoffset = &#xD;
         If[TrueQ[Length[data[[chemoffset + 8]]] &amp;gt; 0] &amp;amp;&amp;amp; &#xD;
           MatchQ[data[[chemoffset + 8, 1]], _?NumericQ], -1, 0];&#xD;
        &#xD;
        (*lattice vectors and atoms: *)&#xD;
        lattvec = data[[3 ;; 5]];&#xD;
        lattscale = data[[2]];&#xD;
        If[TrueQ[Length[lattscale] == 1], lattscale = lattscale[[1]]];&#xD;
        If[TrueQ[Sign[lattscale] == -1], &#xD;
         lattscale = (-lattscale/Det[lattvec])^(1/3)];&#xD;
        lattvec = &#xD;
         If[TrueQ[Length[lattscale] == 3], &#xD;
          N[lattscale[[#]]*lattvec[[#]]] &amp;amp; /@ Range[3], &#xD;
          N[lattscale*lattvec]];&#xD;
        conf = &#xD;
         Flatten[Join[&#xD;
           ConstantArray[#, data[[chemoffset + 6, #]]] &amp;amp; /@ &#xD;
            Range[Length[data[[chemoffset + 6]]]]]];&#xD;
        coord = &#xD;
         N[data[[chemoffset + chgoffset + &#xD;
              9 ;; (chemoffset + chgoffset + 8 + &#xD;
               Total[data[[chemoffset + 6]]]), 1 ;; 3]]];&#xD;
        &#xD;
        (*reprojection for cartesian coordinates: *)&#xD;
        If[TrueQ[Length[data[[chemoffset + chgoffset + 8]]] &amp;gt; 0] &amp;amp;&amp;amp; &#xD;
          StringMatchQ[ToString[data[[chemoffset + chgoffset + 8, 1]]], &#xD;
           &amp;#034;c*&amp;#034; | &amp;#034;k*&amp;#034;, IgnoreCase -&amp;gt; True],&#xD;
         If[TrueQ[Length[lattscale] == 3], coord = #*lattscale &amp;amp; /@ coord,&#xD;
           coord = coord*lattscale];&#xD;
         coord = coord.Inverse[lattvec]];&#xD;
        {coordP, confP} = {coord, conf};&#xD;
        &#xD;
        (*retraction, moving all atoms back into the cell: *)&#xD;
        If[retractq, With[{retracttol = 10^-4},&#xD;
          coordP = &#xD;
           Partition[&#xD;
            If[# &amp;gt; (1 - retracttol), # - 1, #] &amp;amp; /@ &#xD;
             Flatten[# - Floor[#] &amp;amp; /@ coordP], 3];&#xD;
          new = DeleteDuplicates[Transpose[{coordP, confP}],&#xD;
            (Norm[&#xD;
                 Round[#1[[1]], retracttol] - Round[#2[[1]], retracttol] -&#xD;
                   Floor[Round[#1[[1]], retracttol]] + &#xD;
                  Floor[Round[#2[[1]], retracttol]]] &amp;lt; &#xD;
                retracttol) &amp;amp;&amp;amp; (#1[[2]] == #2[[2]]) &amp;amp;];&#xD;
          {coordP, confP} = Transpose[new]]];&#xD;
        &#xD;
        (*periodic repetition: *)&#xD;
        coordP = &#xD;
         Flatten[Table[(# + {a, b, c}) &amp;amp; /@ coordP, {a, 0, &#xD;
            sysdim[[1]] - 1}, {b, 0, sysdim[[2]] - 1}, {c, 0, &#xD;
            sysdim[[3]] - 1}], 3];&#xD;
        confP = Flatten[ConstantArray[confP, Times @@ sysdim]];&#xD;
        &#xD;
        (*add peridic duplicates if desired: *)&#xD;
        If[TrueQ[addq],&#xD;
         new = Transpose[{coordP, confP}];&#xD;
         new = &#xD;
          Join[new, # + {{sysdim[[1]], 0, 0}, 0} &amp;amp; /@ &#xD;
            Select[new, &#xD;
             Abs[#[[1, 1]]] &amp;lt; 0.01 &amp;amp;], # + {{-sysdim[[1]], 0, 0}, 0} &amp;amp; /@ &#xD;
            Select[new, Abs[#[[1, 1]]] &amp;gt; 0.99*sysdim[[1]] &amp;amp;]];&#xD;
         new = &#xD;
          Join[new, # + {{0, sysdim[[2]], 0}, 0} &amp;amp; /@ &#xD;
            Select[new, &#xD;
             Abs[#[[1, 2]]] &amp;lt; 0.01 &amp;amp;], # + {{0, -sysdim[[2]], 0}, 0} &amp;amp; /@ &#xD;
            Select[new, Abs[#[[1, 2]]] &amp;gt; 0.99*sysdim[[2]] &amp;amp;]];&#xD;
         new = &#xD;
          Join[new, # + {{0, 0, sysdim[[3]]}, 0} &amp;amp; /@ &#xD;
            Select[new, &#xD;
             Abs[#[[1, 3]]] &amp;lt; 0.01 &amp;amp;], # + {{0, 0, -sysdim[[3]]}, 0} &amp;amp; /@ &#xD;
            Select[new, Abs[#[[1, 3]]] &amp;gt; 0.99*sysdim[[3]] &amp;amp;]];&#xD;
         {coordP, confP} = Transpose[new];&#xD;
         ];&#xD;
        &#xD;
        (*cell lines: *)&#xD;
        tubearrow[{tail_, head_}] := &#xD;
         With[{scale = .5*Sqrt[Mean[Norm /@ lattvec]*linerad]},&#xD;
          Tube[{tail, head - 4*scale*Normalize[head - tail], &#xD;
            head - 4*scale*Normalize[head - tail], head}, {linerad, &#xD;
            linerad, scale, 0}]];&#xD;
        lines = {linecol, Tube[#.lattvec, linerad] &amp;amp; /@ {&#xD;
            {{0, 0, #}, {1, 0, #}, {1, 1, #}, {0, 1, #}, {0, &#xD;
                0, #}} &amp;amp; /@ {0, 1},&#xD;
            {{0, 0, #} &amp;amp; /@ {0, 1}, {1, 0, #} &amp;amp; /@ {0, &#xD;
               1}, {1, 1, #} &amp;amp; /@ {0, 1}, {0, 1, #} &amp;amp; /@ {0, 1}}&#xD;
            }, tubearrow[{{0, 0, 0}, #}] &amp;amp; /@ lattvec};&#xD;
        &#xD;
        (*atoms: *)&#xD;
        atoms = &#xD;
         Tooltip[{atomcol[confP[[#]]], &#xD;
             Sphere[coordP[[#]].lattvec, atomrad]}, #] &amp;amp; /@ &#xD;
          Range[Length[confP]];&#xD;
        &#xD;
        (*bonds: *)&#xD;
        tuples = &#xD;
         Select[Subsets[Range[Length[confP]], {2}], &#xD;
          Norm[(coordP[[#]].lattvec)[[1]] - (coordP[[#]].lattvec)[[2]]] &amp;lt; &#xD;
            bonddist &amp;amp;];&#xD;
        bonds = If[TrueQ[tuples == {}], {},&#xD;
          If[monobond,&#xD;
             {bondcol, Tube[coordP[[#]].lattvec, bondrad]},&#xD;
             Table[{atomcol[confP[[#[[ii]]]]], &#xD;
               Tube[{coordP[[#[[ii]]]].lattvec, &#xD;
                 Total[coordP[[#]].lattvec]*.5}, bondrad]}, {ii, 1, 2}]&#xD;
             ] &amp;amp; /@ tuples];&#xD;
        &#xD;
        (*return the plot: *)&#xD;
        Graphics3D[{lines, bonds, atoms}, ImageSize -&amp;gt; Large, &#xD;
         BaseStyle -&amp;gt; {Specularity[Gray, 100]}, Boxed -&amp;gt; False, &#xD;
         SphericalRegion -&amp;gt; True, Lighting -&amp;gt; &amp;#034;Neutral&amp;#034;]&#xD;
        ]&#xD;
       &amp;amp;, &amp;#034;PNG&amp;#034;, &#xD;
      AppearanceRules -&amp;gt; &amp;lt;|&#xD;
        &amp;#034;Title&amp;#034; -&amp;gt; &amp;#034;Crystal Structure Viewer for VASP&amp;#034;|&amp;gt;], &#xD;
     Permissions -&amp;gt; &amp;#034;Public&amp;#034;]&#xD;
&#xD;
&#xD;
 [at0]: http://community.wolfram.com/web/chrishaydock137&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com/groups/-/m/t/787142&#xD;
  [2]: http://vasp.at/&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=sdf4562y4thrwbdfva.gif&amp;amp;userId=11733</description>
    <dc:creator>Bianca Eifert</dc:creator>
    <dc:date>2016-03-23T08:59:33Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2062346">
    <title>[WSS20] Neural Networks for Software-Interface Molecular Vibration Data</title>
    <link>https://community.wolfram.com/groups/-/m/t/2062346</link>
    <description>![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Sathvik.gif&amp;amp;userId=2024676&#xD;
  [2]: https://www.wolframcloud.com/obj/588b63ed-2065-42f6-8250-16f837ea767b</description>
    <dc:creator>Sathvik Ajay Iyengar</dc:creator>
    <dc:date>2020-08-20T15:37:32Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2388782">
    <title>Multivalued inverse design: multiple surface geometries from one flat sheet</title>
    <link>https://community.wolfram.com/groups/-/m/t/2388782</link>
    <description>*SUPPLEMENTARY WOLFRAM MATERIALS for the ARTICLE:*&#xD;
&amp;gt; Itay Griniasty, Cyrus Mostajeran, and Itai Cohen, (2021).&#xD;
&#xD;
&amp;gt; Multivalued Inverse Design: Multiple Surface Geometries from One Flat Sheet.&#xD;
&#xD;
&amp;gt; PHYSICAL REVIEW LETTERS **127**, 128001.&#xD;
&#xD;
&amp;gt; https://doi.org/10.1103/PhysRevLett.127.128001&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Surfaces_hero3.jpg&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/fa2fd8f8-dcce-4d74-9edd-25d208d78813</description>
    <dc:creator>Itay Griniasty</dc:creator>
    <dc:date>2021-10-19T19:36:14Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1374495">
    <title>[WSS18] Optimal Packing of Bidisperse Circles</title>
    <link>https://community.wolfram.com/groups/-/m/t/1374495</link>
    <description>My WSS project is to study packing of Bidisperse circles, i.e., circles of 2 different radii. To do so, I implemented the [Lubachevsky-Stillinger algorithm][1] with an Event Driven approach, based on the algorithmic details [here][2] and [here][3], and the C++ implementation [here][4].&#xD;
&#xD;
As for a heuristic algorithmic description, check out this gif:&#xD;
&#xD;
![Cool Packing Gif][5]&#xD;
&#xD;
The disks are randomly initialized, and grow with time while colliding and bouncing around. Collisions are processed, new events are computed, and the simulation progresses until jamming (or a event error is flagged and the simulation aborts).&#xD;
&#xD;
As for the implementation, I segmented it into 9 sections: Constraints, Initialization, Cell Method, Augmented MinHeap, Collisions, Transfers, Procedure, Visualization and Analysis. Each section has its own functions and description (43 functions total!), and I&amp;#039;ll try to explain some of them here (I won&amp;#039;t comment on Constraints because they are quite straightforward, nor the MinHeap, because it will get its own [post][6]).&#xD;
&#xD;
##Initialization&#xD;
Here is where the initial radii, positions and velocities are defined. The initial positions need to satisfy the constraint functions, and to place another circle entails not overlapping any of the previously input circles, nor the square boundary. The function to do so is createDisk, below. It randomly tries circle coordinates, given a partial list of coordinates (circles) and a full list of radii (radii) which define the constraints.&#xD;
&#xD;
    createDisk[circles_List,radii_List, size_]:=Module[&#xD;
    {cnumber=circles//Length, position, riffled, count=0, insert=False, rc, r},&#xD;
    &#xD;
    (*splice radii list, select next radius, riffle coordinates and radii for constraint functions*)&#xD;
    rc=radii[[;;cnumber]]; r=radii[[cnumber+1]]; riffled=Riffle[circles,rc]//Partition[#, 2]&amp;amp;;&#xD;
    &#xD;
    (*testing loop*)&#xD;
    While[&#xD;
    (*stop when inserted or overcount*)&#xD;
    And[count&amp;lt;200, !insert ],&#xD;
&#xD;
        (*randomly try next coordinate*)&#xD;
    	position=RandomReal[{0, size}, 2];&#xD;
    &#xD;
        (*if doesn&amp;#039;t overlap border or overlap anyother circle*)&#xD;
    	If[And[&#xD;
    	borderC[position,r],&#xD;
    	And@@(overlapC[{position, r}, #]&amp;amp;/@riffled)&#xD;
    	], insert=True];&#xD;
    count=count+1;&#xD;
    ];&#xD;
    If[count==200, Print[&amp;#034;fail&amp;#034;]];&#xD;
    &#xD;
    position&#xD;
    ]&#xD;
![createDisks][7]&#xD;
&#xD;
Nested application of createDisk.&#xD;
&#xD;
## Cell Method&#xD;
Eventually, we will need to calculate the next collision time for some particle *i* . The easiest way to do so would be to calculate the times for all particles and take the minimum, but that would be computationally expensive for many body systems. Instead, I implemented *the Cell Method*, essentially segmenting the space into a grid, and placing each particle into bins (stored with a Matrix/Association pair). Now, instead of iterating over all particles to find the minimum collision time, just look at the particles in the neighboring bins. The functions below are 2 of the most important for this method: nearestCells and updateCell.&#xD;
&#xD;
###nearestCells&#xD;
nearestCells takes a list of coordinates, number of rows and size and returns a matrix *(rows, rows)* of lists, where cellMatrix[[i, j]] stores the particle indices in that bin.&#xD;
&#xD;
    nearestCells[coordinates_, nrows_, size_]:= Module[ &#xD;
    {nf=Nearest[coordinates-&amp;gt;Range@Length@coordinates, DistanceFunction-&amp;gt;ChessboardDistance]},&#xD;
    nf[binCenters[nrows, size], {Infinity, size/(2 nrows)}]&#xD;
    ]&#xD;
&#xD;
Where binCenters[nrows, size] returns a list of grid center coordinates. The visual representation:&#xD;
![nearestCells in action][8]&#xD;
&#xD;
###updateCell&#xD;
As the disks move around, inevitably they will *transfer* between bins, and the correspondent *cellMatrix* (result of function above) and *cellA* (association mapping particle index to bin index pair) have to be updated. updateCell does exactly that:&#xD;
&#xD;
    updateCell[i_, newcell_] := Module[{currentk, currentj, oldk, oldj},&#xD;
      (*initialize variables*)&#xD;
      {currentk, currentj} = newcell;&#xD;
      {oldk, oldj} = cellA[i];&#xD;
      (*delete and reinsert element from cellMat*)&#xD;
      cellMatrix[[oldk, oldj]] = Select[cellMatrix[[oldk, oldj]], # != i &amp;amp;]&#xD;
      AppendTo[cellMatrix[[currentk, currentj]], i];&#xD;
      (*reset element in association*)&#xD;
      cellA[i] = {currentk, currentj};&#xD;
      ]&#xD;
&#xD;
##Collisions&#xD;
Here is where I implemented all collision-related functions: calculateCollision, predictCollision, findNextCollision, collisionCheck and processCollision. The first 3 are related to calculating the next collision for particle *i*, the 4^th enforces the collision is valid and symmetric (if *i* collides with *j*, *j* has to collide with *i*)  and the last processes a collision *event*, through conservation of momentum. Here, *events* are parametrized by triples: *{te, i, p}*: *te* is the time of the event, *i* is the particle index, and *p_Integer* the event partner: if 0 &amp;lt; p &amp;lt; N+1, the event is a collision with particle *p*. Take a look at the 2 most important of them:&#xD;
&#xD;
### calculateCollision&#xD;
This function calculates the collision time, if it exists (else, infinity). Additionally, this function aborts the program if there is considerable overlap between particles, and prints an error statement.&#xD;
&#xD;
    calculateCollision[i_, j_]:= Module[&#xD;
    {nRi, nRj, d, \[Sigma], \[CapitalDelta]R, \[CapitalDelta]V, A, B, C, t},&#xD;
    (*sets positions and radii to current time*)&#xD;
    nRi=positions[[i]]+(gtime-lastupdates[[i]])velocities[[i]];&#xD;
    nRj=positions[[j]]+(gtime-lastupdates[[j]])velocities[[j]];&#xD;
    \[Sigma]=(radii[[i]]+radii[[j]])^2;&#xD;
    &#xD;
    (*define helper variables*)&#xD;
    \[CapitalDelta]R=nRi-nRj;&#xD;
    \[CapitalDelta]V=velocities[[i]]-velocities[[j]];&#xD;
    A=\[CapitalDelta]V.\[CapitalDelta]V-rate^2 \[Sigma];&#xD;
    B=\[CapitalDelta]V.\[CapitalDelta]R-rate(1+rate gtime)\[Sigma];&#xD;
    C=\[CapitalDelta]R.\[CapitalDelta]R-\[Sigma] (1+rate gtime)^2;&#xD;
    d=B^2-A C;&#xD;
    &#xD;
    (*debugging tests*)&#xD;
    If[C&amp;lt;-10^(-2)(radii[[i]]+radii[[j]])(1+gtime rate), Print[&amp;#034;After &amp;#034;, totalevents, &amp;#034; events, overlap.&amp;#034;]; Abort[]];&#xD;
    &#xD;
    (*calculate time*)&#xD;
    Which[&#xD;
    	C &amp;lt;-10^(-4)(radii[[i]]+radii[[j]])(1+gtime rate) &amp;amp;&amp;amp; B &amp;lt; 0, Print[&amp;#034;spheres are already overlapping &amp;#034;, C]; Infinity,&#xD;
    	&#xD;
    	 d &amp;lt;= 0, Infinity,  &#xD;
    		&#xD;
    	True, -(B+Sqrt[d])/(A)&#xD;
    	]&#xD;
    ]&#xD;
&#xD;
###collisionCheck&#xD;
collisionCheck enforces collisions are symmetric, as well as updating *p*&amp;#039;s event partner&amp;#039;s events if necessary (see Procedure section for further details):&#xD;
&#xD;
    collisionCheck[collision_] := Module[&#xD;
      {tc, i, j, symcol, k, n = nextevents // Length, ek},&#xD;
      {tc, i, j} = collision;&#xD;
      symcol = {tc, j, i};&#xD;
      k = nextevents[[j]][[3]];&#xD;
      (*j cannot have event before colliding with i*)&#xD;
      If[tc &amp;gt; nextevents[[j]][[1]], Print[&amp;#034;big mistake&amp;#034;]; Abort[]];&#xD;
      &#xD;
      (*if j&amp;#039;s next event was collision, give k a check*)&#xD;
      If[(k &amp;lt;= n) &amp;amp;&amp;amp; (k != i) &amp;amp;&amp;amp; (k &amp;gt;= 1), &#xD;
       ek = nextevents[[k]];&#xD;
       nextevents[[k]] = {ek[[1]], k, Infinity};];&#xD;
      &#xD;
      (*set symmetric collision as j&amp;#039;s next event*)&#xD;
      nextevents[[j]] = symcol;&#xD;
      (*update Heap*)&#xD;
      decreaseKey[j, tc];&#xD;
      ]&#xD;
&#xD;
Ignore the heap stuff for now, I&amp;#039;ll explain in a bit.&#xD;
&#xD;
## Transfers&#xD;
This section is related specifically to *transfers*: events corresponding to movement between cell walls. Each transfer event can be parametrized using the same triples, now, with *N &amp;lt; p &amp;lt; N+5*, where *p-N* indicates the specific cell wall: 1 for the right wall, 2 for the left, 3 for the top, 4 for the bottom. There are 2 functions in this section: findNextTransfer and processTransfer. The second is quite straightforward, and is basically a set of Which cases and updateCell calls. findNextTransfer, however, is just slightly more elaborated.&#xD;
&#xD;
###findNextTransfer&#xD;
This function is also a set of Which cases, for each direction (1,2, 3 or 4), now considering radii growth if colliding with a hard boundary. See below:&#xD;
&#xD;
    findNextTransfer[i_]:= Module[&#xD;
    {r, rx, ry, vx, vy, wallindex, binindex, bincenter, step=size/nrows, times=Table[Infinity, {4}]},&#xD;
    &#xD;
    (*set positions, set velocities, set radius*)&#xD;
    r = radii[[i]];&#xD;
    {rx, ry} = positions[[i]] + velocities[[i]](gtime-lastupdates[[i]]);&#xD;
    {vx, vy} = velocities[[i]];&#xD;
    &#xD;
    (*obtain bin position*)&#xD;
    binindex = cellA[i];&#xD;
    bincenter = step(binindex - {1,1}/2);&#xD;
    &#xD;
    (*consider x axis*)&#xD;
    Which[&#xD;
    	vx&amp;gt;0 &amp;amp;&amp;amp; binindex[[1]]!=nrows, &#xD;
    		times[[1]]=(bincenter[[1]]+step/2-rx)/vx;, &#xD;
    	vx &amp;gt;0 &amp;amp;&amp;amp; binindex[[1]] == nrows,&#xD;
    		times[[1]]=(bincenter[[1]]+step/2-rx-r(1 + gtime rate))/(vx+rate radii[[i]]);,&#xD;
    	vx&amp;lt;0 &amp;amp;&amp;amp; binindex[[1]]!=1,&#xD;
    		times[[2]]=(bincenter[[1]]-step/2-rx)/vx;,&#xD;
    	vx &amp;lt;0 &amp;amp;&amp;amp; binindex[[1]]==1, &#xD;
    		times[[2]]=(bincenter[[1]]-step/2-rx+r(1+gtime rate))/(vx-rate radii[[i]]);&#xD;
    ];&#xD;
    &#xD;
    (*consider y axis*)&#xD;
    Which[&#xD;
    	vy&amp;gt;0 &amp;amp;&amp;amp; binindex[[2]]!=nrows, &#xD;
    		times[[3]]=(bincenter[[2]]+step/2-ry)/vy;, &#xD;
    	vy&amp;gt;0 &amp;amp;&amp;amp; binindex[[2]] == nrows,&#xD;
    		times[[3]]=(bincenter[[2]]+step/2-ry-r(1+gtime rate))/(vy+rate radii[[i]]);, &#xD;
    	vy&amp;lt;0 &amp;amp;&amp;amp; binindex[[2]]!=1, &#xD;
    		times[[4]]=(bincenter[[2]]-step/2-ry)/vy;,&#xD;
    	vy&amp;lt;0 &amp;amp;&amp;amp; binindex[[2]]==1,&#xD;
    		times[[4]]=(bincenter[[2]]-step/2-ry+r(1+gtime rate))/(vy-rate radii[[i]]);&#xD;
    ];&#xD;
    wallindex = Ordering[times][[1]];&#xD;
    &#xD;
    (*debugging statement*)&#xD;
    If[!(And@@Positive@times), Print[&amp;#034;negative time&amp;#034;, times, binindex]; Print@borderC[{rx, ry}, r(1+gtime rate)]; Abort[]];&#xD;
    &#xD;
    (*return event*)&#xD;
    {Min[times]+gtime, i, n+ wallindex}&#xD;
    ]&#xD;
&#xD;
##Procedure&#xD;
This section is where the previous sections come together. This section includes findNextEvent, ProcessEvent, and synchronize, as well as Process, which puts everything together. The first calls findNextTransfer and findNextCollision, and returns the event of lowest start time (with some complications). The second extracts the next event from the *heap*, processes the event, and calls findNextEvent on the particle in question and reinserts the new event into the *heap*.&#xD;
&#xD;
Here, it is worth commenting on how the events are stored overall: a *augmented min-heap* stores tuples *{te, i}*, indicating the time *te* of particle *i*&amp;#039;s next event. A list *nextevents* stores these events, where *nextevents[[i]]* is a event triple . This allows events to be inserted and the minimum time event obtained in a relatively fast time (O(*log n*) complexity for those operations, as well as lookup in O(1) with a association on top).&#xD;
&#xD;
Now, let us take a look at these functions:&#xD;
&#xD;
###findNextEvent&#xD;
In addition to the explanation above, findNextEvent has to account for and return an extra possibilities: In case particle *i* has outgrown it&amp;#039;s own bin size, or will do so before the next collision or transfer, a *p=-Infinity* flag is set as the event partner to be processed later.&#xD;
&#xD;
    findNextEvent[i_] := Module[&#xD;
    {outgrowtime, step = size/(nrows), t, c, event,r},&#xD;
    &#xD;
    r= radii[[i]];&#xD;
    &#xD;
    outgrowtime = gtime+(step/2 - r(1+gtime rate))/(rate r);&#xD;
    If[outgrowtime &amp;lt; 0, outgrowtime = 0];&#xD;
    &#xD;
    (*obtain transfer and collision events*)&#xD;
    t = findNextTransfer[i];&#xD;
    c = findNextCollision[i];&#xD;
    &#xD;
    Which[&#xD;
    &#xD;
    	(*outgrow event*)&#xD;
    	(outgrowtime &amp;lt; c[[1]]) &amp;amp;&amp;amp; (outgrowtime &amp;lt; t[[1]]) &amp;amp;&amp;amp; (nrows &amp;gt; 1),&#xD;
    		event = {outgrowtime, i, -Infinity};,&#xD;
    &#xD;
    	(*next event is collision*)&#xD;
    	(c[[1]] &amp;lt; t[[1]]),&#xD;
    		collisionCheck[c];&#xD;
    		event = c;,&#xD;
    &#xD;
    	(*next event is transfer*)&#xD;
    	(t[[1]] &amp;lt;= c[[1]]),&#xD;
    		event = t;&#xD;
    ];&#xD;
    &#xD;
    event&#xD;
    ]&#xD;
&#xD;
###processEvent&#xD;
This function processes exactly 1 event, outputting it from the heap and accessing it using nextevents. Then, the event is processed, and the next event for that particle is calculated, and inserted into the heap. Counters are set to sample data as the simulation progresses. If the event is a *check* (parametrized by *p=Infinity*), there is nothing to process and just obtain the next event. Moreover, if the event is an outgrowth (p=-Infinity), rescale the system, update the Cells (ChangeBins) and recommence the simulation.&#xD;
&#xD;
    processEvent := Module[ {te, i, j, nextevent, cevent},&#xD;
    &#xD;
    (*increment counter, store data*)&#xD;
    nevents++;&#xD;
    If[Divisible[nevents, Ceiling[steps/20]], dataStore[]];&#xD;
    &#xD;
    (*extract event from heap, initialize event variables*)&#xD;
    {te, i} = obtainMin[heap];&#xD;
    j = nextevents[[i]][[3]];&#xD;
    cevent = nextevents[[i]];&#xD;
    &#xD;
    (*Divide into event cases*)&#xD;
    Which[&#xD;
    	(*event is a collision*)&#xD;
    	(j &amp;gt;= 1) &amp;amp;&amp;amp; (j &amp;lt;= n),&#xD;
    &#xD;
    		(*process collision*)&#xD;
    		ncollisions = ncollisions + 1;&#xD;
    		processCollision[{te, i, j}];&#xD;
    		&#xD;
    		(*make sure event was symmetric and check j*)&#xD;
    		If[ (nextevents[[j]][[3]] != i) || (nextevents[[j]][[1]] != gtime),&#xD;
    			Print[&amp;#034;Events not symmetric&amp;#034;, cevent, nextevents, gtime];&#xD;
    			Abort[],&#xD;
    			nextevents[[j]][[3]] = Infinity;&#xD;
    		];&#xD;
    		&#xD;
    		(*set next event*)&#xD;
    		nextevent = findNextEvent[i];&#xD;
    		nextevents[[i]] = nextevent;&#xD;
    		increaseKey[i, nextevent[[1]]];&#xD;
    	&#xD;
    		If[te &amp;gt;= nextevent[[1]], Print[&amp;#034;collision event time error&amp;#034;]];&#xD;
    	,&#xD;
    		&#xD;
    	(*event is a transfer*)&#xD;
    	(j &amp;gt; n) &amp;amp;&amp;amp; (j &amp;lt; n + 5),&#xD;
    	&#xD;
    		(*process transfer*)&#xD;
    		ntrans = ntrans + 1;&#xD;
    		processTransfer[{te, i, j}];&#xD;
    		&#xD;
    		(*set next event*)&#xD;
    		nextevent = findNextEvent[i];&#xD;
    		nextevents[[i]] = nextevent;&#xD;
    		increaseKey[i, nextevent[[1]]];&#xD;
    	&#xD;
    		If[te &amp;gt;= nextevent[[1]], Print[&amp;#034;transfer event error&amp;#034;, cevent, nextevent]; Abort[]];&#xD;
    	,&#xD;
    	&#xD;
    	(*event is a check*)&#xD;
    	j == Infinity,&#xD;
    	&#xD;
    		(*process check*)&#xD;
    		nchecks = nchecks + 1;&#xD;
    	&#xD;
    		(*set next event*)&#xD;
    		nextevent = findNextEvent[i];&#xD;
    		nextevents[[i]] = nextevent;&#xD;
    		increaseKey[i, nextevent[[1]]];&#xD;
    		&#xD;
    		If[te &amp;gt; nextevent[[1]] &amp;amp;&amp;amp; nextevent[[3]]!= -Infinity, &#xD;
    		Print[&amp;#034;check event error&amp;#034;, cevent, nextevent];&#xD;
    		];&#xD;
    	,&#xD;
    	&#xD;
    	(*disk outgrew cell, decrease nrows*)	&#xD;
    	j == - Infinity,&#xD;
    	&#xD;
    		(*synchronize system*)&#xD;
    		gtime = te;&#xD;
    		synchronize[False];&#xD;
    		nrows = nrows - 1;&#xD;
    		&#xD;
    		(*need to resize system and update parameters*)  &#xD;
    		changeBins[nrows];&#xD;
    		setInitialEvents[n];&#xD;
    &#xD;
    		Process[steps];&#xD;
    	];&#xD;
    ];&#xD;
&#xD;
![step 1][9]&#xD;
![step2][10]&#xD;
&#xD;
Look at the bottom particle colliding with the wall!&#xD;
&#xD;
##Visualization&#xD;
Here, I built a visualization function to display circles of different radii using Riffle. A couple results have already been shown above.&#xD;
&#xD;
###displayParticles &#xD;
&#xD;
    displayParticles[positions_, radii_, size_]:= Module[&#xD;
    {rifflelist, border, borderg},&#xD;
    border = Line@{{0,0}, {0, size}, {size, size}, {size, 0}, {0 ,0}};&#xD;
    borderg =  Graphics[{Thick, Red, border}];&#xD;
    rifflelist = Riffle[positions, radii]//Partition[#, 2]&amp;amp;;&#xD;
    Show[Graphics[{Disk[#[[1]], #[[2]]]&amp;amp;/@rifflelist}], borderg]&#xD;
    ]&#xD;
&#xD;
##Analysis&#xD;
Finally, a couple functions to analyze the simulation results. &#xD;
&#xD;
###packingFraction&#xD;
    packingFraction := radii.radii Pi (1 + rate gtime)^2/size^2&#xD;
&#xD;
###dataStore&#xD;
Appends position and current radii, for visualization purposes, as well as the current packing fraction.&#xD;
&#xD;
    dataStore:=(&#xD;
    AppendTo[pf, packingFraction];&#xD;
    	nestpositions = AppendTo[nestpositions, positions];&#xD;
    	nestradii = AppendTo[nestradii, radii];&#xD;
    )&#xD;
![Packing Fraction as Events Progress][11]&#xD;
&#xD;
I attached my full implementation below, with a couple more simulations and plots, and additional documentation for the functions not explained above. There still are precision errors, and I still plan to add further analysis functions and simulations of different systems (different particle number, radii ratio and particle ratio). To optimize the pack, do play around a lot with the initialization constants (initial packing fraction, initial velocities and growth rate). If any optimizations are found, please send me them!&#xD;
&#xD;
&#xD;
  [1]: https://en.wikipedia.org/wiki/Lubachevsky%E2%80%93Stillinger_algorithm&#xD;
  [2]: https://arxiv.org/abs/cond-mat/0608362&#xD;
  [3]: https://arxiv.org/ftp/physics/papers/0405/0405089.pdf&#xD;
  [4]: https://cims.nyu.edu/~donev/Packing/C++/&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=coolgif.gif&amp;amp;userId=1363280&#xD;
  [6]: http://community.wolfram.com/groups/-/m/t/1380701?p_p_auth=szaxHa5m&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=unpacked.png&amp;amp;userId=1363280&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=nearestCells.png&amp;amp;userId=1363280&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=s1.png&amp;amp;userId=1363280&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=s2.png&amp;amp;userId=1363280&#xD;
  [11]: http://community.wolfram.com//c/portal/getImageAttachment?filename=pf1.png&amp;amp;userId=1363280</description>
    <dc:creator>Thiago Bergamaschi</dc:creator>
    <dc:date>2018-07-11T07:03:44Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1732535">
    <title>[WSC19] A Computational Method to Predict X Ray Diffraction (XRD) Patterns</title>
    <link>https://community.wolfram.com/groups/-/m/t/1732535</link>
    <description>![Predicted vs Experimental Silver XRD Pattern. Experimental plot obtained from: Koohpeima, Fatemeh &amp;amp; Mokhtari, Mohammad &amp;amp; Samaneh, KHALAFI. (2017). The effect of silver nanoparticles on composite shear bond strength to dentin with different adhesion protocols. Journal of Applied Oral Science. 25. 367-373. 10.1590/1678-7757-2016-0391. ][1]&#xD;
&#xD;
## A Computational Method to Predict X Ray Diffraction (XRD) Patterns ##&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
## Background ##&#xD;
&#xD;
Ever wondered how DNA&amp;#039;s double helix structure was discovered? How drugs are investigated? Well, welcome to the world of  X-ray diffraction! 13 Nobel prizes were awarded for developments involving this old but effective technique, in fields ranging from physics to medicine. But, how is it so effective?&#xD;
&#xD;
XRD is a powerful technique employed in various domains of science to determine the chemical makeup and thereby physical properties of various structures. Each lattice structure has its own &amp;#034;XRD fingerprint&amp;#034; which keys scientists in to its chemical makeup. This fingerprint is characterized by peaks with different intensities at different angles. Here is a sample for a face-centered cubic copper lattice structure:&#xD;
&#xD;
![Copper XRD pattern: From X-Ray Diffraction Studies of Copper Nanopowder (arXiv:1003.6068v1 [physics.gen-ph])][2]&#xD;
&#xD;
The first image in this post is a comparison of experimental and predicted results for a Silver crystal structure.&#xD;
&#xD;
However, predicting these fingerprints given little experimental data is a mathematically involved procedure. This summer, as part of the Wolfram High School Summer Camp, I implemented a framework for predicting these fingerprints for various cubic lattice structures.&#xD;
&#xD;
## Creating the Program ##&#xD;
&#xD;
----------&#xD;
## Getting the Bragg Peak Positions ##&#xD;
&#xD;
You might be wondering what the numbers on the top of the peaks mean. These numbers are Miller indices, which are descriptions of the planes in a unit cell that are producing the peaks. The first step is to use these planes to generate the Bragg peak positions:&#xD;
&#xD;
$$d=\frac{a}{\sqrt{h^2+k^2+l^2}}$$&#xD;
$$ \theta =2\arcsin{\left(\frac{\lambda}{2 d}\right)} $$&#xD;
&#xD;
Here, $a$ denotes the lattice constant (length of a side in a cubic unit cell), $(h,k,l)$ denote the Miller indices, and $\lambda$ denotes the wavelength of the X-ray used. This is based on Bragg&amp;#039;s law, see https://demonstrations.wolfram.com/BraggsLaw/ . &#xD;
&#xD;
However, certain $(h,k,l)$ are forbidden in some structures. For example, in a body-centered cubic structure, $ h+k+l$ has to be even. The function `PossiblePlanes` accounts for these and has access to an extensive dataset of compounds and their structures.&#xD;
&#xD;
To make coding easier, a list of associations was made with a certain $\theta$ being the key for a list of $hkl$ values. &#xD;
&#xD;
&#xD;
    grouped[elementlist_, n_] := &#xD;
     GroupBy[ PossiblePlanes[elementlist, n], &#xD;
      1/Sqrt[(#[[1]]^2 + #[[2]]^2 + #[[3]]^2)] &amp;amp;]&#xD;
    &#xD;
    association[elementlist_, n_, wavelength_] := &#xD;
     Sort[MapThread[#1 -&amp;gt; #2 &amp;amp;, {ToTheta[wavelength, elementlist, n], &#xD;
        grouped[elementlist, n] // Values}]]&#xD;
&#xD;
## Atomic Form Factor ##&#xD;
To account for different electron densities, atomic form factors were calculated using a dataset tabulated by the  International Tables for Crystallography: http://it.iucr.org/Cb/ch6o1v0001/.  These form factors vary by angle; shown below is copper:&#xD;
![Copper&amp;#039;s Atomic Form Factor][3]&#xD;
&#xD;
These atomic form factors are then used in the structure factor calculation, which is directly proportional to the square root of intensity. For unary systems, the structure factor calculation is relatively easy. For binary systems, however, the parity of the Miller indices must be taken into account.&#xD;
&#xD;
    evenodd[b_, elementlist_, theta_, w_] := &#xD;
     If[b, Total[atomdata[#, theta, w] &amp;amp; /@ elementlist], &#xD;
      Differences[atomdata[#, theta, w] &amp;amp; /@ elementlist] // First]&#xD;
&#xD;
Here, `atomdata` gives the atomic form factor at a specific point. This function is mapped to a set of True/False (Even or not) values and returns the structure factor. For a face-centered cubic cell, if the parity of $hkl$ is even, then the atomic form factors are summed, but if the parity is odd, the atomic form factors are subtracted.&#xD;
## Multiplicities ##&#xD;
Now, back to the Miller indices. Take a look at the following graphic:&#xD;
&#xD;
![Miller Indices Felix Kling.svg. (n.d.). Retrieved from WikiMedia ][4]&#xD;
&#xD;
You might notice that if we reflect $(100)$ we can get $(010)$ and $(001)$ . We can also get negative indices, usually denoted $\overline{1}$ instead of $-1$. This gives us 6 total planes that are symmetry-equivalent, and correspond to the same peak. Hence, we say that the class of Miller indices $(h00)$ has a multiplicity of 6. These multiplicities range from 6 to 48 for a cubic lattice structure, but can get as low as 2 with less symmetric structures. &#xD;
&#xD;
Therefore, instead of calculating the contributed intensity of each plane, we count them as one plane and multiply the resultant intensity by a specific multiplicity. This multiplicity is then used to calculate peak intensity.&#xD;
## Intensity Calculation ##&#xD;
$$I_{hkl}=\underbrace{\frac{1+\cos^2 (2\theta)}{\sin^2(\theta)}}_{\text{Lorentz Polarization Correction}} \times \ \ \ \ \   \text{Multiplicity}_{hkl}  \ \ \ \times \underbrace{F_{hkl}^2}_{\text{Structure Factor}}$$&#xD;
&#xD;
The Lorentz polarization correction was introduced to improve accuracy and match experimental conditions as X-rays will not be completely polarized at every angle.&#xD;
&#xD;
    intensity[w_, elementlist_, n_] := &#xD;
     Transpose@{(association[Flatten @ elementlist, n, w] // &#xD;
         Keys), (.5 (1 + (Cos[#])^2)/(Sin[#/2]^2 * &#xD;
               Cos[#/2])) &amp;amp; /@ (association[Flatten @ elementlist, n, w] //&#xD;
            Keys) *&#xD;
        (multiplicity /@ (Last /@ (association[Flatten @ elementlist, n, &#xD;
               w] // Values)))*(structurefactor[elementlist, &#xD;
           w, (association[Flatten @ elementlist, n, w])]) ^2 }&#xD;
&#xD;
`intensity` gives a list of Bragg peak positions and their respective intensities using the aforementioned formula. This intensity function is then inputed in a function which finally plots the diffraction pattern.&#xD;
&#xD;
    peak[{theta_, intensity_}] :=  &#xD;
     intensity * Exp[-10000 Pi (t - theta)^2]&#xD;
Where $t$ is the variable to be plotted against.&#xD;
Here is a comparison of the predicted XRD pattern vs the real diffracted pattern for a Copper FCC structure:&#xD;
&#xD;
![Experimental vs. Predicted XRD Pattern][5]&#xD;
&#xD;
The absolute intensities have little use, as relative intensities are primarily used to analyze these patterns. &#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
## Future Research ##&#xD;
&#xD;
For future research, I have many ideas I want to implement. Thanks to Mr. Wolfram, I certainly have a lot to do this summer! Perhaps the most ambitious of my future plans is doing the inverse problem: predicting the lattice structure from a given XRD pattern. &#xD;
## Acknowledgements ##&#xD;
I would like to thank my mentor, Eryn Gillam, for helping me throughout my project. I would also like to thank the other mentors for their help, and Mohammad Bahrami for his lectures. Wolfram Summer Camp truly gave me an outlet to express my creativity in novel ways, and the two weeks I spent here were invaluable. Wolfram Summer Camp gave me a novel perspective on how to approach all aspects of life, and key insight into how computational thinking can change the world. For these reasons and more, I am beyond grateful to have been a part of this camp, and am looking forward to apply my new skills.&#xD;
&#xD;
## Computational Essay ##&#xD;
https://github.com/hamza314/WSS-Template/blob/master/Final%20Project/Final%20Submission/Hamza%20Alsamraee%20WSC19.nb&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=main.PNG&amp;amp;userId=1725111&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=copperrealxrd.png&amp;amp;userId=1725111&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Capture.PNG&amp;amp;userId=1725111&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=360px-Miller_Indices_Felix_Kling.svg.png&amp;amp;userId=1725111&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=dual.PNG&amp;amp;userId=1725111</description>
    <dc:creator>Hamza Alsamraee</dc:creator>
    <dc:date>2019-07-12T00:56:45Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3100855">
    <title>[WWS24] Multipartite Entanglement Witness with Four-Point Fermion Correlations</title>
    <link>https://community.wolfram.com/groups/-/m/t/3100855</link>
    <description>![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=wolfram_figure.png&amp;amp;userId=3100811&#xD;
  [2]: https://www.wolframcloud.com/obj/ec852288-d455-42f0-ac09-391dc095583e</description>
    <dc:creator>Tongtong Liu</dc:creator>
    <dc:date>2024-01-11T21:17:32Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3032057">
    <title>Finding orientational defects from images of fingerprints and materials</title>
    <link>https://community.wolfram.com/groups/-/m/t/3032057</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/1cbfe446-ce8f-4a93-a44c-beda2ec948dc</description>
    <dc:creator>Ali Hashmi</dc:creator>
    <dc:date>2023-10-11T13:20:32Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3010647">
    <title>Impurity reveals distinct operational phases in quantum thermodynamic cycles</title>
    <link>https://community.wolfram.com/groups/-/m/t/3010647</link>
    <description>![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=leadimagecolin.png&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/42e5b52b-1e2d-4edb-abb6-989e9231e37d</description>
    <dc:creator>Colin Benjamin</dc:creator>
    <dc:date>2023-09-11T20:12:14Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2914905">
    <title>Correcting systematic errors by hybrid 2D correlation loss functions</title>
    <link>https://community.wolfram.com/groups/-/m/t/2914905</link>
    <description>![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=g004.PNG&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/1f924cf1-57ce-4187-ba95-6a3dd457e9e8</description>
    <dc:creator>Thomas Mayerhöfer</dc:creator>
    <dc:date>2023-05-04T18:48:02Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2825040">
    <title>MaXrd: X-ray diffraction package, and other Crystallography concepts</title>
    <link>https://community.wolfram.com/groups/-/m/t/2825040</link>
    <description>![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=MaXrd.png&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/7459de42-edc6-4afd-92d2-a18e70ed23cf</description>
    <dc:creator>Stian Ramsnes</dc:creator>
    <dc:date>2023-02-06T19:33:48Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2540813">
    <title>Topological quasiparticles of light: Optical skyrmions and beyond</title>
    <link>https://community.wolfram.com/groups/-/m/t/2540813</link>
    <description>![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2022-05-30at2.48.12PM.jpg&amp;amp;userId=11733&#xD;
  [2]: https://www.wolframcloud.com/obj/6275c52d-022d-4f21-9694-264d682a7957</description>
    <dc:creator>Yijie Shen</dc:creator>
    <dc:date>2022-05-30T17:58:12Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3638297">
    <title>[WELP25] Simulating plastic polymer degradation</title>
    <link>https://community.wolfram.com/groups/-/m/t/3638297</link>
    <description>![Simulating Plastic Polymer Degradation][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=7682image.png&amp;amp;userId=911151&#xD;
  [2]: https://www.wolframcloud.com/obj/cde0818d-a5d1-40b6-88d8-a26734298c8f</description>
    <dc:creator>Wolfram Education Programs</dc:creator>
    <dc:date>2026-02-11T16:24:46Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3528683">
    <title>Hyperbolic spin liquids</title>
    <link>https://community.wolfram.com/groups/-/m/t/3528683</link>
    <description>![Hyperbolic spin liquids][1]&#xD;
&#xD;
![Hyperbolic spin liquids][2]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][3]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=hyperbolic_spin_liquids-optimize.gif&amp;amp;userId=20103&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=2653Main11082025.png&amp;amp;userId=20103&#xD;
  [3]: https://www.wolframcloud.com/obj/2a837a74-c7fd-4d6f-9107-2bee6c0f5283</description>
    <dc:creator>Patrick M. Lenggenhager</dc:creator>
    <dc:date>2025-08-11T15:17:47Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3314703">
    <title>FEM modeling for plasticity in solid mechanics</title>
    <link>https://community.wolfram.com/groups/-/m/t/3314703</link>
    <description>![FEM modeling for plasticity in solid mechanics][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Main04112024.png&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/7948203d-4074-4a57-96ae-f348d59d71c3</description>
    <dc:creator>Alessandro Mastrofini</dc:creator>
    <dc:date>2024-11-04T21:03:36Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3210091">
    <title>[WSS24] Modeling of interactions in aqueous electrolyte with peptide additive</title>
    <link>https://community.wolfram.com/groups/-/m/t/3210091</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/158c2618-22ea-4c32-aada-f997d1d9cbdf</description>
    <dc:creator>Xuelian Liu</dc:creator>
    <dc:date>2024-07-10T02:19:19Z</dc:date>
  </item>
</rdf:RDF>

