https://kratos-wiki.cimne.upc.edu/index.php?title=Special:Contributions&feed=atom&deletedOnly=&limit=20&target=Maceli&topOnly=KratosWiki - User contributions [en]2022-10-03T05:33:51ZFrom KratosWikiMediaWiki 1.17.0https://kratos-wiki.cimne.upc.edu/index.php/F-DEMPack_Tutorial_1:_Curved_pipeF-DEMPack Tutorial 1: Curved pipe2018-07-05T08:54:22Z<p>Maceli: /* Boundary Conditions */</p>
<hr />
<div>==Introduction==<br />
Before starting with this tutorial, the user is strongly encouraged to follow<br />
the [[G-DEMPack Tutorial 1: Conveyor belt]] to get a feeling of how the problem type works, and in particular the DEM section. This tutorial will focus mainly in the Fluid section and its particularities.<br />
The user must start by downloading [http://kratos-wiki.cimne.upc.edu/images/0/0b/D_DEMPack2_Tutorial_4.gid.zip Fluid-DEMPack_Tutorial]. This file has already created the groups that will be used in the simulation. It has also already assigned the DEM groups, as well as the mesh sizes. Once loaded into GiD, the F-DEMPack problemtype must be loaded from the Data Menu.<br />
<br />
<br />
==Geometry==<br />
The geometry of study consists of a curved tube through which a flux of water<br />
passes. Additionally, an initial mass of DEM elements exists inside the mass<br />
of water, as well as an inlet creating DEM particles with time. This geometry<br />
can be observed in the picture that follows:<br />
<br />
[[File:DEM 2 tutorial swimming geometry.png|350px]]<br />
<br />
The geometry has five groups, as seen in the next picture. They consist of a<br />
sphere made up of DEM elements, placed at the middle of the tube, a<br />
cuadrilaterial inlet of DEM spheres near the bottom of the tube, the mass of<br />
fluid inside the tube, the inlet of fluid in the opening at the bottom of the<br />
tube and the walls of the tube. The next picture shows the assignation of<br />
group by different entities that the user is expected to find in the file<br />
available for downloading.<br />
<br />
[[File:DEM 2 tutorial swimming groups.png|350px]]<br />
<br />
==DEM Entities==<br />
The file contains several entities and conditions in relation to the DEM part<br />
of the problem. As previouly said, they are already preassigned so the user<br />
does not have to bother and can concentrate on the fluid aspects and details<br />
of the simulation. Nevertheless, figures showing the details on the DEM parts<br />
will be added here for the sake of completion and as a reference should the<br />
user lose these settings or in the case of have any problem when loading the<br />
file.<br />
===DEM group===<br />
[[File:DEM 2 tutorial swimming DEM group.png|400px]]<br />
<br />
The FEM2DEM mesher was used to obtain this initial mesh of DEM spheres. See<br />
[[G-DEMPack Tutorial 3: DEM Meshers]] for a reference on the different meshers in the program. In this case, the<br />
chosen distribution of diameters for the elements is of 2mm with no variance.<br />
<br />
===DEM-FEM wall group===<br />
[[File:DEM 2 tutorial swimming DEM FEM group.png|300px]]<br />
<br />
The parameters in this section are identical to those in the G-DEMPack problem<br />
type, so no extra information is necessary in this case.<br />
<br />
===Inlet DEM group===<br />
[[File:DEM 2 tutorial swimming DEM inlet group.png|300px]]<br />
<br />
See [[G-DEMPack Tutorial 2: DemPack 2.0]] for details. It is important to<br />
note that it is still not possible to create neither clusters nor<br />
nanoparticles from an inlet entity. This aspect of the code is still under<br />
development.<br />
<br />
===DEM Initial Conditions===<br />
[[File:DEM 2 tutorial swimming DEM Initial Conditions.png|300px]]<br />
<br />
This section is also identical to its counterpart in G-DEMPack, so no further<br />
explanations are needed.<br />
<br />
==Materials==<br />
The Materials section in F-DEMPack contains the material data for both DEM and<br />
fluid elements. See the next figure for an overview of that section:<br />
<br />
[[File:DEM 2 tutorial swimming materials section.png|300px]]<br />
<br />
The DEM part is identical to G-DEMPack, and a full explanation of every aspect<br />
in it can be found in the corresponding links given above. In this case,<br />
though, an additional section for the Fluid part exists, where the user can<br />
set the values of some fundamental fluid properties, as for example density,<br />
viscosity, bulk modulus or rheological characteristics.<br />
<br />
==DEM-Fluid Interaction Settings==<br />
Most of the interaction parameters between the DEM spheres and fluid are<br />
inside the General Application Data section, whose overview is given next:<br />
<br />
[[File:DEM 2 tutorial swimming general application data.png|450px]]<br />
<br />
Some of the parameters in this tree are very straightforward, as for example<br />
the duration time, the output delta time, the number of threads to use in<br />
the simulation or the gravity vector. Others, though, carry a higher<br />
difficulty and are mostly related to the way the two subdomains interact. A<br />
deeper explanation of those parameters can be found in [[F-DEMPack2 manual]]. The previous screenshot has been given to the user as a reference as<br />
well as a guide for choosing some default values that give good results in<br />
this particular case. This tree also includes the Results section, which is pretty straightforward.<br />
<br />
==Fluid==<br />
This section contains the information about the properties of the fluids, the<br />
different existing fluid elements and, when necessary, their assigned<br />
conditions. It also has some parameters in relation to the settings of the<br />
fluid solver. The figure that follow shows an overview of this section:<br />
<br />
[[File:DEM 2 tutorial swimming fluid menu.png|250px]]<br />
<br />
The screenshot shows the chosen parameters in this example. The user is<br />
encouraged to play a little bit to those values and see the results. In this<br />
case a monolithic solver was chosen to get more accurate results but no<br />
turbulence model was considered necessary. The linear solver parameters<br />
require a much deeper understanding of the underlying theory and the<br />
associated numerical methods and will not be discussed here, check for more<br />
information. The default parameters in the problem type gave good results in<br />
this particular case. Finally, the user can enter the desired computational<br />
time step, which does not have to be too small as long as stable simulations<br />
are obtained.<br />
===Properties===<br />
In this section, the user can create a Property related with each of the<br />
fluids in the problem. In order to do this, the corresponding fluid must have<br />
been previously created in the Materials section. The next picture shows the<br />
process:<br />
<br />
[[File:DEM 2 tutorial swimming Fluid Properties.png|250px]]<br />
<br />
In this particular case, the Water default material was assigned to the<br />
Property1, which is good enough in this sample simulation.<br />
<br />
===Elements===<br />
The user must specify the fluids that will be present in the problem, so the<br />
next step is to assign the desired groups to the Fluid Elements. The process<br />
is the same as in other tutorials. A screenshot is given next:<br />
<br />
[[File:DEM 2 tutorial swimming Elements Fluid.png|250px]]<br />
<br />
To finish the elements assignation, though, an additional step is<br />
necessary. The user must specify the FEM element type to be used in the fluid<br />
mesh and the corresponding Property. The next figure shows this:<br />
<br />
[[File:DEM 2 tutorial swimming Elements Fluid Property.png|250px]]<br />
<br />
In this case, the only available element in 3D is the tetrahedra, while the<br />
chosen property was number 1, corresponding to the Water material.<br />
<br />
===Conditions===<br />
We finish the process by assigning the necessary conditions to their<br />
corresponding groups. <br />
====Initial Conditions====<br />
The fluid solver needs some initial conditions in the fluid to solve the<br />
problem. The next figure shows the section:<br />
<br />
[[File:DEM 2 tutorial swimming Initial Conditions.png|200px]]<br />
<br />
For this simulation, an initial vertical value of 1m/s was assigned to the<br />
mass of fluid inside the tube. In this case, no initial pressure was necessary.<br />
<br />
====Boundary Conditions====<br />
*''Important remarks''<br />
**'''Make sure that the whole fluid boundary has some fluid condition applied. Each surface of the fluid external skin must be either Inlet, Outlet, Slip or No-slip.'''<br />
**'''Make sure that entities not belonging to the external skin are NOT selected when applying the fluid boundary conditions.'''<br />
<br />
*''Inlet velocity''<br />
An inlet velocity is necessary in this simulation for a flow to exist in time<br />
along the interior of the tube. See the next picture:<br />
<br />
[[File:DEM 2 tutorial swimming inlet group.png|200px]]<br />
<br />
A vertical constant flow of 1m/s entering the bottom opening of the tube was<br />
chosen. <br />
*''No-Slip''<br />
The user must tell the program if there exists any relative velocity between<br />
the fluid and the solid boundary. The capture that follows shows the section:<br />
<br />
[[File:DEM 2 tutorial swimming No Slip.png|200px]]<br />
<br />
For this example, a no-slip behaviour was given to the walls. If there had<br />
been additional DEM-FEM entities, an Is-Slip behaviour could have been given<br />
to them.<br />
*''Outlet pressure''<br />
Note that outlet pressure can be assigned to Points, Lines or Surfaces. <br />
<br />
Choose which one you need before creating a new group.<br />
The user will create a new group named outlet and assign the upper circular surface to it. This surface represents the exit of the pipe.<br />
With the outlet created, it can be then assigned in the Outlet Pressure tab. The value of the pressure can be chosen. Typically 0.0.<br />
<br />
==Meshing and Running==<br />
If the user has succesfully assigned to the corresponding groups all the<br />
previous Properties, Elements and Conditions, the only thing that is still<br />
missing is the computational mesh. As already said, all the messing<br />
characteristics has been previously set in this problem, so the user has been<br />
able to focus in the Fluid aspects of the problem type. So to mesh, hit Ctr-G<br />
and enter a value of 0.02 and press OK. A global view of the resulting mesh<br />
should be similar to this one:<br />
<br />
[[File:DEM 2 tutorial swimming mesh.png|350px]]<br />
<br />
On the other hand, the initial DEM spheres mesh should look like the<br />
following:<br />
<br />
[[File:DEM 2 tutorial swimming mesh DEM detail.png|350px]]<br />
<br />
While the inlet surface mesh should be very similar to this:<br />
<br />
[[File:DEM 2 tutorial swimming mesh DEM inlet detail.png|350px]]<br />
<br />
==Results==<br />
Once a mesh is obtained and the file saved, the simulation can be run. To<br />
start the computations, the user must only hit F5 and the simulation will begin.<br />
The next four captures show the resulting simulation at different times:<br />
<br />
[[File:DEM 2 tutorial swimming velocities1of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities2of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities3of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities4of4.png|300px]]<br />
<br />
The next figure shows the stationary pressure field in the fluid:<br />
<br />
[[File:DEM 2 tutorial swimming fluid pressure.png|300px]]<br />
<br />
The user can also make a cut in the mass of fluid and obtained a 2D view of<br />
the velocity field in the fluid:<br />
<br />
[[File:DEM 2 tutorial swimming fluid velocities.png|300px]]<br />
<br />
<br />
==Additional DEM Tutorials==<br />
Other tutorials can be found [http://kratos-wiki.cimne.upc.edu/index.php/DEMPack_Tutorials here].</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/F-DEMPack_Tutorial_1:_Curved_pipeF-DEMPack Tutorial 1: Curved pipe2018-07-05T08:53:56Z<p>Maceli: /* Boundary Conditions */</p>
<hr />
<div>==Introduction==<br />
Before starting with this tutorial, the user is strongly encouraged to follow<br />
the [[G-DEMPack Tutorial 1: Conveyor belt]] to get a feeling of how the problem type works, and in particular the DEM section. This tutorial will focus mainly in the Fluid section and its particularities.<br />
The user must start by downloading [http://kratos-wiki.cimne.upc.edu/images/0/0b/D_DEMPack2_Tutorial_4.gid.zip Fluid-DEMPack_Tutorial]. This file has already created the groups that will be used in the simulation. It has also already assigned the DEM groups, as well as the mesh sizes. Once loaded into GiD, the F-DEMPack problemtype must be loaded from the Data Menu.<br />
<br />
<br />
==Geometry==<br />
The geometry of study consists of a curved tube through which a flux of water<br />
passes. Additionally, an initial mass of DEM elements exists inside the mass<br />
of water, as well as an inlet creating DEM particles with time. This geometry<br />
can be observed in the picture that follows:<br />
<br />
[[File:DEM 2 tutorial swimming geometry.png|350px]]<br />
<br />
The geometry has five groups, as seen in the next picture. They consist of a<br />
sphere made up of DEM elements, placed at the middle of the tube, a<br />
cuadrilaterial inlet of DEM spheres near the bottom of the tube, the mass of<br />
fluid inside the tube, the inlet of fluid in the opening at the bottom of the<br />
tube and the walls of the tube. The next picture shows the assignation of<br />
group by different entities that the user is expected to find in the file<br />
available for downloading.<br />
<br />
[[File:DEM 2 tutorial swimming groups.png|350px]]<br />
<br />
==DEM Entities==<br />
The file contains several entities and conditions in relation to the DEM part<br />
of the problem. As previouly said, they are already preassigned so the user<br />
does not have to bother and can concentrate on the fluid aspects and details<br />
of the simulation. Nevertheless, figures showing the details on the DEM parts<br />
will be added here for the sake of completion and as a reference should the<br />
user lose these settings or in the case of have any problem when loading the<br />
file.<br />
===DEM group===<br />
[[File:DEM 2 tutorial swimming DEM group.png|400px]]<br />
<br />
The FEM2DEM mesher was used to obtain this initial mesh of DEM spheres. See<br />
[[G-DEMPack Tutorial 3: DEM Meshers]] for a reference on the different meshers in the program. In this case, the<br />
chosen distribution of diameters for the elements is of 2mm with no variance.<br />
<br />
===DEM-FEM wall group===<br />
[[File:DEM 2 tutorial swimming DEM FEM group.png|300px]]<br />
<br />
The parameters in this section are identical to those in the G-DEMPack problem<br />
type, so no extra information is necessary in this case.<br />
<br />
===Inlet DEM group===<br />
[[File:DEM 2 tutorial swimming DEM inlet group.png|300px]]<br />
<br />
See [[G-DEMPack Tutorial 2: DemPack 2.0]] for details. It is important to<br />
note that it is still not possible to create neither clusters nor<br />
nanoparticles from an inlet entity. This aspect of the code is still under<br />
development.<br />
<br />
===DEM Initial Conditions===<br />
[[File:DEM 2 tutorial swimming DEM Initial Conditions.png|300px]]<br />
<br />
This section is also identical to its counterpart in G-DEMPack, so no further<br />
explanations are needed.<br />
<br />
==Materials==<br />
The Materials section in F-DEMPack contains the material data for both DEM and<br />
fluid elements. See the next figure for an overview of that section:<br />
<br />
[[File:DEM 2 tutorial swimming materials section.png|300px]]<br />
<br />
The DEM part is identical to G-DEMPack, and a full explanation of every aspect<br />
in it can be found in the corresponding links given above. In this case,<br />
though, an additional section for the Fluid part exists, where the user can<br />
set the values of some fundamental fluid properties, as for example density,<br />
viscosity, bulk modulus or rheological characteristics.<br />
<br />
==DEM-Fluid Interaction Settings==<br />
Most of the interaction parameters between the DEM spheres and fluid are<br />
inside the General Application Data section, whose overview is given next:<br />
<br />
[[File:DEM 2 tutorial swimming general application data.png|450px]]<br />
<br />
Some of the parameters in this tree are very straightforward, as for example<br />
the duration time, the output delta time, the number of threads to use in<br />
the simulation or the gravity vector. Others, though, carry a higher<br />
difficulty and are mostly related to the way the two subdomains interact. A<br />
deeper explanation of those parameters can be found in [[F-DEMPack2 manual]]. The previous screenshot has been given to the user as a reference as<br />
well as a guide for choosing some default values that give good results in<br />
this particular case. This tree also includes the Results section, which is pretty straightforward.<br />
<br />
==Fluid==<br />
This section contains the information about the properties of the fluids, the<br />
different existing fluid elements and, when necessary, their assigned<br />
conditions. It also has some parameters in relation to the settings of the<br />
fluid solver. The figure that follow shows an overview of this section:<br />
<br />
[[File:DEM 2 tutorial swimming fluid menu.png|250px]]<br />
<br />
The screenshot shows the chosen parameters in this example. The user is<br />
encouraged to play a little bit to those values and see the results. In this<br />
case a monolithic solver was chosen to get more accurate results but no<br />
turbulence model was considered necessary. The linear solver parameters<br />
require a much deeper understanding of the underlying theory and the<br />
associated numerical methods and will not be discussed here, check for more<br />
information. The default parameters in the problem type gave good results in<br />
this particular case. Finally, the user can enter the desired computational<br />
time step, which does not have to be too small as long as stable simulations<br />
are obtained.<br />
===Properties===<br />
In this section, the user can create a Property related with each of the<br />
fluids in the problem. In order to do this, the corresponding fluid must have<br />
been previously created in the Materials section. The next picture shows the<br />
process:<br />
<br />
[[File:DEM 2 tutorial swimming Fluid Properties.png|250px]]<br />
<br />
In this particular case, the Water default material was assigned to the<br />
Property1, which is good enough in this sample simulation.<br />
<br />
===Elements===<br />
The user must specify the fluids that will be present in the problem, so the<br />
next step is to assign the desired groups to the Fluid Elements. The process<br />
is the same as in other tutorials. A screenshot is given next:<br />
<br />
[[File:DEM 2 tutorial swimming Elements Fluid.png|250px]]<br />
<br />
To finish the elements assignation, though, an additional step is<br />
necessary. The user must specify the FEM element type to be used in the fluid<br />
mesh and the corresponding Property. The next figure shows this:<br />
<br />
[[File:DEM 2 tutorial swimming Elements Fluid Property.png|250px]]<br />
<br />
In this case, the only available element in 3D is the tetrahedra, while the<br />
chosen property was number 1, corresponding to the Water material.<br />
<br />
===Conditions===<br />
We finish the process by assigning the necessary conditions to their<br />
corresponding groups. <br />
====Initial Conditions====<br />
The fluid solver needs some initial conditions in the fluid to solve the<br />
problem. The next figure shows the section:<br />
<br />
[[File:DEM 2 tutorial swimming Initial Conditions.png|200px]]<br />
<br />
For this simulation, an initial vertical value of 1m/s was assigned to the<br />
mass of fluid inside the tube. In this case, no initial pressure was necessary.<br />
<br />
====Boundary Conditions====<br />
*''Important remarks''<br />
**'''Make sure that the whole fluid boundary has some fluid condition applied. Each surface of the fluid external skin must be either Inlet, Outlet, Slip or No-slip.'''<br />
**'''Make sure that entities not belonging to the external skin are NOT selected when applying the fluid boundary conditions.'''<br />
<br />
*''Inlet velocity''<br />
An inlet velocity is necessary in this simulation for a flow to exist in time<br />
along the interior of the tube. See the next picture:<br />
<br />
[[File:DEM 2 tutorial swimming inlet group.png|200px]]<br />
<br />
A vertical constant flow of 1m/s entering the bottom opening of the tube was<br />
chosen. <br />
*''No-Slip''<br />
The user must tell the program if there exists any relative velocity between<br />
the fluid and the solid boundary. The capture that follows shows the section:<br />
<br />
[[File:DEM 2 tutorial swimming No Slip.png|200px]]<br />
<br />
For this example, a no-slip behaviour was given to the walls. If there had<br />
been additional DEM-FEM entities, an Is-Slip behaviour could have been given<br />
to them.<br />
*''Outlet pressure''<br />
Note that outlet pressure can be assigned to Points, Lines or Surfaces. Choose which one you need before creating a new group.<br />
The user will create a new group named outlet and assign the upper circular surface to it. This surface represents the exit of the pipe.<br />
With the outlet created, it can be then assigned in the Outlet Pressure tab. The value of the pressure can be chosen. Typically 0.0.<br />
<br />
==Meshing and Running==<br />
If the user has succesfully assigned to the corresponding groups all the<br />
previous Properties, Elements and Conditions, the only thing that is still<br />
missing is the computational mesh. As already said, all the messing<br />
characteristics has been previously set in this problem, so the user has been<br />
able to focus in the Fluid aspects of the problem type. So to mesh, hit Ctr-G<br />
and enter a value of 0.02 and press OK. A global view of the resulting mesh<br />
should be similar to this one:<br />
<br />
[[File:DEM 2 tutorial swimming mesh.png|350px]]<br />
<br />
On the other hand, the initial DEM spheres mesh should look like the<br />
following:<br />
<br />
[[File:DEM 2 tutorial swimming mesh DEM detail.png|350px]]<br />
<br />
While the inlet surface mesh should be very similar to this:<br />
<br />
[[File:DEM 2 tutorial swimming mesh DEM inlet detail.png|350px]]<br />
<br />
==Results==<br />
Once a mesh is obtained and the file saved, the simulation can be run. To<br />
start the computations, the user must only hit F5 and the simulation will begin.<br />
The next four captures show the resulting simulation at different times:<br />
<br />
[[File:DEM 2 tutorial swimming velocities1of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities2of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities3of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities4of4.png|300px]]<br />
<br />
The next figure shows the stationary pressure field in the fluid:<br />
<br />
[[File:DEM 2 tutorial swimming fluid pressure.png|300px]]<br />
<br />
The user can also make a cut in the mass of fluid and obtained a 2D view of<br />
the velocity field in the fluid:<br />
<br />
[[File:DEM 2 tutorial swimming fluid velocities.png|300px]]<br />
<br />
<br />
==Additional DEM Tutorials==<br />
Other tutorials can be found [http://kratos-wiki.cimne.upc.edu/index.php/DEMPack_Tutorials here].</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/Windows_7_Download_and_InstallationWindows 7 Download and Installation2018-07-02T08:39:14Z<p>Maceli: Replaced content with "The information in this page was moved to GitHub: https://github.com/KratosMultiphysics/Kratos/wiki/Windows-Install"</p>
<hr />
<div>The information in this page was moved to GitHub: https://github.com/KratosMultiphysics/Kratos/wiki/Windows-Install</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/LinuxInstallLinuxInstall2018-07-02T08:38:13Z<p>Maceli: Replaced content with "The information in this page was moved to GitHub: https://github.com/KratosMultiphysics/Kratos/wiki/Linux-Build"</p>
<hr />
<div>The information in this page was moved to GitHub: https://github.com/KratosMultiphysics/Kratos/wiki/Linux-Build</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/F-DEMPack_Tutorial_1:_Curved_pipeF-DEMPack Tutorial 1: Curved pipe2018-06-26T15:27:16Z<p>Maceli: /* Boundary Conditions */</p>
<hr />
<div>==Introduction==<br />
Before starting with this tutorial, the user is strongly encouraged to follow<br />
the [[G-DEMPack Tutorial 1: Conveyor belt]] to get a feeling of how the problem type works, and in particular the DEM section. This tutorial will focus mainly in the Fluid section and its particularities.<br />
The user must start by downloading the [[File:D DEMPack2 Tutorial 4.gid.zip]]. This file has already created the groups that will be used in the simulation. It has also already assigned the DEM groups, as well as the mesh sizes for all groups.<br />
<br />
==Geometry==<br />
The geometry of study consists of a curved tube through which a flux of water<br />
passes. Additionally, an initial mass of DEM elements exists inside the mass<br />
of water, as well as an inlet creating DEM particles with time. This geometry<br />
can be observed in the picture that follows:<br />
<br />
[[File:DEM 2 tutorial swimming geometry.png|350px]]<br />
<br />
The geometry has five groups, as seen in the next picture. They consist of a<br />
sphere made up of DEM elements, placed at the middle of the tube, a<br />
cuadrilaterial inlet of DEM spheres near the bottom of the tube, the mass of<br />
fluid inside the tube, the inlet of fluid in the opening at the bottom of the<br />
tube and the walls of the tube. The next picture shows the assignation of<br />
group by different entities that the user is expected to find in the file<br />
available for downloading.<br />
<br />
[[File:DEM 2 tutorial swimming groups.png|350px]]<br />
<br />
==DEM Entities==<br />
The file contains several entities and conditions in relation to the DEM part<br />
of the problem. As previouly said, they are already preassigned so the user<br />
does not have to bother and can concentrate on the fluid aspects and details<br />
of the simulation. Nevertheless, figures showing the details on the DEM parts<br />
will be added here for the sake of completion and as a reference should the<br />
user lose these settings or in the case of have any problem when loading the<br />
file.<br />
===DEM group===<br />
[[File:DEM 2 tutorial swimming DEM group.png|400px]]<br />
<br />
The FEM2DEM mesher was used to obtain this initial mesh of DEM spheres. See<br />
[[G-DEMPack Tutorial 3: DEM Meshers]] for a reference on the different meshers in the program. In this case, the<br />
chosen distribution of diameters for the elements is of 2mm with no variance.<br />
<br />
===DEM-FEM wall group===<br />
[[File:DEM 2 tutorial swimming DEM FEM group.png|300px]]<br />
<br />
The parameters in this section are identical to those in the G-DEMPack problem<br />
type, so no extra information is necessary in this case.<br />
<br />
===Inlet DEM group===<br />
[[File:DEM 2 tutorial swimming DEM inlet group.png|300px]]<br />
<br />
See [[G-DEMPack Tutorial 2: DemPack 2.0]] for details. It is important to<br />
note that it is still not possible to create neither clusters nor<br />
nanoparticles from an inlet entity. This aspect of the code is still under<br />
development.<br />
<br />
===DEM Initial Conditions===<br />
[[File:DEM 2 tutorial swimming DEM Initial Conditions.png|300px]]<br />
<br />
This section is also identical to its counterpart in G-DEMPack, so no further<br />
explanations are needed.<br />
<br />
==Materials==<br />
The Materials section in F-DEMPack contains the material data for both DEM and<br />
fluid elements. See the next figure for an overview of that section:<br />
<br />
[[File:DEM 2 tutorial swimming materials section.png|300px]]<br />
<br />
The DEM part is identical to G-DEMPack, and a full explanation of every aspect<br />
in it can be found in the corresponding links given above. In this case,<br />
though, an additional section for the Fluid part exists, where the user can<br />
set the values of some fundamental fluid properties, as for example density,<br />
viscosity, bulk modulus or rheological characteristics.<br />
<br />
==DEM-Fluid Interaction Settings==<br />
Most of the interaction parameters between the DEM spheres and fluid are<br />
inside the General Application Data section, whose overview is given next:<br />
<br />
[[File:DEM 2 tutorial swimming general application data.png|450px]]<br />
<br />
Some of the parameters in this tree are very straightforward, as for example<br />
the duration time, the output delta time, the number of threads to use in<br />
the simulation or the gravity vector. Others, though, carry a higher<br />
difficulty and are mostly related to the way the two subdomains interact. A<br />
deeper explanation of those parameters can be found in [[F-DEMPack2 manual]]. The previous screenshot has been given to the user as a reference as<br />
well as a guide for choosing some default values that give good results in<br />
this particular case. This tree also includes the Results section, which is pretty straightforward.<br />
<br />
==Fluid==<br />
This section contains the information about the properties of the fluids, the<br />
different existing fluid elements and, when necessary, their assigned<br />
conditions. It also has some parameters in relation to the settings of the<br />
fluid solver. The figure that follow shows an overview of this section:<br />
<br />
[[File:DEM 2 tutorial swimming fluid menu.png|250px]]<br />
<br />
The screenshot shows the chosen parameters in this example. The user is<br />
encouraged to play a little bit to those values and see the results. In this<br />
case a monolithic solver was chosen to get more accurate results but no<br />
turbulence model was considered necessary. The linear solver parameters<br />
require a much deeper understanding of the underlying theory and the<br />
associated numerical methods and will not be discussed here, check for more<br />
information. The default parameters in the problem type gave good results in<br />
this particular case. Finally, the user can enter the desired computational<br />
time step, which does not have to be too small as long as stable simulations<br />
are obtained.<br />
===Properties===<br />
In this section, the user can create a Property related with each of the<br />
fluids in the problem. In order to do this, the corresponding fluid must have<br />
been previously created in the Materials section. The next picture shows the<br />
process:<br />
<br />
[[File:DEM 2 tutorial swimming Fluid Properties.png|250px]]<br />
<br />
In this particular case, the Water default material was assigned to the<br />
Property1, which is good enough in this sample simulation.<br />
<br />
===Elements===<br />
The user must specify the fluids that will be present in the problem, so the<br />
next step is to assign the desired groups to the Fluid Elements. The process<br />
is the same as in other tutorials. A screenshot is given next:<br />
<br />
[[File:DEM 2 tutorial swimming Elements Fluid.png|250px]]<br />
<br />
To finish the elements assignation, though, an additional step is<br />
necessary. The user must specify the FEM element type to be used in the fluid<br />
mesh and the corresponding Property. The next figure shows this:<br />
<br />
[[File:DEM 2 tutorial swimming Elements Fluid Property.png|250px]]<br />
<br />
In this case, the only available element in 3D is the tetrahedra, while the<br />
chosen property was number 1, corresponding to the Water material.<br />
<br />
===Conditions===<br />
We finish the process by assigning the necessary conditions to their<br />
corresponding groups. <br />
====Initial Conditions====<br />
The fluid solver needs some initial conditions in the fluid to solve the<br />
problem. The next figure shows the section:<br />
<br />
[[File:DEM 2 tutorial swimming Initial Conditions.png|200px]]<br />
<br />
For this simulation, an initial vertical value of 1m/s was assigned to the<br />
mass of fluid inside the tube. In this case, no initial pressure was necessary.<br />
<br />
====Boundary Conditions====<br />
*''Important remarks''<br />
**'''Make sure that the whole fluid boundary has some fluid condition applied. Each surface of the fluid external skin must be either Inlet, Outlet, Slip or No-slip.'''<br />
**'''Make sure that entities not belonging to the external skin are NOT selected when applying the fluid boundary conditions.'''<br />
<br />
*''Inlet velocity''<br />
An inlet velocity is necessary in this simulation for a flow to exist in time<br />
along the interior of the tube. See the next picture:<br />
<br />
[[File:DEM 2 tutorial swimming inlet group.png|200px]]<br />
<br />
A vertical constant flow of 1m/s entering the bottom opening of the tube was<br />
chosen. <br />
*''No-Slip''<br />
The user must tell the program if there exists any relative velocity between<br />
the fluid and the solid boundary. The capture that follows shows the section:<br />
<br />
[[File:DEM 2 tutorial swimming No Slip.png|200px]]<br />
<br />
For this example, a no-slip behaviour was given to the walls. If there had<br />
been additional DEM-FEM entities, an Is-Slip behaviour could have been given<br />
to them.<br />
*''Outlet pressure''<br />
The upper surface has been marked as an outlet. The value of the pressure can be chosen. Typically 0.0.<br />
<br />
==Meshing and Running==<br />
If the user has succesfully assigned to the corresponding groups all the<br />
previous Properties, Elements and Conditions, the only thing that is still<br />
missing is the computational mesh. As already said, all the messing<br />
characteristics has been previously set in this problem, so the user has been<br />
able to focus in the Fluid aspects of the problem type. So to mesh, hit Ctr-G<br />
and enter a value of 0.02 and press OK. A global view of the resulting mesh<br />
should be similar to this one:<br />
<br />
[[File:DEM 2 tutorial swimming mesh.png|350px]]<br />
<br />
On the other hand, the initial DEM spheres mesh should look like the<br />
following:<br />
<br />
[[File:DEM 2 tutorial swimming mesh DEM detail.png|350px]]<br />
<br />
While the inlet surface mesh should be very similar to this:<br />
<br />
[[File:DEM 2 tutorial swimming mesh DEM inlet detail.png|350px]]<br />
<br />
==Results==<br />
Once a mesh is obtained and the file saved, the simulation can be run. To<br />
start the computations, the user must only hit F5 and the simulation will begin.<br />
The next four captures show the resulting simulation at different times:<br />
<br />
[[File:DEM 2 tutorial swimming velocities1of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities2of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities3of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities4of4.png|300px]]<br />
<br />
The next figure shows the stationary pressure field in the fluid:<br />
<br />
[[File:DEM 2 tutorial swimming fluid pressure.png|300px]]<br />
<br />
The user can also make a cut in the mass of fluid and obtained a 2D view of<br />
the velocity field in the fluid:<br />
<br />
[[File:DEM 2 tutorial swimming fluid velocities.png|300px]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/F-DEMPack_Tutorial_1:_Curved_pipeF-DEMPack Tutorial 1: Curved pipe2018-06-26T15:18:39Z<p>Maceli: /* Boundary Conditions */</p>
<hr />
<div>==Introduction==<br />
Before starting with this tutorial, the user is strongly encouraged to follow<br />
the [[G-DEMPack Tutorial 1: Conveyor belt]] to get a feeling of how the problem type works, and in particular the DEM section. This tutorial will focus mainly in the Fluid section and its particularities.<br />
The user must start by downloading the [[File:D DEMPack2 Tutorial 4.gid.zip]]. This file has already created the groups that will be used in the simulation. It has also already assigned the DEM groups, as well as the mesh sizes for all groups.<br />
<br />
==Geometry==<br />
The geometry of study consists of a curved tube through which a flux of water<br />
passes. Additionally, an initial mass of DEM elements exists inside the mass<br />
of water, as well as an inlet creating DEM particles with time. This geometry<br />
can be observed in the picture that follows:<br />
<br />
[[File:DEM 2 tutorial swimming geometry.png|350px]]<br />
<br />
The geometry has five groups, as seen in the next picture. They consist of a<br />
sphere made up of DEM elements, placed at the middle of the tube, a<br />
cuadrilaterial inlet of DEM spheres near the bottom of the tube, the mass of<br />
fluid inside the tube, the inlet of fluid in the opening at the bottom of the<br />
tube and the walls of the tube. The next picture shows the assignation of<br />
group by different entities that the user is expected to find in the file<br />
available for downloading.<br />
<br />
[[File:DEM 2 tutorial swimming groups.png|350px]]<br />
<br />
==DEM Entities==<br />
The file contains several entities and conditions in relation to the DEM part<br />
of the problem. As previouly said, they are already preassigned so the user<br />
does not have to bother and can concentrate on the fluid aspects and details<br />
of the simulation. Nevertheless, figures showing the details on the DEM parts<br />
will be added here for the sake of completion and as a reference should the<br />
user lose these settings or in the case of have any problem when loading the<br />
file.<br />
===DEM group===<br />
[[File:DEM 2 tutorial swimming DEM group.png|400px]]<br />
<br />
The FEM2DEM mesher was used to obtain this initial mesh of DEM spheres. See<br />
[[G-DEMPack Tutorial 3: DEM Meshers]] for a reference on the different meshers in the program. In this case, the<br />
chosen distribution of diameters for the elements is of 2mm with no variance.<br />
<br />
===DEM-FEM wall group===<br />
[[File:DEM 2 tutorial swimming DEM FEM group.png|300px]]<br />
<br />
The parameters in this section are identical to those in the G-DEMPack problem<br />
type, so no extra information is necessary in this case.<br />
<br />
===Inlet DEM group===<br />
[[File:DEM 2 tutorial swimming DEM inlet group.png|300px]]<br />
<br />
See [[G-DEMPack Tutorial 2: DemPack 2.0]] for details. It is important to<br />
note that it is still not possible to create neither clusters nor<br />
nanoparticles from an inlet entity. This aspect of the code is still under<br />
development.<br />
<br />
===DEM Initial Conditions===<br />
[[File:DEM 2 tutorial swimming DEM Initial Conditions.png|300px]]<br />
<br />
This section is also identical to its counterpart in G-DEMPack, so no further<br />
explanations are needed.<br />
<br />
==Materials==<br />
The Materials section in F-DEMPack contains the material data for both DEM and<br />
fluid elements. See the next figure for an overview of that section:<br />
<br />
[[File:DEM 2 tutorial swimming materials section.png|300px]]<br />
<br />
The DEM part is identical to G-DEMPack, and a full explanation of every aspect<br />
in it can be found in the corresponding links given above. In this case,<br />
though, an additional section for the Fluid part exists, where the user can<br />
set the values of some fundamental fluid properties, as for example density,<br />
viscosity, bulk modulus or rheological characteristics.<br />
<br />
==DEM-Fluid Interaction Settings==<br />
Most of the interaction parameters between the DEM spheres and fluid are<br />
inside the General Application Data section, whose overview is given next:<br />
<br />
[[File:DEM 2 tutorial swimming general application data.png|450px]]<br />
<br />
Some of the parameters in this tree are very straightforward, as for example<br />
the duration time, the output delta time, the number of threads to use in<br />
the simulation or the gravity vector. Others, though, carry a higher<br />
difficulty and are mostly related to the way the two subdomains interact. A<br />
deeper explanation of those parameters can be found in [[F-DEMPack2 manual]]. The previous screenshot has been given to the user as a reference as<br />
well as a guide for choosing some default values that give good results in<br />
this particular case. This tree also includes the Results section, which is pretty straightforward.<br />
<br />
==Fluid==<br />
This section contains the information about the properties of the fluids, the<br />
different existing fluid elements and, when necessary, their assigned<br />
conditions. It also has some parameters in relation to the settings of the<br />
fluid solver. The figure that follow shows an overview of this section:<br />
<br />
[[File:DEM 2 tutorial swimming fluid menu.png|250px]]<br />
<br />
The screenshot shows the chosen parameters in this example. The user is<br />
encouraged to play a little bit to those values and see the results. In this<br />
case a monolithic solver was chosen to get more accurate results but no<br />
turbulence model was considered necessary. The linear solver parameters<br />
require a much deeper understanding of the underlying theory and the<br />
associated numerical methods and will not be discussed here, check for more<br />
information. The default parameters in the problem type gave good results in<br />
this particular case. Finally, the user can enter the desired computational<br />
time step, which does not have to be too small as long as stable simulations<br />
are obtained.<br />
===Properties===<br />
In this section, the user can create a Property related with each of the<br />
fluids in the problem. In order to do this, the corresponding fluid must have<br />
been previously created in the Materials section. The next picture shows the<br />
process:<br />
<br />
[[File:DEM 2 tutorial swimming Fluid Properties.png|250px]]<br />
<br />
In this particular case, the Water default material was assigned to the<br />
Property1, which is good enough in this sample simulation.<br />
<br />
===Elements===<br />
The user must specify the fluids that will be present in the problem, so the<br />
next step is to assign the desired groups to the Fluid Elements. The process<br />
is the same as in other tutorials. A screenshot is given next:<br />
<br />
[[File:DEM 2 tutorial swimming Elements Fluid.png|250px]]<br />
<br />
To finish the elements assignation, though, an additional step is<br />
necessary. The user must specify the FEM element type to be used in the fluid<br />
mesh and the corresponding Property. The next figure shows this:<br />
<br />
[[File:DEM 2 tutorial swimming Elements Fluid Property.png|250px]]<br />
<br />
In this case, the only available element in 3D is the tetrahedra, while the<br />
chosen property was number 1, corresponding to the Water material.<br />
<br />
===Conditions===<br />
We finish the process by assigning the necessary conditions to their<br />
corresponding groups. <br />
====Initial Conditions====<br />
The fluid solver needs some initial conditions in the fluid to solve the<br />
problem. The next figure shows the section:<br />
<br />
[[File:DEM 2 tutorial swimming Initial Conditions.png|200px]]<br />
<br />
For this simulation, an initial vertical value of 1m/s was assigned to the<br />
mass of fluid inside the tube. In this case, no initial pressure was necessary.<br />
<br />
====Boundary Conditions====<br />
*''Important remarks''<br />
**'''Make sure that the whole fluid boundary has some fluid condition applied. Each surface of the fluid external skin must be either Inlet, Outlet, Slip or No-slip.'''<br />
**'''Make sure that entities not belonging to the external skin are NOT selected when applying the fluid boundary conditions.'''<br />
<br />
*''Inlet velocity''<br />
An inlet velocity is necessary in this simulation for a flow to exist in time<br />
along the interior of the tube. See the next picture:<br />
<br />
[[File:DEM 2 tutorial swimming inlet group.png|200px]]<br />
<br />
A vertical constant flow of 1m/s entering the bottom opening of the tube was<br />
chosen. No Outlet Pressure was needed in the simulation.<br />
*''No-Slip''<br />
The user must tell the program if there exists any relative velocity between<br />
the fluid and the solid boundary. The capture that follows shows the section:<br />
<br />
[[File:DEM 2 tutorial swimming No Slip.png|200px]]<br />
<br />
For this example, a no-slip behaviour was given to the walls. If there had<br />
been additional DEM-FEM entities, an Is-Slip behaviour could have been given<br />
to them.<br />
<br />
==Meshing and Running==<br />
If the user has succesfully assigned to the corresponding groups all the<br />
previous Properties, Elements and Conditions, the only thing that is still<br />
missing is the computational mesh. As already said, all the messing<br />
characteristics has been previously set in this problem, so the user has been<br />
able to focus in the Fluid aspects of the problem type. So to mesh, hit Ctr-G<br />
and enter a value of 0.02 and press OK. A global view of the resulting mesh<br />
should be similar to this one:<br />
<br />
[[File:DEM 2 tutorial swimming mesh.png|350px]]<br />
<br />
On the other hand, the initial DEM spheres mesh should look like the<br />
following:<br />
<br />
[[File:DEM 2 tutorial swimming mesh DEM detail.png|350px]]<br />
<br />
While the inlet surface mesh should be very similar to this:<br />
<br />
[[File:DEM 2 tutorial swimming mesh DEM inlet detail.png|350px]]<br />
<br />
==Results==<br />
Once a mesh is obtained and the file saved, the simulation can be run. To<br />
start the computations, the user must only hit F5 and the simulation will begin.<br />
The next four captures show the resulting simulation at different times:<br />
<br />
[[File:DEM 2 tutorial swimming velocities1of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities2of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities3of4.png|300px]]<br />
[[File:DEM 2 tutorial swimming velocities4of4.png|300px]]<br />
<br />
The next figure shows the stationary pressure field in the fluid:<br />
<br />
[[File:DEM 2 tutorial swimming fluid pressure.png|300px]]<br />
<br />
The user can also make a cut in the mass of fluid and obtained a 2D view of<br />
the velocity field in the fluid:<br />
<br />
[[File:DEM 2 tutorial swimming fluid velocities.png|300px]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/DEM_ApplicationDEM Application2018-06-25T15:52:01Z<p>Maceli: /* G-DEMPack */</p>
<hr />
<div>WARNING: This page is still under construction.<br />
<br />
The DEM Kratos Team<br />
<br />
<br />
== Theory ==<br />
<br />
The fundamental theoretical background corresponding to the discontinuous (granular matter) part of the code can be found Casas et al. (2015). The following sections are destined to contain this information though are curently still under construction.<br />
<br />
Nothing numerical<br />
<br />
=== Integration Schemes ===<br />
<br />
*Symplectic Euler Scheme<br />
<br />
*Forward Euler Scheme<br />
<br />
*Taylor scheme<br />
<br />
*Verlet Velocity Scheme<br />
<br />
*Newmark Beta Method Scheme<br />
<br />
=== Contact Laws ===<br />
Concept of indentation<br />
HMD, LSD<br />
===== Normal Force Laws =====<br />
<br />
====== Linear Repulsive Force ======<br />
<br />
The most simple representation of a repulsive contact force between a sphere and a wall is given by a linear law, where the force acting on the sphere when contacting a plane is a linear function of the indentation, which in turn would bring a quadratic dependence with the contact radius. The next figure shows this simple law:<br />
<br />
[[File:Jkr cohesion linear force.png]]<br />
<br />
<br />
====== Hertzian Repulsive Force ======<br />
<br />
On the other hand, Hertz solved in 1882 the non-cohesive normal contact between a sphere and a plane. In 1971 Johnson, Kendall and Roberts presented the solution (JKR-Theory) for the same problem in this case adding cohesive behaviour. Not much later, Derjaguin, Müller and Toporov published similar results (DMT-Theory).<br />
<br />
Both theories are very close and correct, the main difference being that the JKR theory is oriented to the study of flexible, large spheres, while the DMT theory is specially suited to represent the behaviour of rigid, small ones.<br />
<br />
[[File:Jkr cohesion hertz.jpeg]]<br />
<br />
The previous figure shows the standard representation of a Linear or Hertzian contact between a sphere and a wall. The distribution of contact pressures between both bodies follow a parabolic law.<br />
<br />
====== JKR Cohesive Force ======<br />
<br />
[[File:Jkr cohesion jkr.jpeg]]<br />
<br />
The preceding capture shows the a representation of a JKR contact between a sphere and a wall. In this case, the distribution of pressures between both bodies is more complex due to the formation of a neck at the boundaries of the contact. A later figure shows a detailed view of the pressures involved.<br />
<br />
[[Image:Jkr cohesion forces.png]]<br />
<br />
In the previous graphic, it is very interesting to note the existence of two singular values of contact radius: one for which the total forces acting on the contacting sphere is zero, and another for which the maximum value of adhesion is achieved.<br />
<br />
<br />
[[File:Jkr cohesion pressures.png]]<br />
<br />
In the previous figure, the blue area represents the distribution of pressures acting on the sphere when contacting a wall if a Hertzian Law is followed. On the other hand, the sum of both green and blue areas represents the JKR distribution. Note the larger values and the existence of adhesive behaviour at both sides of the pressures distribution. <br />
<br />
<br />
An example of granular simulation without cohesive forces:<br />
<br />
[[File:JKR no cohesion 1 33.png]]<br />
[[File:JKR no cohesion 2 33.png]]<br />
[[File:JKR no cohesion 3 33.png]]<br />
[[File:JKR no cohesion 4 33.png]]<br />
<br />
The same simulation as before, this time with cohesive forces in both sphere-sphere and sphere-plane contacts.<br />
<br />
[[File:JKR cohesion 1 33.png]]<br />
[[File:JKR cohesion 2 33.png]]<br />
[[File:JKR cohesion 3 33.png]]<br />
[[File:JKR cohesion 4 33.png]]<br />
<br />
<br />
References:<br />
<br />
V. L. Popov. "Contact Mechanics and Friction" (2010). <br><br />
G. Casas et al. "A modular, partitioned, discrete element framework for industrial grain distribution systems with rotating machinery." Computational Particle Mechanics (2015): 1-18.<br />
<br />
===== Tangential Force Laws =====<br />
<br />
===== Damping Force Laws =====<br />
<br />
(restit. coef)<br />
<br />
== Numerical approach ==<br />
<br />
This section is dedicated to describe the numerical methods used to solve.<br />
<br />
<br />
[[File:Dem manual main scheme 66 discontinuum.png]]<br />
<br />
<br />
=== DEM elements ===<br />
<br />
===== Spheric Particle =====<br />
===== Spheric Continuum Particle =====<br />
===== Spheric Swimming Particle =====<br />
<br />
=== DEM walls (Kratos Conditions) ===<br />
<br />
=== DEM Inlets ===<br />
<br />
A DEM Inlet is a source of new DEM Elements. It is a cloud of Nodes, where each Node is the center of a ''Generator Sphere''. In a random order, the Nodes are chosen to create a new DEM Element (both spherical elements or clusters) whose center coincides with the Node and the whole element is fully included in the ''Generator Sphere''. The newly generated DEM Element has a non-zero imposed velocity which eventually makes the DEM Element get outside the ''Generator Sphere''. Until this moment, the ''Generator Sphere'' is not allowed to generate another DEM-Element. From this moment on, the newly created DEM Element no longer has the velocity imposed, it moves freely and cannot penetrate its ''Generator Sphere'' or any other. Actually, the ''Generator Sphere'' is seen as any other Sphere of the domain by the DEM Element, and the contact between them is calculated as usual. In other words, '''the Generator Spheres reserve the necessary space to create a new DEM Element'''.<br />
<br />
=== DEM strategies ===<br />
<br />
===== Non-cohesive materials Strategy =====<br />
<br />
====== Evaluation of Forces ======<br />
<br />
Once contact between two spheres has been detected (see next figure), the forces occurring at the<br />
contact point are computed. The interaction between the two contacting spheres can be represented<br />
by forces Fij and Fji, which have the same module but opposite directions.<br />
<br />
<br />
[[File:Dem application interaction forces.png]]<br />
<br />
<br />
At the same time, this force Fij can be decomposed into its normal and shear components Fijn and Fijs, respectively. The next figure shows a detailed view of this decomposition.<br />
<br />
Fij = Fijn + Fijs = Fnnij + Fijs<br />
<br />
<br />
<br />
[[File:Dem application forces decomposition.png]]<br />
<br />
<br />
The nij vector represents the unitary normal with respect to the surfaces of both particles at the contact point. This vector lies along the line connecting the centers of the two particles and is directed<br />
outwards from particle i.<br />
<br />
<br />
The contact forces Fn, Fs1 and Fs2 are obtained using a constitutive model formulated for the<br />
contact between two rigid spheres (or discs in 2D). The contact interface for the simplest formulation<br />
is characterized by the normal and tangential stiffness Kn and Ks, respectively, a frictional device<br />
obeying the Couloumb law with a frictional coefficient mu, and a dashpot defined by the contact damping<br />
coefficient cn as shown in the next figure.<br />
<br />
<br />
[[File:Dem application forces rheological.png]]<br />
<br />
====== Rolling Friction ======<br />
<br />
In order to represent irregular particles with spheres, a numerical correction is used. This correction is the rolling friction which is about imposing a virtual moment opposite to particle rotation and dependent on its size.<br />
<br />
[[File:Rolling_friction_1.png|300px]]<br />
<br />
Fn represents the normal force, Ft the tangential force, ω the angular velocity, r is the radius and η the rolling friction coefficient.<br />
<br />
In our approach there are two importatn conditions that have to be fulfilled:<br />
<br />
1. The moment due to rolling friction can not change the direction of the particle spin.<br />
<br />
2. If the contact occurs between two spheres the rolling friction is calculated with the radius of the smallest spheres.<br />
<br />
[[File:Rolling_friction_surfaces.png|150px]]<br />
<br />
The model used is described in the following article: J. Irazábal, F. Salazar, E. Oñate. Numerical modelling of granular materials with spherical discrete particles and the bounded rolling friction model. Application to railway ballast. Computers and Geotechnics 85 (2017) 220–229.<br />
<br />
===== Continuum Strategy =====<br />
<br />
=== DEM schemes ===<br />
<br />
==== Integration of Motion ====<br />
<br />
<br />
The standard translational and rotational equations for the motion of rigid bodies are used to compute the dynamics of the spheres.<br />
For the i-th particle we have:<br />
<br />
miui = Fi<br />
Ii i = Ti<br />
<br />
<br />
where u represents the element centroid displacement in a xed (inertial) coordinate frame X, ! the angular<br />
velocity, m the element mass, I the moment of inertia, Fi the resultant force, and Ti the<br />
total moment arount the central axes.<br />
<br />
<br />
Vectors Fi and Ti are the sum of all forces and moments applied to the i-th particle due<br />
to external loads, Fexti and Texti , respectively, the contact interactions with neighbour spheres Fc<br />
i, j = 1;; nc, where nci is the total number of elements in contact with the i-th discrete<br />
element, and the forces and moments resulting from external damping, Fdampi and Tdampi , respectively,<br />
which can be written as:<br />
<br />
<br />
Fi = Fexti +nciXj=1Fci + Fdampi<br />
<br />
Ti = Texti +nciXj=1(rci Fci + qci ) + Tdampi<br />
<br />
<br />
[[File:Dem application motion.png]]<br />
<br />
<br />
where rci is the vector connecting the centre of mass of the i th particle with the contact point c<br />
(see next figure) and qci are the torques due to rolling and/or torsion (not related to the tangential forces).<br />
The next figure shows the motion of a rigid particle. Note that the form of the rotational equation is only valid for spheres and cylinders (in<br />
2D). It is simplified with respect to a general form for an arbitrary rigid body with the rotational<br />
inertial properties represented by a second order tensor. In the general case it is more convenient to<br />
describe the rotational motion with respect to a co-rotational frame x which is embedded at each<br />
element since in this frame the tensor of inertia is constant.<br />
<br />
<br />
The previous set of equations are integrated in time using a simple central difference scheme. The<br />
time integration operator for the translational motion at the n-th time step is as follows:<br />
<br />
<br />
The first two steps in the integration scheme for the rotational motion are identical to those given<br />
by the previous equations:<br />
<br />
<br />
On the other hand, the vector of incremental rotation is computed as<br />
<br />
<br />
Knowledge of the incremental rotation is enough to update the tangential contact forces. It is also<br />
possible to track the rotational position of particles when necessary. If that is the case, the rotation matrices between<br />
the moving frames embedded in the particles and the fixed global frame must be updated<br />
incrementally by using an adequate multiplicative scheme. <br />
Explicit integration in time yields high computational efficiency and it enables the solution of large<br />
models. The main disadvantage of this explicit integration scheme is its conditional numerical stability<br />
which imposes a limitation on the time step delta_t.<br />
<br />
=== Search Strategies ===<br />
<br />
The contact search is a very important part of the method in terms of computational cost (range 60%-90% of simulation time in simulations with large number of particles) and it is possibly the most difficult part to treat when dealing with particles that have no spherical/circular shape.<br />
<br />
The contact detection basically consists in determining, for every target object, what other objects are in contact with, and then, judge for the correspondent interaction. It is usually not needed to perform a search every time step, which is generally limited for the stability of the explicit integration of the equations of motion. Due to the fact that the search is an expensive step a lower search frequency can be selected without much loss of accuracy.<br />
<br />
The most naïve method of search that can be set is the brute search; for every element, the method does a loop for any other element checking for the contact. The order of the number of operations needed is quadratic: n2. Normally, the strategy to avoid such an expensive scheme is to divide the contact search in two basic stages, a global search and a subsequent local resolution of the contact; in this case the computation time of the contact search is proportional to n log n. In the DEMApplication a Grid/Cell based algorithm is used in this purpose.<br />
<br />
==== Global Search ====<br />
<br />
In a generic way, there are two types of elements: searcher elements (particles or finite elements) and target elements (particles or finite elements). Hereafter<br />
searcher elements will be called S.E. and target elements T.E.<br />
<br />
[[File:Global_search1.png]]<br />
<br />
The steps needed to perform contact search are:<br />
<br />
a) Build bounding box of S.E. (Figure 2(a)).<br />
<br />
b) Build bins cells based on size and position of S.E. (Figure 2(b)).<br />
<br />
c) Collocate S.E. in bins and construct hash table with relates coordinates with cells which point to the contacting S.E. (Figure 2(c)).<br />
<br />
d) Build bounding box of T.E. (Figure 2(d)).<br />
<br />
e) Loop over T.E., detect the intersecting cells to each T.E., check the intersection with the possible found cells and add the entire S.E. contained in the cells intersected by each T.E. (Figure 2(e)).<br />
<br />
f) Solve the contact with local resolution (Figure 2(f)).<br />
<br />
Note: In the case of FE and DE the FE are selected as the S.E. to construct the Bins and the Spheres are T.E. to be found in that bins. <br />
<br />
[[File:Global_search2_bigger.png]]<br />
<br />
==== Local Search ====<br />
<br />
Once the possible neighbours are detected, the local resolution check takes place. For the case of two spherical particles, the check is easy; only the sum of the radius has to be compared against the distance between centres. Other geometries may demand a much complicated check. The followed strategy is to mesh all the geometries with a discretization of triangles. In 3D, surface meshes are used for contact detection. Now, the contact detection should be performed between particles and triangles; if no contact is found, particle contact against lines is searched for; and if contact is still not found, contact against points is performed. Figure 3 shows how the local search is performed. Particle i searches contact against element j, then against lines k, l and m and finally against points n, o and p.<br />
<br />
This is known as a hierarchical algorithm. For further explanation please refer to the paper: "3D contact algorithms for particle DEM with rigid and deformable solids" - M.Santasusana, J.Irazábal, E.Oñate, J.M.Carbonell. Where the advantges and the drawback of this method and other proposed algorithms are detailed and analysed in complicated situations like multicontact.<br />
<br />
[[File:Local_search1.png]]<br />
<br />
Fig. 3 Particle-Face contact detection.<br />
<br />
<br />
<br />
== Programming Implementation ==<br />
Structure of the code (Strategy, Scheme, Element, Node, Utilities, functions frequently used like FastGet,...)<br />
<br />
The source code is accessible through [https://kratos.cimne.upc.es/projects/kratos/repository/show/kratos this site].<br />
<br />
[[File:Dem manual code scheme 66.png]]<br />
<br />
A main Python script is used to trigger the calculation of a problem. It communicates with the C++ code. The main advantage of using a compiled language like python for the main script is that it allows to make quick adjustments or modifications to the main strategy without having to recompile the whole code avery time. It also allows for very fast testing.<br />
<br />
=== Main components of the code ===<br />
<br />
<br />
==== Elements ====<br />
<br />
Discontinuum, continuum, cohesive, swimming, cluster of spheres.<br />
<br />
==== Conditions ====<br />
<br />
Main the FEM elements: lines and triangles.<br />
<br />
==== Constitutive Laws ====<br />
<br />
Different interactions laws: linear, Hertzian and continuum behaviour.<br />
<br />
==== Python elements ====<br />
<br />
These files translate the strategies and the<br />
utilities defined in C++ language to be able<br />
to call them from python scripts.<br />
<br />
==== Strategies====<br />
<br />
The main script that calls the necessary schemes and the functions on the<br />
elements during the global loop.<br />
<br />
==== Schemes====<br />
<br />
Explicit integration schemes available<br />
<br />
==== Utilities====<br />
<br />
Here geometric functions are defined, the<br />
neighbours search function, configuration of the particle, amongst others.<br />
<br />
==== Python scripts====<br />
<br />
It contains, amongst other things, the python interface where the main function<br />
of the strategy such as Initialize or Solve<br />
are called. Other operations are done like adding the necessary nodal variables.<br />
<br />
==== Test examples====<br />
<br />
They contain the Benchmarks<br />
<br />
==== DEM_application====<br />
<br />
It contains all the variables that will be used so they are<br />
created and registered in python and C++.<br />
<br />
<br />
=== Main elements in the global python script ===<br />
<br />
<br />
The first step consist of importing all libraries and files necessary for the application.<br />
It is followed by the creation of the necessary input files of the problem at hand to be<br />
processed by the code. The solver strategy is also chosen, and some important operations are done, as for example the<br />
addition of the necessary variables to the solver.<br />
<br />
At this step the buffer size value is also set: this number determines the<br />
historical database size of the problem. The values for the different options and<br />
variables that Kratos will use in the computation are also imported here, like the<br />
integration scheme, the type of solution, damping specifications, time step, output<br />
time step of results, et cetera.<br />
<br />
After the definition of the previous settings, several initializing functions are called which are responsible<br />
of initializing, among other objects, the mesh, the inlet of particles or the solver. Also some operations related to parallel<br />
computing are done.<br />
<br />
Afterwards the time step is determined and the main computing loop is entered. At each time step Solve function is executed.<br />
Finally, at user-defined time steps the results are exported to GiD so they become ready for visualization and postprocessing.<br />
<br />
In fact, this main python file imports another script written in the same language, the ''sphere_strategy.py''. This file is very important<br />
because it contains the core structure that the program will follow when computing. On the other hand, it is the last door to the kernel of the program, which<br />
is written in C++. Some of the most important functions and classes in this file are the following:<br />
<br />
AddVariables: This function sets which variables will be<br />
stored in the nodes at each time step and also the value of those variables as a function of time also<br />
depending on the buffer size previously selected. See the next figure for details.<br />
<br />
<br />
[[File:Dem application add variables 66.png]]<br />
<br />
<br />
AddDofs: The desired degrees of freedom are set here, as can be seen in the design of the function in the figure that follows.<br />
<br />
<br />
[[File:Dem application add dofs 66.png]]<br />
<br />
<br />
The global structure of the explicit strategy the code uses is shown in the next figure. It consists of three main parts: a constructor of the class of the solver,<br />
which creates some default variables for the class, an initializer, which defines the values of several standard parameters, and finally, the ''Solve()'' function<br />
which takes command of almost the entire computing process. The next figure shows and schematic view of this structure.<br />
<br />
When using the ''Initialize()'' function to set the original values of a group of variables, they automatically become accessible in the different C++ files<br />
of the application by means of the ProcessInfo container (see more at ). This function also calls the Initialize function in the solver.<br />
<br />
<br />
[[File:Dem application explicit strategy 66.png]]<br />
<br />
<br />
C++ Solve() function scheme:<br />
<br />
<br />
[[File:Dem application solve cpp scheme 80.png]]<br />
<br />
<br />
<br />
DEM CONTINUUM<br />
<br />
<br />
Initialize() function scheme:<br />
<br />
<br />
[[File:Dem application initialize scheme 75.png]]<br />
<br />
<br />
Solve() function scheme:<br />
<br />
<br />
[[File:Dem application solve scheme 75.png]]<br />
<br />
<br />
Search() function scheme:<br />
<br />
<br />
[[File:Dem application search scheme 66.png]]<br />
<br />
== Benchmarks ==<br />
<br />
The DEM Benchmarks consist of a set of 9 simple tests which are run every night and whose object is to make sure both that the application performs correctly and that the code did not break after the daily changes. They are the following:<br />
<br />
===Test1: Elastic normal impact of two identical spheres===<br />
<br />
Check the evolution of the elastic normal contact force between two spheres with time.<br />
<br />
<br />
<br />
[[File:Benchmark1_1.png]]<br />
[[File:Benchmark1 graph 66.png]]<br />
<br />
If the coefficient of restitution is 1, the module of the initial and final velocities should be the same. Also, by symmetry, velocities should be equal for both spheres.<br />
<br />
_<br />
<br />
===Test2: Elastic normal impact of a sphere against a rigid plane===<br />
<br />
Check the evolution of the elastic normal contact force between a sphere and a plane.<br />
<br />
[[File:Benchmark2 66.png]]<br />
[[File:Benchmark2 graph 66.png]]<br />
<br />
If the coefficient of restitution is equal to 1, the module of the initial and final velocity should remain unchanged.<br />
<br />
_<br />
<br />
===Test3: Impact of a sphere against a rigid plane with different coefficients of restitution===<br />
<br />
Check the effect of different restitution coefficients on the damping ratio.<br />
<br />
[[File:Benchmark3 66.png]]<br />
[[File:Benchmark3 graph 66.png]]<br />
<br />
If total energy is conserved, the restitution coefficient and the damping ratio values should be identical.<br />
<br />
_<br />
<br />
===Test4: Oblique impact of a sphere with a rigid plane with constant velocity module and variable incident angles===<br />
<br />
Check the tangential restitution coefficient, final angular velocity and rebound angle of the sphere.<br />
<br />
[[File:Benchmark4_66.png]]<br />
[[File:Benchmark4 graph1_66.png]]<br />
[[File:Benchmark4 graph2_66.png]]<br />
<br />
_<br />
<br />
===Test5: Oblique impact of a sphere with a rigid plane with constant normal velocity and different angular velocities===<br />
<br />
Check the final linear and angular velocities of the sphere.<br />
<br />
[[File:Benchmark5_66.png]]<br />
[[File:Benchmark5 graph1_66.png]]<br />
<br />
_<br />
<br />
===Test6: Impact of a sphere with a rigid plane with a constant normal velocity and variable angular velocities===<br />
<br />
Check the final linear and angular velocities of the sphere.<br />
<br />
[[File:Benchmark6_66.png]]<br />
[[File:Benchmark6 graph1_66.png]]<br />
<br />
_<br />
<br />
===Test7: Impact of two identical spheres with a constant normal velocity and different angular velocities===<br />
<br />
Check the final linear and angular velocities of both spheres.<br />
<br />
[[File:Benchmark7_66.png]]<br />
[[File:Benchmark7 graph1_66.png]]<br />
<br />
By symmetry, the tangential final velocity of both spheres should be zero. Additionally, for a coefficient of restitution of 1, there should be no changes in the modules of both linear and angular velocities and their values should conserve symmetry. <br />
<br />
_<br />
<br />
===Test8: Impact of two differently sized spheres with a constant normal velocity and variable angular velocities===<br />
<br />
Check the final linear and angular velocities of both spheres.<br />
<br />
[[File:Benchmark8_66.png]]<br />
[[File:Benchmark8_graph1_66.png]]<br />
<br />
In this case, it is interesting to note that, the bigger and/or denser sphere 2 is, the more this test resembles the sphere versus plane simulation.<br />
<br />
_<br />
<br />
===Test9: Impact of two identical spheres with a constant normal velocity and different coefficients of restitution===<br />
<br />
Check the effect of different restitution coefficients on the damping ratio.<br />
<br />
[[File:Benchmark9_66.png]]<br />
[[File:Benchmark9_graph1_66.png]]<br />
<br />
If total energy is conserved, the restitution coefficient and the damping ratio values should be identical.<br />
<br />
<br />
References:<br />
<br />
Y.C.Chung, J.Y.Ooi. ''Benchmark tests for verifying discrete element modelling codes at particle impact level'' (2011).<br />
<br />
== How to analyse using the current application ==<br />
<br />
=== Pre-Process ===<br />
<br />
GUI's & GiD<br />
<br />
===== G-DEMPack =====<br />
<br />
G-DEMPack is the package that allows a user to create, run and analyze results of a DEM simulation for discontinuum / granular / little-cohesive materials. It is written for GiD. So in order to use this package, you should install GiD first.<br />
<br />
You can read the [[G-DEMPack manual]] or follow the G-DEMPack Tutorials included in [[DEMPack Tutorials]] for fast learning on how to use the GUI.<br />
<br />
===== C-DEMPack =====<br />
<br />
C-DEMPack combines the features of G-DEMPack with the simulation of continuum/cohesive materials. Refer to the [[C-DEMPack2 manual]] or follow the C-DEMPack Tutorials included in [[DEMPack Tutorials]] for more information.<br />
<br />
===== F-DEMPack =====<br />
<br />
F-DEMPack allows you to simulate a wide spectrum of problems involving the interaction of discontinuum DEM and fluid. It also needs GiD to work. The user is advised to take a look at [[F-DEMPack2 manual]] and follow the C-DEMPack Tutorials included in [[DEMPack Tutorials]] in order to get a quick idea of how this program works.<br />
<br />
=== Post-Process ===<br />
<br />
== Application Dependencies ==<br />
<br />
The Swimming DEM Application depends on the DEM application<br />
<br />
=== Other Kratos Applications used in current Application ===<br />
<br />
FEM-DEM<br />
<br />
<br />
== Problems! ==<br />
<br />
==== What to do if the Discrete Elements behave strangely ====<br />
<br />
In the case you notice that some discrete elements cross walls, penetrate in them or simply fly away of the domain at high velocity, check the following points:<br />
<br />
<br />
In the case of excessive penetration:<br />
<br />
*'''Check that the Young Modulus is big enough'''. A small Young Modulus makes the Elements and the walls behave in a very smooth way. Sometimes they are so soft that total penetration and trespass is possible.<br />
<br />
*'''Check the Density of the material'''. An excessive density means a big weight and inertia that cannot be stopped by the walls.<br />
*'''Check the Time Step'''. If the time step is too big, the Elements can go from one side of the wall to the other with no appearence of a reaction.<br />
*'''Check the frequency of neighbour search'''. If the search is not done frequently enough, the new contacts with the walls may not be detected soon enough.<br />
<br />
<br />
In the case of excessive bounce:<br />
<br />
*'''Check that the Young Modulus is not extremely big'''. An exaggerated Young Modulus yields extremely large reactions that can make the Elements bounce too fast in just one time step. Also take into account that the stability of explicit methods depends on the Young Modulus (the higher the modulus, the closer to instability).<br />
<br />
*'''Check the Density of the material'''. A very low density means a very small weight and inertia, so any force exerted by other elements or the walls can induce big accelerations on the element.<br />
*'''Check the Time Step'''. If the time step is too big, the method gains more energy, and gets closer to instability.<br />
*'''Check the restitution coefficient of the material'''. Explicit integration schemes gain energy noticeably, unless you use a really small time step. In case the time step is chosen to be big (but still stable), use the restitution coefficient to compensate the gain of energy and get more realistic results.<br />
<br />
== Contact ==<br />
<br />
Contact us for any question regarding this application:<br />
<br />
<br />
-Miguel Angel Celigueta: [mailto:maceli@cimne.upc.edu maceli@cimne.upc.edu]<br />
<br />
-Guillermo Casas: [mailto:gcasas@cimne.upc.edu gcasas@cimne.upc.edu]<br />
<br />
-Salva Latorre: [mailto:latorre@cimne.upc.edu latorre@cimne.upc.edu]<br />
<br />
-Ferran Arrufat: [mailto:farrufat@cimne.upc.edu farrufat@cimne.upc.edu]<br />
<br />
<br />
[[Category: Applications]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/DEM_ApplicationDEM Application2018-06-25T15:48:13Z<p>Maceli: /* F-DEMPack */</p>
<hr />
<div>WARNING: This page is still under construction.<br />
<br />
The DEM Kratos Team<br />
<br />
<br />
== Theory ==<br />
<br />
The fundamental theoretical background corresponding to the discontinuous (granular matter) part of the code can be found Casas et al. (2015). The following sections are destined to contain this information though are curently still under construction.<br />
<br />
Nothing numerical<br />
<br />
=== Integration Schemes ===<br />
<br />
*Symplectic Euler Scheme<br />
<br />
*Forward Euler Scheme<br />
<br />
*Taylor scheme<br />
<br />
*Verlet Velocity Scheme<br />
<br />
*Newmark Beta Method Scheme<br />
<br />
=== Contact Laws ===<br />
Concept of indentation<br />
HMD, LSD<br />
===== Normal Force Laws =====<br />
<br />
====== Linear Repulsive Force ======<br />
<br />
The most simple representation of a repulsive contact force between a sphere and a wall is given by a linear law, where the force acting on the sphere when contacting a plane is a linear function of the indentation, which in turn would bring a quadratic dependence with the contact radius. The next figure shows this simple law:<br />
<br />
[[File:Jkr cohesion linear force.png]]<br />
<br />
<br />
====== Hertzian Repulsive Force ======<br />
<br />
On the other hand, Hertz solved in 1882 the non-cohesive normal contact between a sphere and a plane. In 1971 Johnson, Kendall and Roberts presented the solution (JKR-Theory) for the same problem in this case adding cohesive behaviour. Not much later, Derjaguin, Müller and Toporov published similar results (DMT-Theory).<br />
<br />
Both theories are very close and correct, the main difference being that the JKR theory is oriented to the study of flexible, large spheres, while the DMT theory is specially suited to represent the behaviour of rigid, small ones.<br />
<br />
[[File:Jkr cohesion hertz.jpeg]]<br />
<br />
The previous figure shows the standard representation of a Linear or Hertzian contact between a sphere and a wall. The distribution of contact pressures between both bodies follow a parabolic law.<br />
<br />
====== JKR Cohesive Force ======<br />
<br />
[[File:Jkr cohesion jkr.jpeg]]<br />
<br />
The preceding capture shows the a representation of a JKR contact between a sphere and a wall. In this case, the distribution of pressures between both bodies is more complex due to the formation of a neck at the boundaries of the contact. A later figure shows a detailed view of the pressures involved.<br />
<br />
[[Image:Jkr cohesion forces.png]]<br />
<br />
In the previous graphic, it is very interesting to note the existence of two singular values of contact radius: one for which the total forces acting on the contacting sphere is zero, and another for which the maximum value of adhesion is achieved.<br />
<br />
<br />
[[File:Jkr cohesion pressures.png]]<br />
<br />
In the previous figure, the blue area represents the distribution of pressures acting on the sphere when contacting a wall if a Hertzian Law is followed. On the other hand, the sum of both green and blue areas represents the JKR distribution. Note the larger values and the existence of adhesive behaviour at both sides of the pressures distribution. <br />
<br />
<br />
An example of granular simulation without cohesive forces:<br />
<br />
[[File:JKR no cohesion 1 33.png]]<br />
[[File:JKR no cohesion 2 33.png]]<br />
[[File:JKR no cohesion 3 33.png]]<br />
[[File:JKR no cohesion 4 33.png]]<br />
<br />
The same simulation as before, this time with cohesive forces in both sphere-sphere and sphere-plane contacts.<br />
<br />
[[File:JKR cohesion 1 33.png]]<br />
[[File:JKR cohesion 2 33.png]]<br />
[[File:JKR cohesion 3 33.png]]<br />
[[File:JKR cohesion 4 33.png]]<br />
<br />
<br />
References:<br />
<br />
V. L. Popov. "Contact Mechanics and Friction" (2010). <br><br />
G. Casas et al. "A modular, partitioned, discrete element framework for industrial grain distribution systems with rotating machinery." Computational Particle Mechanics (2015): 1-18.<br />
<br />
===== Tangential Force Laws =====<br />
<br />
===== Damping Force Laws =====<br />
<br />
(restit. coef)<br />
<br />
== Numerical approach ==<br />
<br />
This section is dedicated to describe the numerical methods used to solve.<br />
<br />
<br />
[[File:Dem manual main scheme 66 discontinuum.png]]<br />
<br />
<br />
=== DEM elements ===<br />
<br />
===== Spheric Particle =====<br />
===== Spheric Continuum Particle =====<br />
===== Spheric Swimming Particle =====<br />
<br />
=== DEM walls (Kratos Conditions) ===<br />
<br />
=== DEM Inlets ===<br />
<br />
A DEM Inlet is a source of new DEM Elements. It is a cloud of Nodes, where each Node is the center of a ''Generator Sphere''. In a random order, the Nodes are chosen to create a new DEM Element (both spherical elements or clusters) whose center coincides with the Node and the whole element is fully included in the ''Generator Sphere''. The newly generated DEM Element has a non-zero imposed velocity which eventually makes the DEM Element get outside the ''Generator Sphere''. Until this moment, the ''Generator Sphere'' is not allowed to generate another DEM-Element. From this moment on, the newly created DEM Element no longer has the velocity imposed, it moves freely and cannot penetrate its ''Generator Sphere'' or any other. Actually, the ''Generator Sphere'' is seen as any other Sphere of the domain by the DEM Element, and the contact between them is calculated as usual. In other words, '''the Generator Spheres reserve the necessary space to create a new DEM Element'''.<br />
<br />
=== DEM strategies ===<br />
<br />
===== Non-cohesive materials Strategy =====<br />
<br />
====== Evaluation of Forces ======<br />
<br />
Once contact between two spheres has been detected (see next figure), the forces occurring at the<br />
contact point are computed. The interaction between the two contacting spheres can be represented<br />
by forces Fij and Fji, which have the same module but opposite directions.<br />
<br />
<br />
[[File:Dem application interaction forces.png]]<br />
<br />
<br />
At the same time, this force Fij can be decomposed into its normal and shear components Fijn and Fijs, respectively. The next figure shows a detailed view of this decomposition.<br />
<br />
Fij = Fijn + Fijs = Fnnij + Fijs<br />
<br />
<br />
<br />
[[File:Dem application forces decomposition.png]]<br />
<br />
<br />
The nij vector represents the unitary normal with respect to the surfaces of both particles at the contact point. This vector lies along the line connecting the centers of the two particles and is directed<br />
outwards from particle i.<br />
<br />
<br />
The contact forces Fn, Fs1 and Fs2 are obtained using a constitutive model formulated for the<br />
contact between two rigid spheres (or discs in 2D). The contact interface for the simplest formulation<br />
is characterized by the normal and tangential stiffness Kn and Ks, respectively, a frictional device<br />
obeying the Couloumb law with a frictional coefficient mu, and a dashpot defined by the contact damping<br />
coefficient cn as shown in the next figure.<br />
<br />
<br />
[[File:Dem application forces rheological.png]]<br />
<br />
====== Rolling Friction ======<br />
<br />
In order to represent irregular particles with spheres, a numerical correction is used. This correction is the rolling friction which is about imposing a virtual moment opposite to particle rotation and dependent on its size.<br />
<br />
[[File:Rolling_friction_1.png|300px]]<br />
<br />
Fn represents the normal force, Ft the tangential force, ω the angular velocity, r is the radius and η the rolling friction coefficient.<br />
<br />
In our approach there are two importatn conditions that have to be fulfilled:<br />
<br />
1. The moment due to rolling friction can not change the direction of the particle spin.<br />
<br />
2. If the contact occurs between two spheres the rolling friction is calculated with the radius of the smallest spheres.<br />
<br />
[[File:Rolling_friction_surfaces.png|150px]]<br />
<br />
The model used is described in the following article: J. Irazábal, F. Salazar, E. Oñate. Numerical modelling of granular materials with spherical discrete particles and the bounded rolling friction model. Application to railway ballast. Computers and Geotechnics 85 (2017) 220–229.<br />
<br />
===== Continuum Strategy =====<br />
<br />
=== DEM schemes ===<br />
<br />
==== Integration of Motion ====<br />
<br />
<br />
The standard translational and rotational equations for the motion of rigid bodies are used to compute the dynamics of the spheres.<br />
For the i-th particle we have:<br />
<br />
miui = Fi<br />
Ii i = Ti<br />
<br />
<br />
where u represents the element centroid displacement in a xed (inertial) coordinate frame X, ! the angular<br />
velocity, m the element mass, I the moment of inertia, Fi the resultant force, and Ti the<br />
total moment arount the central axes.<br />
<br />
<br />
Vectors Fi and Ti are the sum of all forces and moments applied to the i-th particle due<br />
to external loads, Fexti and Texti , respectively, the contact interactions with neighbour spheres Fc<br />
i, j = 1;; nc, where nci is the total number of elements in contact with the i-th discrete<br />
element, and the forces and moments resulting from external damping, Fdampi and Tdampi , respectively,<br />
which can be written as:<br />
<br />
<br />
Fi = Fexti +nciXj=1Fci + Fdampi<br />
<br />
Ti = Texti +nciXj=1(rci Fci + qci ) + Tdampi<br />
<br />
<br />
[[File:Dem application motion.png]]<br />
<br />
<br />
where rci is the vector connecting the centre of mass of the i th particle with the contact point c<br />
(see next figure) and qci are the torques due to rolling and/or torsion (not related to the tangential forces).<br />
The next figure shows the motion of a rigid particle. Note that the form of the rotational equation is only valid for spheres and cylinders (in<br />
2D). It is simplified with respect to a general form for an arbitrary rigid body with the rotational<br />
inertial properties represented by a second order tensor. In the general case it is more convenient to<br />
describe the rotational motion with respect to a co-rotational frame x which is embedded at each<br />
element since in this frame the tensor of inertia is constant.<br />
<br />
<br />
The previous set of equations are integrated in time using a simple central difference scheme. The<br />
time integration operator for the translational motion at the n-th time step is as follows:<br />
<br />
<br />
The first two steps in the integration scheme for the rotational motion are identical to those given<br />
by the previous equations:<br />
<br />
<br />
On the other hand, the vector of incremental rotation is computed as<br />
<br />
<br />
Knowledge of the incremental rotation is enough to update the tangential contact forces. It is also<br />
possible to track the rotational position of particles when necessary. If that is the case, the rotation matrices between<br />
the moving frames embedded in the particles and the fixed global frame must be updated<br />
incrementally by using an adequate multiplicative scheme. <br />
Explicit integration in time yields high computational efficiency and it enables the solution of large<br />
models. The main disadvantage of this explicit integration scheme is its conditional numerical stability<br />
which imposes a limitation on the time step delta_t.<br />
<br />
=== Search Strategies ===<br />
<br />
The contact search is a very important part of the method in terms of computational cost (range 60%-90% of simulation time in simulations with large number of particles) and it is possibly the most difficult part to treat when dealing with particles that have no spherical/circular shape.<br />
<br />
The contact detection basically consists in determining, for every target object, what other objects are in contact with, and then, judge for the correspondent interaction. It is usually not needed to perform a search every time step, which is generally limited for the stability of the explicit integration of the equations of motion. Due to the fact that the search is an expensive step a lower search frequency can be selected without much loss of accuracy.<br />
<br />
The most naïve method of search that can be set is the brute search; for every element, the method does a loop for any other element checking for the contact. The order of the number of operations needed is quadratic: n2. Normally, the strategy to avoid such an expensive scheme is to divide the contact search in two basic stages, a global search and a subsequent local resolution of the contact; in this case the computation time of the contact search is proportional to n log n. In the DEMApplication a Grid/Cell based algorithm is used in this purpose.<br />
<br />
==== Global Search ====<br />
<br />
In a generic way, there are two types of elements: searcher elements (particles or finite elements) and target elements (particles or finite elements). Hereafter<br />
searcher elements will be called S.E. and target elements T.E.<br />
<br />
[[File:Global_search1.png]]<br />
<br />
The steps needed to perform contact search are:<br />
<br />
a) Build bounding box of S.E. (Figure 2(a)).<br />
<br />
b) Build bins cells based on size and position of S.E. (Figure 2(b)).<br />
<br />
c) Collocate S.E. in bins and construct hash table with relates coordinates with cells which point to the contacting S.E. (Figure 2(c)).<br />
<br />
d) Build bounding box of T.E. (Figure 2(d)).<br />
<br />
e) Loop over T.E., detect the intersecting cells to each T.E., check the intersection with the possible found cells and add the entire S.E. contained in the cells intersected by each T.E. (Figure 2(e)).<br />
<br />
f) Solve the contact with local resolution (Figure 2(f)).<br />
<br />
Note: In the case of FE and DE the FE are selected as the S.E. to construct the Bins and the Spheres are T.E. to be found in that bins. <br />
<br />
[[File:Global_search2_bigger.png]]<br />
<br />
==== Local Search ====<br />
<br />
Once the possible neighbours are detected, the local resolution check takes place. For the case of two spherical particles, the check is easy; only the sum of the radius has to be compared against the distance between centres. Other geometries may demand a much complicated check. The followed strategy is to mesh all the geometries with a discretization of triangles. In 3D, surface meshes are used for contact detection. Now, the contact detection should be performed between particles and triangles; if no contact is found, particle contact against lines is searched for; and if contact is still not found, contact against points is performed. Figure 3 shows how the local search is performed. Particle i searches contact against element j, then against lines k, l and m and finally against points n, o and p.<br />
<br />
This is known as a hierarchical algorithm. For further explanation please refer to the paper: "3D contact algorithms for particle DEM with rigid and deformable solids" - M.Santasusana, J.Irazábal, E.Oñate, J.M.Carbonell. Where the advantges and the drawback of this method and other proposed algorithms are detailed and analysed in complicated situations like multicontact.<br />
<br />
[[File:Local_search1.png]]<br />
<br />
Fig. 3 Particle-Face contact detection.<br />
<br />
<br />
<br />
== Programming Implementation ==<br />
Structure of the code (Strategy, Scheme, Element, Node, Utilities, functions frequently used like FastGet,...)<br />
<br />
The source code is accessible through [https://kratos.cimne.upc.es/projects/kratos/repository/show/kratos this site].<br />
<br />
[[File:Dem manual code scheme 66.png]]<br />
<br />
A main Python script is used to trigger the calculation of a problem. It communicates with the C++ code. The main advantage of using a compiled language like python for the main script is that it allows to make quick adjustments or modifications to the main strategy without having to recompile the whole code avery time. It also allows for very fast testing.<br />
<br />
=== Main components of the code ===<br />
<br />
<br />
==== Elements ====<br />
<br />
Discontinuum, continuum, cohesive, swimming, cluster of spheres.<br />
<br />
==== Conditions ====<br />
<br />
Main the FEM elements: lines and triangles.<br />
<br />
==== Constitutive Laws ====<br />
<br />
Different interactions laws: linear, Hertzian and continuum behaviour.<br />
<br />
==== Python elements ====<br />
<br />
These files translate the strategies and the<br />
utilities defined in C++ language to be able<br />
to call them from python scripts.<br />
<br />
==== Strategies====<br />
<br />
The main script that calls the necessary schemes and the functions on the<br />
elements during the global loop.<br />
<br />
==== Schemes====<br />
<br />
Explicit integration schemes available<br />
<br />
==== Utilities====<br />
<br />
Here geometric functions are defined, the<br />
neighbours search function, configuration of the particle, amongst others.<br />
<br />
==== Python scripts====<br />
<br />
It contains, amongst other things, the python interface where the main function<br />
of the strategy such as Initialize or Solve<br />
are called. Other operations are done like adding the necessary nodal variables.<br />
<br />
==== Test examples====<br />
<br />
They contain the Benchmarks<br />
<br />
==== DEM_application====<br />
<br />
It contains all the variables that will be used so they are<br />
created and registered in python and C++.<br />
<br />
<br />
=== Main elements in the global python script ===<br />
<br />
<br />
The first step consist of importing all libraries and files necessary for the application.<br />
It is followed by the creation of the necessary input files of the problem at hand to be<br />
processed by the code. The solver strategy is also chosen, and some important operations are done, as for example the<br />
addition of the necessary variables to the solver.<br />
<br />
At this step the buffer size value is also set: this number determines the<br />
historical database size of the problem. The values for the different options and<br />
variables that Kratos will use in the computation are also imported here, like the<br />
integration scheme, the type of solution, damping specifications, time step, output<br />
time step of results, et cetera.<br />
<br />
After the definition of the previous settings, several initializing functions are called which are responsible<br />
of initializing, among other objects, the mesh, the inlet of particles or the solver. Also some operations related to parallel<br />
computing are done.<br />
<br />
Afterwards the time step is determined and the main computing loop is entered. At each time step Solve function is executed.<br />
Finally, at user-defined time steps the results are exported to GiD so they become ready for visualization and postprocessing.<br />
<br />
In fact, this main python file imports another script written in the same language, the ''sphere_strategy.py''. This file is very important<br />
because it contains the core structure that the program will follow when computing. On the other hand, it is the last door to the kernel of the program, which<br />
is written in C++. Some of the most important functions and classes in this file are the following:<br />
<br />
AddVariables: This function sets which variables will be<br />
stored in the nodes at each time step and also the value of those variables as a function of time also<br />
depending on the buffer size previously selected. See the next figure for details.<br />
<br />
<br />
[[File:Dem application add variables 66.png]]<br />
<br />
<br />
AddDofs: The desired degrees of freedom are set here, as can be seen in the design of the function in the figure that follows.<br />
<br />
<br />
[[File:Dem application add dofs 66.png]]<br />
<br />
<br />
The global structure of the explicit strategy the code uses is shown in the next figure. It consists of three main parts: a constructor of the class of the solver,<br />
which creates some default variables for the class, an initializer, which defines the values of several standard parameters, and finally, the ''Solve()'' function<br />
which takes command of almost the entire computing process. The next figure shows and schematic view of this structure.<br />
<br />
When using the ''Initialize()'' function to set the original values of a group of variables, they automatically become accessible in the different C++ files<br />
of the application by means of the ProcessInfo container (see more at ). This function also calls the Initialize function in the solver.<br />
<br />
<br />
[[File:Dem application explicit strategy 66.png]]<br />
<br />
<br />
C++ Solve() function scheme:<br />
<br />
<br />
[[File:Dem application solve cpp scheme 80.png]]<br />
<br />
<br />
<br />
DEM CONTINUUM<br />
<br />
<br />
Initialize() function scheme:<br />
<br />
<br />
[[File:Dem application initialize scheme 75.png]]<br />
<br />
<br />
Solve() function scheme:<br />
<br />
<br />
[[File:Dem application solve scheme 75.png]]<br />
<br />
<br />
Search() function scheme:<br />
<br />
<br />
[[File:Dem application search scheme 66.png]]<br />
<br />
== Benchmarks ==<br />
<br />
The DEM Benchmarks consist of a set of 9 simple tests which are run every night and whose object is to make sure both that the application performs correctly and that the code did not break after the daily changes. They are the following:<br />
<br />
===Test1: Elastic normal impact of two identical spheres===<br />
<br />
Check the evolution of the elastic normal contact force between two spheres with time.<br />
<br />
<br />
<br />
[[File:Benchmark1_1.png]]<br />
[[File:Benchmark1 graph 66.png]]<br />
<br />
If the coefficient of restitution is 1, the module of the initial and final velocities should be the same. Also, by symmetry, velocities should be equal for both spheres.<br />
<br />
_<br />
<br />
===Test2: Elastic normal impact of a sphere against a rigid plane===<br />
<br />
Check the evolution of the elastic normal contact force between a sphere and a plane.<br />
<br />
[[File:Benchmark2 66.png]]<br />
[[File:Benchmark2 graph 66.png]]<br />
<br />
If the coefficient of restitution is equal to 1, the module of the initial and final velocity should remain unchanged.<br />
<br />
_<br />
<br />
===Test3: Impact of a sphere against a rigid plane with different coefficients of restitution===<br />
<br />
Check the effect of different restitution coefficients on the damping ratio.<br />
<br />
[[File:Benchmark3 66.png]]<br />
[[File:Benchmark3 graph 66.png]]<br />
<br />
If total energy is conserved, the restitution coefficient and the damping ratio values should be identical.<br />
<br />
_<br />
<br />
===Test4: Oblique impact of a sphere with a rigid plane with constant velocity module and variable incident angles===<br />
<br />
Check the tangential restitution coefficient, final angular velocity and rebound angle of the sphere.<br />
<br />
[[File:Benchmark4_66.png]]<br />
[[File:Benchmark4 graph1_66.png]]<br />
[[File:Benchmark4 graph2_66.png]]<br />
<br />
_<br />
<br />
===Test5: Oblique impact of a sphere with a rigid plane with constant normal velocity and different angular velocities===<br />
<br />
Check the final linear and angular velocities of the sphere.<br />
<br />
[[File:Benchmark5_66.png]]<br />
[[File:Benchmark5 graph1_66.png]]<br />
<br />
_<br />
<br />
===Test6: Impact of a sphere with a rigid plane with a constant normal velocity and variable angular velocities===<br />
<br />
Check the final linear and angular velocities of the sphere.<br />
<br />
[[File:Benchmark6_66.png]]<br />
[[File:Benchmark6 graph1_66.png]]<br />
<br />
_<br />
<br />
===Test7: Impact of two identical spheres with a constant normal velocity and different angular velocities===<br />
<br />
Check the final linear and angular velocities of both spheres.<br />
<br />
[[File:Benchmark7_66.png]]<br />
[[File:Benchmark7 graph1_66.png]]<br />
<br />
By symmetry, the tangential final velocity of both spheres should be zero. Additionally, for a coefficient of restitution of 1, there should be no changes in the modules of both linear and angular velocities and their values should conserve symmetry. <br />
<br />
_<br />
<br />
===Test8: Impact of two differently sized spheres with a constant normal velocity and variable angular velocities===<br />
<br />
Check the final linear and angular velocities of both spheres.<br />
<br />
[[File:Benchmark8_66.png]]<br />
[[File:Benchmark8_graph1_66.png]]<br />
<br />
In this case, it is interesting to note that, the bigger and/or denser sphere 2 is, the more this test resembles the sphere versus plane simulation.<br />
<br />
_<br />
<br />
===Test9: Impact of two identical spheres with a constant normal velocity and different coefficients of restitution===<br />
<br />
Check the effect of different restitution coefficients on the damping ratio.<br />
<br />
[[File:Benchmark9_66.png]]<br />
[[File:Benchmark9_graph1_66.png]]<br />
<br />
If total energy is conserved, the restitution coefficient and the damping ratio values should be identical.<br />
<br />
<br />
References:<br />
<br />
Y.C.Chung, J.Y.Ooi. ''Benchmark tests for verifying discrete element modelling codes at particle impact level'' (2011).<br />
<br />
== How to analyse using the current application ==<br />
<br />
=== Pre-Process ===<br />
<br />
GUI's & GiD<br />
<br />
===== G-DEMPack =====<br />
<br />
G-DEMPack is the package that allows a user to create, run and analyze results of a DEM simulation for discontinuum / granular / little-cohesive materials. It is written for GiD. So in order to use this package, you should install GiD first.<br />
<br />
You can read the [[G-DEMPack manual]] or follow the G-DEMPack Tutorials included in [[G-DEMPack Tutorials]] for fast learning on how to use the GUI.<br />
<br />
===== C-DEMPack =====<br />
<br />
C-DEMPack combines the features of G-DEMPack with the simulation of continuum/cohesive materials. Refer to the [[C-DEMPack2 manual]] or follow the C-DEMPack Tutorials included in [[DEMPack Tutorials]] for more information.<br />
<br />
===== F-DEMPack =====<br />
<br />
F-DEMPack allows you to simulate a wide spectrum of problems involving the interaction of discontinuum DEM and fluid. It also needs GiD to work. The user is advised to take a look at [[F-DEMPack2 manual]] and follow the C-DEMPack Tutorials included in [[DEMPack Tutorials]] in order to get a quick idea of how this program works.<br />
<br />
=== Post-Process ===<br />
<br />
== Application Dependencies ==<br />
<br />
The Swimming DEM Application depends on the DEM application<br />
<br />
=== Other Kratos Applications used in current Application ===<br />
<br />
FEM-DEM<br />
<br />
<br />
== Problems! ==<br />
<br />
==== What to do if the Discrete Elements behave strangely ====<br />
<br />
In the case you notice that some discrete elements cross walls, penetrate in them or simply fly away of the domain at high velocity, check the following points:<br />
<br />
<br />
In the case of excessive penetration:<br />
<br />
*'''Check that the Young Modulus is big enough'''. A small Young Modulus makes the Elements and the walls behave in a very smooth way. Sometimes they are so soft that total penetration and trespass is possible.<br />
<br />
*'''Check the Density of the material'''. An excessive density means a big weight and inertia that cannot be stopped by the walls.<br />
*'''Check the Time Step'''. If the time step is too big, the Elements can go from one side of the wall to the other with no appearence of a reaction.<br />
*'''Check the frequency of neighbour search'''. If the search is not done frequently enough, the new contacts with the walls may not be detected soon enough.<br />
<br />
<br />
In the case of excessive bounce:<br />
<br />
*'''Check that the Young Modulus is not extremely big'''. An exaggerated Young Modulus yields extremely large reactions that can make the Elements bounce too fast in just one time step. Also take into account that the stability of explicit methods depends on the Young Modulus (the higher the modulus, the closer to instability).<br />
<br />
*'''Check the Density of the material'''. A very low density means a very small weight and inertia, so any force exerted by other elements or the walls can induce big accelerations on the element.<br />
*'''Check the Time Step'''. If the time step is too big, the method gains more energy, and gets closer to instability.<br />
*'''Check the restitution coefficient of the material'''. Explicit integration schemes gain energy noticeably, unless you use a really small time step. In case the time step is chosen to be big (but still stable), use the restitution coefficient to compensate the gain of energy and get more realistic results.<br />
<br />
== Contact ==<br />
<br />
Contact us for any question regarding this application:<br />
<br />
<br />
-Miguel Angel Celigueta: [mailto:maceli@cimne.upc.edu maceli@cimne.upc.edu]<br />
<br />
-Guillermo Casas: [mailto:gcasas@cimne.upc.edu gcasas@cimne.upc.edu]<br />
<br />
-Salva Latorre: [mailto:latorre@cimne.upc.edu latorre@cimne.upc.edu]<br />
<br />
-Ferran Arrufat: [mailto:farrufat@cimne.upc.edu farrufat@cimne.upc.edu]<br />
<br />
<br />
[[Category: Applications]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/DEM_ApplicationDEM Application2018-06-25T15:46:58Z<p>Maceli: /* C-DEMPack */</p>
<hr />
<div>WARNING: This page is still under construction.<br />
<br />
The DEM Kratos Team<br />
<br />
<br />
== Theory ==<br />
<br />
The fundamental theoretical background corresponding to the discontinuous (granular matter) part of the code can be found Casas et al. (2015). The following sections are destined to contain this information though are curently still under construction.<br />
<br />
Nothing numerical<br />
<br />
=== Integration Schemes ===<br />
<br />
*Symplectic Euler Scheme<br />
<br />
*Forward Euler Scheme<br />
<br />
*Taylor scheme<br />
<br />
*Verlet Velocity Scheme<br />
<br />
*Newmark Beta Method Scheme<br />
<br />
=== Contact Laws ===<br />
Concept of indentation<br />
HMD, LSD<br />
===== Normal Force Laws =====<br />
<br />
====== Linear Repulsive Force ======<br />
<br />
The most simple representation of a repulsive contact force between a sphere and a wall is given by a linear law, where the force acting on the sphere when contacting a plane is a linear function of the indentation, which in turn would bring a quadratic dependence with the contact radius. The next figure shows this simple law:<br />
<br />
[[File:Jkr cohesion linear force.png]]<br />
<br />
<br />
====== Hertzian Repulsive Force ======<br />
<br />
On the other hand, Hertz solved in 1882 the non-cohesive normal contact between a sphere and a plane. In 1971 Johnson, Kendall and Roberts presented the solution (JKR-Theory) for the same problem in this case adding cohesive behaviour. Not much later, Derjaguin, Müller and Toporov published similar results (DMT-Theory).<br />
<br />
Both theories are very close and correct, the main difference being that the JKR theory is oriented to the study of flexible, large spheres, while the DMT theory is specially suited to represent the behaviour of rigid, small ones.<br />
<br />
[[File:Jkr cohesion hertz.jpeg]]<br />
<br />
The previous figure shows the standard representation of a Linear or Hertzian contact between a sphere and a wall. The distribution of contact pressures between both bodies follow a parabolic law.<br />
<br />
====== JKR Cohesive Force ======<br />
<br />
[[File:Jkr cohesion jkr.jpeg]]<br />
<br />
The preceding capture shows the a representation of a JKR contact between a sphere and a wall. In this case, the distribution of pressures between both bodies is more complex due to the formation of a neck at the boundaries of the contact. A later figure shows a detailed view of the pressures involved.<br />
<br />
[[Image:Jkr cohesion forces.png]]<br />
<br />
In the previous graphic, it is very interesting to note the existence of two singular values of contact radius: one for which the total forces acting on the contacting sphere is zero, and another for which the maximum value of adhesion is achieved.<br />
<br />
<br />
[[File:Jkr cohesion pressures.png]]<br />
<br />
In the previous figure, the blue area represents the distribution of pressures acting on the sphere when contacting a wall if a Hertzian Law is followed. On the other hand, the sum of both green and blue areas represents the JKR distribution. Note the larger values and the existence of adhesive behaviour at both sides of the pressures distribution. <br />
<br />
<br />
An example of granular simulation without cohesive forces:<br />
<br />
[[File:JKR no cohesion 1 33.png]]<br />
[[File:JKR no cohesion 2 33.png]]<br />
[[File:JKR no cohesion 3 33.png]]<br />
[[File:JKR no cohesion 4 33.png]]<br />
<br />
The same simulation as before, this time with cohesive forces in both sphere-sphere and sphere-plane contacts.<br />
<br />
[[File:JKR cohesion 1 33.png]]<br />
[[File:JKR cohesion 2 33.png]]<br />
[[File:JKR cohesion 3 33.png]]<br />
[[File:JKR cohesion 4 33.png]]<br />
<br />
<br />
References:<br />
<br />
V. L. Popov. "Contact Mechanics and Friction" (2010). <br><br />
G. Casas et al. "A modular, partitioned, discrete element framework for industrial grain distribution systems with rotating machinery." Computational Particle Mechanics (2015): 1-18.<br />
<br />
===== Tangential Force Laws =====<br />
<br />
===== Damping Force Laws =====<br />
<br />
(restit. coef)<br />
<br />
== Numerical approach ==<br />
<br />
This section is dedicated to describe the numerical methods used to solve.<br />
<br />
<br />
[[File:Dem manual main scheme 66 discontinuum.png]]<br />
<br />
<br />
=== DEM elements ===<br />
<br />
===== Spheric Particle =====<br />
===== Spheric Continuum Particle =====<br />
===== Spheric Swimming Particle =====<br />
<br />
=== DEM walls (Kratos Conditions) ===<br />
<br />
=== DEM Inlets ===<br />
<br />
A DEM Inlet is a source of new DEM Elements. It is a cloud of Nodes, where each Node is the center of a ''Generator Sphere''. In a random order, the Nodes are chosen to create a new DEM Element (both spherical elements or clusters) whose center coincides with the Node and the whole element is fully included in the ''Generator Sphere''. The newly generated DEM Element has a non-zero imposed velocity which eventually makes the DEM Element get outside the ''Generator Sphere''. Until this moment, the ''Generator Sphere'' is not allowed to generate another DEM-Element. From this moment on, the newly created DEM Element no longer has the velocity imposed, it moves freely and cannot penetrate its ''Generator Sphere'' or any other. Actually, the ''Generator Sphere'' is seen as any other Sphere of the domain by the DEM Element, and the contact between them is calculated as usual. In other words, '''the Generator Spheres reserve the necessary space to create a new DEM Element'''.<br />
<br />
=== DEM strategies ===<br />
<br />
===== Non-cohesive materials Strategy =====<br />
<br />
====== Evaluation of Forces ======<br />
<br />
Once contact between two spheres has been detected (see next figure), the forces occurring at the<br />
contact point are computed. The interaction between the two contacting spheres can be represented<br />
by forces Fij and Fji, which have the same module but opposite directions.<br />
<br />
<br />
[[File:Dem application interaction forces.png]]<br />
<br />
<br />
At the same time, this force Fij can be decomposed into its normal and shear components Fijn and Fijs, respectively. The next figure shows a detailed view of this decomposition.<br />
<br />
Fij = Fijn + Fijs = Fnnij + Fijs<br />
<br />
<br />
<br />
[[File:Dem application forces decomposition.png]]<br />
<br />
<br />
The nij vector represents the unitary normal with respect to the surfaces of both particles at the contact point. This vector lies along the line connecting the centers of the two particles and is directed<br />
outwards from particle i.<br />
<br />
<br />
The contact forces Fn, Fs1 and Fs2 are obtained using a constitutive model formulated for the<br />
contact between two rigid spheres (or discs in 2D). The contact interface for the simplest formulation<br />
is characterized by the normal and tangential stiffness Kn and Ks, respectively, a frictional device<br />
obeying the Couloumb law with a frictional coefficient mu, and a dashpot defined by the contact damping<br />
coefficient cn as shown in the next figure.<br />
<br />
<br />
[[File:Dem application forces rheological.png]]<br />
<br />
====== Rolling Friction ======<br />
<br />
In order to represent irregular particles with spheres, a numerical correction is used. This correction is the rolling friction which is about imposing a virtual moment opposite to particle rotation and dependent on its size.<br />
<br />
[[File:Rolling_friction_1.png|300px]]<br />
<br />
Fn represents the normal force, Ft the tangential force, ω the angular velocity, r is the radius and η the rolling friction coefficient.<br />
<br />
In our approach there are two importatn conditions that have to be fulfilled:<br />
<br />
1. The moment due to rolling friction can not change the direction of the particle spin.<br />
<br />
2. If the contact occurs between two spheres the rolling friction is calculated with the radius of the smallest spheres.<br />
<br />
[[File:Rolling_friction_surfaces.png|150px]]<br />
<br />
The model used is described in the following article: J. Irazábal, F. Salazar, E. Oñate. Numerical modelling of granular materials with spherical discrete particles and the bounded rolling friction model. Application to railway ballast. Computers and Geotechnics 85 (2017) 220–229.<br />
<br />
===== Continuum Strategy =====<br />
<br />
=== DEM schemes ===<br />
<br />
==== Integration of Motion ====<br />
<br />
<br />
The standard translational and rotational equations for the motion of rigid bodies are used to compute the dynamics of the spheres.<br />
For the i-th particle we have:<br />
<br />
miui = Fi<br />
Ii i = Ti<br />
<br />
<br />
where u represents the element centroid displacement in a xed (inertial) coordinate frame X, ! the angular<br />
velocity, m the element mass, I the moment of inertia, Fi the resultant force, and Ti the<br />
total moment arount the central axes.<br />
<br />
<br />
Vectors Fi and Ti are the sum of all forces and moments applied to the i-th particle due<br />
to external loads, Fexti and Texti , respectively, the contact interactions with neighbour spheres Fc<br />
i, j = 1;; nc, where nci is the total number of elements in contact with the i-th discrete<br />
element, and the forces and moments resulting from external damping, Fdampi and Tdampi , respectively,<br />
which can be written as:<br />
<br />
<br />
Fi = Fexti +nciXj=1Fci + Fdampi<br />
<br />
Ti = Texti +nciXj=1(rci Fci + qci ) + Tdampi<br />
<br />
<br />
[[File:Dem application motion.png]]<br />
<br />
<br />
where rci is the vector connecting the centre of mass of the i th particle with the contact point c<br />
(see next figure) and qci are the torques due to rolling and/or torsion (not related to the tangential forces).<br />
The next figure shows the motion of a rigid particle. Note that the form of the rotational equation is only valid for spheres and cylinders (in<br />
2D). It is simplified with respect to a general form for an arbitrary rigid body with the rotational<br />
inertial properties represented by a second order tensor. In the general case it is more convenient to<br />
describe the rotational motion with respect to a co-rotational frame x which is embedded at each<br />
element since in this frame the tensor of inertia is constant.<br />
<br />
<br />
The previous set of equations are integrated in time using a simple central difference scheme. The<br />
time integration operator for the translational motion at the n-th time step is as follows:<br />
<br />
<br />
The first two steps in the integration scheme for the rotational motion are identical to those given<br />
by the previous equations:<br />
<br />
<br />
On the other hand, the vector of incremental rotation is computed as<br />
<br />
<br />
Knowledge of the incremental rotation is enough to update the tangential contact forces. It is also<br />
possible to track the rotational position of particles when necessary. If that is the case, the rotation matrices between<br />
the moving frames embedded in the particles and the fixed global frame must be updated<br />
incrementally by using an adequate multiplicative scheme. <br />
Explicit integration in time yields high computational efficiency and it enables the solution of large<br />
models. The main disadvantage of this explicit integration scheme is its conditional numerical stability<br />
which imposes a limitation on the time step delta_t.<br />
<br />
=== Search Strategies ===<br />
<br />
The contact search is a very important part of the method in terms of computational cost (range 60%-90% of simulation time in simulations with large number of particles) and it is possibly the most difficult part to treat when dealing with particles that have no spherical/circular shape.<br />
<br />
The contact detection basically consists in determining, for every target object, what other objects are in contact with, and then, judge for the correspondent interaction. It is usually not needed to perform a search every time step, which is generally limited for the stability of the explicit integration of the equations of motion. Due to the fact that the search is an expensive step a lower search frequency can be selected without much loss of accuracy.<br />
<br />
The most naïve method of search that can be set is the brute search; for every element, the method does a loop for any other element checking for the contact. The order of the number of operations needed is quadratic: n2. Normally, the strategy to avoid such an expensive scheme is to divide the contact search in two basic stages, a global search and a subsequent local resolution of the contact; in this case the computation time of the contact search is proportional to n log n. In the DEMApplication a Grid/Cell based algorithm is used in this purpose.<br />
<br />
==== Global Search ====<br />
<br />
In a generic way, there are two types of elements: searcher elements (particles or finite elements) and target elements (particles or finite elements). Hereafter<br />
searcher elements will be called S.E. and target elements T.E.<br />
<br />
[[File:Global_search1.png]]<br />
<br />
The steps needed to perform contact search are:<br />
<br />
a) Build bounding box of S.E. (Figure 2(a)).<br />
<br />
b) Build bins cells based on size and position of S.E. (Figure 2(b)).<br />
<br />
c) Collocate S.E. in bins and construct hash table with relates coordinates with cells which point to the contacting S.E. (Figure 2(c)).<br />
<br />
d) Build bounding box of T.E. (Figure 2(d)).<br />
<br />
e) Loop over T.E., detect the intersecting cells to each T.E., check the intersection with the possible found cells and add the entire S.E. contained in the cells intersected by each T.E. (Figure 2(e)).<br />
<br />
f) Solve the contact with local resolution (Figure 2(f)).<br />
<br />
Note: In the case of FE and DE the FE are selected as the S.E. to construct the Bins and the Spheres are T.E. to be found in that bins. <br />
<br />
[[File:Global_search2_bigger.png]]<br />
<br />
==== Local Search ====<br />
<br />
Once the possible neighbours are detected, the local resolution check takes place. For the case of two spherical particles, the check is easy; only the sum of the radius has to be compared against the distance between centres. Other geometries may demand a much complicated check. The followed strategy is to mesh all the geometries with a discretization of triangles. In 3D, surface meshes are used for contact detection. Now, the contact detection should be performed between particles and triangles; if no contact is found, particle contact against lines is searched for; and if contact is still not found, contact against points is performed. Figure 3 shows how the local search is performed. Particle i searches contact against element j, then against lines k, l and m and finally against points n, o and p.<br />
<br />
This is known as a hierarchical algorithm. For further explanation please refer to the paper: "3D contact algorithms for particle DEM with rigid and deformable solids" - M.Santasusana, J.Irazábal, E.Oñate, J.M.Carbonell. Where the advantges and the drawback of this method and other proposed algorithms are detailed and analysed in complicated situations like multicontact.<br />
<br />
[[File:Local_search1.png]]<br />
<br />
Fig. 3 Particle-Face contact detection.<br />
<br />
<br />
<br />
== Programming Implementation ==<br />
Structure of the code (Strategy, Scheme, Element, Node, Utilities, functions frequently used like FastGet,...)<br />
<br />
The source code is accessible through [https://kratos.cimne.upc.es/projects/kratos/repository/show/kratos this site].<br />
<br />
[[File:Dem manual code scheme 66.png]]<br />
<br />
A main Python script is used to trigger the calculation of a problem. It communicates with the C++ code. The main advantage of using a compiled language like python for the main script is that it allows to make quick adjustments or modifications to the main strategy without having to recompile the whole code avery time. It also allows for very fast testing.<br />
<br />
=== Main components of the code ===<br />
<br />
<br />
==== Elements ====<br />
<br />
Discontinuum, continuum, cohesive, swimming, cluster of spheres.<br />
<br />
==== Conditions ====<br />
<br />
Main the FEM elements: lines and triangles.<br />
<br />
==== Constitutive Laws ====<br />
<br />
Different interactions laws: linear, Hertzian and continuum behaviour.<br />
<br />
==== Python elements ====<br />
<br />
These files translate the strategies and the<br />
utilities defined in C++ language to be able<br />
to call them from python scripts.<br />
<br />
==== Strategies====<br />
<br />
The main script that calls the necessary schemes and the functions on the<br />
elements during the global loop.<br />
<br />
==== Schemes====<br />
<br />
Explicit integration schemes available<br />
<br />
==== Utilities====<br />
<br />
Here geometric functions are defined, the<br />
neighbours search function, configuration of the particle, amongst others.<br />
<br />
==== Python scripts====<br />
<br />
It contains, amongst other things, the python interface where the main function<br />
of the strategy such as Initialize or Solve<br />
are called. Other operations are done like adding the necessary nodal variables.<br />
<br />
==== Test examples====<br />
<br />
They contain the Benchmarks<br />
<br />
==== DEM_application====<br />
<br />
It contains all the variables that will be used so they are<br />
created and registered in python and C++.<br />
<br />
<br />
=== Main elements in the global python script ===<br />
<br />
<br />
The first step consist of importing all libraries and files necessary for the application.<br />
It is followed by the creation of the necessary input files of the problem at hand to be<br />
processed by the code. The solver strategy is also chosen, and some important operations are done, as for example the<br />
addition of the necessary variables to the solver.<br />
<br />
At this step the buffer size value is also set: this number determines the<br />
historical database size of the problem. The values for the different options and<br />
variables that Kratos will use in the computation are also imported here, like the<br />
integration scheme, the type of solution, damping specifications, time step, output<br />
time step of results, et cetera.<br />
<br />
After the definition of the previous settings, several initializing functions are called which are responsible<br />
of initializing, among other objects, the mesh, the inlet of particles or the solver. Also some operations related to parallel<br />
computing are done.<br />
<br />
Afterwards the time step is determined and the main computing loop is entered. At each time step Solve function is executed.<br />
Finally, at user-defined time steps the results are exported to GiD so they become ready for visualization and postprocessing.<br />
<br />
In fact, this main python file imports another script written in the same language, the ''sphere_strategy.py''. This file is very important<br />
because it contains the core structure that the program will follow when computing. On the other hand, it is the last door to the kernel of the program, which<br />
is written in C++. Some of the most important functions and classes in this file are the following:<br />
<br />
AddVariables: This function sets which variables will be<br />
stored in the nodes at each time step and also the value of those variables as a function of time also<br />
depending on the buffer size previously selected. See the next figure for details.<br />
<br />
<br />
[[File:Dem application add variables 66.png]]<br />
<br />
<br />
AddDofs: The desired degrees of freedom are set here, as can be seen in the design of the function in the figure that follows.<br />
<br />
<br />
[[File:Dem application add dofs 66.png]]<br />
<br />
<br />
The global structure of the explicit strategy the code uses is shown in the next figure. It consists of three main parts: a constructor of the class of the solver,<br />
which creates some default variables for the class, an initializer, which defines the values of several standard parameters, and finally, the ''Solve()'' function<br />
which takes command of almost the entire computing process. The next figure shows and schematic view of this structure.<br />
<br />
When using the ''Initialize()'' function to set the original values of a group of variables, they automatically become accessible in the different C++ files<br />
of the application by means of the ProcessInfo container (see more at ). This function also calls the Initialize function in the solver.<br />
<br />
<br />
[[File:Dem application explicit strategy 66.png]]<br />
<br />
<br />
C++ Solve() function scheme:<br />
<br />
<br />
[[File:Dem application solve cpp scheme 80.png]]<br />
<br />
<br />
<br />
DEM CONTINUUM<br />
<br />
<br />
Initialize() function scheme:<br />
<br />
<br />
[[File:Dem application initialize scheme 75.png]]<br />
<br />
<br />
Solve() function scheme:<br />
<br />
<br />
[[File:Dem application solve scheme 75.png]]<br />
<br />
<br />
Search() function scheme:<br />
<br />
<br />
[[File:Dem application search scheme 66.png]]<br />
<br />
== Benchmarks ==<br />
<br />
The DEM Benchmarks consist of a set of 9 simple tests which are run every night and whose object is to make sure both that the application performs correctly and that the code did not break after the daily changes. They are the following:<br />
<br />
===Test1: Elastic normal impact of two identical spheres===<br />
<br />
Check the evolution of the elastic normal contact force between two spheres with time.<br />
<br />
<br />
<br />
[[File:Benchmark1_1.png]]<br />
[[File:Benchmark1 graph 66.png]]<br />
<br />
If the coefficient of restitution is 1, the module of the initial and final velocities should be the same. Also, by symmetry, velocities should be equal for both spheres.<br />
<br />
_<br />
<br />
===Test2: Elastic normal impact of a sphere against a rigid plane===<br />
<br />
Check the evolution of the elastic normal contact force between a sphere and a plane.<br />
<br />
[[File:Benchmark2 66.png]]<br />
[[File:Benchmark2 graph 66.png]]<br />
<br />
If the coefficient of restitution is equal to 1, the module of the initial and final velocity should remain unchanged.<br />
<br />
_<br />
<br />
===Test3: Impact of a sphere against a rigid plane with different coefficients of restitution===<br />
<br />
Check the effect of different restitution coefficients on the damping ratio.<br />
<br />
[[File:Benchmark3 66.png]]<br />
[[File:Benchmark3 graph 66.png]]<br />
<br />
If total energy is conserved, the restitution coefficient and the damping ratio values should be identical.<br />
<br />
_<br />
<br />
===Test4: Oblique impact of a sphere with a rigid plane with constant velocity module and variable incident angles===<br />
<br />
Check the tangential restitution coefficient, final angular velocity and rebound angle of the sphere.<br />
<br />
[[File:Benchmark4_66.png]]<br />
[[File:Benchmark4 graph1_66.png]]<br />
[[File:Benchmark4 graph2_66.png]]<br />
<br />
_<br />
<br />
===Test5: Oblique impact of a sphere with a rigid plane with constant normal velocity and different angular velocities===<br />
<br />
Check the final linear and angular velocities of the sphere.<br />
<br />
[[File:Benchmark5_66.png]]<br />
[[File:Benchmark5 graph1_66.png]]<br />
<br />
_<br />
<br />
===Test6: Impact of a sphere with a rigid plane with a constant normal velocity and variable angular velocities===<br />
<br />
Check the final linear and angular velocities of the sphere.<br />
<br />
[[File:Benchmark6_66.png]]<br />
[[File:Benchmark6 graph1_66.png]]<br />
<br />
_<br />
<br />
===Test7: Impact of two identical spheres with a constant normal velocity and different angular velocities===<br />
<br />
Check the final linear and angular velocities of both spheres.<br />
<br />
[[File:Benchmark7_66.png]]<br />
[[File:Benchmark7 graph1_66.png]]<br />
<br />
By symmetry, the tangential final velocity of both spheres should be zero. Additionally, for a coefficient of restitution of 1, there should be no changes in the modules of both linear and angular velocities and their values should conserve symmetry. <br />
<br />
_<br />
<br />
===Test8: Impact of two differently sized spheres with a constant normal velocity and variable angular velocities===<br />
<br />
Check the final linear and angular velocities of both spheres.<br />
<br />
[[File:Benchmark8_66.png]]<br />
[[File:Benchmark8_graph1_66.png]]<br />
<br />
In this case, it is interesting to note that, the bigger and/or denser sphere 2 is, the more this test resembles the sphere versus plane simulation.<br />
<br />
_<br />
<br />
===Test9: Impact of two identical spheres with a constant normal velocity and different coefficients of restitution===<br />
<br />
Check the effect of different restitution coefficients on the damping ratio.<br />
<br />
[[File:Benchmark9_66.png]]<br />
[[File:Benchmark9_graph1_66.png]]<br />
<br />
If total energy is conserved, the restitution coefficient and the damping ratio values should be identical.<br />
<br />
<br />
References:<br />
<br />
Y.C.Chung, J.Y.Ooi. ''Benchmark tests for verifying discrete element modelling codes at particle impact level'' (2011).<br />
<br />
== How to analyse using the current application ==<br />
<br />
=== Pre-Process ===<br />
<br />
GUI's & GiD<br />
<br />
===== G-DEMPack =====<br />
<br />
G-DEMPack is the package that allows a user to create, run and analyze results of a DEM simulation for discontinuum / granular / little-cohesive materials. It is written for GiD. So in order to use this package, you should install GiD first.<br />
<br />
You can read the [[G-DEMPack manual]] or follow the G-DEMPack Tutorials included in [[G-DEMPack Tutorials]] for fast learning on how to use the GUI.<br />
<br />
===== C-DEMPack =====<br />
<br />
C-DEMPack combines the features of G-DEMPack with the simulation of continuum/cohesive materials. Refer to the [[C-DEMPack2 manual]] or follow the C-DEMPack Tutorials included in [[DEMPack Tutorials]] for more information.<br />
<br />
===== F-DEMPack =====<br />
<br />
F-DEMPack allows you to simulate a wide spectrum of problems involving the interaction of discontinuum DEM and fluid. It also needs GiD to work. The user is advised to take a look at [[F-DEMPack2 manual]] and follow the C-DEMPack Tutorials included in [[G-DEMPack Tutorials]] in order to get a quick idea of how this program works.<br />
<br />
=== Post-Process ===<br />
<br />
== Application Dependencies ==<br />
<br />
The Swimming DEM Application depends on the DEM application<br />
<br />
=== Other Kratos Applications used in current Application ===<br />
<br />
FEM-DEM<br />
<br />
<br />
== Problems! ==<br />
<br />
==== What to do if the Discrete Elements behave strangely ====<br />
<br />
In the case you notice that some discrete elements cross walls, penetrate in them or simply fly away of the domain at high velocity, check the following points:<br />
<br />
<br />
In the case of excessive penetration:<br />
<br />
*'''Check that the Young Modulus is big enough'''. A small Young Modulus makes the Elements and the walls behave in a very smooth way. Sometimes they are so soft that total penetration and trespass is possible.<br />
<br />
*'''Check the Density of the material'''. An excessive density means a big weight and inertia that cannot be stopped by the walls.<br />
*'''Check the Time Step'''. If the time step is too big, the Elements can go from one side of the wall to the other with no appearence of a reaction.<br />
*'''Check the frequency of neighbour search'''. If the search is not done frequently enough, the new contacts with the walls may not be detected soon enough.<br />
<br />
<br />
In the case of excessive bounce:<br />
<br />
*'''Check that the Young Modulus is not extremely big'''. An exaggerated Young Modulus yields extremely large reactions that can make the Elements bounce too fast in just one time step. Also take into account that the stability of explicit methods depends on the Young Modulus (the higher the modulus, the closer to instability).<br />
<br />
*'''Check the Density of the material'''. A very low density means a very small weight and inertia, so any force exerted by other elements or the walls can induce big accelerations on the element.<br />
*'''Check the Time Step'''. If the time step is too big, the method gains more energy, and gets closer to instability.<br />
*'''Check the restitution coefficient of the material'''. Explicit integration schemes gain energy noticeably, unless you use a really small time step. In case the time step is chosen to be big (but still stable), use the restitution coefficient to compensate the gain of energy and get more realistic results.<br />
<br />
== Contact ==<br />
<br />
Contact us for any question regarding this application:<br />
<br />
<br />
-Miguel Angel Celigueta: [mailto:maceli@cimne.upc.edu maceli@cimne.upc.edu]<br />
<br />
-Guillermo Casas: [mailto:gcasas@cimne.upc.edu gcasas@cimne.upc.edu]<br />
<br />
-Salva Latorre: [mailto:latorre@cimne.upc.edu latorre@cimne.upc.edu]<br />
<br />
-Ferran Arrufat: [mailto:farrufat@cimne.upc.edu farrufat@cimne.upc.edu]<br />
<br />
<br />
[[Category: Applications]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/DEMPack_TutorialsDEMPack Tutorials2018-06-25T14:57:55Z<p>Maceli: moved G-DEMPack Tutorials to DEMPack Tutorials</p>
<hr />
<div>== G-DEMPack Tutorials ==<br />
<br />
[[G-DEMPack Tutorial 1: Conveyor belt]]<br />
<br />
[[G-DEMPack Tutorial 2: DemPack 2.0]]<br />
<br />
[[G-DEMPack Tutorial 3: DEM Meshers]]<br />
<br />
== F-DEMPack Tutorials ==<br />
<br />
[[F-DEMPack Tutorial 1: Curved pipe]]<br />
<br />
[[F-DEMPack Tutorial 2: Annular pipe]]<br />
<br />
== C-DEMPack Tutorials ==<br />
<br />
[[C-DEMPack Tutorial 1: Cohesive DemPack 2.0]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/G-DEMPack_Tutorial_2:_DemPack_2.0G-DEMPack Tutorial 2: DemPack 2.02018-06-25T14:35:28Z<p>Maceli: /* Creating the Geometry of the Domain and the DEM Objects */</p>
<hr />
<div>== Introduction ==<br />
<br />
This tutorial assumes that both the G-DEMPack and the GiD Pre and Postprocessor are installed, otherwise please follow the instructions in [[G-DEMPack installation]]. Please check the [[G-DEMPack2 manual]] page for a detailed explanation of all the fields and concepts present in this tutorial as well as for how to load the Problem Type.<br />
<br />
== Creating the Geometry of the Domain and the DEM Objects ==<br />
<br />
In general, the process should start by creating a new geometry from scratch or by modifying or using an already existing one. For this tutorial, a group of simple entities were created which try to represent a simplified example of most of the capabilities of the program. The main objective of this document is to understand all the steps involved in assigning the corresponding properties and boundary conditions to a model and how to run a DEM simulation using the G-DEMPack package. The GiD geometry of this tutorial is available for downloading here: [[File:D DEMPack2 Tutorial 2.zip]]. On the other hand, the user is strongly encouraged to follow any of the GiD Tutorials available [http://www.gidhome.com/support/tutorials here].<br />
<br />
<br />
We will start by assigning the corresponding group properties. In this tutorial, a very easy geometry was created for the sake of simplicity. The next figure shows the geometry chosen, a very simple but representative enough one.<br />
<br />
<br />
[[File:Geometry2.png|700px]]<br />
<br />
<br />
We follow by assigning groups to the geometry. To do this, we must open the Group Editor window by clicking on the icon showing in the next figure:<br />
<br />
<br />
[[File:Menu01.png]]<br />
<br />
<br />
Once the window is opened, we have to create the groups representing our domain. To do so, we have to click on the New icon to start adding entities. The next figure shows its location. When the New icon is pressed, an automatically named group will be created. To rename it, just click on it, modify the name and press enter to finish. Do this process as many time as needed to create the necessary groups.<br />
<br />
<br />
[[File:Dem tutorial group properties new.png]]<br />
<br />
<br />
In this sample case, seven groups were created: two FEM walls (the floor and a box), two different inlets (one creating spheres and the other clusters) and three initial volumes of spheres. The list of group entities should be similar to the one that follows:<br />
<br />
<br />
[[File:Groups tutorial2 2.png]]<br />
<br />
<br />
We must start assigning entities to the groups. To do this, just right-click on the corresponding layer, go to assign, choose the geometry type (in general surfaces or volumes), choose the appropriate geometry in the GiD drawing and click Finish when done. The next figure shows the result of correctly assigning entities to their corresponding groups.<br />
<br />
<br />
[[File:Geometry3.png|700px]]<br />
<br />
<br />
To do the previous operation, the user must first select the appropriate group and press the 'Draw groups by colour' icon to confirm the correct assignation. Press Finish when done. The next figure shows the location of the corresponding icon.<br />
<br />
<br />
[[File:Groups tutorial2.png]]<br />
<br />
== Setting the DEM Materials ==<br />
<br />
<br />
We will continue by defining the properties of the DEM elements in the simulation. We just have to click on the Materials tab at the top of the tree to access the Materials section. The user can modify already existing materials in the tree by double clicking on the corresponding material. He can also create new materials by right-clicking on DEM and selecting New Material. The next figure shows the window.<br />
<br />
<br />
[[File:Materials.png]]<br />
<br />
<br />
To create or modify the material properties, we go to the desired material and unfold its properties by clicking on the plus sign on the right of its name. A list of parameters to fill in will unfold. To edit the value of the parameters, just double-click on its corresponding current data and insert the new data.<br />
<br />
== Assigning the DEM Element Entities==<br />
<br />
<br />
It is possible to create initial volumes composed of DEM spheres. To assign these volumes, the user must first double-click the DEM > Elements > DEM_Element section inside the Model tab. A window will open up at the bottom of the tree where the user will be able to insert the group associated with this DEM entity. The next figure shows this section in the tree.<br />
<br />
<br />
[[File:DEMPack tut2 dem elements.png]]<br />
<br />
<br />
On the other hand, details on the assignation of materials and their associated groups are shown in the figure that follows. The user must click Ok when finished.<br />
<br />
<br />
[[File:DEMPack tut2 dem elements 2.png]]<br />
<br />
== Setting the Conditions ==<br />
<br />
<br />
=== Creating Inlet Objects===<br />
<br />
<br />
We now proceed to set the boundary conditions, which consist in the inlet and DEM-FEM entities. We will first start with the inlet feature. To begin filling this section, we just double-click on the Inlet label and all its properties will show up. Apart from setting the value of the different parameters that will show up, again we have to relate this inlet condition with its corresponding group at the bottom and click Ok when done. The next figure shows the details.<br />
<br />
<br />
[[File:DEMPack tut2 inlet1.png]][[File:DEMPack tut2 inlet2.png]]<br />
<br />
=== Creating DEM-FEM Wall Entities===<br />
<br />
<br />
We follow by settting and assigning the properties of the DEM-FEM entities. In this case, a set of three subsections will unfold: the ‘Linear velocity’, the ‘Angular velocity’ and the 'Settings'. The next capture shows this menu and the particular settings for this simulation.<br />
<br />
<br />
[[File:DEMPack tut2 demfem.png]]<br />
<br />
<br />
Both ‘Linear velocity’ and ‘Angular velocity’ parameters can be set to be periodical, assuming that the group starts at the center of the motion with maximum speed equal to the imposed value. Motionless properties are imposed bu default. In case of imposing both linear and angular velocities, the linear velocity only affects the center of rotation, while the rotation is around the updated position of the center of rotation. Finally, in the 'Settings’ section a very useful option exists, the 'Update velocity, not Displacements', which is being used in this tutorial. When this feature is activated, the corresponding DEM-FEM entity will have a certain velocity field assigned to its nodes but no displacement will occur. As said, this option will be active for the conveyor belt layer.<br />
<br />
=== Prescribing and restricting the motion of Elements ===<br />
<br />
[[File:DEMPack tut2 prescribe motion.png]]<br />
<br />
=== Setting Initial Conditions on Elements ===<br />
<br />
[[File:DEMPack tut2 initial conditions.png]]<br />
<br />
== Setting up the General Options ==<br />
<br />
<br />
The next step is to set the values of several DEM general parameters. Check the DEM Manual Page for a detailed explanation for each of the sections. The next figure shows the chosen values of those variables for the current simulation.<br />
<br />
<br />
[[File:DEMPack tut2 general options.png]]<br />
<br />
== Choosing the Solution Strategy ==<br />
<br />
This item has two subsections. On the first subsection, the user can set the type of parallel computing to use as well as the number of threads. The second subsection is devoted basically to time parameters, where the calculation delta time and the total time of the simulation can be entered. The user can also set the DEM neighbours search frequency and how often he gets information output on screen. The next figure shows the concrete values in this case.<br />
<br />
[[File:DEMPack tut2 solution strategy.png]]<br />
<br />
== Results Settings ==<br />
<br />
<br />
In this last section the user can set the values of several parameters in relation to Results. The next figure shows the chosen values for the present simulation, as well as how the Force integration group subsection works referring to the Graphs item. Please check the [[G-DEMPack manual]] for a detailed review of all fields in this section.<br />
<br />
[[File:DEMPack tut2 results.png]]<br />
<br />
== Meshing and Running the Simulation ==<br />
<br />
<br />
Finally, the last step before launching the calculation is to mesh the whole domain. To use the sphere mesher for the DEM volumes, the user must first select the corresponding entities. This is done by going to Mesh > Element_type > Sphere, selecting the desired volume and pressing Esc when done. Secondly, an average radius must be chosen for the mesh by clicking on Mesh > Unstructured > Assign_sizes_on_volumes, inserting the desired size in the window that will open, clicking on Assign to select the volume and pressing Esc and Close to finish assignation.<br />
<br />
Additional meshing settings can be set on the Preferences window. This window is accessible by clicking on Utilities>Preferences. The options are available clicking on the tree option ‘Meshing’, tree sub-option ‘Sphere Mesher’.<br />
<br />
An analogous procedure can be followed for meshing the FEM entities, in this case though by going to Mesh > Unstructures > Assign sizes on Surfaces, selecting the corresponding surfaces, inserting the desired value and pressing Esc when done. The next figure shows the chosen sizes for each of the entities in the simulation. Layers with no assigned size will take as mesh size the value given just before meshing. In our case, a global mesh size of 0.4 was used.<br />
<br />
<br />
[[File:Mesh size.png|700px]]<br />
<br />
<br />
To mesh, we have to go to Mesh > Generate Mesh, insert the desired value and click OK. A mesh like the one showing in the figure that follows should be obtained.<br />
<br />
<br />
[[File:Mesh.png|700px]][[File:Mesh2.png|700px]]<br />
<br />
<br />
Finally, we save the model and launch the calculation by clicking on Calculate>Calculate. The user can follow the state of the simulation by going to Calculate>View_process_info. Once the calculation is finished, we can examine the results by shifting to the GiD Postprocess.<br />
<br />
== Post-Processing ==<br />
<br />
<br />
Please check the GiD help documentation or the [http://www.gidhome.com/support/tutorials GiD tutorials] for a quick view on Post-Process basic features. The next figures show some snapshots of the resulting simulation.<br />
<br />
<br />
[[File:Vid1of4.png|500px]][[File:Vid2of4.png|500px]]<br />
<br />
[[File:Vid3of4.png|500px]][[File:Vid4of4.png|500px]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/G-DEMPack_Tutorial_2:_DemPack_2.0G-DEMPack Tutorial 2: DemPack 2.02018-06-25T14:35:02Z<p>Maceli: /* Results Settings */</p>
<hr />
<div>== Introduction ==<br />
<br />
This tutorial assumes that both the G-DEMPack and the GiD Pre and Postprocessor are installed, otherwise please follow the instructions in [[G-DEMPack installation]]. Please check the [[G-DEMPack2 manual]] page for a detailed explanation of all the fields and concepts present in this tutorial as well as for how to load the Problem Type.<br />
<br />
== Creating the Geometry of the Domain and the DEM Objects ==<br />
<br />
In general, the process should start by creating a new geometry from scratch or by modifying or using an already existing one. For this tutorial, a group of simple entities were created which try to represent a simplified example of most of the capabilities of the program. The main objective of this document is to understand all the steps involved in assigning the corresponding properties and boundary conditions to a model and how to run a DEM simulation using the D-DEMPack package. The GiD geometry of this tutorial is available for downloading here: [[File:D DEMPack2 Tutorial 2.zip]]. On the other hand, the user is strongly encouraged to follow any of the GiD Tutorials available [http://www.gidhome.com/support/tutorials here].<br />
<br />
<br />
We will start by assigning the corresponding group properties. In this tutorial, a very easy geometry was created for the sake of simplicity. The next figure shows the geometry chosen, a very simple but representative enough one.<br />
<br />
<br />
[[File:Geometry2.png|700px]]<br />
<br />
<br />
We follow by assigning groups to the geometry. To do this, we must open the Group Editor window by clicking on the icon showing in the next figure:<br />
<br />
<br />
[[File:Menu01.png]]<br />
<br />
<br />
Once the window is opened, we have to create the groups representing our domain. To do so, we have to click on the New icon to start adding entities. The next figure shows its location. When the New icon is pressed, an automatically named group will be created. To rename it, just click on it, modify the name and press enter to finish. Do this process as many time as needed to create the necessary groups.<br />
<br />
<br />
[[File:Dem tutorial group properties new.png]]<br />
<br />
<br />
In this sample case, seven groups were created: two FEM walls (the floor and a box), two different inlets (one creating spheres and the other clusters) and three initial volumes of spheres. The list of group entities should be similar to the one that follows:<br />
<br />
<br />
[[File:Groups tutorial2 2.png]]<br />
<br />
<br />
We must start assigning entities to the groups. To do this, just right-click on the corresponding layer, go to assign, choose the geometry type (in general surfaces or volumes), choose the appropriate geometry in the GiD drawing and click Finish when done. The next figure shows the result of correctly assigning entities to their corresponding groups.<br />
<br />
<br />
[[File:Geometry3.png|700px]]<br />
<br />
<br />
To do the previous operation, the user must first select the appropriate group and press the 'Draw groups by colour' icon to confirm the correct assignation. Press Finish when done. The next figure shows the location of the corresponding icon.<br />
<br />
<br />
[[File:Groups tutorial2.png]]<br />
<br />
== Setting the DEM Materials ==<br />
<br />
<br />
We will continue by defining the properties of the DEM elements in the simulation. We just have to click on the Materials tab at the top of the tree to access the Materials section. The user can modify already existing materials in the tree by double clicking on the corresponding material. He can also create new materials by right-clicking on DEM and selecting New Material. The next figure shows the window.<br />
<br />
<br />
[[File:Materials.png]]<br />
<br />
<br />
To create or modify the material properties, we go to the desired material and unfold its properties by clicking on the plus sign on the right of its name. A list of parameters to fill in will unfold. To edit the value of the parameters, just double-click on its corresponding current data and insert the new data.<br />
<br />
== Assigning the DEM Element Entities==<br />
<br />
<br />
It is possible to create initial volumes composed of DEM spheres. To assign these volumes, the user must first double-click the DEM > Elements > DEM_Element section inside the Model tab. A window will open up at the bottom of the tree where the user will be able to insert the group associated with this DEM entity. The next figure shows this section in the tree.<br />
<br />
<br />
[[File:DEMPack tut2 dem elements.png]]<br />
<br />
<br />
On the other hand, details on the assignation of materials and their associated groups are shown in the figure that follows. The user must click Ok when finished.<br />
<br />
<br />
[[File:DEMPack tut2 dem elements 2.png]]<br />
<br />
== Setting the Conditions ==<br />
<br />
<br />
=== Creating Inlet Objects===<br />
<br />
<br />
We now proceed to set the boundary conditions, which consist in the inlet and DEM-FEM entities. We will first start with the inlet feature. To begin filling this section, we just double-click on the Inlet label and all its properties will show up. Apart from setting the value of the different parameters that will show up, again we have to relate this inlet condition with its corresponding group at the bottom and click Ok when done. The next figure shows the details.<br />
<br />
<br />
[[File:DEMPack tut2 inlet1.png]][[File:DEMPack tut2 inlet2.png]]<br />
<br />
=== Creating DEM-FEM Wall Entities===<br />
<br />
<br />
We follow by settting and assigning the properties of the DEM-FEM entities. In this case, a set of three subsections will unfold: the ‘Linear velocity’, the ‘Angular velocity’ and the 'Settings'. The next capture shows this menu and the particular settings for this simulation.<br />
<br />
<br />
[[File:DEMPack tut2 demfem.png]]<br />
<br />
<br />
Both ‘Linear velocity’ and ‘Angular velocity’ parameters can be set to be periodical, assuming that the group starts at the center of the motion with maximum speed equal to the imposed value. Motionless properties are imposed bu default. In case of imposing both linear and angular velocities, the linear velocity only affects the center of rotation, while the rotation is around the updated position of the center of rotation. Finally, in the 'Settings’ section a very useful option exists, the 'Update velocity, not Displacements', which is being used in this tutorial. When this feature is activated, the corresponding DEM-FEM entity will have a certain velocity field assigned to its nodes but no displacement will occur. As said, this option will be active for the conveyor belt layer.<br />
<br />
=== Prescribing and restricting the motion of Elements ===<br />
<br />
[[File:DEMPack tut2 prescribe motion.png]]<br />
<br />
=== Setting Initial Conditions on Elements ===<br />
<br />
[[File:DEMPack tut2 initial conditions.png]]<br />
<br />
== Setting up the General Options ==<br />
<br />
<br />
The next step is to set the values of several DEM general parameters. Check the DEM Manual Page for a detailed explanation for each of the sections. The next figure shows the chosen values of those variables for the current simulation.<br />
<br />
<br />
[[File:DEMPack tut2 general options.png]]<br />
<br />
== Choosing the Solution Strategy ==<br />
<br />
This item has two subsections. On the first subsection, the user can set the type of parallel computing to use as well as the number of threads. The second subsection is devoted basically to time parameters, where the calculation delta time and the total time of the simulation can be entered. The user can also set the DEM neighbours search frequency and how often he gets information output on screen. The next figure shows the concrete values in this case.<br />
<br />
[[File:DEMPack tut2 solution strategy.png]]<br />
<br />
== Results Settings ==<br />
<br />
<br />
In this last section the user can set the values of several parameters in relation to Results. The next figure shows the chosen values for the present simulation, as well as how the Force integration group subsection works referring to the Graphs item. Please check the [[G-DEMPack manual]] for a detailed review of all fields in this section.<br />
<br />
[[File:DEMPack tut2 results.png]]<br />
<br />
== Meshing and Running the Simulation ==<br />
<br />
<br />
Finally, the last step before launching the calculation is to mesh the whole domain. To use the sphere mesher for the DEM volumes, the user must first select the corresponding entities. This is done by going to Mesh > Element_type > Sphere, selecting the desired volume and pressing Esc when done. Secondly, an average radius must be chosen for the mesh by clicking on Mesh > Unstructured > Assign_sizes_on_volumes, inserting the desired size in the window that will open, clicking on Assign to select the volume and pressing Esc and Close to finish assignation.<br />
<br />
Additional meshing settings can be set on the Preferences window. This window is accessible by clicking on Utilities>Preferences. The options are available clicking on the tree option ‘Meshing’, tree sub-option ‘Sphere Mesher’.<br />
<br />
An analogous procedure can be followed for meshing the FEM entities, in this case though by going to Mesh > Unstructures > Assign sizes on Surfaces, selecting the corresponding surfaces, inserting the desired value and pressing Esc when done. The next figure shows the chosen sizes for each of the entities in the simulation. Layers with no assigned size will take as mesh size the value given just before meshing. In our case, a global mesh size of 0.4 was used.<br />
<br />
<br />
[[File:Mesh size.png|700px]]<br />
<br />
<br />
To mesh, we have to go to Mesh > Generate Mesh, insert the desired value and click OK. A mesh like the one showing in the figure that follows should be obtained.<br />
<br />
<br />
[[File:Mesh.png|700px]][[File:Mesh2.png|700px]]<br />
<br />
<br />
Finally, we save the model and launch the calculation by clicking on Calculate>Calculate. The user can follow the state of the simulation by going to Calculate>View_process_info. Once the calculation is finished, we can examine the results by shifting to the GiD Postprocess.<br />
<br />
== Post-Processing ==<br />
<br />
<br />
Please check the GiD help documentation or the [http://www.gidhome.com/support/tutorials GiD tutorials] for a quick view on Post-Process basic features. The next figures show some snapshots of the resulting simulation.<br />
<br />
<br />
[[File:Vid1of4.png|500px]][[File:Vid2of4.png|500px]]<br />
<br />
[[File:Vid3of4.png|500px]][[File:Vid4of4.png|500px]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/G-DEMPack_Tutorial_2:_DemPack_2.0G-DEMPack Tutorial 2: DemPack 2.02018-06-25T14:34:40Z<p>Maceli: /* Introduction */</p>
<hr />
<div>== Introduction ==<br />
<br />
This tutorial assumes that both the G-DEMPack and the GiD Pre and Postprocessor are installed, otherwise please follow the instructions in [[G-DEMPack installation]]. Please check the [[G-DEMPack2 manual]] page for a detailed explanation of all the fields and concepts present in this tutorial as well as for how to load the Problem Type.<br />
<br />
== Creating the Geometry of the Domain and the DEM Objects ==<br />
<br />
In general, the process should start by creating a new geometry from scratch or by modifying or using an already existing one. For this tutorial, a group of simple entities were created which try to represent a simplified example of most of the capabilities of the program. The main objective of this document is to understand all the steps involved in assigning the corresponding properties and boundary conditions to a model and how to run a DEM simulation using the D-DEMPack package. The GiD geometry of this tutorial is available for downloading here: [[File:D DEMPack2 Tutorial 2.zip]]. On the other hand, the user is strongly encouraged to follow any of the GiD Tutorials available [http://www.gidhome.com/support/tutorials here].<br />
<br />
<br />
We will start by assigning the corresponding group properties. In this tutorial, a very easy geometry was created for the sake of simplicity. The next figure shows the geometry chosen, a very simple but representative enough one.<br />
<br />
<br />
[[File:Geometry2.png|700px]]<br />
<br />
<br />
We follow by assigning groups to the geometry. To do this, we must open the Group Editor window by clicking on the icon showing in the next figure:<br />
<br />
<br />
[[File:Menu01.png]]<br />
<br />
<br />
Once the window is opened, we have to create the groups representing our domain. To do so, we have to click on the New icon to start adding entities. The next figure shows its location. When the New icon is pressed, an automatically named group will be created. To rename it, just click on it, modify the name and press enter to finish. Do this process as many time as needed to create the necessary groups.<br />
<br />
<br />
[[File:Dem tutorial group properties new.png]]<br />
<br />
<br />
In this sample case, seven groups were created: two FEM walls (the floor and a box), two different inlets (one creating spheres and the other clusters) and three initial volumes of spheres. The list of group entities should be similar to the one that follows:<br />
<br />
<br />
[[File:Groups tutorial2 2.png]]<br />
<br />
<br />
We must start assigning entities to the groups. To do this, just right-click on the corresponding layer, go to assign, choose the geometry type (in general surfaces or volumes), choose the appropriate geometry in the GiD drawing and click Finish when done. The next figure shows the result of correctly assigning entities to their corresponding groups.<br />
<br />
<br />
[[File:Geometry3.png|700px]]<br />
<br />
<br />
To do the previous operation, the user must first select the appropriate group and press the 'Draw groups by colour' icon to confirm the correct assignation. Press Finish when done. The next figure shows the location of the corresponding icon.<br />
<br />
<br />
[[File:Groups tutorial2.png]]<br />
<br />
== Setting the DEM Materials ==<br />
<br />
<br />
We will continue by defining the properties of the DEM elements in the simulation. We just have to click on the Materials tab at the top of the tree to access the Materials section. The user can modify already existing materials in the tree by double clicking on the corresponding material. He can also create new materials by right-clicking on DEM and selecting New Material. The next figure shows the window.<br />
<br />
<br />
[[File:Materials.png]]<br />
<br />
<br />
To create or modify the material properties, we go to the desired material and unfold its properties by clicking on the plus sign on the right of its name. A list of parameters to fill in will unfold. To edit the value of the parameters, just double-click on its corresponding current data and insert the new data.<br />
<br />
== Assigning the DEM Element Entities==<br />
<br />
<br />
It is possible to create initial volumes composed of DEM spheres. To assign these volumes, the user must first double-click the DEM > Elements > DEM_Element section inside the Model tab. A window will open up at the bottom of the tree where the user will be able to insert the group associated with this DEM entity. The next figure shows this section in the tree.<br />
<br />
<br />
[[File:DEMPack tut2 dem elements.png]]<br />
<br />
<br />
On the other hand, details on the assignation of materials and their associated groups are shown in the figure that follows. The user must click Ok when finished.<br />
<br />
<br />
[[File:DEMPack tut2 dem elements 2.png]]<br />
<br />
== Setting the Conditions ==<br />
<br />
<br />
=== Creating Inlet Objects===<br />
<br />
<br />
We now proceed to set the boundary conditions, which consist in the inlet and DEM-FEM entities. We will first start with the inlet feature. To begin filling this section, we just double-click on the Inlet label and all its properties will show up. Apart from setting the value of the different parameters that will show up, again we have to relate this inlet condition with its corresponding group at the bottom and click Ok when done. The next figure shows the details.<br />
<br />
<br />
[[File:DEMPack tut2 inlet1.png]][[File:DEMPack tut2 inlet2.png]]<br />
<br />
=== Creating DEM-FEM Wall Entities===<br />
<br />
<br />
We follow by settting and assigning the properties of the DEM-FEM entities. In this case, a set of three subsections will unfold: the ‘Linear velocity’, the ‘Angular velocity’ and the 'Settings'. The next capture shows this menu and the particular settings for this simulation.<br />
<br />
<br />
[[File:DEMPack tut2 demfem.png]]<br />
<br />
<br />
Both ‘Linear velocity’ and ‘Angular velocity’ parameters can be set to be periodical, assuming that the group starts at the center of the motion with maximum speed equal to the imposed value. Motionless properties are imposed bu default. In case of imposing both linear and angular velocities, the linear velocity only affects the center of rotation, while the rotation is around the updated position of the center of rotation. Finally, in the 'Settings’ section a very useful option exists, the 'Update velocity, not Displacements', which is being used in this tutorial. When this feature is activated, the corresponding DEM-FEM entity will have a certain velocity field assigned to its nodes but no displacement will occur. As said, this option will be active for the conveyor belt layer.<br />
<br />
=== Prescribing and restricting the motion of Elements ===<br />
<br />
[[File:DEMPack tut2 prescribe motion.png]]<br />
<br />
=== Setting Initial Conditions on Elements ===<br />
<br />
[[File:DEMPack tut2 initial conditions.png]]<br />
<br />
== Setting up the General Options ==<br />
<br />
<br />
The next step is to set the values of several DEM general parameters. Check the DEM Manual Page for a detailed explanation for each of the sections. The next figure shows the chosen values of those variables for the current simulation.<br />
<br />
<br />
[[File:DEMPack tut2 general options.png]]<br />
<br />
== Choosing the Solution Strategy ==<br />
<br />
This item has two subsections. On the first subsection, the user can set the type of parallel computing to use as well as the number of threads. The second subsection is devoted basically to time parameters, where the calculation delta time and the total time of the simulation can be entered. The user can also set the DEM neighbours search frequency and how often he gets information output on screen. The next figure shows the concrete values in this case.<br />
<br />
[[File:DEMPack tut2 solution strategy.png]]<br />
<br />
== Results Settings ==<br />
<br />
<br />
In this last section the user can set the values of several parameters in relation to Results. The next figure shows the chosen values for the present simulation, as well as how the Force integration group subsection works referring to the Graphs item. Please check the [[D-DEMPack manual]] for a detailed review of all fields in this section.<br />
<br />
[[File:DEMPack tut2 results.png]]<br />
<br />
== Meshing and Running the Simulation ==<br />
<br />
<br />
Finally, the last step before launching the calculation is to mesh the whole domain. To use the sphere mesher for the DEM volumes, the user must first select the corresponding entities. This is done by going to Mesh > Element_type > Sphere, selecting the desired volume and pressing Esc when done. Secondly, an average radius must be chosen for the mesh by clicking on Mesh > Unstructured > Assign_sizes_on_volumes, inserting the desired size in the window that will open, clicking on Assign to select the volume and pressing Esc and Close to finish assignation.<br />
<br />
Additional meshing settings can be set on the Preferences window. This window is accessible by clicking on Utilities>Preferences. The options are available clicking on the tree option ‘Meshing’, tree sub-option ‘Sphere Mesher’.<br />
<br />
An analogous procedure can be followed for meshing the FEM entities, in this case though by going to Mesh > Unstructures > Assign sizes on Surfaces, selecting the corresponding surfaces, inserting the desired value and pressing Esc when done. The next figure shows the chosen sizes for each of the entities in the simulation. Layers with no assigned size will take as mesh size the value given just before meshing. In our case, a global mesh size of 0.4 was used.<br />
<br />
<br />
[[File:Mesh size.png|700px]]<br />
<br />
<br />
To mesh, we have to go to Mesh > Generate Mesh, insert the desired value and click OK. A mesh like the one showing in the figure that follows should be obtained.<br />
<br />
<br />
[[File:Mesh.png|700px]][[File:Mesh2.png|700px]]<br />
<br />
<br />
Finally, we save the model and launch the calculation by clicking on Calculate>Calculate. The user can follow the state of the simulation by going to Calculate>View_process_info. Once the calculation is finished, we can examine the results by shifting to the GiD Postprocess.<br />
<br />
== Post-Processing ==<br />
<br />
<br />
Please check the GiD help documentation or the [http://www.gidhome.com/support/tutorials GiD tutorials] for a quick view on Post-Process basic features. The next figures show some snapshots of the resulting simulation.<br />
<br />
<br />
[[File:Vid1of4.png|500px]][[File:Vid2of4.png|500px]]<br />
<br />
[[File:Vid3of4.png|500px]][[File:Vid4of4.png|500px]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/G-DEMPack_Tutorial_1:_Conveyor_beltG-DEMPack Tutorial 1: Conveyor belt2018-06-25T14:34:13Z<p>Maceli: /* Creating the Geometry of the Domain and the DEM Objects */</p>
<hr />
<div><br />
== Introduction ==<br />
<br />
This tutorial assumes that both the G-DEMPack and the GiD Pre and PostProcessor are installed, otherwise please follow the instructions in [[G-DEMPack installation]]. Please check the [[G-DEMPack manual]] page for a detailed explanation of all the fields and concepts present in this tutorial as well as for how to load the Problem Type.<br />
<br />
== Creating the Geometry of the Domain and the DEM Objects ==<br />
<br />
In general, the process should start by creating a new geometry from scratch or by modifying or using an already existing one. For this tutorial, a group of simple entities were created which try to represent a simplified example of most of the capabilities of the program. The main objective of this document is to understand all the steps involved in assigning the corresponding properties and boundary conditions to a model and how to run a DEM simulation using the G-DEMPack package. The GiD geometry of this tutorial is available for downloading here: [[File:Dempack tutorial.zip]]. On the other hand, the user is strongly encouraged to follow any of the GiD Tutorials available [http://www.gidhome.com/support/tutorials here].<br />
<br />
<br />
We will start by assigning the corresponding group properties. In this tutorial, a very easy geometry was created for the sake of simplicity. The next figure shows the geometry chosen, a very simple but representative enough one.<br />
<br />
<br />
[[File:Dempack manual 02.jpg]]<br />
<br />
<br />
We follow by assigning groups to the geometry. To do this, we must open the Group Editor window by clicking on the icon showing in the next figure:<br />
<br />
<br />
[[File:Dem tutorial group properties.png]]<br />
<br />
<br />
Once the window is opened, we have to create the groups representing our domain. To do so, we have to click on the New icon to start adding entities. The next figure shows its location. When the New icon is pressed, an automatically named group will be created. To rename it, just click on it, modify the name and press enter to finish. Do this process as many time as needed to create the necessary groups.<br />
<br />
<br />
[[File:Dem tutorial group properties new.png]]<br />
<br />
<br />
In this sample case, six groups were created: two FEM walls (the belt and a box), two different inlets (one creating spheres and the other clusters) and two initial volumes of spheres. The list of group entities should be similar to the one that follow:<br />
<br />
<br />
[[File:Dem tutorial layers and groups.png]]<br />
<br />
<br />
We must start assigning entities to the groups. To do this, just right-click on the corresponding layer, go to assign, choose the geometry type (in general surfaces or volumes), choose the appropriate geometry in the GiD drawing and click Finish when done. The next figure shows the result of correctly assigning entities to their corresponding groups.<br />
<br />
<br />
[[File:Dem tutorial layers entities groups 50.png]]<br />
<br />
<br />
To do the previous operation, the user must first select the appropriate group and press the 'Draw groups by colour' icon to confirm the correct assignation. Press Finish when done. The next figure shows the location of the corresponding icon.<br />
<br />
<br />
[[File:Dem tutorial group properties draw.png]]<br />
<br />
== Setting the DEM Materials ==<br />
<br />
<br />
We will continue by defining the properties of the DEM elements in the simulation. We just have to click on the Materials tab at the top of the tree to access the Materials section. The user can modify already existing materials in the tree by double clicking on the corresponding material. He can also create new materials by right-clicking on DEM and selecting New Material. The next figure shows the window.<br />
<br />
<br />
[[File:Dem tutorial dem elements materials section.png]]<br />
<br />
<br />
To create or modify the material properties, we go to the desired material and unfold its properties by clicking on the plus sign on the right of its name. A list of parameters to fill in will unfold. To edit the value of the parameters, just double-click on its corresponding current data and insert the new data.<br />
<br />
<br />
== Assigning the DEM Element Entities==<br />
<br />
<br />
It is possible to create initial volumes composed of DEM spheres. To assign these volumes, the user must first double-click the DEM > Elements > DEM_Element section inside the Model tab. A 'Properties' window will open up at the bottom of the tree where the user will insert the group associated with this DEM domain and its corresponding material. The next figure shows this section in the tree.<br />
<br />
<br />
[[File:Dem tutorial dem elements.png]]<br />
<br />
<br />
On the other hand, details on the assignation of materials and their associated groups are shown in the figure that follows. The user must click Ok when finished.<br />
<br />
<br />
[[File:Dem tutorial dem elements material.png]]<br />
<br />
<br />
== Setting the Boundary Conditions ==<br />
<br />
<br />
=== Creating Inlet Objects===<br />
<br />
<br />
We now proceed to set the boundary conditions, which consist in the inlet and DEM-FEM entities. We will first start with the inlet feature. To begin filling this section, we just double-click on the Inlet label and all its properties will show up. Apart from setting the value of the different parameters that will show up, again we have to relate this inlet condition with its corresponding group at the bottom and click Ok when done. The next figure shows the details.<br />
<br />
<br />
[[File:Dem tutorial dem inlet.png]]<br />
<br />
<br />
=== Creating DEM-FEM Wall Entities===<br />
<br />
<br />
We follow by settting and assigning the properties of the DEM-FEM entities. In this case, a set of three subsections will unfold: the ‘Linear velocity’, the ‘Angular velocity’ and the 'Settings'. The next capture shows this menu and the particular settings for this simulation.<br />
<br />
<br />
[[File:Dem tutorial dem bbcc.png]]<br />
<br />
<br />
Both ‘Linear velocity’ and ‘Angular velocity’ parameters can be set to be periodical, assuming that the group starts at the center of the motion with maximum speed equal to the imposed value. Motionless properties are imposed bu default. In case of imposing both linear and angular velocities, the linear velocity only affects the center of rotation, while the rotation is around the updated position of the center of rotation. Finally, in the 'Settings’ section a very useful option exists, the 'Update velocity, not Displacements', which is being used in this tutorial. When this feature is activated, the corresponding DEM-FEM entity will have a certain velocity field assigned to its nodes but no displacement will occur. As said, this option will be active for the conveyor belt layer.<br />
<br />
<br />
== Setting up the General Options ==<br />
<br />
<br />
The next step is to set the values of several DEM general parameters. Check the DEM Manual Page for a detailed explanation for each of the sections. The next figure shows the chosen values of those variables for the current simulation.<br />
<br />
<br />
[[File:Dem tutorial dem general options.png]]<br />
<br />
<br />
== Choosing the Solution Strategy ==<br />
<br />
This item has two subsections. On the first subsection, the user can set the type of parallel computing to use as well as the number of threads. The second subsection is devoted basically to time parameters, where the calculation delta time and the total time of the simulation can be entered. The user can also set the DEM neighbours search frequency and how often he gets information output on screen. The next figure shows the concrete values in this case.<br />
<br />
<br />
[[File:Dem tutorial dem solution strategy.png]]<br />
<br />
<br />
== Results Settings ==<br />
<br />
<br />
In this last section the user can set the values of several parameters in relation to Results. The next figure shows the chosen values for the present simulation, as well as how the Force integration group subsection works referring to the Graphs item. Please check the [[G-DEMPack manual]] for a detailed review of all fields in this section.<br />
<br />
<br />
[[File:Dem tutorial dem results.png]]<br />
<br />
== Meshing and Running the Simulation ==<br />
<br />
<br />
Finally, the last step before launching the calculation is to mesh the whole domain. To use the sphere mesher for the DEM volumes, the user must first select the corresponding entities. This is done by going to Mesh > Element_type > Sphere, selecting the desired volume and pressing Esc when done. Secondly, an average radius must be chosen for the mesh by clicking on Mesh > Unstructured > Assign_sizes_on_volumes, inserting the desired size in the window that will open, clicking on Assign to select the volume and pressing Esc and Close to finish assignation.<br />
<br />
Additional meshing settings can be set on the Preferences window. This window is accessible by clicking on Utilities>Preferences. The options are available clicking on the tree option ‘Meshing’, tree sub-option ‘Sphere Mesher’.<br />
<br />
An analogous procedure can be followed for meshing the FEM entities, in this case though by going to Mesh > Unstructures > Assign sizes on Surfaces, selecting the corresponding surfaces, inserting the desired value and pressing Esc when done. The next figure shows the chosen sizes for each of the entities in the simulation. Layers with no assigned size will take as mesh size the value given just before meshing. In our case, a global mesh size of 0.4 was used.<br />
<br />
<br />
[[File:Dem tutorial mesh size 50.png]]<br />
<br />
<br />
To mesh, we have to go to Mesh > Generate Mesh, insert the desired value and click OK. A mesh like the one showing in the figure that follows should be obtained.<br />
<br />
<br />
[[File:Dempack manual 03.jpg]]<br />
<br />
<br />
Finally, we save the model and launch the calculation by clicking on Calculate>Calculate. The user can follow the state of the simulation by going to Calculate>View_process_info. Once the calculation is finished, we can examine the results by shifting to the GiD Postprocess.<br />
<br />
<br />
== Post-Processing ==<br />
<br />
<br />
Please check the GiD help documentation or the [http://www.gidhome.com/support/tutorials GiD tutorials] for a quick view on Post-Process basic features. The next figures show some snapshots of the resulting simulation.<br />
<br />
<br />
[[File:Dem tutorial post process 1 50.png]][[File:Dem tutorial post process 2 50.png]]<br />
<br />
[[File:Dem tutorial post process 3 50.png]][[File:Dem tutorial post process 4 50.png]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/G-DEMPack_Tutorial_1:_Conveyor_beltG-DEMPack Tutorial 1: Conveyor belt2018-06-25T14:33:37Z<p>Maceli: /* Results Settings */</p>
<hr />
<div><br />
== Introduction ==<br />
<br />
This tutorial assumes that both the G-DEMPack and the GiD Pre and PostProcessor are installed, otherwise please follow the instructions in [[G-DEMPack installation]]. Please check the [[G-DEMPack manual]] page for a detailed explanation of all the fields and concepts present in this tutorial as well as for how to load the Problem Type.<br />
<br />
== Creating the Geometry of the Domain and the DEM Objects ==<br />
<br />
In general, the process should start by creating a new geometry from scratch or by modifying or using an already existing one. For this tutorial, a group of simple entities were created which try to represent a simplified example of most of the capabilities of the program. The main objective of this document is to understand all the steps involved in assigning the corresponding properties and boundary conditions to a model and how to run a DEM simulation using the D-DEMPack package. The GiD geometry of this tutorial is available for downloading here: [[File:Dempack tutorial.zip]]. On the other hand, the user is strongly encouraged to follow any of the GiD Tutorials available [http://www.gidhome.com/support/tutorials here].<br />
<br />
<br />
We will start by assigning the corresponding group properties. In this tutorial, a very easy geometry was created for the sake of simplicity. The next figure shows the geometry chosen, a very simple but representative enough one.<br />
<br />
<br />
[[File:Dempack manual 02.jpg]]<br />
<br />
<br />
We follow by assigning groups to the geometry. To do this, we must open the Group Editor window by clicking on the icon showing in the next figure:<br />
<br />
<br />
[[File:Dem tutorial group properties.png]]<br />
<br />
<br />
Once the window is opened, we have to create the groups representing our domain. To do so, we have to click on the New icon to start adding entities. The next figure shows its location. When the New icon is pressed, an automatically named group will be created. To rename it, just click on it, modify the name and press enter to finish. Do this process as many time as needed to create the necessary groups.<br />
<br />
<br />
[[File:Dem tutorial group properties new.png]]<br />
<br />
<br />
In this sample case, six groups were created: two FEM walls (the belt and a box), two different inlets (one creating spheres and the other clusters) and two initial volumes of spheres. The list of group entities should be similar to the one that follow:<br />
<br />
<br />
[[File:Dem tutorial layers and groups.png]]<br />
<br />
<br />
We must start assigning entities to the groups. To do this, just right-click on the corresponding layer, go to assign, choose the geometry type (in general surfaces or volumes), choose the appropriate geometry in the GiD drawing and click Finish when done. The next figure shows the result of correctly assigning entities to their corresponding groups.<br />
<br />
<br />
[[File:Dem tutorial layers entities groups 50.png]]<br />
<br />
<br />
To do the previous operation, the user must first select the appropriate group and press the 'Draw groups by colour' icon to confirm the correct assignation. Press Finish when done. The next figure shows the location of the corresponding icon.<br />
<br />
<br />
[[File:Dem tutorial group properties draw.png]]<br />
<br />
<br />
== Setting the DEM Materials ==<br />
<br />
<br />
We will continue by defining the properties of the DEM elements in the simulation. We just have to click on the Materials tab at the top of the tree to access the Materials section. The user can modify already existing materials in the tree by double clicking on the corresponding material. He can also create new materials by right-clicking on DEM and selecting New Material. The next figure shows the window.<br />
<br />
<br />
[[File:Dem tutorial dem elements materials section.png]]<br />
<br />
<br />
To create or modify the material properties, we go to the desired material and unfold its properties by clicking on the plus sign on the right of its name. A list of parameters to fill in will unfold. To edit the value of the parameters, just double-click on its corresponding current data and insert the new data.<br />
<br />
<br />
== Assigning the DEM Element Entities==<br />
<br />
<br />
It is possible to create initial volumes composed of DEM spheres. To assign these volumes, the user must first double-click the DEM > Elements > DEM_Element section inside the Model tab. A 'Properties' window will open up at the bottom of the tree where the user will insert the group associated with this DEM domain and its corresponding material. The next figure shows this section in the tree.<br />
<br />
<br />
[[File:Dem tutorial dem elements.png]]<br />
<br />
<br />
On the other hand, details on the assignation of materials and their associated groups are shown in the figure that follows. The user must click Ok when finished.<br />
<br />
<br />
[[File:Dem tutorial dem elements material.png]]<br />
<br />
<br />
== Setting the Boundary Conditions ==<br />
<br />
<br />
=== Creating Inlet Objects===<br />
<br />
<br />
We now proceed to set the boundary conditions, which consist in the inlet and DEM-FEM entities. We will first start with the inlet feature. To begin filling this section, we just double-click on the Inlet label and all its properties will show up. Apart from setting the value of the different parameters that will show up, again we have to relate this inlet condition with its corresponding group at the bottom and click Ok when done. The next figure shows the details.<br />
<br />
<br />
[[File:Dem tutorial dem inlet.png]]<br />
<br />
<br />
=== Creating DEM-FEM Wall Entities===<br />
<br />
<br />
We follow by settting and assigning the properties of the DEM-FEM entities. In this case, a set of three subsections will unfold: the ‘Linear velocity’, the ‘Angular velocity’ and the 'Settings'. The next capture shows this menu and the particular settings for this simulation.<br />
<br />
<br />
[[File:Dem tutorial dem bbcc.png]]<br />
<br />
<br />
Both ‘Linear velocity’ and ‘Angular velocity’ parameters can be set to be periodical, assuming that the group starts at the center of the motion with maximum speed equal to the imposed value. Motionless properties are imposed bu default. In case of imposing both linear and angular velocities, the linear velocity only affects the center of rotation, while the rotation is around the updated position of the center of rotation. Finally, in the 'Settings’ section a very useful option exists, the 'Update velocity, not Displacements', which is being used in this tutorial. When this feature is activated, the corresponding DEM-FEM entity will have a certain velocity field assigned to its nodes but no displacement will occur. As said, this option will be active for the conveyor belt layer.<br />
<br />
<br />
== Setting up the General Options ==<br />
<br />
<br />
The next step is to set the values of several DEM general parameters. Check the DEM Manual Page for a detailed explanation for each of the sections. The next figure shows the chosen values of those variables for the current simulation.<br />
<br />
<br />
[[File:Dem tutorial dem general options.png]]<br />
<br />
<br />
== Choosing the Solution Strategy ==<br />
<br />
This item has two subsections. On the first subsection, the user can set the type of parallel computing to use as well as the number of threads. The second subsection is devoted basically to time parameters, where the calculation delta time and the total time of the simulation can be entered. The user can also set the DEM neighbours search frequency and how often he gets information output on screen. The next figure shows the concrete values in this case.<br />
<br />
<br />
[[File:Dem tutorial dem solution strategy.png]]<br />
<br />
<br />
== Results Settings ==<br />
<br />
<br />
In this last section the user can set the values of several parameters in relation to Results. The next figure shows the chosen values for the present simulation, as well as how the Force integration group subsection works referring to the Graphs item. Please check the [[G-DEMPack manual]] for a detailed review of all fields in this section.<br />
<br />
<br />
[[File:Dem tutorial dem results.png]]<br />
<br />
== Meshing and Running the Simulation ==<br />
<br />
<br />
Finally, the last step before launching the calculation is to mesh the whole domain. To use the sphere mesher for the DEM volumes, the user must first select the corresponding entities. This is done by going to Mesh > Element_type > Sphere, selecting the desired volume and pressing Esc when done. Secondly, an average radius must be chosen for the mesh by clicking on Mesh > Unstructured > Assign_sizes_on_volumes, inserting the desired size in the window that will open, clicking on Assign to select the volume and pressing Esc and Close to finish assignation.<br />
<br />
Additional meshing settings can be set on the Preferences window. This window is accessible by clicking on Utilities>Preferences. The options are available clicking on the tree option ‘Meshing’, tree sub-option ‘Sphere Mesher’.<br />
<br />
An analogous procedure can be followed for meshing the FEM entities, in this case though by going to Mesh > Unstructures > Assign sizes on Surfaces, selecting the corresponding surfaces, inserting the desired value and pressing Esc when done. The next figure shows the chosen sizes for each of the entities in the simulation. Layers with no assigned size will take as mesh size the value given just before meshing. In our case, a global mesh size of 0.4 was used.<br />
<br />
<br />
[[File:Dem tutorial mesh size 50.png]]<br />
<br />
<br />
To mesh, we have to go to Mesh > Generate Mesh, insert the desired value and click OK. A mesh like the one showing in the figure that follows should be obtained.<br />
<br />
<br />
[[File:Dempack manual 03.jpg]]<br />
<br />
<br />
Finally, we save the model and launch the calculation by clicking on Calculate>Calculate. The user can follow the state of the simulation by going to Calculate>View_process_info. Once the calculation is finished, we can examine the results by shifting to the GiD Postprocess.<br />
<br />
<br />
== Post-Processing ==<br />
<br />
<br />
Please check the GiD help documentation or the [http://www.gidhome.com/support/tutorials GiD tutorials] for a quick view on Post-Process basic features. The next figures show some snapshots of the resulting simulation.<br />
<br />
<br />
[[File:Dem tutorial post process 1 50.png]][[File:Dem tutorial post process 2 50.png]]<br />
<br />
[[File:Dem tutorial post process 3 50.png]][[File:Dem tutorial post process 4 50.png]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/G-DEMPack_Tutorial_1:_Conveyor_beltG-DEMPack Tutorial 1: Conveyor belt2018-06-25T14:33:15Z<p>Maceli: /* Introduction */</p>
<hr />
<div><br />
== Introduction ==<br />
<br />
This tutorial assumes that both the G-DEMPack and the GiD Pre and PostProcessor are installed, otherwise please follow the instructions in [[G-DEMPack installation]]. Please check the [[G-DEMPack manual]] page for a detailed explanation of all the fields and concepts present in this tutorial as well as for how to load the Problem Type.<br />
<br />
== Creating the Geometry of the Domain and the DEM Objects ==<br />
<br />
In general, the process should start by creating a new geometry from scratch or by modifying or using an already existing one. For this tutorial, a group of simple entities were created which try to represent a simplified example of most of the capabilities of the program. The main objective of this document is to understand all the steps involved in assigning the corresponding properties and boundary conditions to a model and how to run a DEM simulation using the D-DEMPack package. The GiD geometry of this tutorial is available for downloading here: [[File:Dempack tutorial.zip]]. On the other hand, the user is strongly encouraged to follow any of the GiD Tutorials available [http://www.gidhome.com/support/tutorials here].<br />
<br />
<br />
We will start by assigning the corresponding group properties. In this tutorial, a very easy geometry was created for the sake of simplicity. The next figure shows the geometry chosen, a very simple but representative enough one.<br />
<br />
<br />
[[File:Dempack manual 02.jpg]]<br />
<br />
<br />
We follow by assigning groups to the geometry. To do this, we must open the Group Editor window by clicking on the icon showing in the next figure:<br />
<br />
<br />
[[File:Dem tutorial group properties.png]]<br />
<br />
<br />
Once the window is opened, we have to create the groups representing our domain. To do so, we have to click on the New icon to start adding entities. The next figure shows its location. When the New icon is pressed, an automatically named group will be created. To rename it, just click on it, modify the name and press enter to finish. Do this process as many time as needed to create the necessary groups.<br />
<br />
<br />
[[File:Dem tutorial group properties new.png]]<br />
<br />
<br />
In this sample case, six groups were created: two FEM walls (the belt and a box), two different inlets (one creating spheres and the other clusters) and two initial volumes of spheres. The list of group entities should be similar to the one that follow:<br />
<br />
<br />
[[File:Dem tutorial layers and groups.png]]<br />
<br />
<br />
We must start assigning entities to the groups. To do this, just right-click on the corresponding layer, go to assign, choose the geometry type (in general surfaces or volumes), choose the appropriate geometry in the GiD drawing and click Finish when done. The next figure shows the result of correctly assigning entities to their corresponding groups.<br />
<br />
<br />
[[File:Dem tutorial layers entities groups 50.png]]<br />
<br />
<br />
To do the previous operation, the user must first select the appropriate group and press the 'Draw groups by colour' icon to confirm the correct assignation. Press Finish when done. The next figure shows the location of the corresponding icon.<br />
<br />
<br />
[[File:Dem tutorial group properties draw.png]]<br />
<br />
<br />
== Setting the DEM Materials ==<br />
<br />
<br />
We will continue by defining the properties of the DEM elements in the simulation. We just have to click on the Materials tab at the top of the tree to access the Materials section. The user can modify already existing materials in the tree by double clicking on the corresponding material. He can also create new materials by right-clicking on DEM and selecting New Material. The next figure shows the window.<br />
<br />
<br />
[[File:Dem tutorial dem elements materials section.png]]<br />
<br />
<br />
To create or modify the material properties, we go to the desired material and unfold its properties by clicking on the plus sign on the right of its name. A list of parameters to fill in will unfold. To edit the value of the parameters, just double-click on its corresponding current data and insert the new data.<br />
<br />
<br />
== Assigning the DEM Element Entities==<br />
<br />
<br />
It is possible to create initial volumes composed of DEM spheres. To assign these volumes, the user must first double-click the DEM > Elements > DEM_Element section inside the Model tab. A 'Properties' window will open up at the bottom of the tree where the user will insert the group associated with this DEM domain and its corresponding material. The next figure shows this section in the tree.<br />
<br />
<br />
[[File:Dem tutorial dem elements.png]]<br />
<br />
<br />
On the other hand, details on the assignation of materials and their associated groups are shown in the figure that follows. The user must click Ok when finished.<br />
<br />
<br />
[[File:Dem tutorial dem elements material.png]]<br />
<br />
<br />
== Setting the Boundary Conditions ==<br />
<br />
<br />
=== Creating Inlet Objects===<br />
<br />
<br />
We now proceed to set the boundary conditions, which consist in the inlet and DEM-FEM entities. We will first start with the inlet feature. To begin filling this section, we just double-click on the Inlet label and all its properties will show up. Apart from setting the value of the different parameters that will show up, again we have to relate this inlet condition with its corresponding group at the bottom and click Ok when done. The next figure shows the details.<br />
<br />
<br />
[[File:Dem tutorial dem inlet.png]]<br />
<br />
<br />
=== Creating DEM-FEM Wall Entities===<br />
<br />
<br />
We follow by settting and assigning the properties of the DEM-FEM entities. In this case, a set of three subsections will unfold: the ‘Linear velocity’, the ‘Angular velocity’ and the 'Settings'. The next capture shows this menu and the particular settings for this simulation.<br />
<br />
<br />
[[File:Dem tutorial dem bbcc.png]]<br />
<br />
<br />
Both ‘Linear velocity’ and ‘Angular velocity’ parameters can be set to be periodical, assuming that the group starts at the center of the motion with maximum speed equal to the imposed value. Motionless properties are imposed bu default. In case of imposing both linear and angular velocities, the linear velocity only affects the center of rotation, while the rotation is around the updated position of the center of rotation. Finally, in the 'Settings’ section a very useful option exists, the 'Update velocity, not Displacements', which is being used in this tutorial. When this feature is activated, the corresponding DEM-FEM entity will have a certain velocity field assigned to its nodes but no displacement will occur. As said, this option will be active for the conveyor belt layer.<br />
<br />
<br />
== Setting up the General Options ==<br />
<br />
<br />
The next step is to set the values of several DEM general parameters. Check the DEM Manual Page for a detailed explanation for each of the sections. The next figure shows the chosen values of those variables for the current simulation.<br />
<br />
<br />
[[File:Dem tutorial dem general options.png]]<br />
<br />
<br />
== Choosing the Solution Strategy ==<br />
<br />
This item has two subsections. On the first subsection, the user can set the type of parallel computing to use as well as the number of threads. The second subsection is devoted basically to time parameters, where the calculation delta time and the total time of the simulation can be entered. The user can also set the DEM neighbours search frequency and how often he gets information output on screen. The next figure shows the concrete values in this case.<br />
<br />
<br />
[[File:Dem tutorial dem solution strategy.png]]<br />
<br />
<br />
== Results Settings ==<br />
<br />
<br />
In this last section the user can set the values of several parameters in relation to Results. The next figure shows the chosen values for the present simulation, as well as how the Force integration group subsection works referring to the Graphs item. Please check the [[D-DEMPack manual]] for a detailed review of all fields in this section.<br />
<br />
<br />
[[File:Dem tutorial dem results.png]]<br />
<br />
<br />
== Meshing and Running the Simulation ==<br />
<br />
<br />
Finally, the last step before launching the calculation is to mesh the whole domain. To use the sphere mesher for the DEM volumes, the user must first select the corresponding entities. This is done by going to Mesh > Element_type > Sphere, selecting the desired volume and pressing Esc when done. Secondly, an average radius must be chosen for the mesh by clicking on Mesh > Unstructured > Assign_sizes_on_volumes, inserting the desired size in the window that will open, clicking on Assign to select the volume and pressing Esc and Close to finish assignation.<br />
<br />
Additional meshing settings can be set on the Preferences window. This window is accessible by clicking on Utilities>Preferences. The options are available clicking on the tree option ‘Meshing’, tree sub-option ‘Sphere Mesher’.<br />
<br />
An analogous procedure can be followed for meshing the FEM entities, in this case though by going to Mesh > Unstructures > Assign sizes on Surfaces, selecting the corresponding surfaces, inserting the desired value and pressing Esc when done. The next figure shows the chosen sizes for each of the entities in the simulation. Layers with no assigned size will take as mesh size the value given just before meshing. In our case, a global mesh size of 0.4 was used.<br />
<br />
<br />
[[File:Dem tutorial mesh size 50.png]]<br />
<br />
<br />
To mesh, we have to go to Mesh > Generate Mesh, insert the desired value and click OK. A mesh like the one showing in the figure that follows should be obtained.<br />
<br />
<br />
[[File:Dempack manual 03.jpg]]<br />
<br />
<br />
Finally, we save the model and launch the calculation by clicking on Calculate>Calculate. The user can follow the state of the simulation by going to Calculate>View_process_info. Once the calculation is finished, we can examine the results by shifting to the GiD Postprocess.<br />
<br />
<br />
== Post-Processing ==<br />
<br />
<br />
Please check the GiD help documentation or the [http://www.gidhome.com/support/tutorials GiD tutorials] for a quick view on Post-Process basic features. The next figures show some snapshots of the resulting simulation.<br />
<br />
<br />
[[File:Dem tutorial post process 1 50.png]][[File:Dem tutorial post process 2 50.png]]<br />
<br />
[[File:Dem tutorial post process 3 50.png]][[File:Dem tutorial post process 4 50.png]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/DEMPack_TutorialsDEMPack Tutorials2018-06-25T14:30:33Z<p>Maceli: /* C-DEMPack Tutorials */</p>
<hr />
<div>== G-DEMPack Tutorials ==<br />
<br />
[[G-DEMPack Tutorial 1: Conveyor belt]]<br />
<br />
[[G-DEMPack Tutorial 2: DemPack 2.0]]<br />
<br />
[[G-DEMPack Tutorial 3: DEM Meshers]]<br />
<br />
== F-DEMPack Tutorials ==<br />
<br />
[[G-DEMPack Tutorial 4: Swimming DEM]]<br />
<br />
[[F-DEMPack Tutorial 6: Annular pipe]]<br />
<br />
== C-DEMPack Tutorials ==<br />
<br />
[[G-DEMPack Tutorial 5: Cohesive DemPack 2.0]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/DEMPack_TutorialsDEMPack Tutorials2018-06-25T14:30:19Z<p>Maceli: /* F-DEMPack Tutorials */</p>
<hr />
<div>== G-DEMPack Tutorials ==<br />
<br />
[[G-DEMPack Tutorial 1: Conveyor belt]]<br />
<br />
[[G-DEMPack Tutorial 2: DemPack 2.0]]<br />
<br />
[[G-DEMPack Tutorial 3: DEM Meshers]]<br />
<br />
== F-DEMPack Tutorials ==<br />
<br />
[[G-DEMPack Tutorial 4: Swimming DEM]]<br />
<br />
[[F-DEMPack Tutorial 6: Annular pipe]]<br />
<br />
== C-DEMPack Tutorials ==<br />
<br />
[[D-DEMPack Tutorial 5: Cohesive DemPack 2.0]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/DEMPack_TutorialsDEMPack Tutorials2018-06-25T14:30:10Z<p>Maceli: /* G-DEMPack Tutorials */</p>
<hr />
<div>== G-DEMPack Tutorials ==<br />
<br />
[[G-DEMPack Tutorial 1: Conveyor belt]]<br />
<br />
[[G-DEMPack Tutorial 2: DemPack 2.0]]<br />
<br />
[[G-DEMPack Tutorial 3: DEM Meshers]]<br />
<br />
== F-DEMPack Tutorials ==<br />
<br />
[[D-DEMPack Tutorial 4: Swimming DEM]]<br />
<br />
[[F-DEMPack Tutorial 6: Annular pipe]]<br />
<br />
<br />
== C-DEMPack Tutorials ==<br />
<br />
[[D-DEMPack Tutorial 5: Cohesive DemPack 2.0]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/DEM_ApplicationDEM Application2018-06-25T14:29:29Z<p>Maceli: /* F-DEMPack */</p>
<hr />
<div>WARNING: This page is still under construction.<br />
<br />
The DEM Kratos Team<br />
<br />
<br />
== Theory ==<br />
<br />
The fundamental theoretical background corresponding to the discontinuous (granular matter) part of the code can be found Casas et al. (2015). The following sections are destined to contain this information though are curently still under construction.<br />
<br />
Nothing numerical<br />
<br />
=== Integration Schemes ===<br />
<br />
*Symplectic Euler Scheme<br />
<br />
*Forward Euler Scheme<br />
<br />
*Taylor scheme<br />
<br />
*Verlet Velocity Scheme<br />
<br />
*Newmark Beta Method Scheme<br />
<br />
=== Contact Laws ===<br />
Concept of indentation<br />
HMD, LSD<br />
===== Normal Force Laws =====<br />
<br />
====== Linear Repulsive Force ======<br />
<br />
The most simple representation of a repulsive contact force between a sphere and a wall is given by a linear law, where the force acting on the sphere when contacting a plane is a linear function of the indentation, which in turn would bring a quadratic dependence with the contact radius. The next figure shows this simple law:<br />
<br />
[[File:Jkr cohesion linear force.png]]<br />
<br />
<br />
====== Hertzian Repulsive Force ======<br />
<br />
On the other hand, Hertz solved in 1882 the non-cohesive normal contact between a sphere and a plane. In 1971 Johnson, Kendall and Roberts presented the solution (JKR-Theory) for the same problem in this case adding cohesive behaviour. Not much later, Derjaguin, Müller and Toporov published similar results (DMT-Theory).<br />
<br />
Both theories are very close and correct, the main difference being that the JKR theory is oriented to the study of flexible, large spheres, while the DMT theory is specially suited to represent the behaviour of rigid, small ones.<br />
<br />
[[File:Jkr cohesion hertz.jpeg]]<br />
<br />
The previous figure shows the standard representation of a Linear or Hertzian contact between a sphere and a wall. The distribution of contact pressures between both bodies follow a parabolic law.<br />
<br />
====== JKR Cohesive Force ======<br />
<br />
[[File:Jkr cohesion jkr.jpeg]]<br />
<br />
The preceding capture shows the a representation of a JKR contact between a sphere and a wall. In this case, the distribution of pressures between both bodies is more complex due to the formation of a neck at the boundaries of the contact. A later figure shows a detailed view of the pressures involved.<br />
<br />
[[Image:Jkr cohesion forces.png]]<br />
<br />
In the previous graphic, it is very interesting to note the existence of two singular values of contact radius: one for which the total forces acting on the contacting sphere is zero, and another for which the maximum value of adhesion is achieved.<br />
<br />
<br />
[[File:Jkr cohesion pressures.png]]<br />
<br />
In the previous figure, the blue area represents the distribution of pressures acting on the sphere when contacting a wall if a Hertzian Law is followed. On the other hand, the sum of both green and blue areas represents the JKR distribution. Note the larger values and the existence of adhesive behaviour at both sides of the pressures distribution. <br />
<br />
<br />
An example of granular simulation without cohesive forces:<br />
<br />
[[File:JKR no cohesion 1 33.png]]<br />
[[File:JKR no cohesion 2 33.png]]<br />
[[File:JKR no cohesion 3 33.png]]<br />
[[File:JKR no cohesion 4 33.png]]<br />
<br />
The same simulation as before, this time with cohesive forces in both sphere-sphere and sphere-plane contacts.<br />
<br />
[[File:JKR cohesion 1 33.png]]<br />
[[File:JKR cohesion 2 33.png]]<br />
[[File:JKR cohesion 3 33.png]]<br />
[[File:JKR cohesion 4 33.png]]<br />
<br />
<br />
References:<br />
<br />
V. L. Popov. "Contact Mechanics and Friction" (2010). <br><br />
G. Casas et al. "A modular, partitioned, discrete element framework for industrial grain distribution systems with rotating machinery." Computational Particle Mechanics (2015): 1-18.<br />
<br />
===== Tangential Force Laws =====<br />
<br />
===== Damping Force Laws =====<br />
<br />
(restit. coef)<br />
<br />
== Numerical approach ==<br />
<br />
This section is dedicated to describe the numerical methods used to solve.<br />
<br />
<br />
[[File:Dem manual main scheme 66 discontinuum.png]]<br />
<br />
<br />
=== DEM elements ===<br />
<br />
===== Spheric Particle =====<br />
===== Spheric Continuum Particle =====<br />
===== Spheric Swimming Particle =====<br />
<br />
=== DEM walls (Kratos Conditions) ===<br />
<br />
=== DEM Inlets ===<br />
<br />
A DEM Inlet is a source of new DEM Elements. It is a cloud of Nodes, where each Node is the center of a ''Generator Sphere''. In a random order, the Nodes are chosen to create a new DEM Element (both spherical elements or clusters) whose center coincides with the Node and the whole element is fully included in the ''Generator Sphere''. The newly generated DEM Element has a non-zero imposed velocity which eventually makes the DEM Element get outside the ''Generator Sphere''. Until this moment, the ''Generator Sphere'' is not allowed to generate another DEM-Element. From this moment on, the newly created DEM Element no longer has the velocity imposed, it moves freely and cannot penetrate its ''Generator Sphere'' or any other. Actually, the ''Generator Sphere'' is seen as any other Sphere of the domain by the DEM Element, and the contact between them is calculated as usual. In other words, '''the Generator Spheres reserve the necessary space to create a new DEM Element'''.<br />
<br />
=== DEM strategies ===<br />
<br />
===== Non-cohesive materials Strategy =====<br />
<br />
====== Evaluation of Forces ======<br />
<br />
Once contact between two spheres has been detected (see next figure), the forces occurring at the<br />
contact point are computed. The interaction between the two contacting spheres can be represented<br />
by forces Fij and Fji, which have the same module but opposite directions.<br />
<br />
<br />
[[File:Dem application interaction forces.png]]<br />
<br />
<br />
At the same time, this force Fij can be decomposed into its normal and shear components Fijn and Fijs, respectively. The next figure shows a detailed view of this decomposition.<br />
<br />
Fij = Fijn + Fijs = Fnnij + Fijs<br />
<br />
<br />
<br />
[[File:Dem application forces decomposition.png]]<br />
<br />
<br />
The nij vector represents the unitary normal with respect to the surfaces of both particles at the contact point. This vector lies along the line connecting the centers of the two particles and is directed<br />
outwards from particle i.<br />
<br />
<br />
The contact forces Fn, Fs1 and Fs2 are obtained using a constitutive model formulated for the<br />
contact between two rigid spheres (or discs in 2D). The contact interface for the simplest formulation<br />
is characterized by the normal and tangential stiffness Kn and Ks, respectively, a frictional device<br />
obeying the Couloumb law with a frictional coefficient mu, and a dashpot defined by the contact damping<br />
coefficient cn as shown in the next figure.<br />
<br />
<br />
[[File:Dem application forces rheological.png]]<br />
<br />
====== Rolling Friction ======<br />
<br />
In order to represent irregular particles with spheres, a numerical correction is used. This correction is the rolling friction which is about imposing a virtual moment opposite to particle rotation and dependent on its size.<br />
<br />
[[File:Rolling_friction_1.png|300px]]<br />
<br />
Fn represents the normal force, Ft the tangential force, ω the angular velocity, r is the radius and η the rolling friction coefficient.<br />
<br />
In our approach there are two importatn conditions that have to be fulfilled:<br />
<br />
1. The moment due to rolling friction can not change the direction of the particle spin.<br />
<br />
2. If the contact occurs between two spheres the rolling friction is calculated with the radius of the smallest spheres.<br />
<br />
[[File:Rolling_friction_surfaces.png|150px]]<br />
<br />
The model used is described in the following article: J. Irazábal, F. Salazar, E. Oñate. Numerical modelling of granular materials with spherical discrete particles and the bounded rolling friction model. Application to railway ballast. Computers and Geotechnics 85 (2017) 220–229.<br />
<br />
===== Continuum Strategy =====<br />
<br />
=== DEM schemes ===<br />
<br />
==== Integration of Motion ====<br />
<br />
<br />
The standard translational and rotational equations for the motion of rigid bodies are used to compute the dynamics of the spheres.<br />
For the i-th particle we have:<br />
<br />
miui = Fi<br />
Ii i = Ti<br />
<br />
<br />
where u represents the element centroid displacement in a xed (inertial) coordinate frame X, ! the angular<br />
velocity, m the element mass, I the moment of inertia, Fi the resultant force, and Ti the<br />
total moment arount the central axes.<br />
<br />
<br />
Vectors Fi and Ti are the sum of all forces and moments applied to the i-th particle due<br />
to external loads, Fexti and Texti , respectively, the contact interactions with neighbour spheres Fc<br />
i, j = 1;; nc, where nci is the total number of elements in contact with the i-th discrete<br />
element, and the forces and moments resulting from external damping, Fdampi and Tdampi , respectively,<br />
which can be written as:<br />
<br />
<br />
Fi = Fexti +nciXj=1Fci + Fdampi<br />
<br />
Ti = Texti +nciXj=1(rci Fci + qci ) + Tdampi<br />
<br />
<br />
[[File:Dem application motion.png]]<br />
<br />
<br />
where rci is the vector connecting the centre of mass of the i th particle with the contact point c<br />
(see next figure) and qci are the torques due to rolling and/or torsion (not related to the tangential forces).<br />
The next figure shows the motion of a rigid particle. Note that the form of the rotational equation is only valid for spheres and cylinders (in<br />
2D). It is simplified with respect to a general form for an arbitrary rigid body with the rotational<br />
inertial properties represented by a second order tensor. In the general case it is more convenient to<br />
describe the rotational motion with respect to a co-rotational frame x which is embedded at each<br />
element since in this frame the tensor of inertia is constant.<br />
<br />
<br />
The previous set of equations are integrated in time using a simple central difference scheme. The<br />
time integration operator for the translational motion at the n-th time step is as follows:<br />
<br />
<br />
The first two steps in the integration scheme for the rotational motion are identical to those given<br />
by the previous equations:<br />
<br />
<br />
On the other hand, the vector of incremental rotation is computed as<br />
<br />
<br />
Knowledge of the incremental rotation is enough to update the tangential contact forces. It is also<br />
possible to track the rotational position of particles when necessary. If that is the case, the rotation matrices between<br />
the moving frames embedded in the particles and the fixed global frame must be updated<br />
incrementally by using an adequate multiplicative scheme. <br />
Explicit integration in time yields high computational efficiency and it enables the solution of large<br />
models. The main disadvantage of this explicit integration scheme is its conditional numerical stability<br />
which imposes a limitation on the time step delta_t.<br />
<br />
=== Search Strategies ===<br />
<br />
The contact search is a very important part of the method in terms of computational cost (range 60%-90% of simulation time in simulations with large number of particles) and it is possibly the most difficult part to treat when dealing with particles that have no spherical/circular shape.<br />
<br />
The contact detection basically consists in determining, for every target object, what other objects are in contact with, and then, judge for the correspondent interaction. It is usually not needed to perform a search every time step, which is generally limited for the stability of the explicit integration of the equations of motion. Due to the fact that the search is an expensive step a lower search frequency can be selected without much loss of accuracy.<br />
<br />
The most naïve method of search that can be set is the brute search; for every element, the method does a loop for any other element checking for the contact. The order of the number of operations needed is quadratic: n2. Normally, the strategy to avoid such an expensive scheme is to divide the contact search in two basic stages, a global search and a subsequent local resolution of the contact; in this case the computation time of the contact search is proportional to n log n. In the DEMApplication a Grid/Cell based algorithm is used in this purpose.<br />
<br />
==== Global Search ====<br />
<br />
In a generic way, there are two types of elements: searcher elements (particles or finite elements) and target elements (particles or finite elements). Hereafter<br />
searcher elements will be called S.E. and target elements T.E.<br />
<br />
[[File:Global_search1.png]]<br />
<br />
The steps needed to perform contact search are:<br />
<br />
a) Build bounding box of S.E. (Figure 2(a)).<br />
<br />
b) Build bins cells based on size and position of S.E. (Figure 2(b)).<br />
<br />
c) Collocate S.E. in bins and construct hash table with relates coordinates with cells which point to the contacting S.E. (Figure 2(c)).<br />
<br />
d) Build bounding box of T.E. (Figure 2(d)).<br />
<br />
e) Loop over T.E., detect the intersecting cells to each T.E., check the intersection with the possible found cells and add the entire S.E. contained in the cells intersected by each T.E. (Figure 2(e)).<br />
<br />
f) Solve the contact with local resolution (Figure 2(f)).<br />
<br />
Note: In the case of FE and DE the FE are selected as the S.E. to construct the Bins and the Spheres are T.E. to be found in that bins. <br />
<br />
[[File:Global_search2_bigger.png]]<br />
<br />
==== Local Search ====<br />
<br />
Once the possible neighbours are detected, the local resolution check takes place. For the case of two spherical particles, the check is easy; only the sum of the radius has to be compared against the distance between centres. Other geometries may demand a much complicated check. The followed strategy is to mesh all the geometries with a discretization of triangles. In 3D, surface meshes are used for contact detection. Now, the contact detection should be performed between particles and triangles; if no contact is found, particle contact against lines is searched for; and if contact is still not found, contact against points is performed. Figure 3 shows how the local search is performed. Particle i searches contact against element j, then against lines k, l and m and finally against points n, o and p.<br />
<br />
This is known as a hierarchical algorithm. For further explanation please refer to the paper: "3D contact algorithms for particle DEM with rigid and deformable solids" - M.Santasusana, J.Irazábal, E.Oñate, J.M.Carbonell. Where the advantges and the drawback of this method and other proposed algorithms are detailed and analysed in complicated situations like multicontact.<br />
<br />
[[File:Local_search1.png]]<br />
<br />
Fig. 3 Particle-Face contact detection.<br />
<br />
<br />
<br />
== Programming Implementation ==<br />
Structure of the code (Strategy, Scheme, Element, Node, Utilities, functions frequently used like FastGet,...)<br />
<br />
The source code is accessible through [https://kratos.cimne.upc.es/projects/kratos/repository/show/kratos this site].<br />
<br />
[[File:Dem manual code scheme 66.png]]<br />
<br />
A main Python script is used to trigger the calculation of a problem. It communicates with the C++ code. The main advantage of using a compiled language like python for the main script is that it allows to make quick adjustments or modifications to the main strategy without having to recompile the whole code avery time. It also allows for very fast testing.<br />
<br />
=== Main components of the code ===<br />
<br />
<br />
==== Elements ====<br />
<br />
Discontinuum, continuum, cohesive, swimming, cluster of spheres.<br />
<br />
==== Conditions ====<br />
<br />
Main the FEM elements: lines and triangles.<br />
<br />
==== Constitutive Laws ====<br />
<br />
Different interactions laws: linear, Hertzian and continuum behaviour.<br />
<br />
==== Python elements ====<br />
<br />
These files translate the strategies and the<br />
utilities defined in C++ language to be able<br />
to call them from python scripts.<br />
<br />
==== Strategies====<br />
<br />
The main script that calls the necessary schemes and the functions on the<br />
elements during the global loop.<br />
<br />
==== Schemes====<br />
<br />
Explicit integration schemes available<br />
<br />
==== Utilities====<br />
<br />
Here geometric functions are defined, the<br />
neighbours search function, configuration of the particle, amongst others.<br />
<br />
==== Python scripts====<br />
<br />
It contains, amongst other things, the python interface where the main function<br />
of the strategy such as Initialize or Solve<br />
are called. Other operations are done like adding the necessary nodal variables.<br />
<br />
==== Test examples====<br />
<br />
They contain the Benchmarks<br />
<br />
==== DEM_application====<br />
<br />
It contains all the variables that will be used so they are<br />
created and registered in python and C++.<br />
<br />
<br />
=== Main elements in the global python script ===<br />
<br />
<br />
The first step consist of importing all libraries and files necessary for the application.<br />
It is followed by the creation of the necessary input files of the problem at hand to be<br />
processed by the code. The solver strategy is also chosen, and some important operations are done, as for example the<br />
addition of the necessary variables to the solver.<br />
<br />
At this step the buffer size value is also set: this number determines the<br />
historical database size of the problem. The values for the different options and<br />
variables that Kratos will use in the computation are also imported here, like the<br />
integration scheme, the type of solution, damping specifications, time step, output<br />
time step of results, et cetera.<br />
<br />
After the definition of the previous settings, several initializing functions are called which are responsible<br />
of initializing, among other objects, the mesh, the inlet of particles or the solver. Also some operations related to parallel<br />
computing are done.<br />
<br />
Afterwards the time step is determined and the main computing loop is entered. At each time step Solve function is executed.<br />
Finally, at user-defined time steps the results are exported to GiD so they become ready for visualization and postprocessing.<br />
<br />
In fact, this main python file imports another script written in the same language, the ''sphere_strategy.py''. This file is very important<br />
because it contains the core structure that the program will follow when computing. On the other hand, it is the last door to the kernel of the program, which<br />
is written in C++. Some of the most important functions and classes in this file are the following:<br />
<br />
AddVariables: This function sets which variables will be<br />
stored in the nodes at each time step and also the value of those variables as a function of time also<br />
depending on the buffer size previously selected. See the next figure for details.<br />
<br />
<br />
[[File:Dem application add variables 66.png]]<br />
<br />
<br />
AddDofs: The desired degrees of freedom are set here, as can be seen in the design of the function in the figure that follows.<br />
<br />
<br />
[[File:Dem application add dofs 66.png]]<br />
<br />
<br />
The global structure of the explicit strategy the code uses is shown in the next figure. It consists of three main parts: a constructor of the class of the solver,<br />
which creates some default variables for the class, an initializer, which defines the values of several standard parameters, and finally, the ''Solve()'' function<br />
which takes command of almost the entire computing process. The next figure shows and schematic view of this structure.<br />
<br />
When using the ''Initialize()'' function to set the original values of a group of variables, they automatically become accessible in the different C++ files<br />
of the application by means of the ProcessInfo container (see more at ). This function also calls the Initialize function in the solver.<br />
<br />
<br />
[[File:Dem application explicit strategy 66.png]]<br />
<br />
<br />
C++ Solve() function scheme:<br />
<br />
<br />
[[File:Dem application solve cpp scheme 80.png]]<br />
<br />
<br />
<br />
DEM CONTINUUM<br />
<br />
<br />
Initialize() function scheme:<br />
<br />
<br />
[[File:Dem application initialize scheme 75.png]]<br />
<br />
<br />
Solve() function scheme:<br />
<br />
<br />
[[File:Dem application solve scheme 75.png]]<br />
<br />
<br />
Search() function scheme:<br />
<br />
<br />
[[File:Dem application search scheme 66.png]]<br />
<br />
== Benchmarks ==<br />
<br />
The DEM Benchmarks consist of a set of 9 simple tests which are run every night and whose object is to make sure both that the application performs correctly and that the code did not break after the daily changes. They are the following:<br />
<br />
===Test1: Elastic normal impact of two identical spheres===<br />
<br />
Check the evolution of the elastic normal contact force between two spheres with time.<br />
<br />
<br />
<br />
[[File:Benchmark1_1.png]]<br />
[[File:Benchmark1 graph 66.png]]<br />
<br />
If the coefficient of restitution is 1, the module of the initial and final velocities should be the same. Also, by symmetry, velocities should be equal for both spheres.<br />
<br />
_<br />
<br />
===Test2: Elastic normal impact of a sphere against a rigid plane===<br />
<br />
Check the evolution of the elastic normal contact force between a sphere and a plane.<br />
<br />
[[File:Benchmark2 66.png]]<br />
[[File:Benchmark2 graph 66.png]]<br />
<br />
If the coefficient of restitution is equal to 1, the module of the initial and final velocity should remain unchanged.<br />
<br />
_<br />
<br />
===Test3: Impact of a sphere against a rigid plane with different coefficients of restitution===<br />
<br />
Check the effect of different restitution coefficients on the damping ratio.<br />
<br />
[[File:Benchmark3 66.png]]<br />
[[File:Benchmark3 graph 66.png]]<br />
<br />
If total energy is conserved, the restitution coefficient and the damping ratio values should be identical.<br />
<br />
_<br />
<br />
===Test4: Oblique impact of a sphere with a rigid plane with constant velocity module and variable incident angles===<br />
<br />
Check the tangential restitution coefficient, final angular velocity and rebound angle of the sphere.<br />
<br />
[[File:Benchmark4_66.png]]<br />
[[File:Benchmark4 graph1_66.png]]<br />
[[File:Benchmark4 graph2_66.png]]<br />
<br />
_<br />
<br />
===Test5: Oblique impact of a sphere with a rigid plane with constant normal velocity and different angular velocities===<br />
<br />
Check the final linear and angular velocities of the sphere.<br />
<br />
[[File:Benchmark5_66.png]]<br />
[[File:Benchmark5 graph1_66.png]]<br />
<br />
_<br />
<br />
===Test6: Impact of a sphere with a rigid plane with a constant normal velocity and variable angular velocities===<br />
<br />
Check the final linear and angular velocities of the sphere.<br />
<br />
[[File:Benchmark6_66.png]]<br />
[[File:Benchmark6 graph1_66.png]]<br />
<br />
_<br />
<br />
===Test7: Impact of two identical spheres with a constant normal velocity and different angular velocities===<br />
<br />
Check the final linear and angular velocities of both spheres.<br />
<br />
[[File:Benchmark7_66.png]]<br />
[[File:Benchmark7 graph1_66.png]]<br />
<br />
By symmetry, the tangential final velocity of both spheres should be zero. Additionally, for a coefficient of restitution of 1, there should be no changes in the modules of both linear and angular velocities and their values should conserve symmetry. <br />
<br />
_<br />
<br />
===Test8: Impact of two differently sized spheres with a constant normal velocity and variable angular velocities===<br />
<br />
Check the final linear and angular velocities of both spheres.<br />
<br />
[[File:Benchmark8_66.png]]<br />
[[File:Benchmark8_graph1_66.png]]<br />
<br />
In this case, it is interesting to note that, the bigger and/or denser sphere 2 is, the more this test resembles the sphere versus plane simulation.<br />
<br />
_<br />
<br />
===Test9: Impact of two identical spheres with a constant normal velocity and different coefficients of restitution===<br />
<br />
Check the effect of different restitution coefficients on the damping ratio.<br />
<br />
[[File:Benchmark9_66.png]]<br />
[[File:Benchmark9_graph1_66.png]]<br />
<br />
If total energy is conserved, the restitution coefficient and the damping ratio values should be identical.<br />
<br />
<br />
References:<br />
<br />
Y.C.Chung, J.Y.Ooi. ''Benchmark tests for verifying discrete element modelling codes at particle impact level'' (2011).<br />
<br />
== How to analyse using the current application ==<br />
<br />
=== Pre-Process ===<br />
<br />
GUI's & GiD<br />
<br />
===== G-DEMPack =====<br />
<br />
G-DEMPack is the package that allows a user to create, run and analyze results of a DEM simulation for discontinuum / granular / little-cohesive materials. It is written for GiD. So in order to use this package, you should install GiD first.<br />
<br />
You can read the [[G-DEMPack manual]] or follow the G-DEMPack Tutorials included in [[G-DEMPack Tutorials]] for fast learning on how to use the GUI.<br />
<br />
===== C-DEMPack =====<br />
<br />
C-DEMPack combines the features of G-DEMPack with the simulation of continuum/cohesive materials. Refer to the [[C-DEMPack2 manual]] or follow the C-DEMPack Tutorials included in [[G-DEMPack Tutorials]] for more information.<br />
<br />
===== F-DEMPack =====<br />
<br />
F-DEMPack allows you to simulate a wide spectrum of problems involving the interaction of discontinuum DEM and fluid. It also needs GiD to work. The user is advised to take a look at [[F-DEMPack2 manual]] and follow the C-DEMPack Tutorials included in [[G-DEMPack Tutorials]] in order to get a quick idea of how this program works.<br />
<br />
=== Post-Process ===<br />
<br />
== Application Dependencies ==<br />
<br />
The Swimming DEM Application depends on the DEM application<br />
<br />
=== Other Kratos Applications used in current Application ===<br />
<br />
FEM-DEM<br />
<br />
<br />
== Problems! ==<br />
<br />
==== What to do if the Discrete Elements behave strangely ====<br />
<br />
In the case you notice that some discrete elements cross walls, penetrate in them or simply fly away of the domain at high velocity, check the following points:<br />
<br />
<br />
In the case of excessive penetration:<br />
<br />
*'''Check that the Young Modulus is big enough'''. A small Young Modulus makes the Elements and the walls behave in a very smooth way. Sometimes they are so soft that total penetration and trespass is possible.<br />
<br />
*'''Check the Density of the material'''. An excessive density means a big weight and inertia that cannot be stopped by the walls.<br />
*'''Check the Time Step'''. If the time step is too big, the Elements can go from one side of the wall to the other with no appearence of a reaction.<br />
*'''Check the frequency of neighbour search'''. If the search is not done frequently enough, the new contacts with the walls may not be detected soon enough.<br />
<br />
<br />
In the case of excessive bounce:<br />
<br />
*'''Check that the Young Modulus is not extremely big'''. An exaggerated Young Modulus yields extremely large reactions that can make the Elements bounce too fast in just one time step. Also take into account that the stability of explicit methods depends on the Young Modulus (the higher the modulus, the closer to instability).<br />
<br />
*'''Check the Density of the material'''. A very low density means a very small weight and inertia, so any force exerted by other elements or the walls can induce big accelerations on the element.<br />
*'''Check the Time Step'''. If the time step is too big, the method gains more energy, and gets closer to instability.<br />
*'''Check the restitution coefficient of the material'''. Explicit integration schemes gain energy noticeably, unless you use a really small time step. In case the time step is chosen to be big (but still stable), use the restitution coefficient to compensate the gain of energy and get more realistic results.<br />
<br />
== Contact ==<br />
<br />
Contact us for any question regarding this application:<br />
<br />
<br />
-Miguel Angel Celigueta: [mailto:maceli@cimne.upc.edu maceli@cimne.upc.edu]<br />
<br />
-Guillermo Casas: [mailto:gcasas@cimne.upc.edu gcasas@cimne.upc.edu]<br />
<br />
-Salva Latorre: [mailto:latorre@cimne.upc.edu latorre@cimne.upc.edu]<br />
<br />
-Ferran Arrufat: [mailto:farrufat@cimne.upc.edu farrufat@cimne.upc.edu]<br />
<br />
<br />
[[Category: Applications]]</div>Macelihttps://kratos-wiki.cimne.upc.edu/index.php/DEM_ApplicationDEM Application2018-06-25T14:29:14Z<p>Maceli: /* C-DEMPack */</p>
<hr />
<div>WARNING: This page is still under construction.<br />
<br />
The DEM Kratos Team<br />
<br />
<br />
== Theory ==<br />
<br />
The fundamental theoretical background corresponding to the discontinuous (granular matter) part of the code can be found Casas et al. (2015). The following sections are destined to contain this information though are curently still under construction.<br />
<br />
Nothing numerical<br />
<br />
=== Integration Schemes ===<br />
<br />
*Symplectic Euler Scheme<br />
<br />
*Forward Euler Scheme<br />
<br />
*Taylor scheme<br />
<br />
*Verlet Velocity Scheme<br />
<br />
*Newmark Beta Method Scheme<br />
<br />
=== Contact Laws ===<br />
Concept of indentation<br />
HMD, LSD<br />
===== Normal Force Laws =====<br />
<br />
====== Linear Repulsive Force ======<br />
<br />
The most simple representation of a repulsive contact force between a sphere and a wall is given by a linear law, where the force acting on the sphere when contacting a plane is a linear function of the indentation, which in turn would bring a quadratic dependence with the contact radius. The next figure shows this simple law:<br />
<br />
[[File:Jkr cohesion linear force.png]]<br />
<br />
<br />
====== Hertzian Repulsive Force ======<br />
<br />
On the other hand, Hertz solved in 1882 the non-cohesive normal contact between a sphere and a plane. In 1971 Johnson, Kendall and Roberts presented the solution (JKR-Theory) for the same problem in this case adding cohesive behaviour. Not much later, Derjaguin, Müller and Toporov published similar results (DMT-Theory).<br />
<br />
Both theories are very close and correct, the main difference being that the JKR theory is oriented to the study of flexible, large spheres, while the DMT theory is specially suited to represent the behaviour of rigid, small ones.<br />
<br />
[[File:Jkr cohesion hertz.jpeg]]<br />
<br />
The previous figure shows the standard representation of a Linear or Hertzian contact between a sphere and a wall. The distribution of contact pressures between both bodies follow a parabolic law.<br />
<br />
====== JKR Cohesive Force ======<br />
<br />
[[File:Jkr cohesion jkr.jpeg]]<br />
<br />
The preceding capture shows the a representation of a JKR contact between a sphere and a wall. In this case, the distribution of pressures between both bodies is more complex due to the formation of a neck at the boundaries of the contact. A later figure shows a detailed view of the pressures involved.<br />
<br />
[[Image:Jkr cohesion forces.png]]<br />
<br />
In the previous graphic, it is very interesting to note the existence of two singular values of contact radius: one for which the total forces acting on the contacting sphere is zero, and another for which the maximum value of adhesion is achieved.<br />
<br />
<br />
[[File:Jkr cohesion pressures.png]]<br />
<br />
In the previous figure, the blue area represents the distribution of pressures acting on the sphere when contacting a wall if a Hertzian Law is followed. On the other hand, the sum of both green and blue areas represents the JKR distribution. Note the larger values and the existence of adhesive behaviour at both sides of the pressures distribution. <br />
<br />
<br />
An example of granular simulation without cohesive forces:<br />
<br />
[[File:JKR no cohesion 1 33.png]]<br />
[[File:JKR no cohesion 2 33.png]]<br />
[[File:JKR no cohesion 3 33.png]]<br />
[[File:JKR no cohesion 4 33.png]]<br />
<br />
The same simulation as before, this time with cohesive forces in both sphere-sphere and sphere-plane contacts.<br />
<br />
[[File:JKR cohesion 1 33.png]]<br />
[[File:JKR cohesion 2 33.png]]<br />
[[File:JKR cohesion 3 33.png]]<br />
[[File:JKR cohesion 4 33.png]]<br />
<br />
<br />
References:<br />
<br />
V. L. Popov. "Contact Mechanics and Friction" (2010). <br><br />
G. Casas et al. "A modular, partitioned, discrete element framework for industrial grain distribution systems with rotating machinery." Computational Particle Mechanics (2015): 1-18.<br />
<br />
===== Tangential Force Laws =====<br />
<br />
===== Damping Force Laws =====<br />
<br />
(restit. coef)<br />
<br />
== Numerical approach ==<br />
<br />
This section is dedicated to describe the numerical methods used to solve.<br />
<br />
<br />
[[File:Dem manual main scheme 66 discontinuum.png]]<br />
<br />
<br />
=== DEM elements ===<br />
<br />
===== Spheric Particle =====<br />
===== Spheric Continuum Particle =====<br />
===== Spheric Swimming Particle =====<br />
<br />
=== DEM walls (Kratos Conditions) ===<br />
<br />
=== DEM Inlets ===<br />
<br />
A DEM Inlet is a source of new DEM Elements. It is a cloud of Nodes, where each Node is the center of a ''Generator Sphere''. In a random order, the Nodes are chosen to create a new DEM Element (both spherical elements or clusters) whose center coincides with the Node and the whole element is fully included in the ''Generator Sphere''. The newly generated DEM Element has a non-zero imposed velocity which eventually makes the DEM Element get outside the ''Generator Sphere''. Until this moment, the ''Generator Sphere'' is not allowed to generate another DEM-Element. From this moment on, the newly created DEM Element no longer has the velocity imposed, it moves freely and cannot penetrate its ''Generator Sphere'' or any other. Actually, the ''Generator Sphere'' is seen as any other Sphere of the domain by the DEM Element, and the contact between them is calculated as usual. In other words, '''the Generator Spheres reserve the necessary space to create a new DEM Element'''.<br />
<br />
=== DEM strategies ===<br />
<br />
===== Non-cohesive materials Strategy =====<br />
<br />
====== Evaluation of Forces ======<br />
<br />
Once contact between two spheres has been detected (see next figure), the forces occurring at the<br />
contact point are computed. The interaction between the two contacting spheres can be represented<br />
by forces Fij and Fji, which have the same module but opposite directions.<br />
<br />
<br />
[[File:Dem application interaction forces.png]]<br />
<br />
<br />
At the same time, this force Fij can be decomposed into its normal and shear components Fijn and Fijs, respectively. The next figure shows a detailed view of this decomposition.<br />
<br />
Fij = Fijn + Fijs = Fnnij + Fijs<br />
<br />
<br />
<br />
[[File:Dem application forces decomposition.png]]<br />
<br />
<br />
The nij vector represents the unitary normal with respect to the surfaces of both particles at the contact point. This vector lies along the line connecting the centers of the two particles and is directed<br />
outwards from particle i.<br />
<br />
<br />
The contact forces Fn, Fs1 and Fs2 are obtained using a constitutive model formulated for the<br />
contact between two rigid spheres (or discs in 2D). The contact interface for the simplest formulation<br />
is characterized by the normal and tangential stiffness Kn and Ks, respectively, a frictional device<br />
obeying the Couloumb law with a frictional coefficient mu, and a dashpot defined by the contact damping<br />
coefficient cn as shown in the next figure.<br />
<br />
<br />
[[File:Dem application forces rheological.png]]<br />
<br />
====== Rolling Friction ======<br />
<br />
In order to represent irregular particles with spheres, a numerical correction is used. This correction is the rolling friction which is about imposing a virtual moment opposite to particle rotation and dependent on its size.<br />
<br />
[[File:Rolling_friction_1.png|300px]]<br />
<br />
Fn represents the normal force, Ft the tangential force, ω the angular velocity, r is the radius and η the rolling friction coefficient.<br />
<br />
In our approach there are two importatn conditions that have to be fulfilled:<br />
<br />
1. The moment due to rolling friction can not change the direction of the particle spin.<br />
<br />
2. If the contact occurs between two spheres the rolling friction is calculated with the radius of the smallest spheres.<br />
<br />
[[File:Rolling_friction_surfaces.png|150px]]<br />
<br />
The model used is described in the following article: J. Irazábal, F. Salazar, E. Oñate. Numerical modelling of granular materials with spherical discrete particles and the bounded rolling friction model. Application to railway ballast. Computers and Geotechnics 85 (2017) 220–229.<br />
<br />
===== Continuum Strategy =====<br />
<br />
=== DEM schemes ===<br />
<br />
==== Integration of Motion ====<br />
<br />
<br />
The standard translational and rotational equations for the motion of rigid bodies are used to compute the dynamics of the spheres.<br />
For the i-th particle we have:<br />
<br />
miui = Fi<br />
Ii i = Ti<br />
<br />
<br />
where u represents the element centroid displacement in a xed (inertial) coordinate frame X, ! the angular<br />
velocity, m the element mass, I the moment of inertia, Fi the resultant force, and Ti the<br />
total moment arount the central axes.<br />
<br />
<br />
Vectors Fi and Ti are the sum of all forces and moments applied to the i-th particle due<br />
to external loads, Fexti and Texti , respectively, the contact interactions with neighbour spheres Fc<br />
i, j = 1;; nc, where nci is the total number of elements in contact with the i-th discrete<br />
element, and the forces and moments resulting from external damping, Fdampi and Tdampi , respectively,<br />
which can be written as:<br />
<br />
<br />
Fi = Fexti +nciXj=1Fci + Fdampi<br />
<br />
Ti = Texti +nciXj=1(rci Fci + qci ) + Tdampi<br />
<br />
<br />
[[File:Dem application motion.png]]<br />
<br />
<br />
where rci is the vector connecting the centre of mass of the i th particle with the contact point c<br />
(see next figure) and qci are the torques due to rolling and/or torsion (not related to the tangential forces).<br />
The next figure shows the motion of a rigid particle. Note that the form of the rotational equation is only valid for spheres and cylinders (in<br />
2D). It is simplified with respect to a general form for an arbitrary rigid body with the rotational<br />
inertial properties represented by a second order tensor. In the general case it is more convenient to<br />
describe the rotational motion with respect to a co-rotational frame x which is embedded at each<br />
element since in this frame the tensor of inertia is constant.<br />
<br />
<br />
The previous set of equations are integrated in time using a simple central difference scheme. The<br />
time integration operator for the translational motion at the n-th time step is as follows:<br />
<br />
<br />
The first two steps in the integration scheme for the rotational motion are identical to those given<br />
by the previous equations:<br />
<br />
<br />
On the other hand, the vector of incremental rotation is computed as<br />
<br />
<br />
Knowledge of the incremental rotation is enough to update the tangential contact forces. It is also<br />
possible to track the rotational position of particles when necessary. If that is the case, the rotation matrices between<br />
the moving frames embedded in the particles and the fixed global frame must be updated<br />
incrementally by using an adequate multiplicative scheme. <br />
Explicit integration in time yields high computational efficiency and it enables the solution of large<br />
models. The main disadvantage of this explicit integration scheme is its conditional numerical stability<br />
which imposes a limitation on the time step delta_t.<br />
<br />
=== Search Strategies ===<br />
<br />
The contact search is a very important part of the method in terms of computational cost (range 60%-90% of simulation time in simulations with large number of particles) and it is possibly the most difficult part to treat when dealing with particles that have no spherical/circular shape.<br />
<br />
The contact detection basically consists in determining, for every target object, what other objects are in contact with, and then, judge for the correspondent interaction. It is usually not needed to perform a search every time step, which is generally limited for the stability of the explicit integration of the equations of motion. Due to the fact that the search is an expensive step a lower search frequency can be selected without much loss of accuracy.<br />
<br />
The most naïve method of search that can be set is the brute search; for every element, the method does a loop for any other element checking for the contact. The order of the number of operations needed is quadratic: n2. Normally, the strategy to avoid such an expensive scheme is to divide the contact search in two basic stages, a global search and a subsequent local resolution of the contact; in this case the computation time of the contact search is proportional to n log n. In the DEMApplication a Grid/Cell based algorithm is used in this purpose.<br />
<br />
==== Global Search ====<br />
<br />
In a generic way, there are two types of elements: searcher elements (particles or finite elements) and target elements (particles or finite elements). Hereafter<br />
searcher elements will be called S.E. and target elements T.E.<br />
<br />
[[File:Global_search1.png]]<br />
<br />
The steps needed to perform contact search are:<br />
<br />
a) Build bounding box of S.E. (Figure 2(a)).<br />
<br />
b) Build bins cells based on size and position of S.E. (Figure 2(b)).<br />
<br />
c) Collocate S.E. in bins and construct hash table with relates coordinates with cells which point to the contacting S.E. (Figure 2(c)).<br />
<br />
d) Build bounding box of T.E. (Figure 2(d)).<br />
<br />
e) Loop over T.E., detect the intersecting cells to each T.E., check the intersection with the possible found cells and add the entire S.E. contained in the cells intersected by each T.E. (Figure 2(e)).<br />
<br />
f) Solve the contact with local resolution (Figure 2(f)).<br />
<br />
Note: In the case of FE and DE the FE are selected as the S.E. to construct the Bins and the Spheres are T.E. to be found in that bins. <br />
<br />
[[File:Global_search2_bigger.png]]<br />
<br />
==== Local Search ====<br />
<br />
Once the possible neighbours are detected, the local resolution check takes place. For the case of two spherical particles, the check is easy; only the sum of the radius has to be compared against the distance between centres. Other geometries may demand a much complicated check. The followed strategy is to mesh all the geometries with a discretization of triangles. In 3D, surface meshes are used for contact detection. Now, the contact detection should be performed between particles and triangles; if no contact is found, particle contact against lines is searched for; and if contact is still not found, contact against points is performed. Figure 3 shows how the local search is performed. Particle i searches contact against element j, then against lines k, l and m and finally against points n, o and p.<br />
<br />
This is known as a hierarchical algorithm. For further explanation please refer to the paper: "3D contact algorithms for particle DEM with rigid and deformable solids" - M.Santasusana, J.Irazábal, E.Oñate, J.M.Carbonell. Where the advantges and the drawback of this method and other proposed algorithms are detailed and analysed in complicated situations like multicontact.<br />
<br />
[[File:Local_search1.png]]<br />
<br />
Fig. 3 Particle-Face contact detection.<br />
<br />
<br />
<br />
== Programming Implementation ==<br />
Structure of the code (Strategy, Scheme, Element, Node, Utilities, functions frequently used like FastGet,...)<br />
<br />
The source code is accessible through [https://kratos.cimne.upc.es/projects/kratos/repository/show/kratos this site].<br />
<br />
[[File:Dem manual code scheme 66.png]]<br />
<br />
A main Python script is used to trigger the calculation of a problem. It communicates with the C++ code. The main advantage of using a compiled language like python for the main script is that it allows to make quick adjustments or modifications to the main strategy without having to recompile the whole code avery time. It also allows for very fast testing.<br />
<br />
=== Main components of the code ===<br />
<br />
<br />
==== Elements ====<br />
<br />
Discontinuum, continuum, cohesive, swimming, cluster of spheres.<br />
<br />
==== Conditions ====<br />
<br />
Main the FEM elements: lines and triangles.<br />
<br />
==== Constitutive Laws ====<br />
<br />
Different interactions laws: linear, Hertzian and continuum behaviour.<br />
<br />
==== Python elements ====<br />
<br />
These files translate the strategies and the<br />
utilities defined in C++ language to be able<br />
to call them from python scripts.<br />
<br />
==== Strategies====<br />
<br />
The main script that calls the necessary schemes and the functions on the<br />
elements during the global loop.<br />
<br />
==== Schemes====<br />
<br />
Explicit integration schemes available<br />
<br />
==== Utilities====<br />
<br />
Here geometric functions are defined, the<br />
neighbours search function, configuration of the particle, amongst others.<br />
<br />
==== Python scripts====<br />
<br />
It contains, amongst other things, the python interface where the main function<br />
of the strategy such as Initialize or Solve<br />
are called. Other operations are done like adding the necessary nodal variables.<br />
<br />
==== Test examples====<br />
<br />
They contain the Benchmarks<br />
<br />
==== DEM_application====<br />
<br />
It contains all the variables that will be used so they are<br />
created and registered in python and C++.<br />
<br />
<br />
=== Main elements in the global python script ===<br />
<br />
<br />
The first step consist of importing all libraries and files necessary for the application.<br />
It is followed by the creation of the necessary input files of the problem at hand to be<br />
processed by the code. The solver strategy is also chosen, and some important operations are done, as for example the<br />
addition of the necessary variables to the solver.<br />
<br />
At this step the buffer size value is also set: this number determines the<br />
historical database size of the problem. The values for the different options and<br />
variables that Kratos will use in the computation are also imported here, like the<br />
integration scheme, the type of solution, damping specifications, time step, output<br />
time step of results, et cetera.<br />
<br />
After the definition of the previous settings, several initializing functions are called which are responsible<br />
of initializing, among other objects, the mesh, the inlet of particles or the solver. Also some operations related to parallel<br />
computing are done.<br />
<br />
Afterwards the time step is determined and the main computing loop is entered. At each time step Solve function is executed.<br />
Finally, at user-defined time steps the results are exported to GiD so they become ready for visualization and postprocessing.<br />
<br />
In fact, this main python file imports another script written in the same language, the ''sphere_strategy.py''. This file is very important<br />
because it contains the core structure that the program will follow when computing. On the other hand, it is the last door to the kernel of the program, which<br />
is written in C++. Some of the most important functions and classes in this file are the following:<br />
<br />
AddVariables: This function sets which variables will be<br />
stored in the nodes at each time step and also the value of those variables as a function of time also<br />
depending on the buffer size previously selected. See the next figure for details.<br />
<br />
<br />
[[File:Dem application add variables 66.png]]<br />
<br />
<br />
AddDofs: The desired degrees of freedom are set here, as can be seen in the design of the function in the figure that follows.<br />
<br />
<br />
[[File:Dem application add dofs 66.png]]<br />
<br />
<br />
The global structure of the explicit strategy the code uses is shown in the next figure. It consists of three main parts: a constructor of the class of the solver,<br />
which creates some default variables for the class, an initializer, which defines the values of several standard parameters, and finally, the ''Solve()'' function<br />
which takes command of almost the entire computing process. The next figure shows and schematic view of this structure.<br />
<br />
When using the ''Initialize()'' function to set the original values of a group of variables, they automatically become accessible in the different C++ files<br />
of the application by means of the ProcessInfo container (see more at ). This function also calls the Initialize function in the solver.<br />
<br />
<br />
[[File:Dem application explicit strategy 66.png]]<br />
<br />
<br />
C++ Solve() function scheme:<br />
<br />
<br />
[[File:Dem application solve cpp scheme 80.png]]<br />
<br />
<br />
<br />
DEM CONTINUUM<br />
<br />
<br />
Initialize() function scheme:<br />
<br />
<br />
[[File:Dem application initialize scheme 75.png]]<br />
<br />
<br />
Solve() function scheme:<br />
<br />
<br />
[[File:Dem application solve scheme 75.png]]<br />
<br />
<br />
Search() function scheme:<br />
<br />
<br />
[[File:Dem application search scheme 66.png]]<br />
<br />
== Benchmarks ==<br />
<br />
The DEM Benchmarks consist of a set of 9 simple tests which are run every night and whose object is to make sure both that the application performs correctly and that the code did not break after the daily changes. They are the following:<br />
<br />
===Test1: Elastic normal impact of two identical spheres===<br />
<br />
Check the evolution of the elastic normal contact force between two spheres with time.<br />
<br />
<br />
<br />
[[File:Benchmark1_1.png]]<br />
[[File:Benchmark1 graph 66.png]]<br />
<br />
If the coefficient of restitution is 1, the module of the initial and final velocities should be the same. Also, by symmetry, velocities should be equal for both spheres.<br />
<br />
_<br />
<br />
===Test2: Elastic normal impact of a sphere against a rigid plane===<br />
<br />
Check the evolution of the elastic normal contact force between a sphere and a plane.<br />
<br />
[[File:Benchmark2 66.png]]<br />
[[File:Benchmark2 graph 66.png]]<br />
<br />
If the coefficient of restitution is equal to 1, the module of the initial and final velocity should remain unchanged.<br />
<br />
_<br />
<br />
===Test3: Impact of a sphere against a rigid plane with different coefficients of restitution===<br />
<br />
Check the effect of different restitution coefficients on the damping ratio.<br />
<br />
[[File:Benchmark3 66.png]]<br />
[[File:Benchmark3 graph 66.png]]<br />
<br />
If total energy is conserved, the restitution coefficient and the damping ratio values should be identical.<br />
<br />
_<br />
<br />
===Test4: Oblique impact of a sphere with a rigid plane with constant velocity module and variable incident angles===<br />
<br />
Check the tangential restitution coefficient, final angular velocity and rebound angle of the sphere.<br />
<br />
[[File:Benchmark4_66.png]]<br />
[[File:Benchmark4 graph1_66.png]]<br />
[[File:Benchmark4 graph2_66.png]]<br />
<br />
_<br />
<br />
===Test5: Oblique impact of a sphere with a rigid plane with constant normal velocity and different angular velocities===<br />
<br />
Check the final linear and angular velocities of the sphere.<br />
<br />
[[File:Benchmark5_66.png]]<br />
[[File:Benchmark5 graph1_66.png]]<br />
<br />
_<br />
<br />
===Test6: Impact of a sphere with a rigid plane with a constant normal velocity and variable angular velocities===<br />
<br />
Check the final linear and angular velocities of the sphere.<br />
<br />
[[File:Benchmark6_66.png]]<br />
[[File:Benchmark6 graph1_66.png]]<br />
<br />
_<br />
<br />
===Test7: Impact of two identical spheres with a constant normal velocity and different angular velocities===<br />
<br />
Check the final linear and angular velocities of both spheres.<br />
<br />
[[File:Benchmark7_66.png]]<br />
[[File:Benchmark7 graph1_66.png]]<br />
<br />
By symmetry, the tangential final velocity of both spheres should be zero. Additionally, for a coefficient of restitution of 1, there should be no changes in the modules of both linear and angular velocities and their values should conserve symmetry. <br />
<br />
_<br />
<br />
===Test8: Impact of two differently sized spheres with a constant normal velocity and variable angular velocities===<br />
<br />
Check the final linear and angular velocities of both spheres.<br />
<br />
[[File:Benchmark8_66.png]]<br />
[[File:Benchmark8_graph1_66.png]]<br />
<br />
In this case, it is interesting to note that, the bigger and/or denser sphere 2 is, the more this test resembles the sphere versus plane simulation.<br />
<br />
_<br />
<br />
===Test9: Impact of two identical spheres with a constant normal velocity and different coefficients of restitution===<br />
<br />
Check the effect of different restitution coefficients on the damping ratio.<br />
<br />
[[File:Benchmark9_66.png]]<br />
[[File:Benchmark9_graph1_66.png]]<br />
<br />
If total energy is conserved, the restitution coefficient and the damping ratio values should be identical.<br />
<br />
<br />
References:<br />
<br />
Y.C.Chung, J.Y.Ooi. ''Benchmark tests for verifying discrete element modelling codes at particle impact level'' (2011).<br />
<br />
== How to analyse using the current application ==<br />
<br />
=== Pre-Process ===<br />
<br />
GUI's & GiD<br />
<br />
===== G-DEMPack =====<br />
<br />
G-DEMPack is the package that allows a user to create, run and analyze results of a DEM simulation for discontinuum / granular / little-cohesive materials. It is written for GiD. So in order to use this package, you should install GiD first.<br />
<br />
You can read the [[G-DEMPack manual]] or follow the G-DEMPack Tutorials included in [[G-DEMPack Tutorials]] for fast learning on how to use the GUI.<br />
<br />
===== C-DEMPack =====<br />
<br />
C-DEMPack combines the features of G-DEMPack with the simulation of continuum/cohesive materials. Refer to the [[C-DEMPack2 manual]] or follow the C-DEMPack Tutorials included in [[G-DEMPack Tutorials]] for more information.<br />
<br />
===== F-DEMPack =====<br />
<br />
F-DEMPack allows you to simulate a wide spectrum of problems involving the interaction of discontinuum DEM and fluid. It also needs GiD to work. The user is advised to take a look at [[F-DEMPack2 manual]] and follow the C-DEMPack Tutorials included in [[D-DEMPack Tutorials]] in order to get a quick idea of how this program works.<br />
<br />
=== Post-Process ===<br />
<br />
== Application Dependencies ==<br />
<br />
The Swimming DEM Application depends on the DEM application<br />
<br />
=== Other Kratos Applications used in current Application ===<br />
<br />
FEM-DEM<br />
<br />
<br />
== Problems! ==<br />
<br />
==== What to do if the Discrete Elements behave strangely ====<br />
<br />
In the case you notice that some discrete elements cross walls, penetrate in them or simply fly away of the domain at high velocity, check the following points:<br />
<br />
<br />
In the case of excessive penetration:<br />
<br />
*'''Check that the Young Modulus is big enough'''. A small Young Modulus makes the Elements and the walls behave in a very smooth way. Sometimes they are so soft that total penetration and trespass is possible.<br />
<br />
*'''Check the Density of the material'''. An excessive density means a big weight and inertia that cannot be stopped by the walls.<br />
*'''Check the Time Step'''. If the time step is too big, the Elements can go from one side of the wall to the other with no appearence of a reaction.<br />
*'''Check the frequency of neighbour search'''. If the search is not done frequently enough, the new contacts with the walls may not be detected soon enough.<br />
<br />
<br />
In the case of excessive bounce:<br />
<br />
*'''Check that the Young Modulus is not extremely big'''. An exaggerated Young Modulus yields extremely large reactions that can make the Elements bounce too fast in just one time step. Also take into account that the stability of explicit methods depends on the Young Modulus (the higher the modulus, the closer to instability).<br />
<br />
*'''Check the Density of the material'''. A very low density means a very small weight and inertia, so any force exerted by other elements or the walls can induce big accelerations on the element.<br />
*'''Check the Time Step'''. If the time step is too big, the method gains more energy, and gets closer to instability.<br />
*'''Check the restitution coefficient of the material'''. Explicit integration schemes gain energy noticeably, unless you use a really small time step. In case the time step is chosen to be big (but still stable), use the restitution coefficient to compensate the gain of energy and get more realistic results.<br />
<br />
== Contact ==<br />
<br />
Contact us for any question regarding this application:<br />
<br />
<br />
-Miguel Angel Celigueta: [mailto:maceli@cimne.upc.edu maceli@cimne.upc.edu]<br />
<br />
-Guillermo Casas: [mailto:gcasas@cimne.upc.edu gcasas@cimne.upc.edu]<br />
<br />
-Salva Latorre: [mailto:latorre@cimne.upc.edu latorre@cimne.upc.edu]<br />
<br />
-Ferran Arrufat: [mailto:farrufat@cimne.upc.edu farrufat@cimne.upc.edu]<br />
<br />
<br />
[[Category: Applications]]</div>Maceli