<?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 Physics sorted by most viewed.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1034626" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/418720" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2411604" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/235291" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/787142" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/294122" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1433064" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3118205" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/131302" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/181641" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/203498" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3178293" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/863933" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/498246" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/790989" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/118650" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/463721" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2448552" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/852052" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/515162" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1034626">
    <title>[GIF] Elaborating on Arrival&amp;#039;s Alien Language, Part I., II. &amp;amp; III.</title>
    <link>https://community.wolfram.com/groups/-/m/t/1034626</link>
    <description>I recently watched &amp;#034;Arrival&amp;#034;, and thought that some of the dialogue sounded Wolfram-esque. Later, I saw the following blog post:&#xD;
&#xD;
[Quick, How Might the Alien Spacecraft Work?][1] &#xD;
&#xD;
Along with many others, I enjoyed the movie. The underlying artistic concept for the alien language reminded me of decade old memories, a book by Stephen Addiss, [Art of Zen][2]. Asian-influenced symbolism is an interesting place to start building a sci-fi concept, even for western audiences.  &#xD;
&#xD;
I also found Cristopher Wolfram&amp;#039;s broadcast and the associated files: &#xD;
&#xD;
[Youtube Broadcast][3]&#xD;
&#xD;
[Github Files ( with image files ) ][4]&#xD;
&#xD;
Thanks for sharing! More science fiction, yes! &#xD;
&#xD;
I think the constraint of circular logograms could be loosened. This leads to interesting connections with theory of functions, which I think the Aliens would probably know about. &#xD;
&#xD;
The following code takes an alien logogram as input and outputs a deformation according to do-it-yourself formulation of the Pendulum Elliptic Functions:&#xD;
&#xD;
![Human Animation][5]&#xD;
&#xD;
## $m=2$ Inversion Coefficients ##&#xD;
&#xD;
    MultiFactorial[n_, nDim_] := Times[n, If[n - nDim &amp;gt; 1, MultiFactorial[n - nDim, nDim], 1]]&#xD;
    GeneralT[n_, m_] :=  Table[(-m)^(-j) MultiFactorial[i + m (j - 1) + 1, m]/ MultiFactorial[i + 1, m], {i, 1, n}, {j, 1, i}]&#xD;
    a[n_] := With[{gt = GeneralT[2 n, 2]}, gt[[2 #, Range[#]]] &amp;amp; /@ Range[n] ]&#xD;
&#xD;
## Pendulum Values : $2(1-\cos(x))$ Expansion Coefficients ##&#xD;
&#xD;
    c[n_ /; OddQ[n]] := c[n] = 0;&#xD;
    c[n_ /; EvenQ[n]] := c[n] = 2 (n!) (-2)^(n/2)/(n + 2)!;&#xD;
&#xD;
## Partial Bell Polynomials ##&#xD;
Note: These polynomials are essentially the same as the &amp;#034;**BellY**&amp;#034; ( hilarious naming convention), but recursion optimized. See timing tests below. &#xD;
&#xD;
    B2[0, 0] = 1;&#xD;
    B2[n_ /; n &amp;gt; 0, 0] := 0;&#xD;
    B2[0, k_ /; k &amp;gt; 0] := 0;&#xD;
    B2[n_ /; n &amp;gt; 0, k_ /; k &amp;gt; 0] := B2[n, k] = Total[&#xD;
        Binomial[n - 1, # - 1] c[#] B2[n - #, k - 1] &amp;amp; /@ &#xD;
         Range[1, n - k + 1] ];&#xD;
&#xD;
## Function Construction ##&#xD;
&#xD;
    BasisT[n_] :=  Table[B2[i, j]/(i!) Q^(i + 2 j), {i, 2, 2 n, 2}, {j, 1, i/2}]&#xD;
    PhaseSpaceExpansion[n_] :=   Times[Sqrt[2 \[Alpha]], 1 + Dot[MapThread[Dot, {BasisT[n], a[n]}], (2 \[Alpha])^Range[n]]];&#xD;
    AbsoluteTiming[CES50 = PhaseSpaceExpansion[50];] (* faster than 2(s) *)&#xD;
    Fast50 = Compile[{{\[Alpha], _Real}, {Q, _Real}}, Evaluate@CES50];&#xD;
&#xD;
## Image Processing ##&#xD;
note: This method is a hack from &amp;#034;.jpg&amp;#034; to sort-of vector drawing. I haven&amp;#039;t tested V11.1 vectorization functionality, but it seems like this could be a means to process all jpg&amp;#039;s and output a file of vector polygons. Anyone ?&#xD;
&#xD;
    LogogramData = Import[&amp;#034;Human1.jpg&amp;#034;];&#xD;
    Logogram01 = ImageData[ColorNegate@Binarize[LogogramData, .9]];&#xD;
    ArrayPlot@Logogram01;&#xD;
    &#xD;
    Positions1 = &#xD;
      Position[Logogram01[[5 Range[3300/5], 5 Range[3300/5]]], 1];&#xD;
    Graphics[{Disk[#, 1.5] &amp;amp; /@ Positions1, Red, &#xD;
       Disk[{3300/5/2, 3300/5/2}, 10]}];&#xD;
    onePosCentered = &#xD;
      N[With[{cent = {3300/5/2, 3300/5/2} }, # - cent &amp;amp; /@ Positions1]];&#xD;
    radii = Norm /@ onePosCentered;&#xD;
    maxR = Max@radii;&#xD;
    normRadii = radii/maxR;&#xD;
    angles = ArcTan[#[[2]], #[[1]]] &amp;amp; /@ onePosCentered;&#xD;
    Qs = Cos /@ angles;&#xD;
## Constructing and Printing Image Frames ##&#xD;
&#xD;
    AlienWavefunction[R_, pixel_, normRad_, Qs_, angles_] := Module[{&#xD;
       deformedRadii = MapThread[Fast50, {R normRad, Qs}],&#xD;
       deformedVectors = Map[N[{Cos[#], Sin[#]}] &amp;amp;, angles],&#xD;
       deformedCoords&#xD;
       },&#xD;
      deformedCoords = &#xD;
       MapThread[Times, {deformedRadii, deformedVectors}];&#xD;
      Show[ PolarPlot[ Evaluate[&#xD;
         CES50 /. {Q -&amp;gt; Cos[\[Phi]], \[Alpha] -&amp;gt; #/10} &amp;amp; /@ &#xD;
          Range[9]], {\[Phi], 0, 2 Pi}, Axes -&amp;gt; False, &#xD;
        PlotStyle -&amp;gt; Gray],&#xD;
       Graphics[Disk[#, pixel] &amp;amp; /@ deformedCoords], ImageSize -&amp;gt; 500]]&#xD;
    &#xD;
    AbsoluteTiming[  OneFrame = &#xD;
       AlienWavefunction[1, (1 + 1)* 1.5/maxR, normRadii, Qs, angles]&#xD;
     ](* about 2.5 (s)*)&#xD;
&#xD;
![Alien Pendulum][6]&#xD;
&#xD;
## Validation and Timing ##&#xD;
In this code, we&amp;#039;re using the magic algorithm to get up to about $100$ orders of magnitude in the half energy, $50$ in the energy. I did prove $m=1$ is equivalent to other published forms, but haven&amp;#039;t found anything in the literature about $m=2$, and think that the proving will take more time, effort, and insight (?). For applications, we just race ahead without worrying too much, but do check with standard, known expansions: &#xD;
&#xD;
    EK50 = Normal@ Series[D[ Expand[CES50^2/2] /.  Q^n_ :&amp;gt; (1/2)^n Binomial[n, n/2], \[Alpha]], {\[Alpha], 0, 50}];&#xD;
    SameQ[Normal@  Series[(2/Pi) EllipticK[\[Alpha]], {\[Alpha], 0, 50}], EK50]&#xD;
    Plot[{(2/Pi) EllipticK[\[Alpha]], EK50}, {\[Alpha], .9, 1}, ImageSize -&amp;gt; 500]&#xD;
    Out[]:= True&#xD;
&#xD;
![Approximation Validity][7]&#xD;
&#xD;
This plot gives an idea of approximation validity via the time integral over $2\pi$ radians in phase space. Essentially, even the time converges up to, say,  $\alpha = 0.92$. Most of the divergence is tied up in the critical point, which is difficult to notice in the phase space drawings above. &#xD;
&#xD;
Also compare the time of function evaluation:&#xD;
&#xD;
    tDIY = Mean[ AbsoluteTiming[Fast50[.9, RandomReal[{0, 1}]] ][[1]] &amp;amp; /@ Range[10000]];&#xD;
    tMma = Mean[AbsoluteTiming[JacobiSN[.9, RandomReal[{0, 1}]] ][[1]] &amp;amp; /@ Range[10000]];&#xD;
    tMma/tDIY&#xD;
&#xD;
In the region of sufficient convergence, Mathematica function **JacobiSN** is almost 20 times slower. The CES radius also requires a function call to **JacobiCN**, so an output-equivalent **AlienWavefunction** algorithm using built-in Mathematica functions would probably take at least 20 times as long to produce. When computing hundreds of images this is a noticeable slow down, something to avoid ! !  &#xD;
&#xD;
Also compare time to evaluate the functional basis via the Bell Polynomials:&#xD;
&#xD;
     BasisT2[n_] := Table[BellY[i, j, c /@ Range[2 n]]/(i!) Q^(i + 2 j), {i, 2, 2 n,  2}, {j, 1, i/2}];&#xD;
    SameQ[BasisT2[20], BasisT[20]]&#xD;
    t1 = AbsoluteTiming[BasisT[#];][[1]] &amp;amp; /@ Range[100];&#xD;
    t2 = AbsoluteTiming[BasisT2[#];][[1]] &amp;amp; /@ Range[25];&#xD;
    ListLinePlot[{t1, t2}, ImageSize -&amp;gt; 500]&#xD;
![Series Inverse][8]&#xD;
&#xD;
The graph shows quite clearly that careful evaluation via the recursion relations changes the complexity of the inversion algorithm to polynomial time, $(n^2)$, in one special example where the forward series expansions coefficients have known, numeric values. &#xD;
&#xD;
&#xD;
## Conclusion ##&#xD;
&#xD;
We show proof-of-concept that alien logograms admit deformations that preserve the cycle topology. Furthermore we provide an example calculation where the &amp;#034;human&amp;#034; logogram couples to a surface. Deformation corresponds to scale transformation of the logogram along the surface. Each deformation associates with an energy. &#xD;
&#xD;
Invoking the pendulum analogy gives the energy a physical meaning in terms of gravity, but we are not limited to classical examples alone. The idea extends to arbitrary surfaces in two, three or four dimensions, as long as the surfaces have local extrema. Around the extrema, there will exist cycle contours, which we can inscript with the Alien logograms. This procedure leads readily to large form compositions, especially if the surface has many extrema. Beyond Fourier methods, we might also apply spherical harmonics, and hyperspherical harmonics to get around the limitation of planarity. &#xD;
&#xD;
The missing proof... Maybe later. LOL! ~ ~ ~ ~ Brad   &#xD;
&#xD;
And in the Fanfiction Voice: &#xD;
&#xD;
Physicist : &amp;#034;It should be no surprise that heptapod speech mechanism involves an arbitrary deformation of the spacetime manifold.&amp;#034;&#xD;
&#xD;
Linguist :  &amp;#034;Space-traveling aliens, yes, of course they know math and physics, but Buddhist symbology, where&amp;#039;d they learn that?&amp;#034;&#xD;
&#xD;
&#xD;
  [1]: http://blog.stephenwolfram.com/2016/11/quick-how-might-the-alien-spacecraft-work/&#xD;
  [2]: https://books.google.com/books/about/Art_of_Zen.html?id=4jGEQgAACAAJ&#xD;
  [3]: https://www.youtube.com/watch?v=8N6HT8hzUCA&amp;amp;t=4992s&#xD;
  [4]: https://github.com/WolframResearch/Arrival-Movie-Live-Coding&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Deformation.gif&amp;amp;userId=234448&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=AlienPendulum.png&amp;amp;userId=234448&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=EllipticK.png&amp;amp;userId=234448&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=BellPolynomial.png&amp;amp;userId=234448</description>
    <dc:creator>Brad Klee</dc:creator>
    <dc:date>2017-03-18T20:23:59Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/418720">
    <title>Calculus of the perfectly centered break of a perfectly aligned pool ball rack</title>
    <link>https://community.wolfram.com/groups/-/m/t/418720</link>
    <description>## This is it. The perfectly centered billiards break. Behold:&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
&amp;lt;h2&amp;gt;Setup&amp;lt;/h2&amp;gt;&#xD;
&#xD;
This break was computed in *Mathematica* using a numerical differential equations model.  Here are a few details of the model:&#xD;
&#xD;
* All balls are assumed to be perfectly [elastic][3] and almost perfectly rigid.&#xD;
* Each ball has a mass of 1 unit and a radius of 1 unit.&#xD;
* The cue ball has a initial speed of 10 units/sec.&#xD;
* The force between two balls is given by the formula $$F \;=\; \begin{cases}0 &amp;amp; \text{if }d \geq 2, \\ 10^{11}(2-d)^{3/2} &amp;amp; \text{if }d &amp;lt; 2, \end{cases}$$ where $d$ is the distance between the centers of the balls.  Note that the balls overlap if and only if $d &amp;lt; 2$.  The power of $3/2$ was [suggested by Yoav Kallus][4] on Math Overflow, because it follows [Hertz&amp;#039;s theory of non-adhesive elastic contact](https://en.wikipedia.org/wiki/Contact_mechanics#Hertzian_theory_of_non-adhesive_elastic_contact).&#xD;
&#xD;
The initial speed of the cue ball is immaterial -- slowing down the cue ball is the same as slowing down time. The force constant $10^{11}$ has no real effect as long as it&amp;#039;s large enough, although it does change the speed at which the initial collision takes place.&#xD;
&#xD;
&amp;lt;h2&amp;gt;The Collision&amp;lt;/h2&amp;gt;&#xD;
&#xD;
For this model, the entire collision takes place in the first 0.2 milliseconds, and none of the balls overlap by more than 0.025% of their radius during the collision.  (These figures are model dependent -- real billiard balls may collide faster or slower than this.)&#xD;
&#xD;
The following animation shows the forces between the balls during the collision, with the force proportional to the area of each yellow circle.  Note that the balls themselves hardly move at all *during* the collision, although they do accelerate quite a bit.&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
&amp;lt;h2&amp;gt;The Trajectories&amp;lt;/h2&amp;gt;&#xD;
&#xD;
The following picture shows the trajectories of the billiard balls after the collision.&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
After the collision, some of the balls are travelling considerably faster than others.  The following table shows the magnitude and direction of the velocity of each ball, where $0^\circ$ indicates straight up.&#xD;
&#xD;
&#xD;
$\begin{array}{|c|c|c|c|c|c|c|c|c|c|c|}&#xD;
\hline&#xD;
\text{ball} &amp;amp; \text{cue} &amp;amp; 1 &amp;amp; 2,3 &amp;amp; 4,6 &amp;amp; 5 &amp;amp; 7,10 &amp;amp; 8,9 &amp;amp; 11,15 &amp;amp; 12,14 &amp;amp; 13 \\&#xD;
\hline&#xD;
\text{angle} &amp;amp; 0^\circ &amp;amp; 0^\circ &amp;amp; 40.1^\circ &amp;amp; 43.9^\circ &amp;amp; 0^\circ &amp;amp; 82.1^\circ &amp;amp; 161.8^\circ &amp;amp; 150^\circ &amp;amp; 178.2^\circ &amp;amp; 180^\circ \\&#xD;
\hline&#xD;
\text{speed} &amp;amp; 1.79 &amp;amp; 1.20 &amp;amp; 1.57 &amp;amp; 1.42 &amp;amp; 0.12 &amp;amp; 1.31 &amp;amp; 0.25 &amp;amp; 5.60 &amp;amp; 2.57 &amp;amp; 2.63 \\&#xD;
\hline&#xD;
\end{array}&#xD;
$&#xD;
&#xD;
&#xD;
For comparison, remember that the initial speed of the cue ball was 10 units/sec.  Thus, balls 11 and 15 (the back corner balls) shoot out at more than half the speed of the original cue ball, whereas ball 5 slowly rolls upwards at less than 2% of the speed of the original cue ball.&#xD;
&#xD;
By the way, if you add up the sum of the squares of the speeds of the balls, you get 100, since kinetic energy is conserved.&#xD;
&#xD;
&#xD;
&amp;lt;h2&amp;gt;Linear and Quadratic Responses&amp;lt;/h2&amp;gt;&#xD;
&#xD;
The results of this model are dependent on the power of $3/2$ in the force law -- other force laws give other breaks.  For example, we could try making the force a linear function of the overlap distance (in analogy with springs and [Hooke&amp;#039;s law][7]), or we could try making the force proportional to the  *square* of the overlap distance.  The results are noticeably different&#xD;
&#xD;
![enter image description here][8] ![enter image description here][9]&#xD;
&#xD;
&#xD;
&amp;lt;h2&amp;gt;Stiff Response&amp;lt;/h2&amp;gt;&#xD;
&#xD;
Glenn the Udderboat points out that &amp;#034;stiff&amp;#034; balls might be best approximated by a force response involving a higher power of the distance (although this isn&amp;#039;t the [usual definition][10] of &amp;#034;stiffness&amp;#034;).  Unfortunately, the calculation time in *Mathematica* becomes longer when the power is increased, presumably because it needs to use a smaller time step to be sufficiently accurate.&#xD;
&#xD;
Here is a simulation involving a reasonably &amp;#034;stiff&amp;#034; force law&#xD;
$$F \;=\; \begin{cases}0 &amp;amp; \text{if }d \geq 2, \\ 10^{54}(2-d)^{10} &amp;amp; \text{if }d&amp;lt;2. \end{cases}$$&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
As you can see, the result is very similar to my first thought:&#xD;
&#xD;
&amp;gt; The two balls in the back corners shoot away along rays parallel to the two sides of the triangle.  Here is a picture showing the forces, with each force vector emanating from the point of contact.&#xD;
&#xD;
&amp;gt; ![enter image description here][12]&#xD;
&#xD;
This seems like good evidence that above 1st-thought behavior is indeed the limiting behavior in the case where the stiffness goes to infinity. As you might expect, most of the energy in this case is transferred very quickly at the beginning of the collision.  Almost all of the energy has moves to the back corner balls in the first 0.02 milliseconds.  Here is an animation of the forces:&#xD;
&#xD;
&#xD;
![enter image description here][13]&#xD;
&#xD;
After that, the corner balls and the cue ball shoot out, and the remaining balls continue to collide gently for the next millisecond or so.&#xD;
&#xD;
While the simplicity of this behavior is appealing, I would guess that &amp;#034;real&amp;#034; billard balls do not have such a stiff force response.  Of the models listed here, the intial Hertz-based model is probably the most accurate.  Qualitatively, it certainly seems the closest to an &amp;#034;actual&amp;#034; break.&#xD;
&#xD;
&amp;lt;h2&amp;gt; Full Code &amp;lt;/h2&amp;gt;&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][14]&#xD;
&#xD;
----------&#xD;
&#xD;
I wrote this post originally for [Math Stack Exchange][15].&#xD;
&#xD;
&#xD;
  [1]: http://math.bard.edu/belk/code.htm&#xD;
  [2]: http://i.stack.imgur.com/Y9ixR.gif&#xD;
  [3]: https://en.wikipedia.org/wiki/Elasticity_%28physics%29&#xD;
  [4]: http://mathoverflow.net/questions/156263/perfectly-centered-break-of-a-perfectly-aligned-pool-ball-rack/156407?noredirect=1#comment400402_156407&#xD;
  [5]: http://i.stack.imgur.com/WY37i.gif&#xD;
  [6]: http://i.stack.imgur.com/wHVJA.png&#xD;
  [7]: https://en.wikipedia.org/wiki/Hooke%27s_law&#xD;
  [8]: http://i.stack.imgur.com/a1l3b.gif&#xD;
  [9]: http://i.stack.imgur.com/xM76n.gif&#xD;
  [10]: https://en.wikipedia.org/wiki/Stiffness&#xD;
  [11]: http://i.stack.imgur.com/nMJyT.gif&#xD;
  [12]: http://i.stack.imgur.com/GKGT9.png&#xD;
  [13]: http://i.stack.imgur.com/VuUWT.gif&#xD;
  [14]: https://www.wolframcloud.com/obj/8c6b7e81-4a5c-4e3a-bb13-a3d47e728e64&#xD;
  [15]: http://math.stackexchange.com/a/659318/28293</description>
    <dc:creator>Jim Belk</dc:creator>
    <dc:date>2015-01-08T18:02:10Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2411604">
    <title>[WSG21] Daily Study Group: Differential Equations (begins November 29)</title>
    <link>https://community.wolfram.com/groups/-/m/t/2411604</link>
    <description>A new study group devoted to Differential Equations begins next Monday! A list of daily topics can be found on our [Daily Study Groups][1] page. This group will be led by one of our outstanding Wolfram certified instructors, Luke Titus, and will meet daily, Monday to Friday, over the next three weeks. Luke will share the excellent lesson videos created by him for the upcoming Wolfram U course &amp;#034;[Introduction to Differential Equations][2]&amp;#034;. Study group sessions include time for exercises, discussion and Q&amp;amp;A. This study group will help you achieve the &amp;#034;Course Completion&amp;#034; certificate for the &amp;#034;Introduction to Differential Equations&amp;#034; course after you complete the course quizzes.&#xD;
&#xD;
Sign up: [Study group registration page][3]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolfram.com/wolfram-u/special-event/study-groups/&#xD;
  [2]: https://www.wolfram.com/wolfram-u/introduction-to-differential-equations/&#xD;
  [3]: https://www.bigmarker.com/series/daily-study-group-intro-to-differential-equations/series_details?utm_bmcr_source=community</description>
    <dc:creator>Devendra Kapadia</dc:creator>
    <dc:date>2021-11-22T16:35:30Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/235291">
    <title>Random Snowflake Generator Based on Cellular Automaton</title>
    <link>https://community.wolfram.com/groups/-/m/t/235291</link>
    <description>[img]/c/portal/getImageAttachment?filename=fig0.gif&amp;amp;userId=93201[/img]&#xD;
&#xD;
Some time ago one of my friends asked me whether it is possible to design a cellular automaton which can generate realistic snowflakes. I recall my crystallography and thermodynamics knowledge and came up a very simple yet impressive model.&#xD;
&#xD;
&#xD;
[size=5][b]The Regular Triangular Lattice[/b][/size]&#xD;
&#xD;
First of all, we are trying to simulate snowflake, which is a kind of hexagonal crystal. So it should be best to construct our CA on a regular hexagonal grid, i.e. regular triangular lattice.&#xD;
&#xD;
We all know [b]CellularAutomaton[/b] inherently works on rectangle lattices (&amp;#034;4-lattice&amp;#034; for short), so how can we deduce a triangular lattice (&amp;#034;3-lattice&amp;#034; for short) on it? Well, the differences between rect-lattice and triangular one is just a geometric transformation.&#xD;
&#xD;
To demonstrate that, have a look at the following 4-lattice, with a blue square highlighting the range-1 [url=http://mathworld.wolfram.com/MooreNeighborhood.html]Moore neighborhood[/url]:&#xD;
&#xD;
[img=width: 388px; height: 396px;]/c/portal/getImageAttachment?filename=fig1.gif&amp;amp;userId=93201[/img]&#xD;
&#xD;
Clearly there is always a hexagon (the green area) in this kind of neighborhood.&#xD;
&#xD;
So forming a regular 3-lattice is as straightforward as doing a simple affine transformation (basically a shearing and a scaling):&#xD;
&#xD;
[img=width: 484px; height: 304px;]/c/portal/getImageAttachment?filename=fig2.gif&amp;amp;userId=93201[/img]&#xD;
&#xD;
So to take advantage of all the power of [b]CellularAutomaton[/b], all we have to do, is to use a following special 6-neighborhood stencil on rectangle lattices, meanwhile our model can be discussed and constructed on regular triangular lattice convieniently:&#xD;
&#xD;
[img=width: 118px; height: 57px;]/c/portal/getImageAttachment?filename=fig3.png&amp;amp;userId=93201[/img]&#xD;
&#xD;
And after the calculation, we can perform the affine transformation with following functions to get a nice hexagonal grid picture.&#xD;
&#xD;
[mcode]Clear[vertexFunc]&#xD;
&#xD;
vertexFunc = &#xD;
        Compile[{{para, _Real, 1}}, &#xD;
            Module[{center, ratio}, center = para[[1 ;; 2]];&#xD;
                ratio = para[[3]];&#xD;
                {Re[#], Im[#]} + {{1, -(1/2)}, {0, &#xD;
                                        Sqrt[3]/2}}.Reverse[{-1, 1} center + {3, 0}] &amp;amp; /@ (ratio 1/&#xD;
                                Sqrt[3] E^(I ?/6) E^(I Range[6] ?/3))], &#xD;
            RuntimeAttributes -&amp;gt; {Listable}, Parallelization -&amp;gt; True, &#xD;
            RuntimeOptions -&amp;gt; &amp;#034;Speed&amp;#034;&#xD;
            (*,CompilationTarget?&amp;#034;C&amp;#034;*)];&#xD;
&#xD;
Clear[displayfunc]&#xD;
displayfunc[array_, ratio_] := &#xD;
    Graphics[{FaceForm[{ColorData[&amp;#034;DeepSeaColors&amp;#034;][3]}], &#xD;
            EdgeForm[{ColorData[&amp;#034;DeepSeaColors&amp;#034;][4]}], &#xD;
            Polygon[vertexFunc[Append[#, ratio]] &amp;amp; /@ Position[array, 1]]}, &#xD;
        Background -&amp;gt; ColorData[&amp;#034;DeepSeaColors&amp;#034;][0]][/mcode]&#xD;
&#xD;
&#xD;
[size=5][b]The Model[/b][/size]&#xD;
&#xD;
To construct the crystallization model, let&amp;#039;s consider one of the 6-neighborhood stencil, where each cell represents a minimal crystal unit:&#xD;
&#xD;
[img=width: 261px; height: 236px;]/c/portal/getImageAttachment?filename=fig4.png&amp;amp;userId=93201[/img]&#xD;
&#xD;
A simple model will need only 2 states: [b]0[/b] for &amp;#034;[i]It&amp;#039;s empty[/i]&amp;#034;, [b]1[/b] for &amp;#034;[i]There is a crystal unit[/i]&amp;#034;. So by considering all (except the [b]000000[/b] one, because we are generating ONE snowflake thus don&amp;#039;t want a crystall randomly arises from void) [b]6-bit[/b] non-negative numbers, we can have a finite set of possible arrangements of the neighborhood:&#xD;
&#xD;
[mcode]stateSet = Tuples[{0, 1}, 6] // Rest[/mcode]&#xD;
However, from the viewpoint of physics, any two arrangements which can be transformed into each other with only rotation and reflection should be considered as the same arrangement in the sense of their physical effects on the central cell (i.e. cell[size=1]2,2[/size]) are the same:&#xD;
&#xD;
[img=width: 363px; height: 117px;]/c/portal/getImageAttachment?filename=fig5.png&amp;amp;userId=93201[/img]&#xD;
&#xD;
So we should gather [b]stateSet[/b] with above equivalence class:&#xD;
&#xD;
[mcode]gatherTestFunc = Function[lst, Union[Join[&#xD;
&#xD;
                    RotateLeft[lst, # - 1] &amp;amp; /@ Flatten[Position[lst, 1]],&#xD;
                    RotateLeft[Reverse[lst], # - 1] &amp;amp; /@ &#xD;
                        Flatten[Position[Reverse[lst], 1]]&#xD;
                    ]]];&#xD;
&#xD;
stateClsSet = Sort /@ Gather[stateSet, gatherTestFunc[#1] == gatherTestFunc[#2] &amp;amp;];&#xD;
&#xD;
stateClsSetHomogeneous = ArrayPad[#, {{0, 12 - Length@#}, {0, 0}}] &amp;amp; /@ stateClsSet;[/mcode]&#xD;
Which turned out to be [b]12[/b] classes in total:&#xD;
&#xD;
[img=width: 710px; height: 127px;]/c/portal/getImageAttachment?filename=fig6.png&amp;amp;userId=93201[/img]&#xD;
&#xD;
Now from the viewpoint of cellular automaton, we need to establish a set of rules on how should any 6-neighborhood arrangement, i.e. those 12 kinds of equivalence classes, determine the state of the central cell.&#xD;
&#xD;
There are 4 kinds of possible transformations on cell[size=1]2,2[/size]: [b]0 --&amp;gt; 1[/b] is called [b]frozen[/b], [b]0 --&amp;gt; 0[/b] is [b]remaining empty[/b], [b]1 --&amp;gt; 1[/b] is [b]remaining frozen[/b], and [b]1 --&amp;gt; 0[/b] is called [b]melten[/b]. To make things more interesting and to explore more possibilities, we can introduce probability here, so certain arrangement will give certain probabilities corresponding to the 4 kinds of transformations. But notice that because of the unitarity of probability, we have Prob(frozen) + Prob(0-&amp;gt;0) = 1 and Prob(melten) + Prob(1-&amp;gt;1) = 1, so only 2 of the 4 probabilities are independent. In the following, we&amp;#039;ll choose Prob(frozen) and Prob(melten), and denote them as [b]pFrozen[/b] and [b]pMelten[/b].&#xD;
&#xD;
[img=width: 800px; height: 367px;]/c/portal/getImageAttachment?filename=fig7.png&amp;amp;userId=93201[/img]&#xD;
&#xD;
Back to physics / thermodynamics, those 24 probabilities, [b]pFrozen[/b] and [b]pMelten[/b], can of corse be determined by serious physical models, or they can be chosen randomly just for fun. For example, an intuitive (and naive) idea would be to believe an empty cell nearby a sharp pointed end or with abundant moisture source will have a high [b]pFrozen[/b]. (People who are interested in the serious physical models should not miss [url=http://psoup.math.wisc.edu/Snowfakes.htm]the Gravner-Griffeath Snowfakes model[/url].)&#xD;
&#xD;
Now we have the grid, the stencil, the neighborhood arrangement set and the transfer probabilities, we&amp;#039;re offically ready to construct our cellular automaton rules.&#xD;
Following the above discussion, the construction is straightforward. There are only two points which need to pay attention to. One is to keep in mind that the rule function is applied on the 3x3 stencil, so even cell[size=1]1,1[/size] and cell[size=1]3,3[/size] has nothing to do with our model, don&amp;#039;t forget handling them. The second is to use a [b]SeedRandom[/b] function to make sure same arrangement gives same result in same time step, otherwise the 6-fold rotational symmetry and 3 axes of reflection symmetry will both break!&#xD;
&#xD;
[mcode]Clear[ruleFunc]&#xD;
&#xD;
ruleFunc = With[{&#xD;
                stateClsSetHomogeneous = stateClsSetHomogeneous,&#xD;
                seedStore = RandomInteger[{0, 1000}, 1000],&#xD;
                pFreeze = {1,   0,     0.6,   0,     0.3,   0.15,   0,     0.2,   0,     0.2,   0,     0.8},&#xD;
                pMelt   = {0,   0.7,   0.5,   0.7,   0.7,   0.5,    0.3,   0.5,   0.3,   0.2,   0.1,   0  }&#xD;
                },&#xD;
            Compile[{{neighborarry, _Integer, 2}, {step, _Integer}},&#xD;
                Module[{cv, neighborlst, cls, rand},&#xD;
                    cv = neighborarry[[2, 2]];&#xD;
                    neighborlst = {#[[1, 2]], #[[1, 3]], #[[2, 3]], #[[3, 2]], #[[3, &#xD;
                                        1]], #[[2, 1]]} &amp;amp;[neighborarry];&#xD;
                    If[Total[neighborlst] == 0, cv,&#xD;
                        cls = Position[stateClsSetHomogeneous, neighborlst][[1, 1]];&#xD;
                        SeedRandom[seedStore[[step + 1]]];&#xD;
                        rand = RandomReal[];&#xD;
                        Boole@If[cv == 0, rand &amp;lt; pFreeze[[cls]], rand &amp;gt; pMelt[[cls]]]&#xD;
                        ]],&#xD;
                (*CompilationTarget -&amp;gt; &amp;#034;C&amp;#034;,*)&#xD;
                RuntimeAttributes -&amp;gt; {Listable}, Parallelization -&amp;gt; True, &#xD;
                RuntimeOptions -&amp;gt; &amp;#034;Speed&amp;#034;&#xD;
                ]&#xD;
            ];[/mcode]&#xD;
(Note: re-compile the rule function [b]ruleFunc[/b] will give a different set of [b]seedStore[/b] thus a different growth path.)&#xD;
&#xD;
Now everything is ready, let&amp;#039;s grow a snowflake from the beginning! :D&#xD;
&#xD;
[mcode]dataSet = Module[{&#xD;
&#xD;
                    rule,&#xD;
                    initM = {{&#xD;
                                    {0, 0, 0},&#xD;
                                    {0, 1, 0},&#xD;
                                    {0, 0, 0}&#xD;
                                }, 0},&#xD;
                    rspec = {1, 1},&#xD;
                    tmin = 0, tmax = 100, dt = 1},&#xD;
                rule = {ruleFunc, {}, rspec};&#xD;
                CellularAutomaton[rule, initM, {{tmin, tmax, dt}}]&#xD;
                ]; // AbsoluteTiming&#xD;
&#xD;
Animate[&#xD;
    Rotate[displayfunc[dataSet[[k]], .8], 90 °],&#xD;
    {k, 1, Length[dataSet], 1},&#xD;
    AnimationDirection -&amp;gt; ForwardBackward,&#xD;
    AnimationRunning -&amp;gt; False, DisplayAllSteps -&amp;gt; True&#xD;
    ][/mcode]&#xD;
&#xD;
[img]/c/portal/getImageAttachment?filename=fig0.gif&amp;amp;userId=93201[/img]&#xD;
&#xD;
&#xD;
&#xD;
[size=5][b]Possible Improvements[/b][/size]&#xD;
&#xD;
We used a [b]SeedRandom[/b] function in our CA rule function to force the 6-fold rotational symmetry and 3 axes of reflection symmetry, and performed the CA calculation on all cells. However, this so called [url=http://demonstrations.wolfram.com/DihedralGroupNOfOrder2n/][i]D[/i][size=1]6[/size] symmetry[/url] can (and should) be integrated into our model, which will saving [b]11/12[/b] of the calculation. Also, the randomness of the growth path comes from [b]seedStore[/b], so to generate a new growth path, we have to re-compile the rule function. But with a improved model as described above, this constraint will no longer exist.&#xD;
&#xD;
[img=width: 800px; height: 177px;]/c/portal/getImageAttachment?filename=fig8.png&amp;amp;userId=93201[/img]&#xD;
[b][size=4]&#xD;
&#xD;
[size=5]Open question [/size]&#xD;
[/size][/b]&#xD;
Can we construct a well-organized structure (like the crystals) from a cellular automaton defined on an [b]irregular[/b] grid? While I believe the answer is [i]yes[/i], the next question would be [i]how?[/i]</description>
    <dc:creator>Silvia Hao</dc:creator>
    <dc:date>2014-04-11T16:03:33Z</dc:date>
  </item>
  <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/294122">
    <title>Simulating brain tumor growth with diffusion-growth model</title>
    <link>https://community.wolfram.com/groups/-/m/t/294122</link>
    <description>![enter image description here][5]&#xD;
&#xD;
When playing with Mathematica 10 I constructed this very simple example of an application of the NDSolve command, which I wanted to share. The objective is to model the growth of a special kind of brain tumour which affects mainly glial cells in a highly simplified way. I follow modelling ideas discussed in the excellent book [&amp;#034;Mathematical Biology&amp;#034; (Vol 2) by J.D. Murray][1]. It turns out that Gliomas, which are neoplasms of glial cells, i.e. neural calls capable of division, can be be modelled by a rather simple diffusion-growth model. &#xD;
&#xD;
$$\frac{d c}{dt}=\nabla\left(D(x) \nabla c \right)+ \rho c$$ &#xD;
&#xD;
where c is the concentration of cancer cells and $D(x)$ is the diffusion coefficient, which depends on the coordinates; $\rho$ models the growth rate of the cells. The following boundary condition has to be observe (even though will be ignored in the model I use later on):&#xD;
&#xD;
$${\bf n} \cdot D(x) \nabla c = 0 \qquad \text{for}\; x\;  \text{on}\; \partial B.$$&#xD;
&#xD;
In reality the diffusion coefficient will depend on the tissue type, i.e. gray matter vs white matter. I will use an image from a CT can to describe the different densities of the tissue instead. &#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
In the book by Murray great care is taken to estimate the diffusion coefficient but I just want to show the principle here. I use the attached file &amp;#034;brain-crop.jpg&amp;#034; and import it:&#xD;
&#xD;
    img2=Import[&amp;#034;~/Desktop/brain-crop.jpg&amp;#034;]&#xD;
&#xD;
Then I sharpen it and convert it to gray-scale.&#xD;
&#xD;
img3 = Sharpen[ColorConvert[img2, &amp;#034;Grayscale&amp;#034;]]&#xD;
&#xD;
Then I use that image to determine the diffusion coefficient, locally:&#xD;
&#xD;
    diffcoeff = ListInterpolation[ImageData[img3], InterpolationOrder -&amp;gt; 3]&#xD;
&#xD;
I should now determine the boundaries using something like EdgeDetect. As the background is black and allows no diffusion at all, we can simplify this by just setting a larger (rectangular) boundary box like so:&#xD;
&#xD;
    boundaries = {-y, y - 1, -x, x - 1};&#xD;
    &#xD;
    \[CapitalOmega] = &#xD;
      ImplicitRegion[And @@ (# &amp;lt;= 0 &amp;amp; /@ boundaries), {x, y}];&#xD;
&#xD;
&#xD;
Next we can solve the ODE on the domain:&#xD;
&#xD;
    sols = NDSolveValue[{{Div[1./500.*(diffcoeff[798.*x, 654*y])^4*Grad[u[t, x, y], {x, y}], {x, y}] - D[u[t, x, y], t] + 0.025*u[t, x, y] == NeumannValue[0., x &amp;gt;= 1. || x &amp;lt;= 0. || y &amp;lt;= 0. || y &amp;gt;= 1.]}, {u[0, x, y] == Exp[-1000. ((x - 0.6)^2 + (y - 0.6)^2)]}}, u, {x, y} \[Element] \[CapitalOmega], {t, 0, 20}, Method -&amp;gt; {&amp;#034;FiniteElement&amp;#034;, &amp;#034;MeshOptions&amp;#034; -&amp;gt; {&amp;#034;BoundaryMeshGenerator&amp;#034; -&amp;gt; &amp;#034;Continuation&amp;#034;, MaxCellMeasure -&amp;gt; 0.002}}]&#xD;
&#xD;
Note that we start with an initially Gaussian distributed tumour and describe its growth from there. Also I took the fourth power of the diffcoeff function, which changes the relation between grayscale and diffusion rate. You can change the coefficient to get different patterns for the growth. Interestingly, this integration gives a warning about intersecting boundaries in MMA10, which it did not say in the Prerelease version; if someone can fix that, that would be great. For any time we can now overlay the resulting distribution onto the CT image:&#xD;
&#xD;
    ImageCompose[img3, {ContourPlot[&#xD;
       Max[sols[t, x, y], 0] /. t -&amp;gt; 2, {y, 0, 1}, {x, 0, 1}, &#xD;
       PlotRange -&amp;gt; {{0, 1}, {0, 1}, {0.01, All}}, PlotPoints -&amp;gt; 100, &#xD;
       Contours -&amp;gt; 200, ContourLines -&amp;gt; False, AspectRatio -&amp;gt; 798./654., &#xD;
       ColorFunction -&amp;gt; &amp;#034;Temperature&amp;#034;], 0.6}]&#xD;
&#xD;
This should give something like this:&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
Using &#xD;
&#xD;
    frames = Table[&#xD;
       ImageCompose[&#xD;
        img3, {ContourPlot[&#xD;
          Max[sols[d, x, y], 0] /. d -&amp;gt; t, {y, 0, 1}, {x, 0, 1}, &#xD;
          PlotRange -&amp;gt; {{0, 1}, {0, 1}, {0.01, All}}, PlotPoints -&amp;gt; 100, &#xD;
          Contours -&amp;gt; 200, ContourLines -&amp;gt; False, &#xD;
          AspectRatio -&amp;gt; 798./654., ColorFunction -&amp;gt; &amp;#034;Temperature&amp;#034;], &#xD;
         0.6}], {t, 0, 10, 0.5}];&#xD;
&#xD;
we get a list of images, &#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
which can be animated&#xD;
&#xD;
    ListAnimate[frames, DefaultDuration -&amp;gt; 20]&#xD;
&#xD;
 to give&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
This is only a very elementary demonstration, and certainly still far away from a &amp;#034;real&amp;#034; medical application, but it demonstrates the power of NDSolve and might, in a modified form, be useful as a case study for some introductory courses. &#xD;
&#xD;
Cheers,&#xD;
Marco&#xD;
&#xD;
&#xD;
  [1]: http://www.springer.com/new+&amp;amp;+forthcoming+titles+%28default%29/book/978-0-387-95228-4&#xD;
  [2]: /c/portal/getImageAttachment?filename=brain-crop.jpg&amp;amp;userId=48754&#xD;
  [3]: /c/portal/getImageAttachment?filename=BrainTumor-still.jpg&amp;amp;userId=48754&#xD;
  [4]: /c/portal/getImageAttachment?filename=1473BrainTumor-frames.jpg&amp;amp;userId=48754&#xD;
  [5]: /c/portal/getImageAttachment?filename=BrainTumor.gif&amp;amp;userId=48754</description>
    <dc:creator>Marco Thiel</dc:creator>
    <dc:date>2014-07-14T13:54:54Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1433064">
    <title>Solver for unsteady flow with the use of Mathematica FEM</title>
    <link>https://community.wolfram.com/groups/-/m/t/1433064</link>
    <description>![fig7][331]&#xD;
&#xD;
I started the discussion  [here][1] but I also want to repeat on this forum. &#xD;
There are many commercial and open code for solving the problems of unsteady flows. &#xD;
We are interested in the possibility of solving these problems using Mathematica FEM. Previously proposed solvers for stationary incompressible isothermal flows:&#xD;
&#xD;
Solving 2D Incompressible Flows using Finite Elements: &#xD;
http://community.wolfram.com/groups/-/m/t/610335&#xD;
&#xD;
FEM Solver for Navier-Stokes equations in 2D: &#xD;
http://community.wolfram.com/groups/-/m/t/611304&#xD;
&#xD;
Nonlinear FEM Solver for Navier-Stokes equations in 2D: &#xD;
https://mathematica.stackexchange.com/questions/94914/nonlinear-fem-solver-for-navier-stokes-equations-in-2d/96579#96579&#xD;
&#xD;
We give several examples of the successful application of the finite element method for solving unsteady problem including nonisothermal and compressible flows. We will begin with two standard tests that were proposed to solve this class of problems by &#xD;
&#xD;
M. Schäfer and S. Turek, Benchmark computations of laminar ?ow around a cylinder (With support by F. Durst, E. Krause and R. Rannacher). In E. Hirschel, editor, Flow Simulation with High-Performance Computers II. DFG priority research program results 1993-1995, number 52 in Notes Numer. Fluid Mech., pp.547566. Vieweg, Weisbaden, 1996. https://www.uio.no/studier/emner/matnat/math/MEK4300/v14/undervisningsmateriale/schaeferturek1996.pdf&#xD;
&#xD;
&#xD;
&#xD;
![fig8][332]&#xD;
&#xD;
&#xD;
&#xD;
Let us consider the flow in a flat channel around a cylinder at Reynolds number = 100, when self-oscillations occur leading to the detachment of vortices in the aft part of cylinder. In this problem it is necessary to calculate drag coe?cient, lift coe?cient  and pressure di?erence  in the frontal and aft part of the cylinder as functions of time, maximum drag coe?cient, maximum lift coe?cient , Strouhal number  and pressure di?erence $\Delta P(t)$ at $t = t0 +1/2f$. The frequency f is determined by the period of oscillations of lift coe?cient f=f(c_L). The data for this test, the code and the results are shown below. &#xD;
&#xD;
    H = .41; L = 2.2; {x0, y0, r0} = {1/5, 1/5, 1/20}; &#xD;
    ? = RegionDifference[Rectangle[{0, 0}, {L, H}], Disk[{x0, y0}, r0]];&#xD;
    RegionPlot[?, AspectRatio -&amp;gt; Automatic]&#xD;
    &#xD;
    K = 2000; Um = 1.5; ? = 10^-3; t0 = .004;&#xD;
    U0[y_, t_] := 4*Um*y/H*(1 - y/H)&#xD;
    UX[0][x_, y_] := 0;&#xD;
    VY[0][x_, y_] := 0;&#xD;
    P0[0][x_, y_] := 0;&#xD;
    Do[&#xD;
      {UX[i], VY[i], P0[i]} = &#xD;
       NDSolveValue[{{Inactive[&#xD;
               Div][({{-?, 0}, {0, -?}}.Inactive[Grad][&#xD;
                 u[x, y], {x, y}]), {x, y}] + &#xD;
    \!\(\*SuperscriptBox[\(p\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;1&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;0&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x, y] + (u[x, y] - UX[i - 1][x, y])/t0 + &#xD;
             UX[i - 1][x, y]*D[u[x, y], x] + &#xD;
             VY[i - 1][x, y]*D[u[x, y], y], &#xD;
            Inactive[&#xD;
               Div][({{-?, 0}, {0, -?}}.Inactive[Grad][&#xD;
                 v[x, y], {x, y}]), {x, y}] + &#xD;
    \!\(\*SuperscriptBox[\(p\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;0&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;1&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x, y] + (v[x, y] - VY[i - 1][x, y])/t0 + &#xD;
             UX[i - 1][x, y]*D[v[x, y], x] + &#xD;
             VY[i - 1][x, y]*D[v[x, y], y], &#xD;
    \!\(\*SuperscriptBox[\(u\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;1&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;0&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x, y] + &#xD;
    \!\(\*SuperscriptBox[\(v\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;0&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;1&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x, y]} == {0, 0, 0} /. ? -&amp;gt; ?, {&#xD;
          DirichletCondition[{u[x, y] == U0[y, i*t0], v[x, y] == 0}, &#xD;
           x == 0.], &#xD;
          DirichletCondition[{u[x, y] == 0., v[x, y] == 0.}, &#xD;
           0 &amp;lt;= x &amp;lt;= L &amp;amp;&amp;amp; y == 0 || y == H], &#xD;
          DirichletCondition[{u[x, y] == 0, &#xD;
            v[x, y] == 0}, (x - x0)^2 + (y - y0)^2 == r0^2], &#xD;
          DirichletCondition[p[x, y] == P0[i - 1][x, y], x == L]}}, {u, v,&#xD;
          p}, {x, y} ? ?, &#xD;
        Method -&amp;gt; {&amp;#034;FiniteElement&amp;#034;, &#xD;
          &amp;#034;InterpolationOrder&amp;#034; -&amp;gt; {u -&amp;gt; 2, v -&amp;gt; 2, p -&amp;gt; 1}, &#xD;
          &amp;#034;MeshOptions&amp;#034; -&amp;gt; {&amp;#034;MaxCellMeasure&amp;#034; -&amp;gt; 0.001}}], {i, 1, K}];&#xD;
    {ContourPlot[UX[K/2][x, y], {x, y} ? ?, &#xD;
       AspectRatio -&amp;gt; Automatic, ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, &#xD;
       FrameLabel -&amp;gt; {x, y}, PlotLegends -&amp;gt; Automatic, Contours -&amp;gt; 20, &#xD;
       PlotPoints -&amp;gt; 25, PlotLabel -&amp;gt; u, MaxRecursion -&amp;gt; 2], &#xD;
      ContourPlot[VY[K/2][x, y], {x, y} ? ?, &#xD;
       AspectRatio -&amp;gt; Automatic, ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, &#xD;
       FrameLabel -&amp;gt; {x, y}, PlotLegends -&amp;gt; Automatic, Contours -&amp;gt; 20, &#xD;
       PlotPoints -&amp;gt; 25, PlotLabel -&amp;gt; v, MaxRecursion -&amp;gt; 2, &#xD;
       PlotRange -&amp;gt; All]} // Quiet&#xD;
    {DensityPlot[UX[K][x, y], {x, y} ? ?, &#xD;
       AspectRatio -&amp;gt; Automatic, ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, &#xD;
       FrameLabel -&amp;gt; {x, y}, PlotLegends -&amp;gt; Automatic, PlotPoints -&amp;gt; 25, &#xD;
       PlotLabel -&amp;gt; u, MaxRecursion -&amp;gt; 2], &#xD;
      DensityPlot[VY[K][x, y], {x, y} ? ?, &#xD;
       AspectRatio -&amp;gt; Automatic, ColorFunction -&amp;gt; &amp;#034;BlueGreenYellow&amp;#034;, &#xD;
       FrameLabel -&amp;gt; {x, y}, PlotLegends -&amp;gt; Automatic, PlotPoints -&amp;gt; 25, &#xD;
       PlotLabel -&amp;gt; v, MaxRecursion -&amp;gt; 2, PlotRange -&amp;gt; All]} // Quiet&#xD;
    dPl = Interpolation[&#xD;
       Table[{i*t0, (P0[i][.15, .2] - P0[i][.25, .2])}, {i, 0, K, 1}]];&#xD;
    &#xD;
    &#xD;
    cD = Table[{t0*i, NIntegrate[(-?*(-Sin[?] (Sin[?] &#xD;
    \!\(\*SuperscriptBox[\(UX[i]\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;0&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;1&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x0 + r Cos[?], &#xD;
                     y0 + r Sin[?]] + Cos[?] &#xD;
    \!\(\*SuperscriptBox[\(UX[i]\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;1&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;0&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x0 + r Cos[?], &#xD;
                     y0 + r Sin[?]]) + Cos[?] (Sin[?] &#xD;
    \!\(\*SuperscriptBox[\(VY[i]\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;0&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;1&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x0 + r Cos[?], &#xD;
                     y0 + r Sin[?]] + Cos[?] &#xD;
    \!\(\*SuperscriptBox[\(VY[i]\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;1&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;0&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x0 + r Cos[?], &#xD;
                     y0 + r Sin[?]]))*Sin[?] - &#xD;
             P0[i][x0 + r Cos[?], y0 + r Sin[?]]*&#xD;
              Cos[?]) /. {r -&amp;gt; r0}, {?, 0, 2*Pi}]}, {i, &#xD;
         1000, 2000}]; // Quiet&#xD;
    &#xD;
    cL = Table[{t0*i, -NIntegrate[(-?*(-Sin[?] (Sin[?] &#xD;
    \!\(\*SuperscriptBox[\(UX[i]\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;0&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;1&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x0 + r Cos[?], &#xD;
                      y0 + r Sin[?]] + Cos[?] &#xD;
    \!\(\*SuperscriptBox[\(UX[i]\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;1&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;0&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x0 + r Cos[?], &#xD;
                      y0 + r Sin[?]]) + &#xD;
                 Cos[?] (Sin[?] &#xD;
    \!\(\*SuperscriptBox[\(VY[i]\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;0&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;1&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x0 + r Cos[?], &#xD;
                      y0 + r Sin[?]] + Cos[?] &#xD;
    \!\(\*SuperscriptBox[\(VY[i]\), &#xD;
    TagBox[&#xD;
    RowBox[{&amp;#034;(&amp;#034;, &#xD;
    RowBox[{&amp;#034;1&amp;#034;, &amp;#034;,&amp;#034;, &amp;#034;0&amp;#034;}], &amp;#034;)&amp;#034;}],&#xD;
    Derivative],&#xD;
    MultilineFunction-&amp;gt;None]\)[x0 + r Cos[?], &#xD;
                      y0 + r Sin[?]]))*Cos[?] + &#xD;
              P0[i][x0 + r Cos[?], y0 + r Sin[?]]*&#xD;
               Sin[?]) /. {r -&amp;gt; r0}, {?, 0, 2*Pi}]}, {i, &#xD;
         1000, 2000}]; // Quiet&#xD;
    {ListLinePlot[cD, &#xD;
      AxesLabel -&amp;gt; {&amp;#034;t&amp;#034;, &amp;#034;\!\(\*SubscriptBox[\(c\), \(D\)]\)&amp;#034;}], &#xD;
     ListLinePlot[cL, &#xD;
      AxesLabel -&amp;gt; {&amp;#034;t&amp;#034;, &amp;#034;\!\(\*SubscriptBox[\(c\), \(L\)]\)&amp;#034;}], &#xD;
     Plot[dPl[x], {x, 0, 8}, AxesLabel -&amp;gt; {&amp;#034;t&amp;#034;, &amp;#034;?P&amp;#034;}]}&#xD;
&#xD;
    f002 = FindFit[cL, a*.5 + b*.8*Sin[k*16*t + c*1.], {a, b, k, c}, t]&#xD;
    &#xD;
    &#xD;
    Plot[Evaluate[a*.5 + b*.8*Sin[k*16*t + c*1.] /. f002], {t, 4, 8}, &#xD;
     Epilog -&amp;gt; Map[Point, cL]]&#xD;
    &#xD;
    k0=k/.f002;&#xD;
    Struhalnumber = .1*16*k0/2/Pi&#xD;
&#xD;
    &#xD;
    cLm = MaximalBy[cL, Last]&#xD;
    &#xD;
    sol = {Max[cD[[All, 2]]], Max[cL[[All, 2]]], Struhalnumber, &#xD;
      dPl[cLm[[1, 1]] + Pi/(16*k0)]}&#xD;
&#xD;
In Fig. 1 shows the components of the flow velocity and the required coefficients. Our solution of the problem and what is required in the test&#xD;
&#xD;
    {3.17805, 1.03297, 0.266606, 2.60427}&#xD;
    &#xD;
    lowerbound= { 3.2200, 0.9900, 0.2950, 2.4600};&#xD;
    upperbound = {3.2400, 1.0100, 0.3050, 2.5000};&#xD;
&#xD;
![Fig1][2]&#xD;
Note that our results differ from allowable by several percent, but if you look at all the results of Table 4 from the cited article, then the agreement is quite acceptable.The worst prediction is for the Strouhal number. We note that we use the explicit Euler method, which gives an underestimate of the Strouhal number, as follows from the data in Table 4.  &#xD;
The next test differs from the previous one in that the input speed varies according to the `U0[y_, t_] := 4*Um*y/H*(1 - y/H)*Sin[Pi*t/8]`. It is necessary to determine the time dependence of the drag and lift parameters for a half-period of oscillation, as well as the pressure drop at the last moment of time. In Fig. 2 shows the components of the flow velocity and the required coefficients. Our solution of the problem and what is required in the test&#xD;
&#xD;
    sol = {3.0438934441256595`, &#xD;
       0.5073345082785012`, -0.11152933279750943`};&#xD;
    &#xD;
    lowerbound = {2.9300, 0.4700, -0.1150};&#xD;
    upperbound = {2.9700, 0.4900, -0.1050};&#xD;
![Fig2][3]&#xD;
For this test, the agreement with the data in Table 5 is good. Consequently, the two tests are almost completely passed. &#xD;
I wrote and debugged this code using Mathematics 11.01. But when I ran this code using Mathematics 11.3, I got strange pictures, for example, the disk is represented as a hexagon, the size of the area is changed. &#xD;
![Fig3][4]&#xD;
In addition, the numerical solution of the problem has changed, for example, test 2D2&#xD;
&#xD;
    {3.17805, 1.03297, 0.266606, 2.60427} v11.01&#xD;
    {3.15711, 1.11377, 0.266043, 2.54356} v11.03&#xD;
The attached file contains the working code for test 2D3 describing the flow around the cylinder in a flat channel with a change in the flow velocity.&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=test2D2.png&amp;amp;userId=1218692&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=test2D2.png&amp;amp;userId=1218692&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=test2D3.png&amp;amp;userId=1218692&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Math11.3.png&amp;amp;userId=1218692&#xD;
&#xD;
  [331]: http://community.wolfram.com//c/portal/getImageAttachment?filename=CylinderRe100test2D2.gif&amp;amp;userId=1218692&#xD;
  [332]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2D2test.png&amp;amp;userId=1218692</description>
    <dc:creator>Alexander Trounev</dc:creator>
    <dc:date>2018-08-31T11:44:04Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3118205">
    <title>Wolfram quantum framework: tensor networks, spiders, and ZX formalism</title>
    <link>https://community.wolfram.com/groups/-/m/t/3118205</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=heroimage.png&amp;amp;userId=1539902&#xD;
  [2]: https://www.wolframcloud.com/obj/5b3b5265-f1e2-406c-aef4-45a5f9ec363b</description>
    <dc:creator>Mohammad Bahrami</dc:creator>
    <dc:date>2024-02-07T19:21:52Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/131302">
    <title>Plotting electronic orbitals with Wolfram Language</title>
    <link>https://community.wolfram.com/groups/-/m/t/131302</link>
    <description>I am reposting this here from the [url=http://mathematica.blogoverflow.com/]Stackexchange Mathematica blog[/url] so that more people might see it.  I&amp;#039;d be very happy to get some feedback on this plotting function.  If anyone can use the function, let me know how it works out for you, and if you&amp;#039;d recommend any changes.  If so, I can edit this post to have to most up-to-date version.&#xD;
&#xD;
As a chemist it is often useful to plot electronic orbitals.  These are used to describe the wave function of electrons in atoms or molecules.  Typically, these are output from electronic structure software in the form of a cube file, first developed by Gaussian.  These files contain volumetric data for a given orbital on a three-dimensional grid.&#xD;
&#xD;
&#xD;
There exist many applications to visualize cube files, such as [url=http://www.ks.uiuc.edu/Research/vmd/plugins/molfile/cubeplugin.html]VMD [/url]or [url=http://www.gaussian.com/g_tech/gv5ref/results.htm]GaussView[/url], but I wanted to take advantage of Mathematicas  capability to easily combine graphics, as well as the ability to automate the process in order to efficiently create frames for a [url=http://www.pnas.org/content/suppl/2013/09/05/1308604110.DCSupplemental/sm01.mp4]movie[/url].&#xD;
&#xD;
First off, we need a function to extract the data from the cube file. In the process, we will create the text for an XYZ file, a format also developed by Gaussian. The function [b]OutForm[/b] is used here to mimic the printf function found in other programming languages.&#xD;
&#xD;
[mcode]OutForm[num_?NumericQ, width_Integer, ndig_Integer, &#xD;
   OptionsPattern[]] :=&#xD;
  Module[{mant, exp, val},&#xD;
   {mant, exp} = MantissaExponent[num];&#xD;
   mant = ToString[NumberForm[mant, {ndig, ndig}]];&#xD;
   exp = If[Sign[exp] == -1, &amp;#034;-&amp;#034;, &amp;#034;+&amp;#034;] &amp;lt;&amp;gt; IntegerString[exp, 10, 2];&#xD;
   val = mant &amp;lt;&amp;gt; &amp;#034;E&amp;#034; &amp;lt;&amp;gt; exp;&#xD;
   StringJoin@PadLeft[Characters[val], width, &amp;#034; &amp;#034;]&#xD;
   ];&#xD;
&#xD;
ReadCube[cubeFileName_?StringQ] := Module[&#xD;
   {moltxt, nAtoms, lowerCorner, nx, ny, nz, xstep, ystep, zstep, &#xD;
    atoms, desc1, desc2, xyzText, cubeDat, xgrid, ygrid, zgrid, &#xD;
    dummy1, dummy2, atomicNumber, atomx, atomy, atomz, tmpString, &#xD;
    headerTxt,bohr2angstrom},&#xD;
   bohr2angstrom = 0.529177249;&#xD;
   moltxt = OpenRead[cubeFileName];&#xD;
   desc1 = Read[moltxt, String];&#xD;
   desc2 = Read[moltxt, String];&#xD;
   lowerCorner = {0, 0, 0}; &#xD;
   {nAtoms, lowerCorner[[1]], lowerCorner[[2]], lowerCorner[[3]]} = &#xD;
    Read[moltxt, String] // ImportString[#, &amp;#034;Table&amp;#034;][[1]] &amp;amp;;&#xD;
   xyzText = ToString[nAtoms] &amp;lt;&amp;gt; &amp;#034;\n&amp;#034;;&#xD;
   xyzText = xyzText &amp;lt;&amp;gt; desc1 &amp;lt;&amp;gt; desc2 &amp;lt;&amp;gt; &amp;#034;\n&amp;#034;;&#xD;
   {nx, xstep, dummy1, dummy2} = &#xD;
    Read[moltxt, String] // ImportString[#, &amp;#034;Table&amp;#034;][[1]] &amp;amp;;&#xD;
   {ny, dummy1, ystep, dummy2} = &#xD;
    Read[moltxt, String] // ImportString[#, &amp;#034;Table&amp;#034;][[1]] &amp;amp;;&#xD;
   {nz, dummy1, dummy2, zstep} = &#xD;
    Read[moltxt, String] // ImportString[#, &amp;#034;Table&amp;#034;][[1]] &amp;amp;;&#xD;
   Do[&#xD;
    {atomicNumber, dummy1, atomx, atomy, atomz} = &#xD;
     Read[moltxt, String] // ImportString[#, &amp;#034;Table&amp;#034;][[1]] &amp;amp;;&#xD;
    xyzText = If[Sign[lowerCorner[[1]]] == 1,&#xD;
      xyzText &amp;lt;&amp;gt; ElementData[atomicNumber, &amp;#034;Abbreviation&amp;#034;] &amp;lt;&amp;gt; &#xD;
       OutForm[atomx, 17, 7] &amp;lt;&amp;gt; OutForm[atomy, 17, 7] &amp;lt;&amp;gt; &#xD;
       OutForm[atomz, 17, 7] &amp;lt;&amp;gt; &amp;#034;\n&amp;#034;,&#xD;
      xyzText &amp;lt;&amp;gt; ElementData[atomicNumber, &amp;#034;Abbreviation&amp;#034;] &amp;lt;&amp;gt; &#xD;
       OutForm[bohr2angstrom atomx, 17, 7] &amp;lt;&amp;gt; &#xD;
       OutForm[bohr2angstrom atomy, 17, 7] &amp;lt;&amp;gt; &#xD;
       OutForm[bohr2angstrom atomz, 17, 7] &amp;lt;&amp;gt; &amp;#034;\n&amp;#034;];&#xD;
    , {nAtoms}];&#xD;
   cubeDat = &#xD;
    Partition[Partition[ReadList[moltxt, Number, nx ny nz], nz], ny];&#xD;
   Close[moltxt];&#xD;
   moltxt = OpenRead[cubeFileName];&#xD;
   headerTxt = Read[moltxt, Table[String, {2 + 4 + nAtoms}]];&#xD;
   Close[moltxt];&#xD;
   headerTxt = StringJoin@Riffle[headerTxt, &amp;#034;\n&amp;#034;];&#xD;
   xgrid = &#xD;
    Range[lowerCorner[[1]], lowerCorner[[1]] + xstep (nx - 1), xstep];&#xD;
   ygrid = &#xD;
    Range[lowerCorner[[2]], lowerCorner[[2]] + ystep (ny - 1), ystep];&#xD;
   zgrid = &#xD;
    Range[lowerCorner[[3]], lowerCorner[[3]] + zstep (nz - 1), zstep];&#xD;
   {cubeDat, xgrid, ygrid, zgrid, xyzText, headerTxt}&#xD;
   ];[/mcode]&#xD;
If you need to create a cube file, then the following function can be used:&#xD;
[mcode]WriteCube[cubeFileName_?StringQ, headerTxt_?StringQ, cubeData_] := &#xD;
 Module[{stream}, &#xD;
  stream = OpenWrite[cubeFileName, FormatType -&amp;gt; FortranForm];&#xD;
  WriteString[stream, headerTxt, &amp;#034;\n&amp;#034;];&#xD;
  Map[WriteString[stream, ##, &amp;#034;\n&amp;#034;] &amp;amp; @@ &#xD;
     Riffle[ScientificForm[#, {3, 4}, &#xD;
         NumberFormat -&amp;gt; (Row[{#1, &amp;#034;E&amp;#034;, If[#3 == &amp;#034;&amp;#034;, &amp;#034;+00&amp;#034;, #3], &#xD;
              &amp;#034;\t&amp;#034;}] &amp;amp;), NumberPadding -&amp;gt; {&amp;#034;&amp;#034;, &amp;#034;0&amp;#034;}, &#xD;
         NumberSigns -&amp;gt; {&amp;#034;-&amp;#034;, &amp;#034; &amp;#034;}] &amp;amp; /@ #, &amp;#034;\n&amp;#034;, {7, -1, 7}] &amp;amp;, &#xD;
   cubeData, {2}];&#xD;
  Close[stream];][/mcode]Next we need the function to plot the orbital,&#xD;
[mcode]CubePlot[{cub_, xg_, yg_, zg_, xyz_}, plotopts : OptionsPattern[]] := &#xD;
   Module[{xyzplot, bohr2picometer, datarange3D, pr},&#xD;
    bohr2picometer = 52.9177249;&#xD;
    datarange3D = &#xD;
      bohr2picometer {{xg[[1]], xg[[-1]]}, {yg[[1]], &#xD;
         yg[[-1]]}, {zg[[1]], zg[[-1]]}};&#xD;
    xyzplot = ImportString[xyz, &amp;#034;XYZ&amp;#034;];&#xD;
    Show[xyzplot, &#xD;
     ListContourPlot3D[Transpose[cub, {3, 2, 1}], &#xD;
       Evaluate[FilterRules[{plotopts}, Options[ListContourPlot3D]]], &#xD;
       Contours -&amp;gt; {-.02, .02}, ContourStyle -&amp;gt; {Blue, Red}, &#xD;
       DataRange -&amp;gt; datarange3D, MeshStyle -&amp;gt; Gray, &#xD;
       Lighting -&amp;gt; {{&amp;#034;Ambient&amp;#034;, White}}], &#xD;
       Evaluate[&#xD;
        FilterRules[{plotopts}, {ViewPoint, ViewVertical, ImageSize}]]]&#xD;
    ];    [/mcode]Lets look at an example.  First we need to read in a cube file, download this cube file and place it in your base directory:  [url=https://dl.dropboxusercontent.com/s/rdsxcnqudn1s76n/cys-MO35.cube]cys-MO35cube[/url]&#xD;
[mcode]{cubedata,xg,yg,zg,xyz,header}= ReadCube[&amp;#034;cys-MO35.cube&amp;#034;];[/mcode]Then plot it via[mcode]CubePlot[{cubedata, xg, yg, zg, xyz}][/mcode][img=width: 300px; height: 291px;]http://mathematica.blogoverflow.com/files/2013/09/pizCq-300x291.jpg[/img]&#xD;
When I want to create a movie file, I want all the images to have exactly the same [b]ViewAngle[/b], [b]ViewPoint[/b], and [b]ViewCenter[/b].  When you give these options to [b]CubePlot[/b], it feeds them directly to the [b]Show[/b] function&#xD;
[mcode]vp = {ViewCenter -&amp;gt; {0.5, 0.5, 0.5}, &#xD;
   ViewPoint -&amp;gt; {1.072, 0.665, -3.13}, &#xD;
   ViewVertical -&amp;gt; {0.443, 0.2477, 1.527}};&#xD;
&#xD;
&#xD;
CubePlot[{cubedata, xg, yg, zg, xyz}, vp][/mcode][img=width: 280px; height: 300px;]http://mathematica.blogoverflow.com/files/2013/09/Q1mjs-280x300.jpg[/img]&#xD;
Finally, you can also give any options that normally go to [b]ListContourPlot3D[/b][mcode]CubePlot[{cubedata, xg, yg, zg, xyz}, vp, &#xD;
 ContourStyle -&amp;gt; {Texture[ExampleData[{&amp;#034;ColorTexture&amp;#034;, &amp;#034;Vavona&amp;#034;}]], &#xD;
   Texture[ExampleData[{&amp;#034;ColorTexture&amp;#034;, &amp;#034;Amboyna&amp;#034;}]]}, &#xD;
 Contours -&amp;gt; {-.015, .015}][/mcode][img=width: 288px; height: 300px;]http://mathematica.blogoverflow.com/files/2013/09/fLyJ7-288x300.jpg[/img]&#xD;
&#xD;
Many thanks to Daniel Healion for the [b]ReadCube[/b] and [b]WriteCube[/b] functions.</description>
    <dc:creator>Jason Biggs</dc:creator>
    <dc:date>2013-09-27T18:35:45Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/181641">
    <title>An experiment in Moment of Inertia with Raspberry Pi / Arduino</title>
    <link>https://community.wolfram.com/groups/-/m/t/181641</link>
    <description>Wanted to share with my kids the classical experiment on a rolling object down an incline plane using legos, arduino and Mathematica for the Raspberry Pi.

Using a window valance and some lego technic pieces we proceeded to build the inclined plane platform.

[img=width: 300px; height: 400px;]/c/portal/getImageAttachment?filename=inclinedplane1.JPG&amp;amp;userId=78214[/img]

Using legos was great to allow to attach both leds and photorresistors to the inclined plane. It also allowed us to set up build a platform from where to attach a servo motor and a protractor to measure the angle of inclination.
[img=width: 400px; height: 533px;]/c/portal/getImageAttachment?filename=inclinedplane2.JPG&amp;amp;userId=78214[/img]

We&amp;#039;ll detect when the ball reaches a certain point of the platform by the the disminution of the LED light received at the photoresistors.
[img=width: 300px; height: 400px;]/c/portal/getImageAttachment?filename=8270photo(1).JPG&amp;amp;userId=78214[/img]

The adafruit web site is a very good site to explain the details on how to connect the photoresistors and leds to the Arduino.
[url=http://learn.adafruit.com/adafruit-arduino-lesson-2-leds/leds]http://learn.adafruit.com/adafruit-arduino-lesson-2-leds/leds[/url]
[url=http://learn.adafruit.com/photocells/using-a-photocell]http://learn.adafruit.com/photocells/using-a-photocell[/url]

As the readings of the photocells require of analog inputs, we decided to use a spare arduino we had at our disposal, and to have more fun, use XBEE modules to connect the arduino to the raspberry pi.
[img=width: 300px; height: 225px;]/c/portal/getImageAttachment?filename=6471photo(2).JPG&amp;amp;userId=78214[/img]

The following is the code at the Arduino.[code]
#include &amp;lt;Servo.h&amp;gt; 
int servoPin = 9;
int LightSensor[4]={A1,A2,A3,A4};
int current[4]={0,0,0,0};
double timers[4]={0,0,0,0};
int previous[4]={0,0,0,0};

Servo servo;  
int i=0; 
double factor=0.7;
double timer = 0; 
int inByte =0;

void setup() 
{ 
  Serial.begin(19200);
  servo.attach(servoPin); 
  servo.write(0);
  delay(2000);
  for (i=0;i&amp;lt;4;i++){
    previous[i]=analogRead(LightSensor[i]);
  }
} 
void loop() 
{ 
if(Serial.available()&amp;gt;0){

  inByte=Serial.read();

 if (inByte==65) {
    servo.write(90);
    timer=millis();
    trackBall();
    for (i=0;i&amp;lt;4;i++){
      Serial.println(timers[i]);
    }
    servo.write(0);
  }
}
}

void trackBall(){
 int m =0;
  while (m&amp;lt;4){
    current[m]=analogRead(LightSensor[m]);
    if (current[m]&amp;lt;factor*previous[m]){
      timers[m]=millis()-timer;
      m++;
  }
  }
}[/code]
Mathematica code and results to follow
[mcode]serial = DeviceOpen[&amp;#034;Serial&amp;#034;, {&amp;#034;/dev/ttyUSB0&amp;#034;, &amp;#034;BaudRate&amp;#034; -&amp;gt; 19200}]
lengths = {0., 0.175, 0.43, 

   0.69} ;(*Distance between light sensors in meters*)
data = {};(*List to capture the time between sensors*)
ping := Module[{}, DeviceWriteBuffer[serial, {&amp;#034;A&amp;#034;}]; Pause[3]; 

  ToExpression[StringSplit[FromCharacterCode[DeviceReadBuffer[serial]]]]/1000]
(*Function pings sends an &amp;#034;A&amp;#034; to the arduino to release the ball and \

collect timing*)
Button[&amp;#034;Collect Data&amp;#034;, data = Append[data, ping]]
Dynamic[tdata = Transpose@data;

 dataPoints = 

  Flatten[Table[{tdata[[i, j]], lengths[[i]]}, {i, 

     Length[lengths]}, {j, Length[data]}], 1];

 lm = Fit[dataPoints, {1, x, x^2}, x];

 Plot[lm, {x, -0.3, 1.2}, 

  Epilog -&amp;gt; {Red, PointSize[Large], Point[dataPoints]}, 

  AspectRatio -&amp;gt; 1, PlotLabel -&amp;gt; lm]][/mcode]Using a hollow ball, we can work out the gravity value
[img=width: 440px; height: 500px;]/c/portal/getImageAttachment?filename=Untitled.png&amp;amp;userId=78214[/img]

Using a golf ball
[img=width: 500px; height: 482px;]/c/portal/getImageAttachment?filename=InclinedPlane.png&amp;amp;userId=78214[/img]

A couple of videos of the experiment in action
[url=https://www.youtube.com/watch?v=4eRZ48N3vM8]https://www.youtube.com/watch?v=4eRZ48N3vM8[/url]
[url=https://www.youtube.com/watch?v=eLVPpEcyw_0]https://www.youtube.com/watch?v=eLVPpEcyw_0[/url]
[url=https://www.youtube.com/watch?v=53WaEcRWY_0]https://www.youtube.com/watch?v=53WaEcRWY_0[/url]</description>
    <dc:creator>Diego Zviovich</dc:creator>
    <dc:date>2014-01-08T01:09:54Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/203498">
    <title>Palette for Inputting Typeset Units and Package with Input Aliases</title>
    <link>https://community.wolfram.com/groups/-/m/t/203498</link>
    <description>I have written a palette and a package to help input properly typeset units.  The palette and package allow for quick input of units in Mathematica, avoiding the clunky units-discovery approach involving Wolfram Alpha queries. As an example, the expression below can be inputted quickly using the palette or by using the input aliases that are loaded by the package.[center][img=width: 206px; height: 89px;]/c/portal/getImageAttachment?filename=InputExample.jpg&amp;amp;userId=23384[/img][/center]The link to a page for downloads is: [url=http://www.blinn.edu/brazos/natscience/phys/thonan/Mathematica/]http://www.blinn.edu/brazos/natscience/phys/thonan/Mathematica/[/url] .</description>
    <dc:creator>Terrence Honan</dc:creator>
    <dc:date>2014-02-20T02:03:07Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3178293">
    <title>Quantum research and education: unveiling Wolfram Mathematica&amp;#039;s superiority</title>
    <link>https://community.wolfram.com/groups/-/m/t/3178293</link>
    <description>![Quantum qubit states and probabilities using Mathematica&amp;#039;s quantum framework][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=quantummathematica.png&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/88ca7f05-28c8-4f26-9e76-1efe24135e1a</description>
    <dc:creator>Mohammad Bahrami</dc:creator>
    <dc:date>2024-05-18T00:10:49Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/863933">
    <title>Walking strandbeest dynamics</title>
    <link>https://community.wolfram.com/groups/-/m/t/863933</link>
    <description>Many of you have seen the strandbeest (from Dutch, meaning beach-beast). These PVC tube animals created by Theo Jansen walk along the beach and are wind powered:&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
Years ago (2009 to be more exact) I made a post on my blog about the movement of the legs, as evidenced by the still-nicely-working Mathematica notebook:&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
At the time the proportions of the legs were not known publicly so I meticulously studied frames of (low quality) YouTube videos. I made the following diagram in Illustrator of what I thought I saw:&#xD;
&#xD;
![enter image description here][3] ![enter image description here][4]&#xD;
&#xD;
On the left the length of the legs in red, and in blue the numbers of the joints. On the right the trajectory of the joints that I calculated at the time in Mathematica. It&amp;#039;s funny that my blog does not exist any more (for years actually), but these images live on, as I found out when I looked for strandbeest on Google Images:&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
My images! But not on my website! Nice to see people still use it. Now, in 2016, I saw these files on my laptop, and thought: is there finally more known about them? Well yes, there is! The exact proportions are now known and there is tons and tons of videos, lectures, 3D-printable strandbeest models, interviews with Theo Jansen and other stuff! So now we can find the exact dimensions readily on the internet:&#xD;
&#xD;
![enter image description here][6] &#xD;
&#xD;
Notice that I (wrongly) assumed that the legs had &amp;#039;feet&amp;#039;! oops! I was very happy to see that my lengths were not that wrong though! Let&amp;#039;s recreate the strandbeest. We do so by first creating a function that quickly finds the intersection of two circles:&#xD;
&#xD;
    Clear[FindPoint, FindLines]&#xD;
    FindPoint[p1 : {x1_, y1_}, p2 : {x2_, y2_}, R_, r_, side_] := Module[{d, x, y, vc1, vc2, p, sol, sol1, sol2, s1, s2, sr},&#xD;
      d = N@Sqrt[(x2 - x1)^2 + (y2 - y1)^2];&#xD;
      x = (d^2 - r^2 + R^2)/(2 d);&#xD;
      y = Sqrt[R^2 - x^2];&#xD;
      vc1 = Normalize[{x2 - x1, y2 - y1}];&#xD;
      vc2 = Cross[vc1];&#xD;
      p = {x1, y1} + x vc1;&#xD;
      {sol1, sol2} = {p + y vc2, p - y vc2};&#xD;
      s1 = Sign[Last[Cross[Append[(p2 - p1), 0], Append[(sol1 - p1), 0]]]];&#xD;
      s2 = Sign[Last[Cross[Append[(p2 - p1), 0], Append[(sol2 - p1), 0]]]];&#xD;
      sr = If[side === Left, 1, -1];&#xD;
      Switch[sr, s1,&#xD;
       sol1&#xD;
       ,&#xD;
       s2&#xD;
       ,&#xD;
       sol2&#xD;
       ]&#xD;
      ]&#xD;
&#xD;
This finds on the side &amp;#039;side&amp;#039; (Left/Right) the intersection point of two circles positioned at p1 and p2, with radii R and r, respectively. And now we can easily compute all the little vertices/joints of our beast:&#xD;
&#xD;
    FindLines[\[Theta]_] := Module[{p1, p2, p3, p4, p5, p6, p7, p8, p10, p11, p12, p13, p14, p15},&#xD;
      {p1, p2, p3, p4, p5, p6, p7, p8, p10, p11, p12, p13, p14, p15} = FindPoints[\[Theta]];&#xD;
      {{p1, p2}, {p2, p3}, {p3, p4}, {p1, p4}, {p2, p6}, {p4, p6}, {p3, p5}, {p4, p5}, {p5, p8}, {p6, p8}, {p6, p7}, {p7, p8}, {p1, &#xD;
        p11}, {p10, p11}, {p2, p10}, {p2, p13}, {p11, p13}, {p10, p12}, {p11, p12}, {p12, p14}, {p13, p14}, {p13, p15}, {p14, p15}}&#xD;
      ]&#xD;
    FindPoints[\[Theta]_] := Module[{p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16},&#xD;
      p1 = {0, 0};&#xD;
      p4 = {38, -7.8};&#xD;
      p11 = {-38, -7.8};&#xD;
      p2 = 15 {Cos[\[Theta]], Sin[\[Theta]]};&#xD;
      &#xD;
      p3 = FindPoint[p2, p4, 50, 41.5, Left];&#xD;
      p6 = FindPoint[p2, p4, 61.9, 39.3, Right];&#xD;
      p5 = FindPoint[p3, p4, 55.8, 41.5, Left];&#xD;
      p8 = FindPoint[p5, p6, 39.4, 36.7, Left];&#xD;
      p7 = FindPoint[p6, p8, 49, 65.7, Right];&#xD;
      &#xD;
      p10 = FindPoint[p2, p11, 50, 41.5, Right];&#xD;
      p13 = FindPoint[p2, p11, 61.9, 39.3, Left];&#xD;
      p12 = FindPoint[p10, p11, 55.8, 41.5, Right];&#xD;
      p14 = FindPoint[p12, p13, 39.4, 36.7, Right];&#xD;
      p15 = FindPoint[p13, p14, 49, 65.7, Left];&#xD;
      &#xD;
      {p1, p2, p3, p4, p5, p6, p7, p8, p10, p11, p12, p13, p14, p15}&#xD;
      ]&#xD;
&#xD;
Now we can plot it easily:&#xD;
&#xD;
    trajectoriesdata = (FindPoints /@ Subdivide[0, 2 Pi, 100])\[Transpose];&#xD;
    Manipulate[&#xD;
      Graphics[{Arrowheads[Large], Arrow /@ trajectoriesdata, Thick, Red, Line[FindLines[\[Theta]]]},&#xD;
       PlotRange -&amp;gt; {{-150, 150}, {-120, 70}}, &#xD;
       ImageSize -&amp;gt; 800&#xD;
      ]&#xD;
     ,&#xD;
     {\[Theta], 0, 2 \[Pi]}&#xD;
    ]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
We can also make an entire bunch of legs at the same time and make a 3D beast!&#xD;
&#xD;
    Manipulate[&#xD;
     mp = 60;&#xD;
     n = 12;&#xD;
     \[CurlyPhi] = Table[Mod[5 \[Iota], n, 1], {\[Iota], 1, n}];&#xD;
     Graphics3D[{Darker@Yellow, Table[&#xD;
        Line[ &#xD;
         Map[Prepend[mp \[Iota]], &#xD;
          FindLines[\[Theta] + \[CurlyPhi][[\[Iota]]] (2 Pi/n)], {2}]],&#xD;
        {\[Iota], n}&#xD;
        ]&#xD;
       , Black, Line[{{mp 1, 0, 0}, {mp n, 0, 0}}]&#xD;
       }&#xD;
      ,&#xD;
      Lighting -&amp;gt; &amp;#034;Neutral&amp;#034;,&#xD;
      PlotRangePadding -&amp;gt; Scaled[.1],&#xD;
      PlotRange -&amp;gt; {{-mp, (n + 1) mp}, {-150, 150}, {-150, 150}},&#xD;
      Boxed -&amp;gt; False,&#xD;
      ImageSize -&amp;gt; 700&#xD;
      ]&#xD;
     ,&#xD;
     {\[Theta], 0, 2 \[Pi]}&#xD;
     ]&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
From the side we can look at how the legs of 4-pair-legged and 6-pair-legged versions of the beasts work:&#xD;
&#xD;
![enter image description here][9] ![enter image description here][10]&#xD;
&#xD;
Hope you enjoyed this! Perhaps someone else can make this thing actually walk over a (bumpy) surface?&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=LVDKumerus2.jpg&amp;amp;userId=73716&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-05-29at00.51.53.png&amp;amp;userId=73716&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=strandbeest_sketch.png&amp;amp;userId=73716&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=strandbeest_trajectories.png&amp;amp;userId=73716&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-05-29at00.16.23.png&amp;amp;userId=73716&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Strandbeest_Leg_Proportions-01.png&amp;amp;userId=73716&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=3493strandwalk.gif&amp;amp;userId=73716&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=3587strandwalk3D.gif&amp;amp;userId=73716&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=4legged.gif&amp;amp;userId=73716&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=6legged.gif&amp;amp;userId=73716</description>
    <dc:creator>Sander Huisman</dc:creator>
    <dc:date>2016-05-28T23:02:16Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/498246">
    <title>Dzhanibekov effect or tennis racket theorem</title>
    <link>https://community.wolfram.com/groups/-/m/t/498246</link>
    <description>![Animation showing movement of a rigid body according to Dzhanibekov effect or tennis racket theorem][1]&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: /c/portal/getImageAttachment?filename=fg546ukuhjfgvg5.gif&amp;amp;userId=11733&#xD;
  [2]: https://www.wolframcloud.com/obj/61fabce7-3d2f-4042-8e61-9fe54c4c353e</description>
    <dc:creator>Mariusz Iwaniuk</dc:creator>
    <dc:date>2015-05-18T11:39:33Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/790989">
    <title>Gravity wave visualization: celebrating LIGO first direct detection of gravitational waves</title>
    <link>https://community.wolfram.com/groups/-/m/t/790989</link>
    <description>![enter image description here][1]&#xD;
&#xD;
With all of the rumors and excitement about the gravity wave press release tomorrow, I was reminded of this code I&amp;#039;ve had lying around for years for creating a gravity wave visualization (seen above) for illustrative purposes. You can find also a [video here][2]. It was inspired by an interaction I had years ago (unfortunately I can&amp;#039;t find the interaction in my email) with someone on the [LISA][3] project wanting to use Mathematica to re-create a visualization they had. This code was the result of that interaction. &#xD;
&#xD;
First, the primary goal was to generate a &amp;#034;space-time&amp;#034; surface and mesh that had a double-armed spiral wave on it. The following code generates that. Its dependent on a rotation angle Theta which is not specified here:&#xD;
&#xD;
    Plot3D[(60 Cos[&#xD;
       2 ArcTan[y/(x + 0.00001)] - \[Theta] + 0.544331 Sqrt[x^2 + y^2]])/(&#xD;
     20 + Sqrt[x^2 + y^2]), {x, -45, 45}, {y, -45, 45}, PlotPoints -&amp;gt; 100,&#xD;
      Mesh -&amp;gt; 20, MeshStyle -&amp;gt; {RGBColor[.5, .5, .5, .5]}, Boxed -&amp;gt; False,&#xD;
      BoxRatios -&amp;gt; Automatic, Axes -&amp;gt; False, &#xD;
     PlotStyle -&amp;gt; {RGBColor[.3, .3, .8]}, ImageSize -&amp;gt; {1024, 768}, &#xD;
     Lighting -&amp;gt; {{&amp;#034;Directional&amp;#034;, White, ImageScaled[{0, 0, 2.}]}}, &#xD;
     ViewPoint -&amp;gt; {-0.011, -3.043, 1.479}, Background -&amp;gt; Black, &#xD;
     BoundaryStyle -&amp;gt; RGBColor[.5, .5, .5, .5]]&#xD;
&#xD;
I wanted to overlay 2 stars or black holes on top of the surface. Combining the above with  this overlay and giving a value to the angle Theta we get:&#xD;
&#xD;
    With[{\[Theta] = 0}, &#xD;
     Show[Plot3D[(&#xD;
       60 Cos[2 ArcTan[y/(x + 0.00001)] - \[Theta] + &#xD;
          0.544331 Sqrt[x^2 + y^2]])/(&#xD;
       20 + Sqrt[x^2 + y^2]), {x, -45, 45}, {y, -45, 45}, &#xD;
       PlotPoints -&amp;gt; 100, Mesh -&amp;gt; 20, &#xD;
       MeshStyle -&amp;gt; {RGBColor[.5, .5, .5, .5]}, Boxed -&amp;gt; False, &#xD;
       BoxRatios -&amp;gt; Automatic, Axes -&amp;gt; False, &#xD;
       PlotStyle -&amp;gt; {RGBColor[.3, .3, .8]}, ImageSize -&amp;gt; {1024, 768}, &#xD;
       Lighting -&amp;gt; {{&amp;#034;Directional&amp;#034;, White, ImageScaled[{0, 0, 2.}]}}, &#xD;
       ViewPoint -&amp;gt; {-0.011, -3.043, 1.479}, Background -&amp;gt; Black, &#xD;
       BoundaryStyle -&amp;gt; RGBColor[.5, .5, .5, .5]], &#xD;
      Graphics3D[{Directive[Hue[.58, 0, 1], &#xD;
         Lighting -&amp;gt; &#xD;
          Join[{{&amp;#034;Ambient&amp;#034;, Black}}, &#xD;
           Table[{&amp;#034;Directional&amp;#034;, Hue[.58, .5, 1], &#xD;
             ImageScaled[{Sin[x], Cos[x], -.5}]}, {x, 0, 2 Pi - 2 Pi/8, &#xD;
             2 Pi/8}]]], &#xD;
        Sphere[{2 Cos[\[Theta] - \[Pi]/2], 2 Sin[\[Theta] - \[Pi]/2], 3}, &#xD;
         1], Sphere[{Cos[\[Theta] + \[Pi]/2], Sin[\[Theta] + \[Pi]/2], 3},&#xD;
          1]}], PlotRange -&amp;gt; All]]&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
Next, I wanted to animate this to give the effect that the spiral arms are rotating outwards. That&amp;#039;s done by incrementing the angle Theta and generating a list of frames that can then be exported.&#xD;
&#xD;
    anim = Table[&#xD;
      Rasterize[&#xD;
       Show[Plot3D[(&#xD;
         60 Cos[2 ArcTan[y/(x + 0.00001)] - \[Theta] + &#xD;
            0.544331 Sqrt[x^2 + y^2]])/(&#xD;
         20 + Sqrt[x^2 + y^2]), {x, -45, 45}, {y, -45, 45}, &#xD;
         PlotPoints -&amp;gt; 100, Mesh -&amp;gt; 20, &#xD;
         MeshStyle -&amp;gt; {RGBColor[.5, .5, .5, .5]}, Boxed -&amp;gt; False, &#xD;
         BoxRatios -&amp;gt; Automatic, Axes -&amp;gt; False, &#xD;
         PlotStyle -&amp;gt; {RGBColor[.3, .3, .8]}, ImageSize -&amp;gt; {800, 450}, &#xD;
         Lighting -&amp;gt; {{White, ImageScaled[{0, 0, 2.}]}}, &#xD;
         ViewPoint -&amp;gt; {-0.011, -3.043, 1.479}, &#xD;
         Background -&amp;gt; RGBColor[0, 0, 0], BoundaryStyle -&amp;gt; Gray], &#xD;
        Graphics3D[{Directive[Hue[.58, 0, 1], &#xD;
           Lighting -&amp;gt; &#xD;
            Join[{{&amp;#034;Ambient&amp;#034;, Black}}, &#xD;
             Table[{&amp;#034;Directional&amp;#034;, Hue[.58, .5, 1], &#xD;
               ImageScaled[{Sin[x], Cos[x], -.5}]}, {x, 0, 2 Pi - 2 Pi/8, &#xD;
               2 Pi/8}]]], &#xD;
          Sphere[{2 Cos[\[Theta] - \[Pi]/2], 2 Sin[\[Theta] - \[Pi]/2], &#xD;
            3}, 1], Sphere[{Cos[\[Theta] + \[Pi]/2], &#xD;
            Sin[\[Theta] + \[Pi]/2], 3}, 1]}], &#xD;
        PlotRange -&amp;gt; All]], {\[Theta], 0, 2 \[Pi], .1}];&#xD;
&#xD;
And then to export it to an animated GIF: &#xD;
&#xD;
    Export[&amp;#034;GravityWave.gif&amp;#034;, anim]&#xD;
&#xD;
The result is the animation at the top of this post.&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ezgif.com-optimize%283%29.gif&amp;amp;userId=20103&#xD;
  [2]: https://www.youtube.com/watch?v=WiNKulqt0SE&#xD;
  [3]: http://lisa.nasa.gov/&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=gravitywave60.png&amp;amp;userId=25355&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=GravityWave.gif&amp;amp;userId=25355</description>
    <dc:creator>Jeffrey Bryant</dc:creator>
    <dc:date>2016-02-10T19:35:05Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/118650">
    <title>Development of massively on-line education material for materials science</title>
    <link>https://community.wolfram.com/groups/-/m/t/118650</link>
    <description>I&amp;#039;m working on the development of some massively on-line education material ([i]whether massively online open courseware is a good thing is a different question, but if it is going to happen, we might as well try to get in early and do it well[/i]).  I&amp;#039;m creating content for an entire materials science undergraduate curriculum. The most important part of the content involves computation, visualization, and problem-solving.  The students build up a solution by solving a set of sub-problems and then incorporate all of the solutions into something that is meaningful, and hopefully, satisfying to them.  Because the solutions to the subproblems are interdependent, I have to provide a mechanism for showing a solution and allow them to proceed to the end of the lesson.  If I just provide the solution carte blanche, the student doesn&amp;#039;t get the benefit and satisfaction of solving it themselves.  Thus, there are two competing   factors: 1) force the students to struggle a bit and learn by doing so, 2) provide content that permits them to get to the end and hopefully recognize the beauty of completing a complicated problem.

I&amp;#039;ve rolled out some of this content in the form of &amp;#034;master classes on materials science problem solving&amp;#034; and have had a chance to observe how students interact with the content. ([i]these are the observations that lead to the monstrosity of code that is posted above[/i]). Here is the crononlogy:

(1) In my first iteration, I asked them to solve a subproblem and then provided the solution in a closed group.  Students now are used to being fed immediate content and as soon as the problems became challenging, they would just open the content and accept it as &amp;#034;the solution&amp;#034;.  The opportunity to teach by doing was a lost.

(2) In my second iteration, I attempted to create some small barrier to &amp;#034;just clicking and not thinking&amp;#034;. I ask them to work out a subproblem, and  I put my solutions into a separate .m file. Each of the files was encoded---the students had to go find the encryption key to display the solution.  Initially, the solutions appeared in the content notebook, but I evolved to having each subproblem&amp;#039;s solution appear in a separate notebook.  This would allow easy comparison between their solution and mine.  Here is what happened, with the entire solution dumped onto the screen and they weren&amp;#039;t paying much attention to the content and solution development.  They were trying their own solutions, but they weren&amp;#039;t getting the full benefit of learning my solutions.

(3) Third iteration: In an attempt to have the students read and follow the logic of a developed solution, I had each substep of the solution appear in a dialog with a button.  Clicking the button dumped that substep into a developing notebook.  This worked better, but I found a fraction of students would just look for the button and not the solution.  I had to find a way to slow them down.

(4) Thus, the fourth iteration is [b][url=http://community.wolfram.com/groups/-/m/t/54822]what you see here[/url][/b].  I&amp;#039;ll adopt John&amp;#039;s solution to put up signposts (think Burma shave).  I&amp;#039;ll also need to adapt [b][url=http://community.wolfram.com/groups/-/m/t/48441]John&amp;#039;s previous solution[/url][/b]  to this pause technique for material that contains evaluatable expressions.  </description>
    <dc:creator>W. Craig Carter</dc:creator>
    <dc:date>2013-09-05T07:30:05Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/463721">
    <title>Aftermath of the solar eclipse</title>
    <link>https://community.wolfram.com/groups/-/m/t/463721</link>
    <description>![Aftermath of the solar eclipse][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=4902Hero.gif&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/5838919a-e64d-49fe-9193-c6ce123184f2</description>
    <dc:creator>Marco Thiel</dc:creator>
    <dc:date>2015-03-21T01:18:08Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2448552">
    <title>[WSG22] Daily Study Group: Quantum Computation Framework (Jan 24, 2022)</title>
    <link>https://community.wolfram.com/groups/-/m/t/2448552</link>
    <description>![enter image description here][1]&#xD;
![enter image description here][2]&#xD;
A new study group devoted to [Quantum Computation Framework][3] begins Monday Jan 24th! A list of daily topics can be found on our Daily Study Groups page. This group will be led by me and few other developers from Wolfram Quantum Team. We will meet daily, Monday to Friday. Study group sessions include time for exercises, discussion and Q&amp;amp;A. This study group will help you acquire an intro knowledge of quantum computing and learn how to implement quantum algorithms in the [Wolfram Quantum Computation Framework][4]. Feel free to explore [our framework][5].&#xD;
&#xD;
Sign up: [Study group registration page][6]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2022-01-17at3.53.39PM.png&amp;amp;userId=1539902&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=FrontImage.jpeg&amp;amp;userId=1539902&#xD;
  [3]: https://www.bigmarker.com/series/daily-study-group-quantum-computation-framework/series_details?utm_bmcr_source=wolfram-u&#xD;
  [4]: https://www.wolframcloud.com/obj/wolframquantumframework/DeployedResources/Paclet/Wolfram/QuantumFramework/&#xD;
  [5]: https://www.wolframcloud.com/obj/wolframquantumframework/DeployedResources/Paclet/Wolfram/QuantumFramework/&#xD;
  [6]: https://www.bigmarker.com/series/daily-study-group-quantum-computation-framework/series_details?utm_bmcr_source=community</description>
    <dc:creator>Mohammad Bahrami</dc:creator>
    <dc:date>2022-01-17T18:20:25Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/852052">
    <title>Visualizing Interstellar&amp;#039;s Wormhole (Christopher Nolan Movie) with Kip S. Thorne et al. Algorithm</title>
    <link>https://community.wolfram.com/groups/-/m/t/852052</link>
    <description>![enter image description here][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [older image]: https://community.wolfram.com//c/portal/getImageAttachment?filename=VisualizingInterstellar%27sWormholefromarticletoprogramming.gif&amp;amp;userId=20103&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=__ezgif.com-optimize%283%29.gif&amp;amp;userId=11733&#xD;
  [2]: https://www.wolframcloud.com/obj/0af902b9-3280-4f3d-9272-454eb63c7fcd</description>
    <dc:creator>Jason Biggs</dc:creator>
    <dc:date>2016-05-06T13:44:35Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/515162">
    <title>[GiF] Flight of Badminton Shuttlecocks</title>
    <link>https://community.wolfram.com/groups/-/m/t/515162</link>
    <description>**See attached notebook for details**. A [shuttlecock][1] (previously called Shuttlecork) (also called a bird or birdie) is a high-drag projectile used in the sport of badminton. It has an open conical shape: the cone is formed from 16 or so overlapping feathers, usually goose or duck, embedded into a rounded cork base. The cork is covered with thin leather. The shuttlecock&amp;#039;s shape makes it extremely aerodynamically stable. Regardless of initial orientation, it will turn to fly cork first, and remain in the cork-first orientation. &#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
*Image courtesy of IOP Science*&#xD;
&#xD;
The name shuttlecock is frequently shortened to shuttle. The &amp;#034;shuttle&amp;#034; part of the name was probably derived from its back-and-forth motion during the game, resembling the shuttle of a loom; the &amp;#034;cock&amp;#034; part of the name was probably derived from the resemblance of the feathers to those on a cockerel.&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
**The code with NDSolveValue is attached**. Here is the resulting simulation of the flight of badminton shuttlecocks:&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][6]&#xD;
&#xD;
&amp;gt; [References][7]&#xD;
&#xD;
&#xD;
  [1]: https://en.wikipedia.org/?title=Shuttlecock&#xD;
  [2]: /c/portal/getImageAttachment?filename=sdf54wyehfgsd54qt.png&amp;amp;userId=11733&#xD;
  [3]: /c/portal/getImageAttachment?filename=sz.png&amp;amp;userId=476423&#xD;
  [4]: /c/portal/getImageAttachment?filename=ssdf3544ytjkjghd.gif&amp;amp;userId=11733&#xD;
  [5]: /c/portal/getImageAttachment?filename=1523Anim.gif&amp;amp;userId=476423&#xD;
  [6]: https://www.wolframcloud.com/obj/ff04670b-b2e3-4281-86a5-0cbb60e61592&#xD;
  [7]: http://iopscience.iop.org/1367-2630/17/6/063001/article</description>
    <dc:creator>Mariusz Iwaniuk</dc:creator>
    <dc:date>2015-06-18T14:56:37Z</dc:date>
  </item>
</rdf:RDF>

