Usage of different particle shapes

We first generate a simple case where spherical particles cause wear on a simple chute. Then we clone the basic simulation and use all kinds of nonspherical particles: multispheres, tablets (superquadric particles), fibers and facetted particles (both concave and convex).

This case deomonstrates the simplicity of the usage of different particle shapes, and shows the usage of the tools provided for generating or preparing nonspherical particles.

_images/result10.png

Name of the case: Project_Shapes

Case 1: The spherical base case

As a first step, the particle shape, the used materials command and the simulation domain are defined in the General Settings tab.

General settings

In this simulation we set particles of particle shape sphere:

_images/01_01_particle_shape9.png

A single material with the name default is used:

_images/01_01_materials9.png

The simulation domain ranging from -0.8 to 0.1 in x, from -0.3 to 0.3 in y and from -0.5 to 0.2 in z direction is created:

_images/01_01_simulation_domain8.png

Meshes and regions

We start by creating a mesh module for calculating the wear on the chute:

_images/01_02_mesh_module_wear.png

This mesh module is used in the following mesh command command for the chute:

_images/01_02_mesh_chute1.png

Furthermore, an insertion region command is added in this tab:

_images/01_02_insertion_region4.png

Physics models

The contact models are now defined. For the particles we use the normal contact model hertz and the tangential model history.

_images/01_03_particle_contact_model9.png

Since we added a mesh in the previous section, a wall contact model is also added automatically to this section. We use the same properties of the particle contact model:

_images/01_03_wall_contact_model9.png

Finally, the gravity is enabled:

_images/01_03_enable_gravity5.png

Per default the gravity has a magnitude of 9.807 and acts into negative z-direction. These defaults can be changed by either setting the magnitude or the direction manually.

Particles

In the general settings tab we only defined a single material type (default), whose settings have to be specified here:

default

Density

2500

k_finnie

1

Young’s modulus

5e6

Poisson’s ratio

0.3

Coefficient of restitution

0.65

Coefficient of friction

0.5

_images/01_04_material_properties6.png

A particle template of shape sphere with radius 0.005 is added and used for a particle distribution:

_images/01_04_particle_template4.png _images/01_04_particle_distribution8.png

A pack of 25 particles with a velocity of 0.1 m/s in the negative z-direction is now inserted every 0.1 seconds. We use an insertion command command with mode pack:

_images/01_04_insertion6.png

Simulation control

In this tab, we first define the time-step settings such as the desired simulation timestep of 5e-5 seconds and the total simulation time of 5 seconds. Per default also the check_timestep command command is enabled, which throws a warning when the time step exceeds 10 % of the Rayleigh or the Hertz time. These thresholds can be changed by setting an alternative value for hertz_fraction or rayleigh_fraction.

_images/01_06_timestep_settings7.png

Output settings

In this tab we first define the timestep width for the file and the terminal output:

_images/01_07_output_timestep_settings7.png

The output_settings command command the takes care that all particle information and the meshes are written to files accordingly. Furthermore it triggers the output of global quantities such as the kinetic energy of the particles or total normal and shear stresses onto meshes to the terminal. Please note that if the output of per-cell information on meshes such as wear, velocity of stress are desired, one has to add the keyword mesh_properties and select the required output.

_images/01_07_output_settings8.png

Running the simulation

After completing the setup and saving it, the simulation can be launched. Change to the Simulation view. First hit the “Check settings” button, and if the check returns “Check settings successfully completed” the simulation can be run by hitting “Start”.

The graphs below show the particle number and the kinetic energy as a function of time, as well as the fraction of the Hertz and Rayleigh timestep:

_images/01_99_run_particles.png _images/01_99_run_ke.png _images/01_99_run_check_timestep.png

Postprocessing with Paraview

After the simulation is completed, all data written with the output_settings command can be visualized automatically by going to the Visualization view and hitting the “Start Paraview” button.

The image below shows the final state of the system, where the particles and the mesh are colored respectively with the velocity and the wear.

_images/01_99_result1.png

Case 2: Multisphere particles

We start with cloning the initial simulation and renaming the clone to “Multisphere”. In the General Settings tab the particle_shape sphere is changed to multisphere:

