Rockable - Format of configuration files
The "conf-files" are the files that hold the whole configuration at a given time. They are used (1) for defining the initial configuration and parameters of a simulation, (2) for runing some preprocessing commands, or (3) for saving the history of a simulation. The keywords are defined in the following.
Header
A conf-file always starts with the header: Rockable
dd-mm-yyyy
(e.g., Rockable 20-02-2017
).
Each time a noticeable change is made in the format, the date of this change is also changed in the header of the file. It has to be understood as the version of the format.
Timing
t
(double)value
Current timetmax
(double)value
Maximum time (at the end of a simulation)dt
(double)value
Time step increments
Neighbor list (NL)
interVerlet
(double)value
Elapsed time between each update of the neighbor listDVerlet
(double)value
Distance to define if two sphero-polyhedra are neighborsdVerlet
(double)value
Distance to define if two sub-elements (sphere for vertices, tubes for edges, or thick 3D polygons for faces), between two sphero-polyhedra, are neighborsdynamicUpdateNL
0/1
If the dynamic update of the neighbor list is activated (set to 1), then an update will be made if the maximum distance of a body, since the last update, becomes larger thandispUpdateNL
. An update will also be made when the maximum rotation becomes larger thanangleUpdateNL
Notice that, when the dynamic Update is enabled, the periodic updates are also still enabled (it can actually not be disabled)
dispUpdateNL
(double)distance
The maximum distance that any body is allowed to move without updating the NLangleUpdateNL
(double)angleDegree
The maximum angle that any body is allowed to rotate without updating the NL
Configuration backups
interConf
(double)value
Elapsed time between each backup of the configurationiconf
(double)value
Number of the current configuration
Options
AddOrRemoveInteractions
(string)Option
where Option can bebruteForce
orOBBtree
UpdateNLStrategy
(string)Option
where Option can bebruteForce
orlinkCells
Library of particle shapes
- shapeFile (string)path
Paths of the file that defines the shapes used. The format to define a shape is explained here
Particles
density
(int)groupNumber (double)density Set the density of all particles belonging to the group groupNumberParticles
(int)numberOfParticles
REPEAT FOR EACH PARTICLE [
(string)shapeName (int)group (int)cluster (double)homothety (vec3r)position (vec3r)velocity (vec3r)acceleration (quat)angularPosition (vec3r)angularVelocity (vec3r)angularAcceleration
]
Note that different numbers are associated with a given body:
- the body number, which is its position in the con-file (first is 0)
- the group-number, used to set interaction parameters (try to set smallest possible values because a table group-number group-number is allocated)
- the cluster-number, used to state whether a glued interface is "inner" (i.e., between bodies belonging to the same cluster) or "outer" (in-between the clusters)
Interactions
Interactions
(int)numberOfInteractions- REPEAT FOR EACH INTERACTION [ (int)i (int)j (int)type (int)isub (int)jsub (vec3r)n (double)dn (vec3r)position (vec3r)relativeVelocity (double)fn (vec3r)ft (vec3r)mom (double)viscousDampingValue
- ]
- type is either
0
for vertex-vertex,1
for vertex-edge,2
for vertex-face, or3
for edge-edge- relativeVelocity is the velocity of body j relative to body i at the contact point
- n is oriented from j to i
Interfaces
Interfaces
(int)numberOfInterfaces- REPEAT FOR EACH INTERFACE [ (int)i (int)j (int)nbBonds
- IF (ParamsInInterfaces is not 0) [ (double)kn (double)kt (double)kr (double)fn0 (double)ft0 (double)mom0 (double)power ]
- REPEAT FOR EACH BOND [ (int)type (int)isub (int)jsub ]
- ]
- REPEAT FOR EACH INTERFACE [ (int)i (int)j (int)nbBonds
Force laws
forceLaw
(string)Name
Select a model for the computation of forces. The detailed description of the available laws is here.
Quick overview for possible Name:Avalanches
:- Normal force: for loading (compression), and for unloading;
- Coulomb friction force: is an elastic force increment with intensity of limited at ;
- Moment resistance: is an elastic moment increment with intensity of limited at ; is the minimum distance between the contact point and the current rotation axis passing by the mass centre of the moving particle
StickedLinks
:- Contacts:
- Normal force:
with (the input parameter is ); - Coulomb friction force: is an elastic force increment with intensity of limited at ;
- Moment resistance: is an elastic moment increment with intensity of limited at (be careful, the unit of is a length);
- Normal force:
- Glued-bonds:
- Normal force:
like in the case of contact - Tangential (incremental) force:
- Yield-surface: rupture if . The interaction switch then irreversibly to a contact.
- Normal force:
- Contacts:
By default (if not specified), the model used is
Avalanches
.
Parameters of force laws
<PARAMETER_NAME>
(int)group1 (int)group2 (double)value
where<PARAMETER_NAME>
is the parameter to be set (see below)- For contacts with friction, we can use
knContact
,en2Contact
,ktContact
,muContact
,krContact
andmurContact
. - For bonds inside the same cluster, we can use
knInnerBond
,ktInnerBond
,fn0InnerBond
,ft0InnerBond
anden2InnerBond
. - For bonds between the clusters, we can use
knOuterBond
, ,ktOuterBond
,krOuterBond
,fn0OuterBond
,ft0OuterBond
,mom0OuterBond
anden2OuterBond
.
- For contacts with friction, we can use
ParamsInInterfaces
0/1
it says whether the parameters are embedded in the interfaces or not.
Loading
nDriven
(int)value
The value is the number of bodies, at the beginning of the list, that nDriven first bodies are fixed (all velocities imposed to zero), but if we want to set a velocity or a force/moment, some commands have to be added in a file named drivingSystem.txt
.
File drivingSystem.txt
Control
(string)mode (int)bodyNumber (double)value
where mode is either_x_Vel_
,_y_Vel_
,_z_Vel_
,_xrot_Vel_
,_yrot_Vel_
,_zrot_Vel_
,_x_For_
,_y_For_
,_z_For_
,_xrot_Mom_
,_yrot_Mom_
, or_zrot_Mom_
This is a simple solution to impose a constant velocity or force/moment to a body. Notice that bodyNumber needs to be lower than nDriven
. Also, there can be only one Servo
that will act on the degrees of freedom of the driven particles.
Servo
(string)NamePARAMETERS...
Name (with the corresponding PARAMETERS...
) can be:
ramp
(string)mode (int)bodyNumber (double)valueIni (double)valueEnd (double)TimeIni (double)TimeEnd
It makes it possible to impose a time-controlled ramp of velocity or force (depending on mode) to the body number bodyNumber. Before TimeIni, the value is valueIni and after TimeEnd the value is maintained at valueEnd. In-between these two times, the ramp is linear.shaker
(int)bodyNumber (vec3r)direction (double)Amplitude (double)Frequency
It will impose sinusoidal oscillations of the body bodyNumber, in a given direction, Amplitude (half the total displacement), and Frequency (cycles/second or Hertz).tritriIsostaticCompression
(int)idXmin (int)idXmax (int)idYmin (int)idYmax (int)idZmin (int)idZmax (double)pressure 6 plans need to be set as driven particles, and their numbers are set with the idSomething parameters. The parameter pressure is positive for a compression.tritriBiaxialCompression
(int)idXmin (int)idXmax (int)idYmin (int)idYmax (int)idZmin (int)idZmax (double)pressure (double)velocity 6 plans need to be set as driven particles, and their numbers are set with the idSomething parameters. The parameters pressure and velocity are positive for a compression.
Processing commands
These commands can be used at the end of an input conf-file. They will not be saved in the conf-files generated during a computation.
stickVerticesInClusters
(double)Epsilon
This command will add glued interfaces between bodies having the same cluster identifier. Only bonds between vertices (spheres) are added when the distance is less than Epsilon.stickClusters
(double)Epsilon
This command will add glued interfaces between bodies having different cluster identifiers. Bonds are added when the distance is less than Epsilon.randomlyOrientedVelocities
(double)velocityrandomlyOrientedVelocitiesClusters
(double)velocity (int)optioncopyParamsToInterfaces
(string)isInnerStrsetVariableStickParams
(string)paramName (string)isInnerStr (double)lambda (double)m (int)timeSeeded
Data Extractors
DataExtractor
(string)ExtractorNamePARAMETERS...
The list ofPARAMETERS...
depends on the ExtractorName. They are listed below.
Actually, it is advised to rather set the DataExtractors in a separated file named
dataExtractors.txt
.
In this case, the syntax is similar but without the keywordDataExtractor
before each extractor.
ExtractorName (with the corresponding PARAMETERS...
) can be:
TrackBody
(int)bodyNumber (string)filename (int)stepPeriodRecord
This data-extractor will create a file named filename holding the data (kinetics and force/moment) of the body bodyNumber. It is organized that way:
1 | 2, 3, 4 | 5, 6, 7 | 8, 9, 10, 11 | 12, 13, 14, | 15, 16, 17 | 18, 19, 20 |
---|---|---|---|---|---|---|
Time | Position | Velocity | Orientation (quat.) | Angular velocity | Force | Moment |
Notice that, when a force is imposed on a body, this force is subtracted.
ClusterAABB
(int)clusterID (string)filename (int)stepPeriodRecord
It will create a file named filename holding the the Axis Aligned Bounding Box (AABB) of the bodies having with cluster = clusterID. It is organized that way:
1 | 2, 3, 4 | 5, 6, 7 |
---|---|---|
Time | Min | Max |