diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/README.md b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/README.md
new file mode 100644
index 00000000..6aaa5d8f
--- /dev/null
+++ b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/README.md
@@ -0,0 +1,16 @@
+# Simulating a simple homogenization silo using periodic boundary
+
+## Problem
+A homogenization silo is used to mix particles inside a silo using the circulation of particles. A pneumatic conveying system is used to carry particles at the exit and re-enter them from the top. Here, we use a `periodic` boundary to simulate the action of the pneumatic conveyor system for circulating particles. Particles that are exiting from the bottom are re-entered from top using this boundary (`periodic`).
+
+
+
+A view of homogenization silo
+
+
+

+
+
+***
+
+
diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/caseSetup/interaction b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/caseSetup/interaction
new file mode 100755
index 00000000..f5fc4f23
--- /dev/null
+++ b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/caseSetup/interaction
@@ -0,0 +1,67 @@
+/* -------------------------------*- C++ -*--------------------------------- *\
+| phasicFlow File |
+| copyright: www.cemf.ir |
+\* ------------------------------------------------------------------------- */
+objectName interaction;
+objectType dicrionary;
+fileFormat ASCII;
+/*---------------------------------------------------------------------------*/
+materials (lightMat heavyMat wallMat); // a list of materials names
+
+densities (1000 1500.0 2500); // density of materials [kg/m3]
+
+contactListType sortedContactList;
+
+contactSearch
+{
+ method NBS; // method for broad search particle-particle
+
+ updateInterval 10;
+
+ sizeRatio 1.1;
+
+ cellExtent 0.55;
+
+ adjustableBox No;
+}
+
+model
+{
+ contactForceModel nonLinearLimited;
+
+ rollingFrictionModel normal;
+
+ /*
+
+ Property (lightMat-lightMat lightMat-heavyMat lightMat-wallMat
+ heavyMat-heavyMat heavyMat-wallMat
+ wallMat-wallMat );
+ */
+
+ Yeff (1.0e6 1.0e6 1.0e6 // Young modulus [Pa]
+ 1.0e6 1.0e6
+ 1.0e6);
+
+ Geff (0.8e6 0.8e6 0.8e6 // Shear modulus [Pa]
+ 0.8e6 0.8e6
+ 0.8e6);
+
+ nu (0.25 0.25 0.25 // Poisson's ratio [-]
+ 0.25 0.25
+ 0.25);
+
+ en (0.97 0.97 0.85 // coefficient of normal restitution
+ 0.97 0.85
+ 1.00);
+
+ mu (0.65 0.65 0.35 // dynamic friction
+ 0.65 0.35
+ 0.35);
+
+ mur (0.1 0.1 0.1 // rolling friction
+ 0.1 0.1
+ 0.1);
+}
+
+
+
diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/caseSetup/particleInsertion b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/caseSetup/particleInsertion
new file mode 100755
index 00000000..1ab71456
--- /dev/null
+++ b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/caseSetup/particleInsertion
@@ -0,0 +1,214 @@
+/* -------------------------------*- C++ -*--------------------------------- *\
+| phasicFlow File |
+| copyright: www.cemf.ir |
+\* ------------------------------------------------------------------------- */
+objectName particleInsertion;
+objectType dicrionary;
+fileFormat ASCII;
+/*---------------------------------------------------------------------------*/
+
+active Yes; // is insertion active -> yes or no
+
+/*
+ one layers of particles are packed
+*/
+layer0
+{
+ timeControl simulationTime;
+
+ regionType cylinder; // type of insertion region
+
+ rate 5100; // insertion rate (particles/s)
+
+ startTime 0; // (s)
+
+ endTime 0.5; // (s)
+
+ insertionInterval 0.025; // s
+
+ cylinderInfo
+ {
+ radius 0.09; // radius of cylinder (m)
+
+ p1 (0.0 0.0 0.1); // (m,m,m)
+
+ p2 (0.0 0.0 0.11); // (m,m,m)
+ }
+
+ setFields
+ {
+ velocity realx3 (0.0 0.0 -0.6); // initial velocity of inserted particles
+ }
+
+ mixture
+ {
+ parType1 1; // mixture composition of inserted particles
+ }
+}
+
+layer1
+{
+ timeControl simulationTime;
+
+ regionType cylinder; // type of insertion region
+
+ rate 5100; // insertion rate (particles/s)
+
+ startTime 0.7; // (s)
+
+ endTime 1.2; // (s)
+
+ insertionInterval 0.025; // s
+
+
+ cylinderInfo
+ {
+ radius 0.09;
+ p1 (0.0 0.0 0.16 ); // (m,m,m)
+ p2 (0.0 0.0 0.17); // (m,m,m)
+ }
+
+ setFields
+ {
+ velocity realx3 (0.0 0.0 -0.6);
+ }
+
+ mixture
+ {
+ parType2 1; // only parType2
+
+ }
+}
+
+layer2
+{
+ timeControl simulationTime;
+
+ regionType cylinder; // type of insertion region
+
+ rate 5100; // insertion rate (particles/s)
+
+ startTime 1.4; // (s)
+
+ endTime 1.9; // (s)
+
+ insertionInterval 0.025; // s
+
+ cylinderInfo
+ {
+ radius 0.09;
+ p1 ( 0.0 0.0 0.2 ); // (m,m,m)
+ p2 ( 0.0 0.0 0.21); // (m,m,m)
+ }
+
+ setFields
+ {
+ velocity realx3 (0.0 0.0 -0.6);
+ }
+
+ mixture
+ {
+ lightSphere 1; // only lightSphere
+
+ }
+}
+
+layer3
+{
+ timeControl simulationTime;
+
+ regionType cylinder; // type of insertion region
+
+ rate 5100; // insertion rate (particles/s)
+
+ startTime 2.1; // (s)
+
+ endTime 2.6; // (s)
+
+ insertionInterval 0.025; // s
+
+
+ cylinderInfo
+ {
+ radius 0.09;
+ p1 ( 0.0 0.0 0.28 ); // (m,m,m)
+ p2 ( 0.0 0.0 0.29); // (m,m,m)
+ }
+
+ setFields
+ {
+ velocity realx3 (0.0 0.0 -0.6);
+ }
+
+ mixture
+ {
+ heavySphere 1;
+
+ }
+}
+
+layer4
+{
+ timeControl simulationTime;
+
+ regionType cylinder; // type of insertion region
+
+ rate 5100; // insertion rate (particles/s)
+
+ startTime 2.8; // (s)
+
+ endTime 3.3; // (s)
+
+ insertionInterval 0.025; // s
+
+ cylinderInfo
+ {
+ radius 0.09;
+ p1 ( 0.0 0.0 0.37 ); // (m,m,m)
+ p2 ( 0.0 0.0 0.38); // (m,m,m)
+ }
+
+ setFields
+ {
+ velocity realx3 (0.0 0.0 -0.6);
+ }
+
+ mixture
+ {
+ lightSphere 1;
+
+ }
+}
+
+layer5
+{
+ timeControl simulationTime;
+
+ regionType cylinder; // type of insertion region
+
+ rate 5100; // insertion rate (particles/s)
+
+ startTime 3.4; // (s)
+
+ endTime 3.9; // (s)
+
+ insertionInterval 0.025; // s
+
+ cylinderInfo
+ {
+ radius 0.09;
+ p1 ( 0.0 0.0 0.38 ); // (m,m,m)
+ p2 ( 0.0 0.0 0.39); // (m,m,m)
+ }
+
+ setFields
+ {
+ velocity realx3 (0.0 0.0 -0.6);
+ }
+
+ mixture
+ {
+ heavySphere 1;
+
+ }
+}
\ No newline at end of file
diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/caseSetup/shapes b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/caseSetup/shapes
new file mode 100755
index 00000000..e4215a55
--- /dev/null
+++ b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/caseSetup/shapes
@@ -0,0 +1,15 @@
+/* -------------------------------*- C++ -*--------------------------------- *\
+| phasicFlow File |
+| copyright: www.cemf.ir |
+\* ------------------------------------------------------------------------- */
+objectName sphereDict;
+objectType sphereShape;
+fileFormat ASCII;
+/*---------------------------------------------------------------------------*/
+names (parType1 parType2); // names of shapes
+
+diameters (0.00885 0.0089); // diameter of shapes
+
+materials (lightMat heavyMat); // material names for shapes
+
+
diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/cleanThisCase b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/cleanThisCase
new file mode 100755
index 00000000..8a0ab919
--- /dev/null
+++ b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/cleanThisCase
@@ -0,0 +1,7 @@
+#!/bin/sh
+cd ${0%/*} || exit 1 # Run from this directory
+
+ls | grep -P "^(([0-9]+\.?[0-9]*)|(\.[0-9]+))$" | xargs -d"\n" rm -rf
+rm -rf VTK
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/homoSilo.jpeg b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/homoSilo.jpeg
new file mode 100644
index 00000000..5add888b
Binary files /dev/null and b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/homoSilo.jpeg differ
diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/runThisCase b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/runThisCase
new file mode 100755
index 00000000..e774b13c
--- /dev/null
+++ b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/runThisCase
@@ -0,0 +1,24 @@
+#!/bin/sh
+cd ${0%/*} || exit 1 # Run from this directory
+echo "\n<--------------------------------------------------------------------->"
+echo "1) Creating particles"
+echo "<--------------------------------------------------------------------->\n"
+particlesPhasicFlow
+
+echo "\n<--------------------------------------------------------------------->"
+echo "2) Creating geometry"
+echo "<--------------------------------------------------------------------->\n"
+geometryPhasicFlow
+
+echo "\n<--------------------------------------------------------------------->"
+echo "3) Running the case"
+echo "<--------------------------------------------------------------------->\n"
+sphereGranFlow
+
+echo "\n<--------------------------------------------------------------------->"
+echo "4) Converting to vtk"
+echo "<--------------------------------------------------------------------->\n"
+pFlowToVTK --fields diameter velocity id --binary
+
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/domainDict b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/domainDict
new file mode 100755
index 00000000..606db9b1
--- /dev/null
+++ b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/domainDict
@@ -0,0 +1,52 @@
+/* -------------------------------*- C++ -*--------------------------------- *\
+| phasicFlow File |
+| copyright: www.cemf.ir |
+\* ------------------------------------------------------------------------- */
+objectName domainDict;
+objectType dictionary;
+fileFormat ASCII;
+/*---------------------------------------------------------------------------*/
+
+// Simulation domain: every particles that goes outside this domain will be deleted
+globalBox
+{
+ min (-0.11 -0.11 -0.15);
+
+ max ( 0.11 0.11 0.4);
+}
+
+boundaries
+{
+
+ left
+ {
+ type exit;
+ }
+
+ right
+ {
+ type exit;
+ }
+
+ bottom
+ {
+ type exit;
+ }
+
+ top
+ {
+ type exit;
+ }
+
+ rear
+ {
+ type periodic;
+ }
+
+ front
+ {
+ type periodic;
+ }
+}
+
+
diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/geometryDict b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/geometryDict
new file mode 100755
index 00000000..b72f1c07
--- /dev/null
+++ b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/geometryDict
@@ -0,0 +1,87 @@
+/* -------------------------------*- C++ -*--------------------------------- *\
+| phasicFlow File |
+| copyright: www.cemf.ir |
+\* ------------------------------------------------------------------------- */
+objectName geometryDict;
+objectType dictionary;
+fileFormat ASCII;
+/*---------------------------------------------------------------------------*/
+
+motionModel rotatingAxis;
+
+rotatingAxisInfo
+{
+ // for opening the gate of silo between time 4.1 and 5.1 s
+ gateMotion
+ {
+ p1 (-0.04 -0.04 -0.1);
+ p2 (-0.04 -0.04 0.0);
+ omega 3.14;
+ startTime 4.1;
+ endTime 5.1;
+ }
+}
+
+surfaces
+{
+ cylinderShell
+ {
+ type cylinderWall; // other options: cuboidWall and planeWall
+
+ p1 (0.0 0.0 0.0); // begin point of cylinder axis
+
+ p2 (0.0 0.0 0.4); // end point of cylinder axis
+
+ radius1 0.1; // radius at p1
+
+ radius2 0.1; // radius at p2
+
+ resolution 36; // number of divisions
+
+ material wallMat; // material name of this wall
+ }
+
+ coneShell
+ {
+ type cylinderWall; // other options: cuboidWall and planeWall
+
+ p1 (0.0 0.0 -0.1); // begin point of cylinder axis
+
+ p2 (0.0 0.0 0.0); // end point of cylinder axis
+
+ radius1 0.04; // radius at p1
+
+ radius2 0.1; // radius at p2
+
+ resolution 36; // number of divisions
+
+ material wallMat; // material name of this wall
+ }
+
+ /*
+ This is a plane wall at the exit of silo
+ */
+
+ exitGate
+ {
+ type planeWall; // other options: cuboidWall and cylinderWall
+
+ p1 (-0.04 -0.04 -0.1); // first point of the wall
+
+ p2 ( 0.04 -0.04 -0.1); // second point of the wall
+
+ p3 ( 0.04 0.04 -0.1); // third point of the wall
+
+ p4 (-0.04 0.04 -0.1); // fourth point of the wall
+
+ material wallMat; // material name of the wall
+
+ motion gateMotion;
+ }
+}
+
+
+
+
+
+
diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/particlesDict b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/particlesDict
new file mode 100755
index 00000000..a01a553e
--- /dev/null
+++ b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/particlesDict
@@ -0,0 +1,36 @@
+/* -------------------------------*- C++ -*--------------------------------- *\
+| phasicFlow File |
+| copyright: www.cemf.ir |
+\* ------------------------------------------------------------------------- */
+objectName particlesDict;
+objectType dictionary;
+fileFormat ASCII;
+/*---------------------------------------------------------------------------*/
+setFields
+{
+ /*
+ Default value for fields defined for particles
+ These fields should always be defined for simulations with
+ spherical particles.
+ */
+
+ defaultValue
+ {
+ velocity realx3 (0 0 0); // linear velocity (m/s)
+
+ acceleration realx3 (0 0 0); // linear acceleration (m/s2)
+
+ rVelocity realx3 (0 0 0); // rotational velocity (rad/s)
+
+ shapeName word parType1; // name of the particle shape
+ }
+
+ selectors
+ {}
+}
+
+positionParticles
+{
+ method empty; // empty simulation
+}
+
diff --git a/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/settingsDict b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/settingsDict
new file mode 100755
index 00000000..0f119f33
--- /dev/null
+++ b/tutorials/sphereGranFlow/homogenizationSilo-PeriodicBoundary/settings/settingsDict
@@ -0,0 +1,41 @@
+/* -------------------------------*- C++ -*--------------------------------- *\
+| phasicFlow File |
+| copyright: www.cemf.ir |
+\* ------------------------------------------------------------------------- */
+objectName settingsDict;
+objectType dictionary;
+fileFormat ASCII;
+/*---------------------------------------------------------------------------*/
+run homogenizationSilo;
+
+dt 0.00001; // time step for integration (s)
+
+startTime 0.0; // start time for simulation
+
+endTime 20; // end time for simulation
+
+saveInterval 0.05; // time interval for saving the simulation
+
+timePrecision 4; // maximum number of digits for time folder
+
+g (0 0 -9.8); // gravity vector (m/s2)
+
+
+// overrides the default behavior
+includeObjects (diameter);
+
+// exclude unnecessary data from saving on disk
+excludeObjects (rVelocity.dy1 rVelocity.dy2 rVelocity.dy3
+ pStructPosition.dy1 pStructPosition.dy2 pStructPosition.dy3
+ pStructVelocity.dy1 pStructVelocity.dy2 pStructVelocity.dy3);
+
+integrationMethod AdamsBashforth4; // integration method
+
+writeFormat binary; // data writting format (ascii or binary)
+
+timersReport Yes; // report timers
+
+timersReportInterval 0.1; // time interval for reporting timers
+
+
+