<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<title>PhasicFlow: Problem Definition</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname"><a href="https://cemf.ir">PhasicFlow</a>
   &#160;<span id="projectnumber"><a href="https://cemf.ir">v0.1</a></span>
   </div>
   <div id="projectbrief"><a href="www.github.com/PhasicFlow">www.cemf.ir</a></div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('md_tutorials_sphereGranFlow_toteblender_ReadMe.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="PageDoc"><div class="header">
  <div class="headertitle">
<div class="title">Problem Definition </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The problem is to simulate a double pedestal tote blender with the diameter <b>0.03 m</b> and <b>0.1 m</b> respectively, the length <b>0.3 m</b>, rotating at <b>28 rpm</b>. This blender is filled with <b>20000</b> Particles. The timestep for integration is <b>0.00001 s</b>. There is one type of Particle in this blender that are being inserted during simulation to fill the blender.</p><ul>
<li><b>20000</b> particles with <b>4 mm</b> diameter, at the rate of 20000 particles/s for 1 sec. ŮŽAfter settling particles, this blender starts to rotate at t=**1s**.</li>
</ul>
<p>&lt;html&gt; &lt;body&gt; </p><div align="center"><b> a view of the tote-blender while rotating </b> <div align="center"> &lt;img src="sample sample sample sample", width=700px&gt; </div><p> &lt;/body&gt; &lt;/html&gt;</div><div align="center"><h1>Setting up the Case</h1>
</div><div align="center"> As it has been explained in the previous cases, the simulation case setup is based on text-based scripts. Here, the simulation case setup are sotred in two folders: <code>caseSetup</code>, <code>setting</code>. (see the above folders). Unlike the previous cases, this case does not have the <code>stl</code> file. and the geometry is described in the <code>geometryDict</code> file.</div><div align="center"><h2>Defining particles</h2>
</div><div align="center"> Then in the <code>caseSetup/sphereShape</code> the diameter and the material name of the particles are defined. <div class="fragment"><div class="line"> {C++}</div>
<div class="line">// names of shapes </div>
<div class="line">names       (sphere1);  </div>
<div class="line">// diameter of shapes (m)</div>
<div class="line">diameters   (0.004);</div>
<div class="line">// material names for shapes    </div>
<div class="line">materials   (prop1);    </div>
</div><!-- fragment --></div><div align="center"><h2>Particle Insertion</h2>
</div><div align="center"> In this case we have a region for ordering particles. These particles are placed in this blender. For example the script for the inserted particles is shown below.</div><div align="center"><div align="center"> in <b>caseSetup/particleInsertion</b> file </div></div><div align="center"><div class="fragment"><div class="line"> {C++}</div>
<div class="line">// positions particles </div>
<div class="line">positionParticles</div>
<div class="line">{</div>
<div class="line">// ordered positioning</div>
<div class="line">    method positionOrdered;     </div>
<div class="line">// maximum number of particles in the simulation</div>
<div class="line">    maxNumberOfParticles 40000;</div>
<div class="line">// perform initial sorting based on morton code? </div>
<div class="line">    mortonSorting Yes;             </div>
<div class="line">// cylinder for positioning particles </div>
<div class="line">    cylinder</div>
<div class="line">    {</div>
<div class="line">// Coordinates of top cylinderRegion (m,m,m)    </div>
<div class="line">        p1 (0.05 0.0 0.12);</div>
<div class="line">        p2 (0.05 0.0 0.22);</div>
<div class="line">// radius of cylinder</div>
<div class="line">        radius 0.066;</div>
<div class="line">    }</div>
<div class="line"> </div>
<div class="line">    positionOrderedInfo</div>
<div class="line">    {</div>
<div class="line">// minimum space between centers of particles</div>
<div class="line">        diameter 0.003;</div>
<div class="line">// number of particles in the simulation        </div>
<div class="line">        numPoints 20000;</div>
<div class="line">// axis order for filling the space with particles          </div>
<div class="line">        axisOrder (z y x);  </div>
<div class="line">    }</div>
<div class="line">}</div>
</div><!-- fragment --></div><div align="center"><h2>Interaction between particles</h2>
</div><div align="center"> In <code>caseSetup/interaction</code> file, material names and properties and interaction parameters are defined: interaction between the particles of rotating drum. Since we are defining 1 material for simulation, the interaction matrix is 1x1 (interactions are symetric). <div class="fragment"><div class="line"> {C++}</div>
<div class="line"> // a list of materials names</div>
<div class="line">materials      (prop1);</div>
<div class="line">// density of materials [kg/m3]</div>
<div class="line">densities      (1000.0);   </div>
<div class="line"> </div>
<div class="line">contactListType   sortedContactList; </div>
<div class="line"> </div>
<div class="line">model</div>
<div class="line">{</div>
<div class="line">   contactForceModel nonLinearNonLimited;</div>
<div class="line">   rollingFrictionModel normal;</div>
<div class="line">   /*</div>
<div class="line">   Property (prop1-prop1);</div>
<div class="line">   */</div>
<div class="line">// Young modulus [Pa]</div>
<div class="line">   Yeff  (1.0e6);       </div>
<div class="line">// Shear modulus [Pa]</div>
<div class="line">   Geff  (0.8e6);       </div>
<div class="line">// Poisson&#39;s ratio [-]</div>
<div class="line">   nu    (0.25);        </div>
<div class="line">// coefficient of normal restitution</div>
<div class="line">   en    (0.7);         </div>
<div class="line">// coefficient of tangential restitution</div>
<div class="line">   et    (1.0);          </div>
<div class="line">// dynamic friction</div>
<div class="line">   mu    (0.3);          </div>
<div class="line">// rolling friction</div>
<div class="line">   mur   (0.1);          </div>
<div class="line">        </div>
<div class="line">}</div>
</div><!-- fragment --></div><div align="center"><h2>Settings</h2>
</div><div align="center"> <h3>Geometry</h3>
</div><div align="center"> In the <code>settings/geometryDict</code> file, the geometry and axis of rotation is defined for the drum. The geometry is composed of a cylinder inlet and outlet, cone shell top and down, a cylinder shell and enter and exit Gate. <div class="fragment"><div class="line"> {C++}</div>
<div class="line">surfaces</div>
<div class="line">{</div>
<div class="line">    topGate</div>
<div class="line">    topGate</div>
<div class="line">    {</div>
<div class="line">    // type of wall</div>
<div class="line">        type cylinderWall;</div>
<div class="line">    // begin point of cylinder axis </div>
<div class="line">        p1 (0.0    0.0   0.299);</div>
<div class="line">    // end point of cylinder axis </div>
<div class="line">        p2 (0.0    0.0   0.3);</div>
<div class="line">    // radius at p1  </div>
<div class="line">        radius1  0.03;</div>
<div class="line">    // radius at p2     </div>
<div class="line">        radius2  0.0001;</div>
<div class="line">    // material of wall</div>
<div class="line">        material solidProperty;</div>
<div class="line">    // motion component name</div>
<div class="line">        motion axisOfRotation;  </div>
<div class="line">    }</div>
<div class="line"> </div>
<div class="line">    topCylinder</div>
<div class="line">    {</div>
<div class="line">    // type of the wall</div>
<div class="line">        type        cylinderWall;</div>
<div class="line">    // begin point of cylinder axis     </div>
<div class="line">        p1          (0.0 0.0 0.28);</div>
<div class="line">    // end point of cylinder axis  </div>
<div class="line">        p2          (0.0 0.0 0.3);</div>
<div class="line">    // radius at p1  </div>
<div class="line">        radius1     0.03;</div>
<div class="line">    // radius at p2     </div>
<div class="line">        radius2     0.03;</div>
<div class="line">    // number of divisions      </div>
<div class="line">        resolution  36;</div>
<div class="line">    // material name of this wall</div>
<div class="line">        material    prop1;</div>
<div class="line">    // motion component name    </div>
<div class="line">        motion axisOfRotation;      </div>
<div class="line">    }</div>
<div class="line"> </div>
<div class="line">    coneShelltop</div>
<div class="line">    {</div>
<div class="line">    // type of the wall </div>
<div class="line">        type        cylinderWall;</div>
<div class="line">    // begin point of cylinder axis     </div>
<div class="line">        p1          (0.0 0.0 0.2);</div>
<div class="line">    // end point of cylinder axis  </div>
<div class="line">        p2          (0.0 0.0 0.28);</div>
<div class="line">    // radius at p1  </div>
<div class="line">        radius1     0.1;</div>
<div class="line">    // radius at p2     </div>
<div class="line">        radius2     0.03;</div>
<div class="line">    // number of divisions      </div>
<div class="line">        resolution  36;</div>
<div class="line">    // material name of this wall       </div>
<div class="line">        material    prop1;</div>
<div class="line">    // motion component name    </div>
<div class="line">        motion axisOfRotation;      </div>
<div class="line">    }</div>
<div class="line"> </div>
<div class="line">    cylinderShell</div>
<div class="line">    {</div>
<div class="line">    // type of the wall</div>
<div class="line">        type        cylinderWall;</div>
<div class="line">    // begin point of cylinder axis     </div>
<div class="line">        p1          (0.0 0.0 0.1);</div>
<div class="line">    // end point of cylinder axis</div>
<div class="line">        p2          (0.0 0.0 0.2);</div>
<div class="line">    // radius at p1   </div>
<div class="line">        radius1     0.1;</div>
<div class="line">    // radius at p2         </div>
<div class="line">        radius2     0.1;</div>
<div class="line">    // number of divisions      </div>
<div class="line">        resolution  36;</div>
<div class="line">    // material name of this wall           </div>
<div class="line">        material    prop1; </div>
<div class="line">    // motion component name    </div>
<div class="line">        motion axisOfRotation;      </div>
<div class="line">    }</div>
<div class="line"> </div>
<div class="line">    coneShelldown</div>
<div class="line">    {</div>
<div class="line">    // type of the wall</div>
<div class="line">        type        cylinderWall;</div>
<div class="line">    // begin point of cylinder axis     </div>
<div class="line">        p1          (0.0 0.0 0.02);</div>
<div class="line">    // end point of cylinder axis  </div>
<div class="line">        p2          (0.0 0.0 0.1);</div>
<div class="line">    // radius at p1  </div>
<div class="line">        radius1     0.03;</div>
<div class="line">    // radius at p2     </div>
<div class="line">        radius2     0.1;</div>
<div class="line">    // number of divisions      </div>
<div class="line">        resolution  36;</div>
<div class="line">    // material name of this wall           </div>
<div class="line">        material    prop1;</div>
<div class="line">    // motion component name    </div>
<div class="line">        motion axisOfRotation;      </div>
<div class="line">    }</div>
<div class="line">    /*</div>
<div class="line">    This is a plane wall at the exit of silo</div>
<div class="line">    */</div>
<div class="line"> </div>
<div class="line">        bottomCylinder</div>
<div class="line">    {</div>
<div class="line">    // type of the wall</div>
<div class="line">        type        cylinderWall;   </div>
<div class="line">    // begin point of cylinder axis </div>
<div class="line">        p1          (0.0 0.0 0.0);</div>
<div class="line">    // end point of cylinder axis     </div>
<div class="line">        p2          (0.0 0.0 0.02);</div>
<div class="line">    // radius at p1  </div>
<div class="line">        radius1     0.03;</div>
<div class="line">    // radius at p2         </div>
<div class="line">        radius2     0.03;</div>
<div class="line">    // number of divisions          </div>
<div class="line">        resolution  36;</div>
<div class="line">    // material name of this wall           </div>
<div class="line">        material    prop1;</div>
<div class="line">    // motion component name        </div>
<div class="line">        motion axisOfRotation;      </div>
<div class="line">    }</div>
<div class="line">    exitGate</div>
<div class="line">    {</div>
<div class="line">        type planeWall;</div>
<div class="line">        p1 (-0.05    -0.05    0);</div>
<div class="line">        p2 (-0.05    0.05     0);</div>
<div class="line">        p3 ( 0.05    0.05     0);</div>
<div class="line">        p4 (0.05     -0.05    0);</div>
<div class="line">        material prop1;</div>
<div class="line">        motion axisOfRotation;      </div>
<div class="line">    }</div>
<div class="line">        </div>
<div class="line">}</div>
</div><!-- fragment --></div><div align="center"><h3>Rotating Axis Info</h3>
</div><div align="center"> In this part of <code>geometryDict</code> the information of rotating axis and speed of rotation are defined. Unlike the previous cases, the rotation of this blender starts at time=**0 s**. <div class="fragment"><div class="line"> {C++}</div>
<div class="line">// information for rotatingAxisMotion motion model </div>
<div class="line">rotatingAxisMotionInfo</div>
<div class="line">{</div>
<div class="line">    axisOfRotation </div>
<div class="line">    {</div>
<div class="line">        p1 (-0.1 0.0 0.15); // first point for the axis of rotation </div>
<div class="line">        p2 (0.1 0.0 0.15);  // second point for the axis of rotation</div>
<div class="line">        omega 1.5708;       // rotation speed ==&gt; 15 rad/s</div>
<div class="line">    // Start time of Geometry Rotating (s)      </div>
<div class="line">        startTime 1;</div>
<div class="line">    // End time of Geometry Rotating (s)</div>
<div class="line">        endTime 9.5;</div>
<div class="line">    }</div>
<div class="line">}</div>
</div><!-- fragment --></div><div align="center"><h2>Performing Simulation</h2>
</div><div align="center"> To perform simulations, enter the following commands one after another in the terminal.</div><div align="center">Enter <code>$ particlesPhasicFlow</code> command to create the initial fields for particles. <br  />
 Enter <code>$ geometryPhasicFlow</code> command to create the Geometry. <br  />
 At last, enter <code>$ sphereGranFlow</code> command to start the simulation. <br  />
 After finishing the simulation, you can use <code>$ pFlowtoVTK</code> to convert the results into vtk format storred in ./VTK folder. </div></div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>