Thermal Mixer (GPU)

This tutorial is only avaible for Linux.

This GPU test case features a simple mixer configuration with one stationary blade set and another that rotates. Two particle types are introduced in separate inlet regions, and the heated mixer base warms the particles as they are blended throughout the process. The images show the state of the simulation at the last time step:

_images/09_temp.png _images/09_vel.png

Name of the case: Project_Thermal_Mixer_GPU

Inserting & Mixing on the GPU

General settings

In this simulation we use particles of particle_shape type sphere:

_images/01_particle_shape33.png

Two materials, material1 and material2, are defined:

_images/01_materials31.png

The simulation domain is defined with x and y dimensions ranging from -0.25 to 0.25 meters and the z dimension ranging from 0 to 0.5 meters:

_images/01_simulation_domain33.png

Meshes and Regions

We start with defining the rotational motion for the mixing blades, using a mesh_module of type motion:

_images/02_mesh_module_motion3.png

id

mesh_module | style | origin | axis | period

MixingBladeRotation

motion | rotate | ( 0, 0, 0) | ( 0, 0, -1 ) | 0.25

Then we insert the mesh for the blades that uses the just created mesh_module:

_images/02_mesh_blade1.png

Next, the mesh for the fixed plates is inserted. This mesh is translated by 0.1 m in x-direction:

_images/02_mesh_fixed1.png

For the shaft of the mixer, the cylindric wall and the bottom three primitive walls are used:

id

type

center

normal

radius

BottomWall

disk

( 0, 0, 0.0 )

( 0, 0, 1 )

0.25

OuterWall

cylinder

( 0, 0, 0)

( 0, 0, 1 )

0.25

ShaftWall

cylinder

( 0, 0, 0)

( 0, 0, 1 )

0.04

_images/02_primitive_wall_outer.png _images/02_primitive_wall_shaft.png _images/02_primitive_wall_bottom1.png

Please note that we assigned a temperature of 400K to the bottom plate.

Finally we define two regions regions that we will be using for the insertion:

id

center_bottom

center_top

radius

reg1

( -0.135, 0, 0.25)

( -0.135, 0, 0.25)

0.1

reg2

( 0.135, 0, 0.25)

( 0.135, 0, 0.25)

0.1

_images/02_region6.png

Physics Models

In the next step, the definition of the physics models takes place. For the particles we use the normal contact model hertz and the tangential model history.

_images/03_particle_contact_model31.png

Since we added meshes and walls in the previous section a wall contact model was added automatically in this section. We use the same contact models as for the particles:

_images/03_wall_contact_model28.png

The calculation of the heat transfer is triggered by the enable_heat_transfer command command:

_images/03_enable_heattransfer1.png

Finally also the gravity is defined:

_images/03_enable_gravity24.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 introduced two materials. Here we define the required material properties and material interaction properties.

_images/04_material_properties24.png

material1

material2

Density

2000

2000

Young’s modulus

5e6

5e6

Poisson ratio

0.3

0.3

Coefficient of restitution

0.25

0.25

Coefficient of friction

0.6

0.6

Thermal conductivity

100

100

Thermal capacity

100

100

_images/04_material_interaction_properties8.png

ParticleMaterial / WalllMaterial

Coefficient of restitution

0.25

Coefficient of friction

0.6

We now define two particle templates pt1 is of material1 and has a radius of 0.0055 m, pt2 is of material2 and has a radius of 0.006 m:

_images/04_particle_template18.png

Then we define two particle distributions, one consists of pt1 and the other one of pt2:

_images/04_particle_distribution29.png

These two particle distributions are used for two insertion commands:

ins1

ins2

region

reg1

reg2

particle_distriubtion

pd1

pd2

particlerate

10000

10000

target_particle_count

10000

10000

velocity vector

( 0, 0, -0.5)

( 0, 0, -0.5)

_images/04_insertion18.png

Simulation Control

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

_images/06_timestep_settings31.png

Output Settings

In this tab we first define the timestep width for the output to be 0.05 seconds and the terminal output to be 0.01 second:

_images/07_output_timestep_settings31.png

The output_settings command 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 in the terminal. Please note that if the output of per-cell information on meshes such as velocity or stress are desired, the keyword mesh_properties has to be added and the required output has to be selected.

_images/07_output_settings33.png

Running the Simulation

After saving the case we can change to the Simulation section. By hitting the Start button we can start running the GPU simulation. Have a look at the top of the log file for GPU architecture information:

_images/09_log.png

During the simulation, various quantities are displayed, such as the translational and rotational kinetic energy:

_images/09_ke_rke.png

Postprocessing the Results

As soon as data was written to the post-folder within the simulation, it can be displayed with Ovito or Paraview. These images show the state of the simulation at the last timestep, the particles are colored accoding to velocity, temperature and radius respectively:

_images/09_vel.png _images/09_temp.png _images/09_particles.png

top