Measure Potential

The main topic of this tutorial is the measurement of the electric potential within a bed with the help of meshes, as well as the usage of the simulation mode “simulate until_condition_reached”. In a first simulation we insert a pack of particles in a cylindric domain that contains two probe-tubes and let them settle initially. In the second step we apply a force to compress the particle bed, the simulation stops once the average stress on the compression wall reaches a steady state. Finally, in the last simulation, we enable electrical conductivity and apply a current at the bottom, that heats the particles in the bed. The potential can be evaluated both at the top mesh and both probe tubes. The simulation ends when the average temperature of the particle bed is converged.

_images/03_99_temperature.png _images/03_99_potential_result.png

Name of the case: Project_Measure_Potential

Case 1: Pre-Compaction

First, the used materials command as well as the simulation domain are defined in the General Settings tab. Please note that the dimensions of the simulation domain can only be defined in the first simulation. This means that the box that forms the simulation domain has to be chosen big enough from the beginning.

General settings

In this simulation we set particles of particle shape sphere:

_images/01_01_particle_shape7.png

A single materials command with the name default is used:

_images/01_01_materials7.png

The simulation domain is defined with x and y dimensions ranging from -0.051 to 0.051 meters, and z domain ranging from -0.001 to 0.501 meters.

_images/01_01_simulation_domain6.png

Meshes and Regions

We add three meshes ProbeBot, ProbeTop and Wall, all of material material1, solid yes and temperature 300K:

ProbeBot

ProbeTop

WallBot

file

probe.stl

probe.stl

disk.stl

translate

(0,0,0.1)

(0,0,0.1)

_images/01_02_mesh_ProbeBot.png _images/01_02_mesh_ProbeTop.png _images/01_02_mesh_WallBot.png

A cylindric primitive wall is used as side wall:

_images/01_02_primitive_wall2.png

The insertion region consists of a vertical cylinder, from which the regions of the probes are subtracted to avoid overlaps during the insertion:

_images/01_02_region_InsertionCylinder.png _images/01_02_region_bot.png _images/01_02_region_top.png _images/01_02_region_InsertionRegion.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/01_03_particle_contact_model7.png

Since wall meshes were added in the previous section, a wall contact model is added automatically in this section. We use the same properties of the particle contact model:

_images/01_03_wall_contact_model7.png

We add an enable_heat_transfer command command to track the heating of the particle bed later on:

_images/01_03_enable_heat_transfer2.png

Finally, also the gravity is defined:

_images/01_03_enable_gravity3.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 defined two material types (part and wall), whose material properties have to be specified here:

material1

density

100

Young’s modulus

5e7

Poisson’s ratio

0.3

Coefficient of restitution

0.5

Coefficient of friction

0.3

Thermal Capacity

1

Thermal Conductivity

1000

_images/01_04_material_properties4.png

A template for spheres with radius of 0.005 meters is generated:

_images/01_04_particle_template2.png

Based on this template a particle distribution is created:

_images/01_04_particle_distribution6.png

The final step in this tab is the definition of the insertion command. We add a pack of particles once at the beginning of the simulation, the target volume fraction is set to 0.6. We use the dense paricle generator dense. The initial velocity of the particles is given with (0,0,-1) m/s.

_images/01_04_insertion4.png

Simulation control

In this tab, one first choses the time step settings such as the desired simulation timestep of 1e-6 seconds and the total simulation time of 0.1 second. Per default, the check_timestep command command is also 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_simulation_timestep_settings.png

For an optimal distribution of the loads on the processors we activate the loadbalancing:

_images/01_06_enable_loadbalancing5.png

Output settings

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

_images/01_07_output_timestep_settings5.png

The output_settings command command takes care that all particle information and meshes are written to files. 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.

_images/01_07_output_settings6.png

Simulation

After completing the setup and saving it, the simulation can be launched. Therefore, change to the Simulation view.

The image shows the kinetic energy:

_images/01_99_ke1.png

Case 2: Create Packing

In this second simulation compress the particle bed with a servo wall.

Meshes and Regions

We therefore first add a mesh_module servo:

_images/02_02_mesh_module_servo.png

Then we add a mesh_module stress_average:

_images/02_02_mesh_module_stress_average.png

In the next step a mesh is added, to which both mesh modules are applied to:

_images/02_02_mesh_WallTop.png

The upper position of the mesh as well as the center of mass of the servo wall is chosen based on the result of the initial simulation.

Since no more particles are required, we remove the insertion command in the Particles tab, and consequently we can also remove the insertion regions:

_images/02_04_insertion3.png _images/02_02_regions.png

Simulation Control

We now want to run the simulation until the average stress on the top mesh reaches a steady state. We will do this by using the simulate command in mode until_condition_reached:

_images/02_06_simulate2.png

The condition myCondition will be defined later on.

Output Settings

We add two new calculate commands, one to obtain the average stress on the mesh

_images/02_07_calculate_average.png

and one to calculate the temporal residual of this quantity:

_images/02_07_calculate_temporal_residual.png

Custom Settings

Finally we define the boolean condition:

_images/02_08_custom_variable.png

The weight 22 makes sure that the command is added before the simulate command (weight 25) that uses it.

Simulation

After the setup is completed, the simulation can be launched. The images below show the residual (logarithmic y-axis, use format plot for this) and the z-force onto the top wall:

_images/02_99_residual.png _images/02_99_WallTop_fz.png

Case 3: Electric Heating

In this last simulation we add the electric conductivity and simulate until the particle bed reaches a steady temperature.

Meshes and Regions

The mesh_modules keyword of the top wall is removed:

_images/03_02_mesh_WallTop.png

Both mesh_modules can be deleted as well.

At the top wall a current of 10 Ampere is applied. At the bottom wall we defined a potential of 0 Volt.

Physics Models

The enable_electrical_conductivity command is added and applied to all meshes in the simulation. The keyword enable_electric_heating is activated:

_images/03_03_enable_electrical_conductivity.png

Particles

The material properties for the electrical conductivity and the heating have to be defined:

_images/03_04_material_properties.png

Simulation Control

We keep the simulate command as is, but we will later on modify the condition to account for the average particle temperature instead:

_images/03_06_simulate.png

Output Settings

We add the keywords write_particle_contact_network and write_wall_contact_network to the output_settings command:

_images/03_07_output_settings.png

The previous calculate commands are replaced by a command that calculates the average particle temperature and its temporal residual:

_images/03_07_calculate_average.png _images/03_07_calculate_temporal_residual.png

This time we use the absolute residual instead of the relative one, which is the default.

Furthermore, current, resistance and voltage between the bottom and top as well as the probes are calculated:

_images/03_07_calculate_current.png _images/03_07_calculate_resistance.png _images/03_07_calculate_voltage.png

Custom Settings

Next, we modify the condition:

_images/03_08_custom_variable.png

Expert Settings

For speeding up the case we can now also disable the integrator:

_images/03_09_no_integration.png

Postprocessing

These graphs show the average particle temperature as well as the residual:

_images/03_99_average_temperature.png _images/03_99_residual.png

This image shows the potential at the two probes inside the mesh was well as at the top wall:

_images/03_99_potential.png

These graphs show electrical current, resistance and voltage:

_images/03_99_current.png _images/03_99_resistance.png _images/03_99_voltage.png

The results can also be visualized in Ovito or Paraview. These images show the particle bed colored according to temperature and electric potential at the end of the simulation:^

_images/03_99_temperature.png _images/03_99_potential_result.png