Files
phasicFlow/doc/code-documentation/html/md_tutorials_sphereGranFlow_RotatingDrumWithBaffles_ReadMe.html
Hamidreza Norouzi b66082af0d doc
2023-04-02 11:35:43 -07:00

274 lines
16 KiB
HTML

<!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_RotatingDrumWithBaffles_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 rotating drum with the diameter <b>0.24 m</b>, the length <b>0.1 m</b> and <b>6</b> Baffles, rotating at <b>15 rpm</b>. This drum is filled with <b>20000</b> Particles.The timestep for integration is <b>0.00001 s</b>. There are 2 types of Particles in this drum each are beining inserted during simulation to fill the drum.</p><ul>
<li><b>12500</b> Particles with <b>4 mm</b> diameter, at the rate of 12500 particles/s for 1 sec.</li>
<li><b>7500</b> Particles with <b>5mm</b> diameter, at the rate of 7500 particles/s for 1 sec. <br />
</li>
</ul>
<p>&lt;html&gt; &lt;body&gt; </p><div align="center"><b> a view of the drum while rotating </b> <div align="center"> &lt;img src="https://github.com/PhasicFlow/phasicFlow/blob/media/media/rotatingDrumBffl.gif", 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 three folders: <code>caseSetup</code>, <code>setting</code> and <code>stl</code> (see the above folders).</div><div align="center"><h2>Defining small and large particles</h2>
</div><div align="center"> Then in the <code>caseSetup/sphereShape</code> the diameter and the material name of the particles are defined. Two sizes are defined: 4 and 5 mm. <div class="fragment"><div class="line"> {C++}</div>
<div class="line">// names of shapes </div>
<div class="line">names (smallSphere largeSphere);</div>
<div class="line">// diameter of shapes (m) </div>
<div class="line">diameters (0.004 0.005);</div>
<div class="line">// material names for shapes </div>
<div class="line">materials (lightMat heavyMat);</div>
</div><!-- fragment --></div><div align="center"><h2>Particle Insertion</h2>
</div><div align="center"> In this case we have two region for inserting our particles. In the both region we define rate of insertion, start and end time of insertion, information for the volume of the space throught which particles are being inserted. The insertion phase in the simulation is performed between times 0 and 1 seconds. <br />
For example, for the insertion region for inserting light 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">// Right Layer Region</div>
<div class="line">layerrightregion </div>
<div class="line">{</div>
<div class="line">// type of insertion region</div>
<div class="line"> type cylinderRegion;</div>
<div class="line">// insertion rate (particles/s) </div>
<div class="line"> rate 12500;</div>
<div class="line">// Start time of LightParticles insertion (s)</div>
<div class="line"> startTime 0; </div>
<div class="line">// End time of LightParticles insertion (s) </div>
<div class="line"> endTime 1;</div>
<div class="line">// Time Interval of LightParticles insertion (s)</div>
<div class="line"> interval 0.025; </div>
<div class="line"> </div>
<div class="line"> cylinderRegionInfo </div>
<div class="line"> {</div>
<div class="line">// Coordinates of cylinderRegion (m,m,m)</div>
<div class="line"> p2 (-0.15 0.25 0.05);</div>
<div class="line"> p1 (-0.15 0.24 0.05);</div>
<div class="line">// radius of cylinder (m)</div>
<div class="line"> radius 0.035;</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment --></div><div align="center"><h2>Interaction between particles and walls</h2>
</div><div align="center"> In <code>caseSetup/interaction</code> file, material names and properties and interaction parameters are defined: interaction between the particles and the shell of rotating drum. Since we are defining 3 materials for simulation, the interaction matrix is 3x3, while we are only required to enter upper-triangle elements (interactions are symetric).</div><div align="center"><div class="fragment"><div class="line"> {C++}</div>
<div class="line">// a list of materials names</div>
<div class="line">materials (lightMat heavyMat wallMat); </div>
<div class="line">// density of materials [kg/m3]</div>
<div class="line">densities (1000 1500 2500); </div>
<div class="line"> </div>
<div class="line"> /*</div>
<div class="line"> Property (lightMat-lightMat lightMat-heavyMat lightMat-wallMat</div>
<div class="line"> heavyMat-heavyMat heavyMat-wallMat</div>
<div class="line"> wallMat-wallMat );</div>
<div class="line"> */</div>
<div class="line">// Young modulus [Pa]</div>
<div class="line"> Yeff (1.0e6 1.0e6 1.0e6 </div>
<div class="line"> 1.0e6 1.0e6</div>
<div class="line"> 1.0e6);</div>
<div class="line">// Shear modulus [Pa] </div>
<div class="line"> Geff (0.8e6 0.8e6 0.8e6 </div>
<div class="line"> 0.8e6 0.8e6</div>
<div class="line"> 0.8e6);</div>
<div class="line">// Poisson&#39;s ratio [-]</div>
<div class="line"> nu (0.25 0.25 0.25 </div>
<div class="line"> 0.25 0.25</div>
<div class="line"> 0.25);</div>
<div class="line">// coefficient of normal restitution</div>
<div class="line"> en (0.97 0.97 0.85 </div>
<div class="line"> 0.97 0.85</div>
<div class="line"> 1.00);</div>
<div class="line">// coefficient of tangential restitution</div>
<div class="line"> et (1.0 1.0 1.0 </div>
<div class="line"> 1.0 1.0</div>
<div class="line"> 1.0);</div>
<div class="line">// dynamic friction </div>
<div class="line"> mu (0.65 0.65 0.35 </div>
<div class="line"> 0.65 0.35</div>
<div class="line"> 0.35);</div>
<div class="line">// rolling friction </div>
<div class="line"> mur (0.1 0.1 0.1 </div>
<div class="line"> 0.1 0.1</div>
<div class="line"> 0.1); </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 body, front and rear ends.</div><div align="center"><div class="fragment"><div class="line"> {C++}</div>
<div class="line">surfaces</div>
<div class="line">{</div>
<div class="line"> body</div>
<div class="line"> {</div>
<div class="line"> // type of the wall</div>
<div class="line"> type stlWall;</div>
<div class="line"> // file name in stl folder </div>
<div class="line"> file Body.stl;</div>
<div class="line"> // material name of this wall </div>
<div class="line"> material wallMat;</div>
<div class="line"> // motion component name </div>
<div class="line"> motion rotAxis; </div>
<div class="line"> }</div>
<div class="line"> /* This is a Cylinder Wall at the rear of cylinder */</div>
<div class="line"> rearEnd</div>
<div class="line"> {</div>
<div class="line"> // type of the wall</div>
<div class="line"> type cylinderWall;</div>
<div class="line"> // first point for the axis of rotation </div>
<div class="line"> p1 (-0.1974 0.2269 -0.001);</div>
<div class="line"> // second point for the axis of rotation </div>
<div class="line"> p2 (-0.1974 0.2269 0.0);</div>
<div class="line"> // Radius of p1 </div>
<div class="line"> radius1 0.0001;</div>
<div class="line"> // Radius of p2</div>
<div class="line"> radius2 0.12;</div>
<div class="line"> // material name of the wall</div>
<div class="line"> material wallMat;</div>
<div class="line"> // motion component name </div>
<div class="line"> motion rotAxis; </div>
<div class="line"> }</div>
<div class="line"> /* This a cylinder Wall at the front of Cylinder */</div>
<div class="line"> frontEnd</div>
<div class="line"> {</div>
<div class="line"> // type of the wall</div>
<div class="line"> type cylinderWall;</div>
<div class="line"> // first point for the axis of rotation </div>
<div class="line"> p1 (-0.1974 0.2269 0.0989);</div>
<div class="line"> // second point for the axis of rotation </div>
<div class="line"> p2 (-0.1974 0.2269 0.0990); </div>
<div class="line"> // Radius of p1</div>
<div class="line"> radius1 0.0001;</div>
<div class="line"> // Radius of p2</div>
<div class="line"> radius2 0.12;</div>
<div class="line"> // material name of the wall</div>
<div class="line"> material wallMat; </div>
<div class="line"> // motion component name </div>
<div class="line"> motion rotAxis; </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. The start of rotation is at 2 s. The first 2 seconds of simulation is for allowing particles to settle donw in the drum.</div><div align="center"><div class="fragment"><div class="line"> {C++}</div>
<div class="line">rotatingAxisMotionInfo</div>
<div class="line">{</div>
<div class="line"> rotAxis </div>
<div class="line"> {</div>
<div class="line"> // first point for the axis of rotation</div>
<div class="line"> p1 (-0.1974 0.2269 0);</div>
<div class="line"> // second point for the axis of rotation </div>
<div class="line"> p2 (-0.1974 0.2269 0.1);</div>
<div class="line"> // rotation speed (rad/s) =&gt; 15 rpm </div>
<div class="line"> omega 2.38733;</div>
<div class="line"> // Start time of Geometry Rotating </div>
<div class="line"> startTime 2;</div>
<div class="line"> // End time of Geometry Rotating</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>