_images/02_01_particle_shape.png

One can either use an existing multisphere particle or use the Multisphere Builder (Button, or Tools/ Non-spherical Particles / Multisphere Builder) to define a new particle:

_images/02_04_ms_builder.png

This multisphere file can be saved to a location of your choice and used for the particle template:

_images/02_04_particle_template.png

For nonspherical particles we add the keyword “orientation random” to the insertion command:

_images/02_04_insertion5.png

Without this keyword all nonspherical particles are inserted with the orientation that is defined by the particle template.

A test run with the existing timestep shows that the Rayleigh fraction is slightly above 0.1, which is perfectly tolerable. To avoid the constant output of warnings, we increase the tolerance of the check timestep command to 0.11 for the Rayleigh fraction:

_images/02_06_check_timestep.png

We save the case and launch the simulation. The graphs below show the particle number and the kinetic energy as a function of time, as well as the fraction of the Hertz and Rayleigh timestep:

_images/02_99_run_particles.png _images/02_99_run_ke.png _images/02_99_run_check_timestep.png

Please note, that the number of particles in this case is the number of spheres in the simulation, not the number of multisphere particles.

By pressing the “Start Paraview” button the data is automatically loaded in Paraview. The image below shows the final state of the system, the particles are colored according to velocity and the mesh shows the wear.

_images/02_99_result2.png

Case 3: Tablets (Superquadric particles)

The group of superquadric particles is suitable for representing many different shapes, from tablets to (almost) cylinders and cubes etc. We make yet another clone of the spherical base case and change the particle_shape to superquadric:

_images/03_01_particle_shape.png

Superquadric particles can either be defined directly in the particle template, or one can use the Superquadric Builder, that also visualizes the shape (Button, or Tools/ Non-spherical Particles / Superquadric Builder).

_images/03_04_sq_builder.png

By clicking on the “Export” button, Aspherix GUI automaticall generates a new particle template. In this case, however, we replace the existing spherical particle template:

_images/03_04_particle_template.png

Again, we ad the keyword “orientation random” to the insertion command:

_images/03_04_insertion.png

A test run of this case with the existing time step shows that the Rayleigh and Hertz timestep are clearly above 0.1. This requires us to decrease the time step from 5e-5 to 2.5e-5:

_images/03_06_simulation_timestep.png

We save the case and launch the simulation. The graphs below show the particle number and the kinetic energy as a function of time, as well as the fraction of the Hertz and Rayleigh timestep:

_images/03_99_run_particles.png _images/03_99_run_ke.png _images/03_99_run_check_timestep.png

By pressing the “Start Paraview” button the data is automatically loaded in Paraview. The image below shows the final state of the system, the particles are colored according to velocity and the mesh shows the wear.

_images/03_99_result.png

Case 4: Fibers

In this case we want to use flexible particles - so called fibers. Like a multisphere, the objects are defined by spheres, but in this case there are flexible bonds between the spheres. A fiber can only consist of a linear chain of spheres in one prinzipal direction (x, y or z), and depending on the properties and the surrounding forces fibers can also break. Fibers can be defined with overlapping and non-overlapping spheres, but the overlap cannot exceed the radius of the single sub-spheres.

We start with a clone of the spherical base case and change the particle shape:

_images/04_01_particle_shape.png

The definition of the bonds between the sub-spheres is triggered by the usage of the cohesion model fiber:

_images/04_03_particle_contact_model.png

If the spheres in a fiber overlap, please add the options “disableTangentialWhenBonded on” and “disableNormalWhenBonded on”.

The fiber model requires additional material properties, namely a Youngs Modulus and a Poisson ratio for the fibers, a fiber normal and tangential damping ratio and a distance that defines the maximal distance that a bond can cover (i.e., when all particles overlap as planned in this case one must make sure that the parameter is larger or equal to the distance of two neighboring particles and small than the distance of a particle and its next but one neighbor).

_images/04_04_material_properties.png

Just as for for multispheres the multisphere builder can be used to generate a fiber:

_images/04_04_ms_builder.png

This time we use a particle template of type fiber:

