<?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 any discussions tagged with Chemical Engineering sorted by active.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3647332" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3524866" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3445315" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3445135" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3345034" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3103297" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2904959" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2904950" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2904594" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2904572" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2904561" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2904551" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2904536" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2904467" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2904413" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2030260" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2405785" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2405710" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2369818" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1378744" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3647332">
    <title>Similarity Solution for Axisymmetric Flow in a Tube with an Accelerating Surface Velocity</title>
    <link>https://community.wolfram.com/groups/-/m/t/3647332</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/99571eb2-076b-4c46-b02a-35f7bf96c8b1</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2026-02-28T21:02:03Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3524866">
    <title>Thermal runaway in validation of industrial manufacturing with System Modeler and Wolfram Language</title>
    <link>https://community.wolfram.com/groups/-/m/t/3524866</link>
    <description>![Thermal runaway in validation of industrial manufacturing with System Modeler and Wolfram Language][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=thermal.png&amp;amp;userId=1618777&#xD;
  [2]: https://www.wolframcloud.com/obj/75063c23-f701-4697-9062-6e529766d792</description>
    <dc:creator>Sergio Vargas</dc:creator>
    <dc:date>2025-08-05T07:15:14Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3445315">
    <title>PI Controller Tuning : Contour plots of ISE, IAE and ITAE</title>
    <link>https://community.wolfram.com/groups/-/m/t/3445315</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/c4e6f46b-4ff2-43eb-af32-f17e8d2133d2</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2025-04-16T14:33:22Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3445135">
    <title>PI controller tuning : cost function given by Dr. Steve Brunton</title>
    <link>https://community.wolfram.com/groups/-/m/t/3445135</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/ef543934-0d38-429b-904c-e0db22fe8971</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2025-04-16T09:19:20Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3345034">
    <title>Nitrogen recoveries with different polymer membranes</title>
    <link>https://community.wolfram.com/groups/-/m/t/3345034</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/1e682589-cfa7-41db-bcba-3d4e6e3cbd2d</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2024-12-26T07:27:44Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3103297">
    <title>Simulation of the Separation of n-Heptane/Ethyl Benzene Mixture at 101.325 kPa</title>
    <link>https://community.wolfram.com/groups/-/m/t/3103297</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/1b94967d-26e5-4e19-b5a3-a4e816ac6d8b</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2024-01-16T13:48:53Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2904959">
    <title>Application of the Riccati Equation to Solve Adsorption Problems</title>
    <link>https://community.wolfram.com/groups/-/m/t/2904959</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/382d3008-5f34-4cd4-b3ae-01c2e45d9419</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2023-04-23T22:31:31Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2904950">
    <title>Application of the Riccati Equation to Solve Binary Distillation Problems</title>
    <link>https://community.wolfram.com/groups/-/m/t/2904950</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/f61d6e54-b547-479b-ac48-de9482cc4f22</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2023-04-23T22:25:28Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2904594">
    <title>Successive First-Order Reversible Reactions</title>
    <link>https://community.wolfram.com/groups/-/m/t/2904594</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/1b4a53d1-a869-48ff-b32a-a28c1079317f</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2023-04-23T19:42:53Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2904572">
    <title>Terminal Fall Velocity of a Single Spherical Particle in a Newtonian Fluid</title>
    <link>https://community.wolfram.com/groups/-/m/t/2904572</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/d325269f-6f59-4f86-b094-df966afda380</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2023-04-23T17:12:21Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2904561">
    <title>Liquid Liquid Equilibrium Using NDSolve</title>
    <link>https://community.wolfram.com/groups/-/m/t/2904561</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/80bcb33c-4de6-4847-9713-e04d57fc43dd</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2023-04-23T16:40:28Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2904551">
    <title>Finding kinetic rate law using experimental data of batch enzymatic reactor</title>
    <link>https://community.wolfram.com/groups/-/m/t/2904551</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/23eff803-c560-4ed0-b97a-af2bc9fc4da6</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2023-04-23T16:23:29Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2904536">
    <title>Chemical Equilibrium Calculations Applied to the Haber Process</title>
    <link>https://community.wolfram.com/groups/-/m/t/2904536</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/7b5fa2e1-5547-47e2-be55-138c2421f0a5</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2023-04-23T15:35:10Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2904467">
    <title>Countercurrent-Flow Model for Gas Separation by Membranes</title>
    <link>https://community.wolfram.com/groups/-/m/t/2904467</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/074f1769-fcee-4968-8d66-7dfc58b9e4d6</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2023-04-23T13:08:32Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2904413">
    <title>Complete Mixing Model for Gas Separation by Membranes</title>
    <link>https://community.wolfram.com/groups/-/m/t/2904413</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/d3784905-d9fb-41dc-96c5-772a7c71a41c</description>
    <dc:creator>Housam Binous</dc:creator>
    <dc:date>2023-04-23T12:04:50Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2030260">
    <title>[WSS20] ThermodynamicCycle: for parameters &amp;amp; properties at each state</title>
    <link>https://community.wolfram.com/groups/-/m/t/2030260</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=CapturadeTela2020-11-20a%CC%80s18.42.07.png&amp;amp;userId=2029333&#xD;
  [2]: https://www.wolframcloud.com/obj/64ef0cca-d762-4a13-81fa-609012f78f17</description>
    <dc:creator>Gino Andrade</dc:creator>
    <dc:date>2020-07-14T17:20:46Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2405785">
    <title>Using ExternalMedia and CoolProp in SystemModeler</title>
    <link>https://community.wolfram.com/groups/-/m/t/2405785</link>
    <description>Hi ExternalMedia and CoolProp is a Modelica third party library that can be compiled and used within Modelica 3.2.3&#xD;
&#xD;
Has anyone used this within Wolfram SystemModeler and is there instructions for installing the library.&#xD;
&#xD;
Is it just the case of compiling the library and then loading the package?&#xD;
&#xD;
Anyone with success and advice for this would be greatly appreciated.&#xD;
&#xD;
Thanks.</description>
    <dc:creator>Craig Branch</dc:creator>
    <dc:date>2021-11-13T11:11:08Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2405710">
    <title>Cellular Automata a human can understand</title>
    <link>https://community.wolfram.com/groups/-/m/t/2405710</link>
    <description>![Typical Case][1]&#xD;
&#xD;
Of course I had to lead with an image.&#xD;
&#xD;
This is a subset of cellular automata, with extra rules. The rules are procedural, and scalable.&#xD;
&#xD;
I get into more detail in the attached notebooks, but the gist of it is the rules are designed to produce universes which are comprehensible to a human, have (some) conservation of energy, have an energy input, and have a way to corral that energy in one spot.&#xD;
&#xD;
In the image, the gray boxes on the ground are just that - non-interacting ground. The colored boxes are cells with mass energy (I&amp;#039;ve been calling them hadrons), and the pips are light energy. The star moves across the screen, leaving more hadrons in its wake, which then interact. There&amp;#039;s a gravity bias, such that it costs light energy to move mass upwards. There&amp;#039;s a cap on the amount of energy any cell can have, and cells with more get trimmed back to the cap, which allows for defining the amount of colors.&#xD;
&#xD;
It&amp;#039;s inefficient to generate rule numbers for this, which I&amp;#039;ve gotten around by using a random seed value for the uncalculated parts of the rule. This guarantees sharing a universe with the same seed will result in the same rule number.&#xD;
&#xD;
The code is mostly written for displaying 2D cellular automata with small caps of energy, with these specific special star and ground cells. However, a lot of it should be easily modifiable to work for 3D or above, or with other concepts for special cells.&#xD;
&#xD;
As far as applications - maybe this is a ways out, but I&amp;#039;d like to see if we can study how life could develop in another universe. I&amp;#039;d be happy with finding stable complicated configurations analogous to biochemicals in the meantime. Hence me flagging this post for chemistry &amp;amp; bio sciences - this is your wheelhouse.&#xD;
&#xD;
How to use the notebooks:&#xD;
&#xD;
There are two notebooks attached: an &amp;#034;Instructional&amp;#034; notebook with copious notes, and an &amp;#034;Operational&amp;#034; notebook with far fewer notes.&#xD;
&#xD;
There is also a &amp;#034;Bad Rule Digits.txt&amp;#034; file which stores data for a workaround regarding errors in the CellularAutomata function that may or may not be specific to my machine. You can place the .badlist file in your Documents folder, under a folder (which the code may create automatically) called &amp;#034;Star and Ground CA&amp;#034;.&#xD;
&#xD;
The notebooks will also store screenshots of every step in this folder, along with it being the save location for the universe information, currently known rule number, and instance information.&#xD;
&#xD;
I&amp;#039;ve done about as much checking as sanity permits that everything works, but if you find errors or have questions, please let me know.&#xD;
&#xD;
&#xD;
PS: I was unable to attach a .badlist file until I changed the extension to .txt. It&amp;#039;s not critical to have this file, but change the extension back to .badlist to get the notebook to read it. Thanks!&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=FirstUniverse211112140824.png&amp;amp;userId=2392475</description>
    <dc:creator>Cameron Kosina</dc:creator>
    <dc:date>2021-11-12T23:27:05Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2369818">
    <title>Improving the response of a chemical mixing tank using state feedback</title>
    <link>https://community.wolfram.com/groups/-/m/t/2369818</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/5e6a950d-67eb-4dde-98b7-db38b97d647d</description>
    <dc:creator>Maher Kuzbari</dc:creator>
    <dc:date>2021-09-20T09:29:40Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1378744">
    <title>[WSS18] Modeling Protein Structure of Viral Capsids</title>
    <link>https://community.wolfram.com/groups/-/m/t/1378744</link>
    <description>![enter image description here][8]&#xD;
&#xD;
According to the World Health Organization(WHO), more than a quarter billion people today are living with Hepatitis B virus (HBV) and about 890,000 die every year as a result. As such, viruses are responsible for a variety of illnesses, ranging from common cold to some type of cancer and more serious conditions such as AIDS. Although the symptoms of infections might be different, the methods of infection are quite similar. The virus enters the cell, typically through the interaction with a receptor on the cell surface; it must then disassemble its capsid to release the genetic material. The viral genome is then replicated and the proteins are synthesized; new viruses can then assemble, and exit the cell either through the membrane or when the cell dies. &#xD;
&#xD;
With the capsid, the viral protein shell, viruses conceal their genetic material and can slip inside the host&amp;#039;s body (like a Trojan horse!). The goal of my project was to create an applicable structural model of the proteins that compose the capsid to better understand the viral life cycle and infection mechanism.&#xD;
&#xD;
First, import data from protein database(PDB):&#xD;
&#xD;
    data =Import[URLDownload[&amp;#034;https://files.rcsb.org/download/3J3I.pdb1.gz&amp;#034;],&amp;#034;String&amp;#034;];&#xD;
Since the data arrangement is irregular, replace negative signs(-) with spaces to better align and separate columns:&#xD;
&#xD;
    spaced  = StringReplace[data,&amp;#034;-&amp;#034;-&amp;gt; &amp;#034; -&amp;#034;]&#xD;
&#xD;
Read data starting from row 180 where atomic information starts:&#xD;
&#xD;
    Do[Read[str,&amp;#034;String&amp;#034;],181];&#xD;
    Read[str,&amp;#034;String&amp;#034;]&#xD;
&#xD;
Split the list when consecutive first letter appears to separate between subunits:&#xD;
&#xD;
    splitted = Split[fullrecord,First[#1]===First[#2]&amp;amp;];&#xD;
Remove unnecessary rows(only take ATOM data):&#xD;
&#xD;
    removed = DeleteCases[splitted,x_/;First[First[x]]== &amp;#034;TER&amp;#034;];&#xD;
    removed = DeleteCases[removed,x_/;First[First[x]]== &amp;#034;HETATM&amp;#034;];&#xD;
    removed = DeleteCases[removed,x_/;First[First[x]]== &amp;#034;MODEL&amp;#034;];&#xD;
    removed = DeleteCases[removed,x_/;First[First[x]]== &amp;#034;ENDMDL&amp;#034;];&#xD;
    removed = DeleteCases[removed,x_/;First[First[x]]== &amp;#034;MASTER&amp;#034;];&#xD;
    removed = DeleteCases[removed,x_/;First[First[x]]== &amp;#034;END&amp;#034;];&#xD;
Now check dimensions of the data, the dimension should equal 60 times the T number of the virus structure that is used. For example, 3J3I virus that is used in this code as an example is T = 3, therefore the dimensions should equal 180. This is because of the 60 fold symmetry of icosahedral viruses.&#xD;
&#xD;
    Dimensions[removed]&#xD;
&#xD;
Now with the data polished, we need to extract specific coordinates and chain types:&#xD;
&#xD;
    xcoor =  ToExpression[removed[[All,All, 7]]]&#xD;
    ycoor =  ToExpression[removed[[All,All, 8]]]&#xD;
    zcoor =  ToExpression[removed[[All,All, 9]]] &#xD;
    atom =   removed[[All,All, -1]];&#xD;
&#xD;
To calculate center of mass, we need to replace chain types with corresponding atomic mass:&#xD;
&#xD;
    atomicmasses = &#xD;
     Association@&#xD;
      Thread[{&amp;#034;N&amp;#034;, &amp;#034;C&amp;#034;, &amp;#034;O&amp;#034;, &amp;#034;S&amp;#034;} -&amp;gt; &#xD;
        Through@{Entity[&amp;#034;Element&amp;#034;, &amp;#034;Nitrogen&amp;#034;], &#xD;
           Entity[&amp;#034;Element&amp;#034;, &amp;#034;Carbon&amp;#034;], Entity[&amp;#034;Element&amp;#034;, &amp;#034;Oxygen&amp;#034;], &#xD;
           Entity[&amp;#034;Element&amp;#034;, &amp;#034;Sulfur&amp;#034;]}[&#xD;
          EntityProperty[&amp;#034;Element&amp;#034;, &amp;#034;AtomicMass&amp;#034;]]]&#xD;
&#xD;
Now we can calculate center of mass:&#xD;
&#xD;
    CoM[mass_, pos_] := mass.pos/Total[mass]&#xD;
&#xD;
Put all x, y, z center of mass coordinates together for convenience:&#xD;
&#xD;
    totcentercoor[xset_,yset_,zset_] :=List[xset, yset, zset]&#xD;
    centercoor = MapThread[totcentercoor, {xset, yset, zset}];&#xD;
&#xD;
    totcoor[x_,y_,z_] :=List[x, y, z]&#xD;
    allcoor = MapThread[totcoor, {x, y, z}];&#xD;
With all coordinate and chain type data, create a 3D point cloud with all protein units. For better analysis, chain types are matched with different colors.&#xD;
&#xD;
    colorlist = ToExpression[flatchain/.{&amp;#034;A&amp;#034;-&amp;gt; &amp;#034;Blue&amp;#034;, &amp;#034;B&amp;#034; -&amp;gt; &amp;#034;Pink&amp;#034;, &amp;#034;C&amp;#034; -&amp;gt; &amp;#034;Green&amp;#034;, &amp;#034;D&amp;#034; -&amp;gt; &amp;#034;Red&amp;#034;}];&#xD;
    Graphics3D[{Point[allcoor,VertexColors-&amp;gt;colorlist]}, Lighting-&amp;gt;Automatic, Boxed-&amp;gt;False]&#xD;
And we get a cool image of the entire capsid structure! (This proves my point that all good science is art - look how beautiful the capsid structure is!)&#xD;
&#xD;
![point cloud][1]&#xD;
&#xD;
Let&amp;#039;s also generate a point cloud with center of mass and see how it looks:&#xD;
&#xD;
    Graphics3D[{PointSize[0.02],Point[centercoor,VertexColors-&amp;gt;colorlist2]}]&#xD;
    &#xD;
![center of mass][2]&#xD;
&#xD;
We now see how the center of mass is distributed and look at each subunits. Just to make sure we&amp;#039;re doing everything right, create a surface mesh to see the general structure:&#xD;
&#xD;
    ListSurfacePlot3D[centercoor, BoxRatios-&amp;gt;{1, 1, 1}]&#xD;
![mesh][3]&#xD;
&#xD;
Now comes the fun part, we can start tiling on the structure! To create an edge-to-edge tiling on a spherical surface, we are going to use Penrose tiling, an example of non-periodic tiling generated by an aperiodic set of prototiles. Because Penrose tiling is non-periodic, there is no translational symmetry. However it is self similar, which means the same patterns occur at larger and larger scales. Thus, the tiling can be obtained through &amp;#034;inflation&amp;#034; (or &amp;#034;deflation&amp;#034;) and every finite patch from the tiling occurs infinitely many times. Such tiling method perfectly matches our purpose of modeling viral capsids because Penrose tiling can be constructed to exhibit both reflection symmetry and fivefold rotational symmetry. &#xD;
 &#xD;
We start with creating a Delaunay mesh on the structure with all center of mass points as vertices of triangles. Delaunay triangulations maximize the minimum angle of all the angles of the triangles in the triangulation, thus avoiding silver triangles, triangles with one or two extremely acute angles. Thankfully, Mathematica has a built-in function for creating Delaunay mesh making our job a lot easier.&#xD;
&#xD;
    cm =RegionBoundary@DelaunayMesh@centercoor&#xD;
![enter image description here][4]&#xD;
&#xD;
However, the mesh only creates sets of triangles. To get a uniform tiling, we need to figure out which triangles are most likely to form a subunit with another. Another problem arises with this method because not all triangles are on the same plane, making it harder to classify the triangles. To solve this problem, we are going to use some linear algebra and calculate the normal vectors of each triangles. All triangles with relatively similar normal vectors will be classified together and grouped on the same plane. &#xD;
    normal[Polygon[{p1_,p2_,p3_}]]:=Normalize@Cross[p1-p2,p1-p3]&#xD;
&#xD;
    delaunaymesh = DelaunayMesh@centercoor;&#xD;
    trianglecomponents = MeshPrimitives[RegionBoundary@delaunaymesh,2];&#xD;
&#xD;
    normals=normal/@trianglecomponents;&#xD;
&#xD;
    rounded = Round[normals,0.1];&#xD;
    tally = Tally[rounded];&#xD;
    &#xD;
    pent = GatherBy[tally,Last][[2]];&#xD;
    quad =  GatherBy[tally,Last][[3]];&#xD;
    tri =  GatherBy[tally,Last][[1]];&#xD;
&#xD;
    pentcoor = First /@ pent;&#xD;
    quadcoor = First /@ quad;&#xD;
    tricoor = First /@ tri;&#xD;
    &#xD;
    value1 = Flatten /@ Map[Position[ rounded, #]&amp;amp;, pentcoor];&#xD;
    value2 = Flatten /@ Map[Position[ rounded, #]&amp;amp;, quadcoor];&#xD;
    value3 = Flatten /@ Map[Position[ rounded, #]&amp;amp;, tricoor];&#xD;
&#xD;
    coors1 = Map[Part[trianglecomponents,#] &amp;amp;, value1];&#xD;
    coors2 = Map[Part[trianglecomponents,#] &amp;amp;, value2];&#xD;
    coors3 = Map[Part[trianglecomponents,#] &amp;amp;, value3];&#xD;
&#xD;
    flat = Flatten[Map[ReplaceAll[Polygon-&amp;gt;List][#] &amp;amp;, coors3],2];&#xD;
    subset = Map[Subsets[#, {2}]&amp;amp;,flat];&#xD;
&#xD;
Since we want to look at the three-fold symmetry of the capsid structure, we are going to extract equilateral triangles(each side represents a rotational axis- therefore an equilateral triangle will be the center of three-fold rotational axis).&#xD;
&#xD;
    distance = Round[Apply[EuclideanDistance, subset, {2}],0.1];&#xD;
    equilateral[{x_,y_,z_}]:=(If[x==y==z,Return[1]])&#xD;
&#xD;
    positions = Flatten[ Position[equilateral /@ distance,1],1];&#xD;
&#xD;
    center = Map[Part[coors3,#] &amp;amp;, positions];&#xD;
&#xD;
Although we grouped the triangles together, graphing them again requires a bit more work since the order of coordinates matter a lot when graphing the polygons. To do this, we will calculate the shortest tour around all vertices and re-orient them in order.&#xD;
 &#xD;
    extracted[{Polygon[{r1_, r2_, r3_}], Polygon[{t1_, t2_, t3_}], &#xD;
       Polygon[{y1_, y2_, y3_}]}] := &#xD;
     List[{r1, r2, r3, t1, t2, t3, y1, y2, y3}]&#xD;
    pentcoorext = DeleteDuplicates /@ Flatten[extracted /@ coors1, 1];&#xD;
    path1 = Last /@ FindShortestTour /@ pentcoorext;&#xD;
    pentfinal =  Map[Take[#, 5] &amp;amp;, MapThread[Part, {pentcoorext, path1}]];&#xD;
&#xD;
    extracted2[{Polygon[{r1_, r2_, r3_}], Polygon[{t1_, t2_, t3_}]}] := &#xD;
     List[{r1, r2, r3, t1, t2, t3}]&#xD;
    quadextract = DeleteDuplicates /@ Flatten[extracted2 /@ coors2, 1];&#xD;
    path2 = Last /@ FindShortestTour /@ quadextract;&#xD;
    quadfinal =  Map[Take[#, 4] &amp;amp;, MapThread[Part, {quadextract, path2}]];&#xD;
&#xD;
    extracted3[{Polygon[{r1_, r2_, r3_}]}] := List[{r1, r2, r3}]&#xD;
    triextract = DeleteDuplicates /@ Flatten[extracted3 /@ coors3, 1];&#xD;
    path3 = Last /@ FindShortestTour /@ triextract;&#xD;
    trifinal =  Map[Take[#, 3] &amp;amp;, MapThread[Part, {triextract, path3}]];&#xD;
&#xD;
Now we can create a 3D Penrose tiling on a spherical surface(icosahedral to be specific, but it can be inflated to a sphere)! This is the complete model of simplified subunit structure of the capsid.&#xD;
&#xD;
    graphed = &#xD;
     Graphics3D[{White, Point[Mean /@ pentcoorext], Blue, EdgeForm[], &#xD;
       coors1, Pink, EdgeForm[], coors2, Yellow, &#xD;
       EdgeForm[{Thick, Black}], coors3, Green, EdgeForm[], center}, &#xD;
      Lighting -&amp;gt; Automatic, Boxed -&amp;gt; False]&#xD;
![enter image description here][5]&#xD;
&#xD;
But we are not done here yet. To better analyze the structural symmetry, we want to look at the repeated pattern (there would be 20 occurrences of the unit pattern since icosahedral viruses exhibit the identities of icosahedral group) on a flat surface(2D). To do this, we need to flatten all tiles relative to a specific center. We orthogonalize the tiles and find orthogonal vectors relative to the central equilateral triangle we previously extracted.&#xD;
&#xD;
    projector[projectingPoint_] := Module[{a, b, c, d, nv, k},&#xD;
        {a, b, c} = Flatten[center[[9]] /. Polygon -&amp;gt; List, 2];&#xD;
        nv = Cross[b - a, c - a];&#xD;
        d = -nv.a;&#xD;
        k = (-d - nv.projectingPoint)/Norm[nv]^2;&#xD;
        projectingPoint + k*nv&#xD;
        ] &amp;amp;;&#xD;
With the vectors calculated, we get a flattened structure of the unit pattern, all aligned on one plane:&#xD;
&#xD;
    object = &#xD;
         Graphics3D[{&#xD;
           Polygon /@ Map[projector, Part[pentfinal, {1, 2, 3}], {2}],&#xD;
           center[[9]],&#xD;
           Polygon /@ Map[projector, Part[quadfinal, {1, 2, 8}], {2}],&#xD;
           Polygon /@ &#xD;
            Map[projector, Part[trifinal, {12, 4, 3, 45, 64, 69}], {2}],&#xD;
            Boxed -&amp;gt; False&#xD;
           }]&#xD;
&#xD;
    Planarize[x_, {u_, v_, w_}] := &#xD;
     x.Inverse[Orthogonalize[{v - u, w - u, Cross[v - u, w - u]}]]&#xD;
&#xD;
    pentproj = Map[projector, Part[pentfinal, {1, 2, 3}], {2}];&#xD;
    triproj = center[[9, 1, 1]];&#xD;
    quadproj = Map[projector, Part[quadfinal, {1, 2, 8}], {2}];&#xD;
    backproj = &#xD;
      Map[projector, Part[trifinal, {12, 4, 3, 45, 64, 69}], {2}];&#xD;
&#xD;
    pentextcoors = Map[Planarize[#, center[[9, 1, 1]]] &amp;amp;, pentproj ];&#xD;
    triextcoors = Map[Planarize[#, center[[9, 1, 1]]] &amp;amp;, triproj ];&#xD;
    quadextcoors = Map[Planarize[#, center[[9, 1, 1]]] &amp;amp;, quadproj ];&#xD;
    backextcoors = Map[Planarize[#, center[[9, 1, 1]]] &amp;amp;, backproj ];&#xD;
We now see a flattened structure of the unit pattern, with each subunit classified:&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
One last step to go, we just need to drop the z axis since all coordinates are aligned to put the structure onto a 2D surface.&#xD;
&#xD;
    map[x_] := Map[Drop[#, -1] &amp;amp;, x]&#xD;
    &#xD;
    pentflat = Polygon /@ map /@ pentextcoors;&#xD;
    triflat = Polygon@Map[Drop[#, -1] &amp;amp;, triextcoors];&#xD;
    quadflat = Polygon /@ map /@ quadextcoors;&#xD;
    backflat = Polygon /@ map /@ backextcoors;&#xD;
&#xD;
    Graphics[{Tooltip[ {EdgeForm[{Thick, Black}], Blue, pentflat}, &#xD;
    ImageResize[Import[pentimg], {150}]], &#xD;
    Tooltip[{EdgeForm[{Thick, Black}], Green, triflat}, &amp;#034;ChainB&amp;#034;], &#xD;
    Tooltip[ {EdgeForm[{Thick, Black}], Pink, quadflat}, &amp;#034;ChainB&amp;#034;], &#xD;
    Tooltip[ {EdgeForm[{Thick, Black}], Yellow, backflat}, &amp;#034;ChainA&amp;#034;]}]&#xD;
We can now clearly see the unit pattern on a 2D space! Since the pentagons always are on the vertices of the bigger triangle that contain the unit pattern, our structure exhibits all 2,3,5-fold symmetry. &#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
As such, we have analyzed the structural pattern of subunits of viral capsids. The closeness of the obtained idealized tilings to the structures of considered capsids shows that the proposed approach is general for many structures of small and medium-sized viruses. Such tilings provides a general idea about quasi-equivalence of proteins, thus simplify the internal structure of protein molecules and viral genome. Our model provides a better insight into the protein structures of viral capsid, enabling a further research on virus models that do not comply to the conventional Caspar-and-Klug model. &#xD;
&#xD;
Below is the model applied to five different types of icosahedral viruses - 3J3I(T=1), 2VF1(T=2), 1JS9(T=3), 2XFC(T=4), 3J4U(T=7):&#xD;
&#xD;
(Although I did not find the unit patterns for T=4 and T=7 structures, the structural pattern is obvious in the 3D models.&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
Based on the developed models, I would like to continue researching on viral capsid models, especially on how the stability and structures of different subunits impact the assembly and disassembly pathway. I plan to carry out my analysis on a broader dataset and collect a more generalized modeling algorithm.&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
Author Information:&#xD;
&#xD;
Jihyeon Je(Western Reserve Academy)&#xD;
&#xD;
jej19@wra.net&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=11.png&amp;amp;userId=1352003&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=bb.png&amp;amp;userId=1352003&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=cc.png&amp;amp;userId=1352003&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=dd.png&amp;amp;userId=1352003&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=eee.png&amp;amp;userId=1352003&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ff.png&amp;amp;userId=1352003&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=w.png&amp;amp;userId=1352003&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=y.png&amp;amp;userId=1352003</description>
    <dc:creator>Jihyeon Je</dc:creator>
    <dc:date>2018-07-11T17:06:39Z</dc:date>
  </item>
</rdf:RDF>

