uniaxialCompression

Overview

Template Info

  • Target Parameters: cohesionEnergyDensity cohesionVariation cohesionStrength pullOffForce adhesionEnergy stiffnessRatio springPowerValue adhesionPowerValue
  • Contact Models: tangential no_history tangential history rolling_friction epsd2 cohesion adaptive cohesion sjkr/powder normal adhesive_elasto_plastic tangential adhesive_elasto_plastic
  • Particle Shapes: sphere

The uniaxial compression case simulates a confined/unconfined uniaxial compression of a powder, followed by unloading and yield test. This template can be used to calibrate either the powder compaction model with a cohesion model between the cohesion model adaptive and the cohesion model sjkr/powder, or the normal and tangential Edinburgh model.

The initial setup consists of a cylindrical container, when a confined system is selected, or a square box with periodic boundary conditions at the sides, when the unconfined system is selected; see sketch in the figure below. The container is filled with a certain mass of particles and a top lid compresses the system with a prescribed pressure. After the compression, the top lid is lifted and, in case of confined setup, the cylindrical walls are expanded.

In case of confined setup, the yield test consists of an additional compression of the powder sample without the surrounding cylinder. The yield test automatically stops when material failure is reached. In case of unconfined setup, the powder is compressed and sheared multiple times to obtained the yield locus. The yield pressure is than calculated based on the yield locus.

The load balancing is disabled by default due to the non-deterministic nature of the algorithm which can effect the results of calibration. If the number of particles is sufficiently high (10^5 and above), the non-deterministic effect induced by the load balancing algorithm is negligible and load balancing should be enabled by setting the parameter useLoadBalancing to 1.

_images/uniaxial_compression_sketch.png

Simulation phases

Insertion

In this phase, the container is filled with spherical particles. The amount of particles to be inserted (specified in the input script via the mass keyword) is bounded by the heigth of the particle column (specified in the input script via the keyword zmax) and the density of the material (i.e., the density of the particles specified in the particle distribution). If the following relation is not fullfilled,

1.1 z_{max} < \frac{m}{0.6 \rho V} < 0.9 z_{max},

where the 0.6 coefficient is an estimation of the packing density, m, \rho and V are respectively the mass of inserted particles, the particle density and the volume of the insertion region, then the combination of input is not consistent and the calibration terminates with the following error:

ERROR   : calibration case case_name returned with exit status -3

where case_name is the generic user-assigned name for the calibration_case command call. By inspecting the logfile calibration/simulations/Aspherix/case_name/logInit.txt, the user can get more information about the initialization’s fail, including a suggestion of the particle’s density \rho that would lead to the fulfillement of the relation above.

The periodic setup can be selected via the use_periodic_domain keyword in the input script. By default, use_periodic_domain no, which corresponds to the wall-confined setup. Regarding the dimensions of the container, the diameter of the cylinder can be specified in the input script via the keyword columnDiameter, while the lateral sizes of the square box are automatically set equal to 30 times the particle diameter. This is done to ensure a sufficient number of particles in the periodic directions. The periodic case should be chosen for cases where the ratio of column diameter to column height is large as we need to have sufficient particles in all directions to resolve the physics and large aspect ratios can cause excessive numbers of particles.

The simulation automatically stops when the particles have settled. This is achieved by monitoring their kinetic energy. The finished packing is then written to a restart file.

The insertion is performed only once before the calibration procedure.

Pre-consolidation

In this phase, the particle-filled container is loaded from the restart file and both the cohesion and compression powder models are enabled. The new dynamics perturbates the system and the simulation automatically stops when the particles have settled. This is achieved by monitoring their kinetic energy. The finished packing is then written to a restart file.

The cohesion models that can be choosen are two, namely the cohesion model adaptive and the cohesion model sjkr/powder; the cohesion model can be specified via the pairCohesion keyword. By setting pairCohesion to off, no cohesion model is selected.

Depending on the cohesion model, different material parameters need to be specified in the input script. Please, refer to the material parameters for more information about the required material parameters for the adaptive and the sjkr/powder cohesion models. The parameter of the fix powder/update command that should be used as target parameters in the calibration procedure are: compressibility, dilatability, hardening (if use_hardening base or use_hardening exponent) and compression_exponent (if use_hardening base or use_hardening exponent and non_linear yes). The parameter alpha_min should set as a fixed parameter for each setup separately using the following value:

