Tablet press

In this tutorial we model a tablet pressing process in four steps: first, granular material is inserted in a cylinder, then the powder is compacted to a tablet. In the last two steps the pressure onto the tablet is release and the tablet is ejected in two steps. A specific powder model is used which allows for the compaction of the material and which provides the required cohesion for creating a stable tablet.

_images/all_states.png

Name of the case: Project_Tablet_Press

Case 1: Filling

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_shape12.png

Two materials command “powder” and “wall_material” are used:

_images/01_01_materials12.png

The simulation domain ranging from -0.025 to 0.025 in x, from -0.01 to 0.08 in y and from -0.02 to 0.055 in z direction is created:

_images/01_01_simulation_domain11.png

Meshes and regions

Three meshes are inserted, one for the side walls of the cylinder, one for the bottom shape of the tablet and a floor. Please note that the floor exceeds the simulation domain. By setting the keyword “move_protruding_mesh_elements” to “yes” we enforce Aspherix to ignore all mesh elements that are outside the calculation domain. All meshes are of “wall_material”:

_images/01_02_meshes_bottom.png _images/01_02_meshes_side_wall.png

The floor mesh is scaled by a factor of 0.5 in x direction and by 0.1 in y and z direction:

_images/01_02_meshes_floor.png

Physics models

The contact models are now defined. For the particles we use the normal contact model hertz and the tangential model history and the cohesion model sjkr/powder are used:

_images/01_03_particle_contact_model12.png

Since we added meshes in the previous section, a wall contact model is also added automatically to this section. We use the default models normal hertz and tangential history:

_images/01_03_wall_contact_model12.png

The powder compression model is activated by adding the powder/update command:

_images/01_03_powder_update.png

The gravity is enabled automtially:

_images/01_03_enable_gravity8.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 the material properties for the powder and the wall_material are specified:

powder

wall_material

Density

2000

7000

Young’s modulus

1e9

1e9

Poisson’s ratio

0.3

0.3

Coefficient of restitution

0.5

1

Coefficient of friction

0.5

1

Cohesion energy density

1e6

0

Cohesion energy density variation

100

0

Cohesion yield factor

2

0

alphaI_min

0.65

1

Compressibility

10000

0

Dilatability

0

0

Hardening

0.95

0

_images/01_04_material_properties_powder.png _images/01_04_material_properties_wall2.png

Since two materials are present, also the material interaction properties must be set:

wall_material - powder

Coefficient of friction

0.5

Coefficient of restitution

0.5

Cohesion energy density

0

Cohesion energy density variation

0

Cohesion yield factor

0

_images/01_04_material_interaction_properties4.png

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

_images/01_04_particle_template7.png _images/01_04_particle_distribution11.png

0.0003 kg of particles with a velocity of 0.2 m/s in the negative z-direction is now inserted. We use an insertion command command with mode stream, the massrate is set to 0.003 kg/s. The stream command requires a face for the insertion which can either consist of a mesh or a primitive insertion shape. In our case we are using a circle with a radius of 0.003 m and a center of (0,0,0.015):

_images/01_04_insertion9.png

Simulation control

In this tab, we first define the time-step settings such as the desired simulation timestep of 1e-7 seconds and the total simulation time of 0.2 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_settings10.png

Loadbalancing is enabled per default:

_images/01_06_enable_loadbalancing8.png

Output settings

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

_images/01_07_output_timestep_settings10.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. If one or more meshes are added to the meshes list but no mesh properties are selected, all available properties are added to the output.

_images/01_07_output_settings11.png

Running the simulation

After completing the setup and saving it, the simulation can be launched. Change to the Simulation view and set the number of cores to use to 2. Please note that using more cores would rather increase the simulation times instead of decreasing them due to the low number of particles in the simulation. First hit the “Check settings” button, and if the check returns “Check settings successfully completed” the simulation can be run by hitting “Start”.

The graph below shows the kinetic energy as a function of time:

_images/01_09_ke.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:

_images/filling.png

Case 2: Compression

In this case the lose particle bed is compressed with the help of a servo wall. We start by creating a derived simulation that depends on the filling case.

Meshes and Regions

In the meshes and regions tab we first define a mesh module servo:

_images/02_02_mesh_module_compression.png

The servo wall will be force controlled with a target value of 1 Newton. We set the maximal velocity of the mesh to 0.1 m/s and for obtaining compression with respect to gravity we set the axis to (0,0,-1). The center of mass is set to (0,0,0.007), the mode is auto and the ratio is set to 0.01.

This mesh module is applied to a mesh:

_images/02_02_mesh_top.png

This mesh is based on the same mesh file as the bottom used in the filling simulation, only rotated and translated.

Particles

In the particles tab the insertion command is removed:

_images/02_04_insertion6.png

Simulation control

The total simulation time is set to 0.25 seconds:

_images/02_06_timestep_settings6.png

Running the simulation

After completing the setup and saving it, the simulation can be launched. Change to the Simulation view and launch the simulation. Please make sure that the number of cores is set to 2 there too.

The graphs below shows the z-force on the top wall and its position over time:

_images/02_09_force.png _images/02_09_z_position.png

Both values reach a plateau in the course of the simulation time, meaning that the simulation reaches a steady state. We also check the numeric value of the z-position of the wall (here 0.00564… - can be slightly different for different simulation runs). This value will be used in the next simulation, where we will have to select the correct starting position for the proceeding calculation.

_images/02_09_z_position_text.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:

_images/compressing.png

Case 3: Decompression

In the next simulation we are slowly removing the top wall that compresses the powder and the tablet that has been produced by compressing the powder is moved upwards in the cylinder. An instantaneous removal of the top wall would lead to high forces and potential instabilities, which is why we are using another servo wall command for triggering a smooth upwards motion.

Meshes and Regions

In the meshes and regions tab we rename the existing mesh module servo to decompression and invert the axis to (0,0,1):

_images/03_02_mesh_module_decompression.png

This mesh module remains attached to the top mesh. The top mesh is now translated to the final z-position of the previous calculation (0.0056460860):

_images/03_02_mesh_top.png

This mesh is based on the same mesh file as the bottom used in the filling simulation, only rotated and translated.

Another mesh module of type motion is created:

_images/03_02_mesh_module_motion.png

This mesh module is attached to the bottom mesh:

_images/03_02_mesh_bottom.png

Simulation control

The total simulation time is set to 0.3 seconds:

_images/03_06_timestep_settings.png

Custom Settings

Since force and z-position of the top wall are of no increased interest any more, we removed the custom command from the custom settings tab.

Running the simulation

After completing the setup and saving it, the simulation can be launched. Change to the Simulation view and launch the simulation. Please make sure that the number of cores is set to 2 there too.

The graphs below shows the kinetic energy over time:

_images/03_09_ke.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:

_images/decompressing.png

Case 4: Ejection

In this last simulation the top mesh is entirely removed from the simulation and the tablet is ejected.

Meshes and Regions

In the meshes and regions tab we removed both the mesh module for the decompression and the top mesh. The mesh module for the motion of the bottom mesh is renamed to tilting_motion and the linear motion is replaced by a rotation:

_images/04_02_mesh_module_tilting.png

The mesh module is automatically renamed and still attached to the bottom mesh:

_images/04_02_mesh_bottom.png

Running the simulation

After completing the setup and saving it, the simulation can be launched. Change to the Simulation view and launch the simulation. Please make sure that the number of cores is set to 2 there too.

The graphs below shows the kinetic energy over time:

_images/04_09_ke.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 ejection of the tablet:

_images/eject.png

The below image summarizes all four states:

_images/all_states.png