Meso scale simulation of particle bed compaction - isale-code/isale-wiki GitHub Wiki
This simulation demonstrates how to set up iSALE to model simple planar impact experiments involving granular materials, where the individual particles are explicitly resolved. This is known as a meso-scale model. In this example, a plate impactor strikes a particle bed at 500 m/s, with a buffer plate behind the particles. The particle bed is comprised of a randomly arranged number of particles of different sizes. The impactor, buffer plate and particles all use the same material model, but of the three materials that iSALE can track, one is used to represent the impactor and buffer, and two are used to represent particles. Hence, the particle bed is actually comprised of two (identical) particle classes. The simulation runs for 2.5 us, the time it takes the bed to be compacted.
Go to the relevant example directory
cd /share/examples/MesoParticles2D
Run iSALE2D. The simulation will take several minutes, so this should be run in the background.
./iSALE2D -a additional.inp &
Note that the flag -a
tells iSALE to read in an additional input file, which contains parameters specific to the meso-scale particle set up. This file is necessary to run the simulation.
From this directory you can produce images of the simulation to visualise the material movement, pressure wave and temperature using pySALEPlot:
python Plotting/MatPreTmp.py
The images, which should be identical to those shown below, will be output to the directory MatPreTmp/. The pySALEPlot plotting scripts can easily be modified to generate additional images and analysis.
The mesh is constructed using planar geometry; no extension zones are used. The grid spacing is 10 microns.
The set-up type is MESO_PART
.
The geometry of the impactor, particle bed and buffer plate are set by:
COL_SITE Collision j-location : 291 ------------------- Projectile ("Object") Parameters -------------------- OBJNUM number of objects : 3 OBJRESH CPPR horizontal : 100 : 100 : 40 ! Note these define the half-height of the plate; the thickness of the plate is twice this OBJVEL object velocity : -5.0D2 : 0.D0 : 0.D0 OBJMAT object material : matter1 : VOID___ : matter1 OBJTYPE object type : PLATE : PLATE : PLATE OBJTPROF object temp prof : CONST : CONST : CONST OBJOFF_V object vertical offset : 0 : -200 : -280 ! This specifies the offset in number of cells from COL_SITE to the base of the object
COL_SITE
is required to locate the point (j-index of vertex) of collision in the mesh.
Three PLATE
objects are required to define the impactor, particle bed and buffer plate, respectively. The first is the impactor, which has a velocity of 0.5 km/s vertically down. The second object defines the space where the particle bed will be. Note that the material for this object is defined as VOID___
, because the particles have nothing between them; if an actual material name was specified here, the particles would be embedded in that material. The third object defines the buffer plate. It is the same material as the impactor (matter1). All the objects have the same constant temperature (300 K). The second two objects require a vertical offset to be specified, to ensure that they are positioned correctly, relative to COL_SITE
.
The left and right boundaries are freeslip; the top and bottom are outflow boundaries, although no material passes through either boundary during the simulation.
------------------- Boundary Condition Parameters ---------------------- BND_L left : FREESLIP BND_R right : FREESLIP BND_B bottom : OUTFLOW BND_T top : OUTFLOW
The contents of the additional input file are important for this problem:
#ISADD --------------------------------------------------------------------------------------------------------------------------------------- ---this is an additional input file used to specify particle classes --------------------------------------------------------------------------------------------------------------------------------------- PARNUM Number of particle classes : 8 PARMAT Material for particle class : matter2 : matter3 : matter4 : matter5 : matter6 : matter7 : matter8 : matter9 PARRESH Resolution of each particle : 5 : 5 : 5 : 5 : 5 : 5 : 5 : 5 PARTYPE Type of particle : SPHEROID : SPHEROID : SPHEROID : SPHEROID : SPHEROID : SPHEROID : SPHEROID : SPHEROID PARFRAC Fractional area of particles : 0.05 : 0.05 : 0.05 : 0.05 : 0.05 : 0.05 : 0.05 : 0.05 PARHOBJ Host object for particles : 2 : 2 : 2 : 2 : 2 : 2 : 2 : 2 PARDIST Regular/random distribution : RANDOM : RANDOM : RANDOM : RANDOM : RANDOM : RANDOM : RANDOM : RANDOM PARRANGE Size range of particles : 0.1 : 0.1 : 0.1 : 0.1 : 0.1 : 0.1 : 0.1 : 0.1 --------------------------------------------------------------------------------------------------------------------------------------- <
-
PARNUM
specifies how many particle classes should be considered. A particle class is basically a collection of particles that have a common material, host object (see below), shape, size/size-distribution, etc. In this problem we choose to have eight particle classes as a demonstration. -
PARMAT
specifies the material name for each particle class -
PARHOBJ
specifies which of the objects, defined in asteroid.inp, should act as host for the particles. In this case, all particle classes share the same host object (2), which was the one containing @VOID___@ in asteroid.inp. This implies that all particle classes will be distributed within the portion of the mesh defined by object 2. -
PARRESH
specifies the number of cells across the diameter of the median size particle in each class. @PARRESV@ can be used to specify a different height and width for the particles. -
PARTYPE
specifies whether the particles are SPHEROIDs or CUBOIDs. -
PARFRAC
specifies the fractional area of the host object that should be filled with each particle class. Here we have eight particle classes, each with a PARFRAC of 0.05, that share the same host object. Hence, 40% of the mesh area defined by the host object will be filled with particles; each particle class will have an equal area of particles. -
PARDIST
specifies whether the spatial distribution of the particles should be @REGULAR@ or @RANDOM@. -
PARRANGE
specifies whether the particles should have a size range. If this value is zero, or not defined, all particles in the class are the same size. Non-zero values are used to specify the range in particle size, relative to the size of the median particle. Hence a value of 0.5 implies that the smallest particle is 0.5 times @PARRESH@ and the largest particle will be 1.5 times @PARRESH@. In this example, we have a @PARRANGE@ of 0.1, meaning the particles will have sizes in the range 0.9 to 1.1 times the median particle.
All other model options are standard.
The material parameters are not of special importance to this demonstration. Approximate parameters for quartz are used for all three materials, but these values should not be considered accurate.