\alpha_{min} = 0.9\frac{h_{compressed}}{h_{init}}

where h_{init} and h_{compressed} are the initial (uncompressed) and minimum (fully compressed) height of column in the experiment.

Additional fixed parameters of the fix powder/update command are: alphaRelaxTime, pAvgTime, non_linear, use_hardening and elastic_dilation. These have already assigned some default values; see calibration input table at the end of the document. For detailed information on their role in the compression powder model, please refer to the Aspherix documentation.

The pre-consolidation is performed multiple times in the calibration procedure, as the model parameters might be also target parameters.

Consolidation

In this phase, the particles are compressed by a top lid until the pressure specified in the input script by the max_pressure keyword is reached. The lid can either move at constant velocity (this is the default setting, i.e., piston_const_vel yes) or not (for piston_const_vel no). In this second case, the lid behaves as a servo wall pushing downwards with the target pressure. As a consequence, the lid will initially accelerate and then gradually decelerate as the particle compression proceeds. At the equilibrium, the particles will exert the same target pressure on the lid. This method prevents pressure overshootings that might arise in case of a compression at constant velocity. Please, be aware that piston_const_vel no might sensibly increase the calibration duration and that the consolidation stage might stall when very low values of max_pressure are used.

The simulation automatically stops when the average pressure of the particles on the lid corresponds to the target one and, in case of non-constant velocity, the lid does not move anymore. The resulting system is written to a restart file.

The consolidation is performed multiple times in the calibration procedure.

Unload

In this phase, the top lid and, in case of confined setup, the cylinder walls move away from the particles. The cylinder walls can move after or at the same time of the top lid. These behavious can be triggered by the moveCylAfterTop keyword in the input script. If moveCylAfterTop 0, the cylinder is expanded when the top plate moves up, while if moveCylAfterTop 1 (default value) the cylinder walls move away only when a zero pressure is exerted on the top lid.

The size increase of the confining cylinder walls during the unloading is expressed in terms of percentage of the original dimension via the cylinderExpansionPercentage keyword. The time between two successive expansion in expressed in terms of number of time steps via the unloadRelaxSteps keyword.

The unload is performed multiple times in the calibration procedure and the resuting data is written to a restart file.

Yield test

The yield test is different in case of non-periodic and periodic setup. If the yield pressure is less than zero, than the yield test does not take place (by default, yield_pressure -1). If yield_pressure >= 0, the yield test is simulated and the value yield_pressure becomes the reference yield pressure with which the numerical result is compared.

In the non-periodic setup, the top lid compresses the particle sample at the constant velocity specified by piston_vel until failure is reached. The yield stess is then compared to the reference value yield_pressure. The particles close to the top lid can be free to move or bounded to move only in the vertical direction. The different behaviours can be triggered by the freeze_tangential keyword, which by default is set to yes.

In the periodic setup, the top lid compresses the particle bed with the normal stress defined by max_pressure (which is referred to as \sigma_{0}). After that, the layer is sheared with a constant velocity of 0.1 m/s until a critically consolidated state is achieved. The average tangential stress \tau_{0} at steady-state is measured. The first shearing is followed by another compression stage, this time with normal stress equal to max_pressure/2 (which is referred to as \sigma_{1}), and then by a shearing until failure, which returns the tangential stress \tau_{1}. The two-points yield locus is save to file and used to obtain the yield pressure following the formula:

p_{yield} = 2(k+\sqrt{k^2+1})(\tau_{0}-k \sigma_{0})

where k = (\sigma_{0}-\sigma_{1})/(\tau_{0}-\tau_{1}) is the slope of the yield locus.

Quality function

The quality functions for the consolidation and unloading phases are normally calculated by comparing the experimental and simulated force-displacement curves as they are (qf_data_matching 0). Another possibility is to calculate the quality functions after the peaks of both experimental and simulated force-displacement curves are matched (qf_data_matching 1). The second option is useful when the calibration of the powder compaction model is reached iteratively through a series of stages. As an example, the first calibration stage could aim at calibrating the compressibility alone, while the hardening is fixed. In this case, it is suggested to set qf_data_matching 1. During the second stage, as the hardening is calibrated and the calibrated compressibility is fixed, qf_data_matching can be set equal to 0.