_images/04_04_particle_template.png

Again, the keyword “orientation random” is added to the insertion command:

_images/04_04_insertion.png

Like in the multisphere case, a short run check shows that the Rayleigh fraction exceeds 0.1 slightly. By settings the check-threshold to 0.11 we can avoid related warnings:

_images/04_06_check_timestep.png

In this case we visualize the contacts between the particles by adding the property write_particle_contact_network yes to the output_settings command:

_images/04_07_output_settings.png

We save the case and launch the simulation. The graphs below show the particle number and the kinetic energy as a function of time, as well as the fraction of the Hertz and Rayleigh timestep:

_images/04_99_run_particles.png _images/04_99_run_ke.png _images/04_99_run_check_timestep.png

The number of particles represents the number of spheres in the simulation, not the number of fibers.

By pressing the “Start Paraview” button the data is automatically loaded in Paraview. The image below shows the final state of the system, the particles are colored according to velocity and the mesh shows the wear.

_images/04_99_result.png

Case 5: Facetted particles (Convex)

For simulations with convex facetted particles we require the particle geometry as strictly convex stl file. In case you need help with generating such a file, please contact DCS, we have tools that can help with this task.

We start with a clone of the basic sphere case and change the particle shape to convex:

_images/05_01_particle_shape.png

We use the mesh of a small cube (0.01 m side length) for the definition of the particle template.

_images/05_04_particle_template.png

Again, the keyword “orientation random” is added to the insertion command:

_images/05_04_insertion.png

We save the case and launch the simulation. The graphs below show the particle number and the kinetic energy as a function of time, as well as the fraction of the Hertz and Rayleigh timestep:

_images/05_99_run_particles.png _images/05_99_run_ke.png _images/05_99_run_check_timestep.png

By pressing the “Start Paraview” button the data is automatically loaded in Paraview. The image below shows the final state of the system, the particles are colored according to velocity and the mesh shows the wear.

_images/05_99_result.png

Case 6: Facetted particles (Concave, arbitray shapes)

For simulations with non-convex particles we require an stl file of the geometry as input. The shape has to be cut into convex blocks that are automatically connced to each other in Aspherix. We provide a tool that converts an arbitrary concave particle into the required decomposition and provides a shape file for the particle template.

We start with a clone of the basic sphere case and change the particle shape to concave:

_images/06_01_particle_shape.png

Since particles with different shapes obviously behave differently, we are reducing the coefficient of friction to 0.3 - with this we avoid a too large particle pile on the chute:

_images/06_04_material_properties.png

The particle that we want to use in this case is a letter “A”. We do not want to provide a manually generated decomposition (would be possible), but we want Aspherix to generate the required format. We use the Concave Builder (button or Tools / Non-spherical particles / Concave Builder) for this task:

_images/06_04_concave_builder.png

We select our stl file, keep the standard settings and click “Decompose”. Depending on the complexity of the the provided mesh this can take a while. Once completed, the new decomposition can be exported to a particle template. Please make sure that the case is already saved with its new name - this ensures that the relative path in the particle template is correct:

_images/06_04_particle_template.png

Again, the keyword “orientation random” is added to the insertion command:

_images/06_04_insertion.png

We save the case and launch the simulation. The graphs below show the particle number and the kinetic energy as a function of time, as well as the fraction of the Hertz and Rayleigh timestep:

_images/06_99_run_particles.png _images/06_99_run_ke.png _images/06_99_run_check_timestep.png

The number of particles represents the number of convex parts in the simulation, not the concave objects.

By pressing the “Start Paraview” button the data is automatically loaded in Paraview. The image below shows the final state of the system, the particles are colored according to velocity and the mesh shows the wear.

_images/06_99_result.png

In this tutorial we demonstrated the simplicity of changing sphere types in simulations. Please note that different shapes might required different time steps, and in some cases also special settings (fiber parameters, switching off normal / tangential force for spheres that are bonded, radom orientation of particles during the insertion, …). The image below shows the final results for all cases next to each other. Please note that the materials deviate strongly (in shape and mass, partially also in parameters), which obviously leads to different wear values.

_images/result10.png