Furthermore, the comparison can be limited to some stages to the calibration procedure via the qf_restriction keyword (by defauls, qf_parts none, other possibilities include qf_parts consolidate, qf_parts unload and qf_parts yield to limit the quality function calculation only to the consolidate, unload and yield stages, respectively).

The quality functions for the consolidate and unloading stages are calculated as the mean-square deviation between the experimental and the simulatated displacement-force curves,

f_q = \frac{\sum_{i=1}^P \left ( F_{sim}(z_i) - F_{exp}(z_i) \right)^2}{P}

where P is the number of measured values (or time samples), F_{exp} and F_{sim} are the measured and simulated resultante force of the particles on the top lid for different vertical displacements of the lid z_i. The simulated consolidation-unloading curve can be found in the consolidation.csv file in your respective workDir subdirectory.

The quality function for the yielding stage is calculated as the difference between the simulated yield pressure and the reference value yield_pressure.

Measurement file

The text file containing the experimental consolidation-unloading curve must have two columns: one for the vertical displacement of the top lid (expressed in meters) and the other for the resultant force exerted from the particle on the lid (expressed in Newton). The data in each row should be either space-, tab- or comma-separated. An example of measurment file is given below.

#z[m]    F[N]
 5.99    0
 5.98    3.5
 ...     ...
 2.07    0

Template parameters

General settings

Parameter

Default

scaleweight

1

pairGranModel

hertz

pairTangential

history

pairCohesion

sjkr/powder

pairRollingFriction

epsd2

torsionTorque

on

pairSurface

default

useLoadBalancing

0

Specific settings

Variable

Default

Meaning [units]

use_periodic_domain

no

no = confined setup (cylinder), yes = unconfined setup (square box with periodic boundaries at the sides)

mass

undefined

Particle’s mass inside the confined setup [kg]

zmax

undefined

Fill height of the material before compaction in both confined and unconfined setups [m]

columnDiameter

10e-3

Diameter of the cylindrical container [m]

max_pressure

undefined

Maximum pressure (in reference experiment) of the lid on the particles during consolidation [Pa]

scaling_factor

1e-2

Scaling factor of the maximum pressure in simulation (to reduce the time step) must be <= 1 [-]

use_hardening

no

Determines the hardening model of the powder model. It allows base, exponent or no.

non_linear

no

Whether or not the hardening model is used in the non-linear regime (only effective if use_hardening != no)

elastic_dilation

yes

Whether or not the powder model allows elastic dilation

pAvgTime

1e-3

Pressure average time of the powder model [s]

alphaRelaxTime

1e-3

alpha relaxation time of the powder model [s]

unloadRelaxSteps

100

How many time-steps between each successive column enlargement during unloading (valid only for confined setup) [-]

piston_vel

0.1

Velocity of piston [m/s]

piston_const_vel

yes

yes = piston moves with constant velocity, no = piston moves at most with piston_vel but tries to exactly reach the max_pressure (slower)

yield_pressure

-1

Reference yield stress. If negative no yield testing is performed. [Pa]

freeze_tangential

yes

Determines whether or not particles close to the top are allowed to move in tangential direction during yield testing

moveCylAfterTop

1

no = cylinder expands during unloading, yes = cylinder expands after piston has zero force

cylinderExpansionPercentage

10

Expansion of the cylinder during unloading [%] (effective only for non-periodic boundary conditions)

dumpT

0.1

Time interval at which DEM fields are written to file [s]

binning_type

monodisperse_binning

Binning type in neighborlist algorithm

max_neighbors

2000

Correspond to the keyword “one” of the neigh_modify command

max_page

100000

Correspond to the keyword “page” of the neigh_modify command

qf_data_matching

0

Determines whether or not the pressure-displacement curve from the simulation is peak matched to the experimental data

qf_restriction

none

Options: ‘consolidate’, ‘unload’, ‘yield’ or ‘none’; determines which part of the simulation curve is used for the quality function calculation

Note

In case of highly polydisperse system, it is necessary to set binning_type to polydisperse_binning (see documentation). The “max_neighbors” and “max_page” options affect how memory is allocated for the neighbor lists. They correspond to the keywords “one” and “page” of the neigh_modify command command.