Autogenerated the Thu Jul 12 13:51:45 CEST 2018

Plugin documentation

Please find below documentation of plugins. Note that this page was autogenerated with the granoo -d command

Table of content


[BroadPhase] : Between2SetOf

  • id : Between2SetOf
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ContactDetection/Between2SetOf.cpp

The Between2SetOf broadphase uses raw method to detect method between two SetOf of DEM::DiscreteElement. Note that this algo is optimized for DEM::DiscreteElement, you don't need a NarrowPhase approach.

Info

  • Process on : DEM::DiscreteElement
  • Multithreaded : No (TODO)
  • Recommended section: Processing
  • Perf Critical : YES

Required param

Set1 (string)
The ID of the first SetOf DEM::DiscreteElement
Set2 (string)
The ID of the second SetOf DEM::DiscreteElement

Example

<...  BroadPhase="Between2SetOf" Set1="Xmin" Set2="Boundary" .../>

[BroadPhase] : Hash

  • id : Hash
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/BroadPhase/Hash.cpp

The Hash broadphase method implements the "Nearest Neighbor Search" Hashing method 1. This method must be validated and optimized, use it with attention. This algo use space partitioning method and is quite similar to the Lcm method.

To work with all kind of shape, the bounding sphere of each shape are considered instead of their real shapes.

Because of this approximation, you need a NarrowPhase approach in addition of this method.

Info

  • Process on : Physic::Body andPhysic::Particle`
  • Multithreaded : No (TODO)
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

K (float, default=1.004)
The K factor is the expansion factor used to compute the cell lengths. The default value (1.004) is optimized for monodisperse granular domain.
UpdateDomainDimensionEachIteration (int, default=1)
This process is time consuming and you can choose if you want to trigger it not at each time step.
Set (string, default:"Global")
The SetOf to perform the contact detection.

Example

<...  BroadPhase="Hash" .../>

1 Indyk, P., & Motwani, R. (1998, May). Approximate nearest neighbors: towards removing the curse of dimensionality. In Proceedings of the thirtieth annual ACM symposium on Theory of computing (pp. 604-613). ACM.


[BroadPhase] : LCM

  • id : LCM
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ContactDetection/LCM.cpp

The Lcm broadphase method uses the Linked Cell algorithm 1 to search contacts in the whole domain.

Note that this LCM version is optimized for DEM::DiscreteElement, so you do not need a NarrowPhase approach in addition of this method.

Info

  • Process on : DEM::DiscreteElement
  • Multithreaded : No (TODO)
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

K (float, default=1.004)
The K factor is the expansion factor used to compute the cell lengths. The default value (1.004) is optimized for monodisperse granular domain.
UpdateDomainDimensionEachIteration (int, default=1)
This process is time consuming and you can choose if you want to trigger it not at each time step.
Set (string, default:"Global")
The SetOf to perform the contact detection.

Example

<...  BroadPhase="LCM" .../>

1 Welling, U., & Germano, G. (2011). Efficiency of linked cell algorithms. Computer Physics Communications, 182(3), 611-615.


[BroadPhase] : Raw

  • id : Raw
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ContactDetection/Raw.cpp

The Raw broadphase method uses a really stupid and non-optimized method to search contacts in the whole domain.

Note that this LCM version is designed for DEM::DiscreteElement, so you do not need a NarrowPhase approach in addition of this method

Info

  • Process on : DEM::DiscreteElement
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

Set (string, default:"Global")
If you use this option, the raw method is used in "mono-set" mode. It means that contacts are searched inside this set.

Example

<...  BroadPhase="Raw" Set="Boundary" .../>

[BroadPhase] : SupportShape

  • id : SupportShape
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ContactDetection/SupportShape.cpp

The SupportShape broadphase method allows to detect contact between a DEM::SupportShape and DEM::DiscreteElement.

Note that this version is optimized for DEM::DiscreteElement, so you do not need a NarrowPhase approach in addition of this method.

Info

  • Process on : DEM::DiscreteElement / DEM::SupportShape
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : Middle

Required param

SupportShapeID (string)
Gives the support shape ID here for collision detection

Optional param

Mode (string, default="INSIDE")
Choose here if the discrete element are INSIDE or OUTSIDE the support shape. Allowed values are "INSIDE" and "OUTSIDE"
Set (string, default:"Global")
The DEM::DiscreteElement SetOf to perform the contact detection.

Example

<... BroadPhase="SupportShape" SupportShapeID="Box" Mode="INSIDE" .../>


[BroadPhase] : Tool

  • id : Tool
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ContactDetection/Tool.cpp

The Tool broadphase method allows to detect contact between a DEM::Tool and DEM::DiscreteElement.

Note that this version is optimized for DEM::DiscreteElement, so you do not need a NarrowPhase approach in addition of this method.

Info

  • Process on : DEM::DiscreteElement / DEM::Tool
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : Middle

Required param

ToolID (string)
Gives the support shape ID here for collision detection

Optional param

Set (string, default:"Global")
The DEM::DiscreteElement SetOf to perform the contact detection.

Example

<....  BroadPhase="Tool" ToolID="Box"  .../>

[BroadPhase] : AABBTree

  • id : AABBTree
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/BroadPhase/AABBTree.cpp

The AABBTree broadphase method takes advantage of an Axis Aligned Bounding Boxes Tree to speed-up the search of contacts in the whole domain or in a set of Physic::Body.

The AABB tree is built at the first run of this broad phase. It consists in the insertion of all bodies stored inside the defined by Set. Once the tree is built, the update operations consist in the update of the position of the AABBs that hold each body.

The contact search consists in searching each pair of AABBs that overlap themselves, which means potential contact between the bodies they hold. Once the pairs of potentially colliding bodies are found, the actual contact detection is performed by the selected NarrowPhase method.

Note that tree updates in terms of add or removal of bodies are triggered by the set from which the AABB Tree was built, and only works with non-global sets. Thus, if the set on which the tree is built is intended to be modified, you need to create a custom set.

Info

  • Process on : Physic::Body
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

Set (string, default:"Global")
If you use this option, the AABB tree is built from all body-like objects in the domain.
AABBsFatness (float, default:0.1)
This parameter is the expansion factor applied to the AABBs. The AABB containing a Body is larger than a perfect fitting AABB (its size is 2x0.1xlength in each dimension), which allows to reduce the number of deletion/insertion in the tree when the bodies move. The draw back with fat AABBs is an increased number of potential contacting bodies, and thus more NarrowPhase operations.

Example

<....  BroadPhase="AABBTree" Set="myCustomSet" AABBsFatness="0.05" />

[BroadPhase] : Hash

  • id : Hash
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/BroadPhase/Hash.cpp

The Hash broadphase method implements the "Nearest Neighbor Search" Hashing method 1. This method must be validated and optimized, use it with attention. This algo use space partitioning method and is quite similar to the Lcm method.

To work with all kind of shape, the bounding sphere of each shape are considered instead of their real shapes.

Because of this approximation, you need a NarrowPhase approach in addition of this method.

Info

  • Process on : Physic::Body andPhysic::Particle`
  • Multithreaded : No (TODO)
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

K (float, default=1.004)
The K factor is the expansion factor used to compute the cell lengths. The default value (1.004) is optimized for monodisperse granular domain.
UpdateDomainDimensionEachIteration (int, default=1)
This process is time consuming and you can choose if you want to trigger it not at each time step.
Set (string, default:"Global")
The SetOf to perform the contact detection.

Example

<...  BroadPhase="Hash" .../>

1 Indyk, P., & Motwani, R. (1998, May). Approximate nearest neighbors: towards removing the curse of dimensionality. In Proceedings of the thirtieth annual ACM symposium on Theory of computing (pp. 604-613). ACM.


[BroadPhase] : Lcm

  • id : Lcm
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/BroadPhase/Lcm.cpp

The Lcm broadphase method uses the Linked Cell algorithm 1 to search contacts in the whole domain.

To work with all kind of shape, the bounding sphere of each shape are considered instead of their real shapes.

Because of this approximation, you need a NarrowPhase approach in addition of this method.

Info

  • Process on : Physic::Body, SPH::Particle
  • Multithreaded : No (TODO)
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

K (float, default=1.004)
The K factor is the expansion factor used to compute the cell lengths. The default value (1.004) is optimized for monodisperse granular domain.
UpdateDomainDimensionEachIteration (int, default=1)
This process is time consuming and you can choose if you want to trigger it not at each time step.
Set (string, default:"Global")
The SetOf to perform the contact detection.

Example

<...  BroadPhase="Lcm" .../>

1 Welling, U., & Germano, G. (2011). Efficiency of linked cell algorithms. Computer Physics Communications, 182(3), 611-615.


[BroadPhase] : Raw

  • id : Raw
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/BroadPhase/Raw.cpp

The Raw broadphase method uses a really stupid and non-optimized method to search contacts in the whole domain.

Note that you can use this method in "bi-Set" mode. In this case the method is less stupid and go fastest because the contacts are only searched between two independent SetOf. Tu use it in "bi-set" mode you must specify the Set1 and Set2 attributes

Info

  • Process on : Physic::Body, SPH::Particle
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

Set (string, default:"Global")
If you use this option, the raw method is used in "mono-set" mode. It means that contacts are searched inside this set.
Set1 (string, default:"")
Specify the first set to use the method in "bi-set" mode.
Set2 (string, default:"")
Specify the second set to use the method in "bi-set" mode.

Note that : - The Set1 required the Set2 param. - You can not use the Set param with Set1 or Set2

Example

<....  BroadPhase="Raw" Set1="Wall" Set2="Xmin"/>
<....  BroadPhase="Raw" Set="Boundary" />

[BroadPhase] : Raw

  • id : Raw
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/BroadPhase/Raw.cpp

The Raw broadphase method uses a really stupid and non-optimized method to search contacts in the whole domain.

Note that you can use this method in "bi-Set" mode. In this case the method is less stupid and go fastest because the contacts are only searched between two independent SetOf. Tu use it in "bi-set" mode you must specify the Set1 and Set2 attributes

Info

  • Process on : Physic::Body, SPH::Particle
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

Set (string, default:"Global")
If you use this option, the raw method is used in "mono-set" mode. It means that contacts are searched inside this set.
Set1 (string, default:"")
Specify the first set to use the method in "bi-set" mode.
Set2 (string, default:"")
Specify the second set to use the method in "bi-set" mode.

Note that : - The Set1 required the Set2 param. - You can not use the Set param with Set1 or Set2

Example

<....  BroadPhase="Raw" Set1="Wall" Set2="Xmin"/>
<....  BroadPhase="Raw" Set="Boundary" />

[BroadPhase] : Raw

  • id : Raw
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/BroadPhase/Raw.cpp

The Raw broadphase method uses a really stupid and non-optimized method to search contacts in the whole domain.

Note that you can use this method in "bi-Set" mode. In this case the method is less stupid and go fastest because the contacts are only searched between two independent SetOf. Tu use it in "bi-set" mode you must specify the Set1 and Set2 attributes

Info

  • Process on : Physic::Body, SPH::Particle
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

Set (string, default:"Global")
If you use this option, the raw method is used in "mono-set" mode. It means that contacts are searched inside this set.
Set1 (string, default:"")
Specify the first set to use the method in "bi-set" mode.
Set2 (string, default:"")
Specify the second set to use the method in "bi-set" mode.

Note that : - The Set1 required the Set2 param. - You can not use the Set param with Set1 or Set2

Example

<....  BroadPhase="Raw" Set1="Wall" Set2="Xmin"/>
<....  BroadPhase="Raw" Set="Boundary" />

[BroadPhase] : Lcm

  • id : Lcm
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/BroadPhase/Lcm.cpp

The Lcm broadphase method uses the Linked Cell algorithm 1 to search contacts in the whole domain.

To work with all kind of shape, the bounding sphere of each shape are considered instead of their real shapes.

Because of this approximation, you need a NarrowPhase approach in addition of this method.

Info

  • Process on : Physic::Body, SPH::Particle
  • Multithreaded : No (TODO)
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

K (float, default=1.004)
The K factor is the expansion factor used to compute the cell lengths. The default value (1.004) is optimized for monodisperse granular domain.
UpdateDomainDimensionEachIteration (int, default=1)
This process is time consuming and you can choose if you want to trigger it not at each time step.
Set (string, default:"Global")
The SetOf to perform the contact detection.

Example

<...  BroadPhase="Lcm" .../>

1 Welling, U., & Germano, G. (2011). Efficiency of linked cell algorithms. Computer Physics Communications, 182(3), 611-615.


[CallBack] : Standard

  • id : Standard
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ContactLaw/Standard.cpp

The description is not available


[CallBack] : Standard

  • id : Standard
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ContactLaw/Standard.cpp

The description is not available


[CallBack] : Standard

  • id : Standard
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ContactLaw/Standard.cpp

The description is not available


[CallBack] : Standard

  • id : Standard
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/CallBack/Standard.cpp

The standard Contact CallBack in GranOO. Use it to give physical meaning of the contact and control contact response such as : stiffness, adhesion, etc...

Info

  • Process on : Physic::Body, Physic::Ground, Physic::Particle
  • Multithreaded : No (Not needed)
  • Recommended section: Processing
  • Perf Critical : YES

Required param

Optional param

Stiffness (float)
Stiffness repulsion factor.
NormalForce (string)
Gives a value OR a function regarding the interpenetration noted 'd'. It allows non linear contact law. If a single value is given, it will be understood as a standard stiffness repulsion factor.
RestitutionCoeff (float, default=1)
Gives a value of the restitution coeff in the [0, 1] range. Note that you can't use both RestitutionCoeff and DampingFactor parameters.
DampingFactor (float, default=0)
Gives a value of the damping factor. This parameter is less intuitive than the RestitutionCoeff param. Note that you can't use both RestitutionCoeff and DampingFactor parameters.
ExcludeBondedDiscreteElements (bool, default=False)
if True, test if the two discrete elements are bonded and in that case do nothing. Otherwise, the Standard CallBack is appplied.
StaticDryFrictionCoeff (float, default=0)
The dry friction coefficient in static mode. The static mode means no relative movement between the two item in contact.
DynamicDryFrictionCoeff (float, default=0)
The dynamic friction coefficient in static mode. The dynamic mode means that a relative movement the two item in contact exists.
DryFrictionSlope (float, default=0)
The slope of the regularization of the dry friction coefficient
DryFrictionSlope (float, default=0)
The slope of the regularization of the dry friction coefficient
DryFrictionCoeff (float, default=0)
The dry friction coefficient in whole static and dynamic mode. Note that you can not use this param with StaticDryFrictionCoeff and DynamicDryFrictionCoeff.
RegularizationType (string, default="")
The regularization type. If you use Friction this param is required. The allowed values are "piecewise" or "exponential"
DryFrictionLifeTime (float, default=0)
This parameters is needed when the exponential RegularizationType is used. It corresponds to the inverse of the decay rate for the exponential regularization function.
AdhesionForce (float, default=0)
Set the adhesion force of the contact response.

Examples

<...  CallBack="Standard" Stiffness="1e5" RestitutionCoeff="0.1"
      RegularizationType="piecewise" DryFrictionSlope="1e5" 
      StaticDryFrictionCoeff="0.3" DynamicDryFrictionCoeff="0.2"/>

<...  CallBack="Standard" NormalForce="440*d+598*d^2"/>

[CallBack] : Standard

  • id : Standard
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/CallBack/Standard.cpp

The standard Contact CallBack in GranOO. Use it to give physical meaning of the contact and control contact response such as : stiffness, adhesion, etc...

Info

  • Process on : Physic::Body, Physic::Ground, Physic::Particle
  • Multithreaded : No (Not needed)
  • Recommended section: Processing
  • Perf Critical : YES

Required param

Optional param

Stiffness (float)
Stiffness repulsion factor.
NormalForce (string)
Gives a value OR a function regarding the interpenetration noted 'd'. It allows non linear contact law. If a single value is given, it will be understood as a standard stiffness repulsion factor.
RestitutionCoeff (float, default=1)
Gives a value of the restitution coeff in the [0, 1] range. Note that you can't use both RestitutionCoeff and DampingFactor parameters.
DampingFactor (float, default=0)
Gives a value of the damping factor. This parameter is less intuitive than the RestitutionCoeff param. Note that you can't use both RestitutionCoeff and DampingFactor parameters.
ExcludeBondedDiscreteElements (bool, default=False)
if True, test if the two discrete elements are bonded and in that case do nothing. Otherwise, the Standard CallBack is appplied.
StaticDryFrictionCoeff (float, default=0)
The dry friction coefficient in static mode. The static mode means no relative movement between the two item in contact.
DynamicDryFrictionCoeff (float, default=0)
The dynamic friction coefficient in static mode. The dynamic mode means that a relative movement the two item in contact exists.
DryFrictionSlope (float, default=0)
The slope of the regularization of the dry friction coefficient
DryFrictionSlope (float, default=0)
The slope of the regularization of the dry friction coefficient
DryFrictionCoeff (float, default=0)
The dry friction coefficient in whole static and dynamic mode. Note that you can not use this param with StaticDryFrictionCoeff and DynamicDryFrictionCoeff.
RegularizationType (string, default="")
The regularization type. If you use Friction this param is required. The allowed values are "piecewise" or "exponential"
DryFrictionLifeTime (float, default=0)
This parameters is needed when the exponential RegularizationType is used. It corresponds to the inverse of the decay rate for the exponential regularization function.
AdhesionForce (float, default=0)
Set the adhesion force of the contact response.

Examples

<...  CallBack="Standard" Stiffness="1e5" RestitutionCoeff="0.1"
      RegularizationType="piecewise" DryFrictionSlope="1e5" 
      StaticDryFrictionCoeff="0.3" DynamicDryFrictionCoeff="0.2"/>

<...  CallBack="Standard" NormalForce="440*d+598*d^2"/>

[CallBack] : Standard

  • id : Standard
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/CallBack/Standard.cpp

The standard Contact CallBack in GranOO. Use it to give physical meaning of the contact and control contact response such as : stiffness, adhesion, etc...

Info

  • Process on : Physic::Body, Physic::Ground, Physic::Particle
  • Multithreaded : No (Not needed)
  • Recommended section: Processing
  • Perf Critical : YES

Required param

Optional param

Stiffness (float)
Stiffness repulsion factor.
NormalForce (string)
Gives a value OR a function regarding the interpenetration noted 'd'. It allows non linear contact law. If a single value is given, it will be understood as a standard stiffness repulsion factor.
RestitutionCoeff (float, default=1)
Gives a value of the restitution coeff in the [0, 1] range. Note that you can't use both RestitutionCoeff and DampingFactor parameters.
DampingFactor (float, default=0)
Gives a value of the damping factor. This parameter is less intuitive than the RestitutionCoeff param. Note that you can't use both RestitutionCoeff and DampingFactor parameters.
ExcludeBondedDiscreteElements (bool, default=False)
if True, test if the two discrete elements are bonded and in that case do nothing. Otherwise, the Standard CallBack is appplied.
StaticDryFrictionCoeff (float, default=0)
The dry friction coefficient in static mode. The static mode means no relative movement between the two item in contact.
DynamicDryFrictionCoeff (float, default=0)
The dynamic friction coefficient in static mode. The dynamic mode means that a relative movement the two item in contact exists.
DryFrictionSlope (float, default=0)
The slope of the regularization of the dry friction coefficient
DryFrictionSlope (float, default=0)
The slope of the regularization of the dry friction coefficient
DryFrictionCoeff (float, default=0)
The dry friction coefficient in whole static and dynamic mode. Note that you can not use this param with StaticDryFrictionCoeff and DynamicDryFrictionCoeff.
RegularizationType (string, default="")
The regularization type. If you use Friction this param is required. The allowed values are "piecewise" or "exponential"
DryFrictionLifeTime (float, default=0)
This parameters is needed when the exponential RegularizationType is used. It corresponds to the inverse of the decay rate for the exponential regularization function.
AdhesionForce (float, default=0)
Set the adhesion force of the contact response.

Examples

<...  CallBack="Standard" Stiffness="1e5" RestitutionCoeff="0.1"
      RegularizationType="piecewise" DryFrictionSlope="1e5" 
      StaticDryFrictionCoeff="0.3" DynamicDryFrictionCoeff="0.2"/>

<...  CallBack="Standard" NormalForce="440*d+598*d^2"/>

[DEM::SupportShape] : Box

  • id : Box
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/SupportShapeT.cpp

Use it to build something with a Shape::Box shape

Sketch

     Class Box is a Volume with rectangular sections:
    
                                  ^ Y
                                  |
                                  |
                         ---------|-----------
                        /         |          /|
                  dimZ /          |         / |
                      /           .        /  |
                     /            .       /   |
                    /--------------------/    |
                    |             .      |    |
                    |             .......|...---------> X
                    |            .       |    |
               dimY |           .        |    /
                    |          /         |   /
                    |         /          |  /
                    |        /           | / 
                    |-------/------------|/
                           /   dimX
                          Z
    

Required param

DimX (float)
The length of the box along its local X axis
DimY (float)
The length of the box along its local Y axis
DimZ (float)
The length of the box along its local Z axis

Example

<..something... DimX="1." DimY="1." DimZ="1." />

[DEM::SupportShape] : Cone

  • id : Cone
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/SupportShapeT.cpp

Use it to build something with a Shape::Cone shape.

Sketch

                             ^ Y
                              |
                              |
                  <---------------- Lenth -------------->
                    ------    |       
                 /  ^  \\-----|     
                /   R   \     \------
               /    a    \    .      \-----
              /     d     \   .              \------
              |     i     |   .G                    \-----
              |     u     |   ............................X-----------> X
              |     s     |  .                      /-----
              \     +     / .                /------
               \         / .           /-----
                \       / .   /------
                 \     -----
                  ------/
                       /
                      Z

Note that : - the gravity center 'G' is at 1/4 x length from its base - the symmetry axis is along its local X axis

Required param

Radius (float)
The radius of the cone
Length (float)
The length of the cone along its local X axis

Example

<..something... Radius=".1" Length="1." />

[DEM::SupportShape] : Cylinder

  • id : Cylinder
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/SupportShapeT.cpp

Use it to build something with a Shape::Cylinder shape

Sketch

                                  ^ Y
                                  |
                                  |
                                  |
                                  |
                                Length
               -------------------------------------
              / R \               .               /   \
             /  a  \              -              /     \
             |  d  |              .              |     |
             |  i  |              ..................+--------> X
             |  u  |             .               |     |
             \  s  /            .                \     /
              \   /            .                  \   /
               -------------------------------------
                             /
                            /
                           /
                          Z

Note that the symmetry axis is along its local X axis

Required param

Radius (float)
The radius of the cylinder
Length (float)
The length of the cylinder along its local X axis

Example

<..something... Radius=".1" Length="1." />

[DEM::SupportShape] : Polyhedron

  • id : Polyhedron
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/SupportShapeT.cpp

Use it to build something with a Shape::Polyhedron shape. A polyhedron model any kind of shape

Required param

File (string)
Gives .off file that describes the polyhedron to load

Optional param

OffSetFile (string)
Gives an offset file that describes the boundaries of the off file. It may be useful to mark some surfaces of the polyhedron. You can get an example in the Tool/Script directory.
Scale (float, default=1)
Set a scale factor to enlarge or scale down the polyhedron

Example

<..something...  File="Bunny.off"/>

[DEM::SupportShape] : Sphere

  • id : Sphere
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/SupportShapeT.cpp

Use it to build something with a Shape::Sphere shape.

Sketch

                                  ^ Y
                                  |
                                  |
                                  |
                             -----+-----
                         ---/     .     \---
                       -/         .         \-
                      /           .           \
                     /            -            \
                    /             . R a d i u s \
                    |             . ............|-----> X
                    \            .              /
                     \          .              /
                      \        .              /
                       -\     .             /-
                         ---\.          /---
                            /-----------
                           /
                          Z

Required param

Radius (float)
The radius of the sphere

Example

<..something... Radius=".1" />

[DEM::Tool] : Box

  • id : Box
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ToolT.cpp

Use it to build something with a Shape::Box shape

Sketch

     Class Box is a Volume with rectangular sections:
    
                                  ^ Y
                                  |
                                  |
                         ---------|-----------
                        /         |          /|
                  dimZ /          |         / |
                      /           .        /  |
                     /            .       /   |
                    /--------------------/    |
                    |             .      |    |
                    |             .......|...---------> X
                    |            .       |    |
               dimY |           .        |    /
                    |          /         |   /
                    |         /          |  /
                    |        /           | / 
                    |-------/------------|/
                           /   dimX
                          Z
    

Required param

DimX (float)
The length of the box along its local X axis
DimY (float)
The length of the box along its local Y axis
DimZ (float)
The length of the box along its local Z axis

Example

<..something... DimX="1." DimY="1." DimZ="1." />

[DEM::Tool] : Cone

  • id : Cone
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ToolT.cpp

Use it to build something with a Shape::Cone shape.

Sketch

                             ^ Y
                              |
                              |
                  <---------------- Lenth -------------->
                    ------    |       
                 /  ^  \\-----|     
                /   R   \     \------
               /    a    \    .      \-----
              /     d     \   .              \------
              |     i     |   .G                    \-----
              |     u     |   ............................X-----------> X
              |     s     |  .                      /-----
              \     +     / .                /------
               \         / .           /-----
                \       / .   /------
                 \     -----
                  ------/
                       /
                      Z

Note that : - the gravity center 'G' is at 1/4 x length from its base - the symmetry axis is along its local X axis

Required param

Radius (float)
The radius of the cone
Length (float)
The length of the cone along its local X axis

Example

<..something... Radius=".1" Length="1." />

[DEM::Tool] : Cylinder

  • id : Cylinder
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ToolT.cpp

Use it to build something with a Shape::Cylinder shape

Sketch

                                  ^ Y
                                  |
                                  |
                                  |
                                  |
                                Length
               -------------------------------------
              / R \               .               /   \
             /  a  \              -              /     \
             |  d  |              .              |     |
             |  i  |              ..................+--------> X
             |  u  |             .               |     |
             \  s  /            .                \     /
              \   /            .                  \   /
               -------------------------------------
                             /
                            /
                           /
                          Z

Note that the symmetry axis is along its local X axis

Required param

Radius (float)
The radius of the cylinder
Length (float)
The length of the cylinder along its local X axis

Example

<..something... Radius=".1" Length="1." />

[DEM::Tool] : Polyhedron

  • id : Polyhedron
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ToolT.cpp

Use it to build something with a Shape::Polyhedron shape. A polyhedron model any kind of shape

Required param

File (string)
Gives .off file that describes the polyhedron to load

Optional param

OffSetFile (string)
Gives an offset file that describes the boundaries of the off file. It may be useful to mark some surfaces of the polyhedron. You can get an example in the Tool/Script directory.
Scale (float, default=1)
Set a scale factor to enlarge or scale down the polyhedron

Example

<..something...  File="Bunny.off"/>

[DEM::Tool] : Sphere

  • id : Sphere
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libDEM/ToolT.cpp

Use it to build something with a Shape::Sphere shape.

Sketch

                                  ^ Y
                                  |
                                  |
                                  |
                             -----+-----
                         ---/     .     \---
                       -/         .         \-
                      /           .           \
                     /            -            \
                    /             . R a d i u s \
                    |             . ............|-----> X
                    \            .              /
                     \          .              /
                      \        .              /
                       -\     .             /-
                         ---\.          /---
                            /-----------
                           /
                          Z

Required param

Radius (float)
The radius of the sphere

Example

<..something... Radius=".1" />

[GranOO] : GranOO

  • id : GranOO
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCore/Problem.cpp

The Problem Xml tag allows to set the main parameters of a simulation. This tag is required in all input files. The structure of a typical GranOO input file is :

<GranOO Version="2.0">  

  <Problem TotIteration="100000" TimeStep="3e-6" OutDir="Domain"/>
 <PreProcessing>
   ( ... Put pre-processing PlugIn here ...)
  </PreProcessing>

  <Processing>
    ( ... Put processing PlugIn here ...)
  </Processing>

  <PostProcessing>
    ( ... Put post-processing PlugIn here ...)
  </PostProcessing>
    
</GranOO>

Optional param

OutDir (string, default=input file name)
Set the name of the ouptut directory where all the result files will be saved. If a directory with this name already exists, GranOO creates a directory with the '_N' suffix to prevent file deletion. If the entry is empty, the output directory simply takes the name of the chosen input file.
TotIteration (int, default=inf)
Set the total iteration number. Note that you can set an infinity number with the keyword "inf"
TotTime (float, default=inf)
Set the total simulated time of the simulation. The TotIteration and TotTime are exclusive.
Verbose (bool, default=False)
Set the verbosity of the simulation. This option is useful for debugging.
DisplayProgression(bool, default=True)
Display the progression of the computational problem.
BackupExecutable(bool, default=False)
Save the executable binary file inside the backup directory.

Example

<Problem TotIteration="inf" TimeStep="3e-6" OutDir="Result"/>

[Math::Function] : NormalRandom

  • id : NormalRandom
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libMath/FunctionT.hpp

Normal random fonction. It picks a value following a normal distribution The distribution is defined by it mean and standard deviation values
Use it simply as NormRnd(meanVal, stdVal)


[Math::Function] : RampAndConstant

  • id : RampAndConstant
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libMath/FunctionT.hpp

Ramp and constant function, useful to apply a progressive loading

      |    _________Cst__________         
      |   /.                              
      |  / .                              
      | /  .                              
      |/___________________________       
         lim                              

Example

RAC(it, 1000, 1e6)


[Math::Function] : SineRamp

  • id : SineRamp
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libMath/FunctionT.hpp

Sinus ramp function, useful function to apply smooth loading

         max| - - - - - - - . . . . . . . . . . . . .                                
            |           .     |                                                      
            |         .       |                                                      
            |      .          |                                                      
         min|. . ____________________________________                                
                          duration        x (-> Inf)                                 

f(x) = sin((xM_PI)/duration-M_PI_2/2)(final-initial)/2.0+(initial+final)/2.0

Example

SineRamp(t, 0, 1, 2e-4, 0)

[Math::Function] : UniRandom

  • id : UniRandom
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libMath/FunctionT.hpp

Uniform random fonction. It picks a value in the range [min, max] Use it simply as UniRnd(min, max)


[NarrowPhase] : WithShape

  • id : WithShape
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/NarrowPhase/WithShape.cpp

The "WithShape" narrow phase method allows to (i) detect a contact between a couple of object and (ii) compute exactly the contact parameters (point, normal, etc...) of this couple. For performance reasons, the couple of objects is generally given by a BroadPhase method.

Note that this method is very smart and select the most effective algorithms to compute contacts. At this time two algorithms are provided : - the standard sphere/sphere algorithm - the EPA and GJK algorithms for other kind of shape.

Info

  • Process on : Physic::Body, Physic::Particle, Physic::Ground
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

MaxPenetrationWithSurface (float, default:0.)
If you use this option, you can define a maximal penetration value. If the computed penetration value is higher that this value, the contact is ignored. This option is useful in case of contact with surfaces because in non-closed domains. In this case some bodies can avoid and 'go below' surfaces. This configuration generates large values of penetration that can be by-passed with this option.

Example

<...  NarrowPhase="WithShape" MaxPenetrationWithSurface="0.01" ... />

[NarrowPhase] : WithShape

  • id : WithShape
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/NarrowPhase/WithShape.cpp

The "WithShape" narrow phase method allows to (i) detect a contact between a couple of object and (ii) compute exactly the contact parameters (point, normal, etc...) of this couple. For performance reasons, the couple of objects is generally given by a BroadPhase method.

Note that this method is very smart and select the most effective algorithms to compute contacts. At this time two algorithms are provided : - the standard sphere/sphere algorithm - the EPA and GJK algorithms for other kind of shape.

Info

  • Process on : Physic::Body, Physic::Particle, Physic::Ground
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

MaxPenetrationWithSurface (float, default:0.)
If you use this option, you can define a maximal penetration value. If the computed penetration value is higher that this value, the contact is ignored. This option is useful in case of contact with surfaces because in non-closed domains. In this case some bodies can avoid and 'go below' surfaces. This configuration generates large values of penetration that can be by-passed with this option.

Example

<...  NarrowPhase="WithShape" MaxPenetrationWithSurface="0.01" ... />

[NarrowPhase] : WithShape

  • id : WithShape
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/NarrowPhase/WithShape.cpp

The "WithShape" narrow phase method allows to (i) detect a contact between a couple of object and (ii) compute exactly the contact parameters (point, normal, etc...) of this couple. For performance reasons, the couple of objects is generally given by a BroadPhase method.

Note that this method is very smart and select the most effective algorithms to compute contacts. At this time two algorithms are provided : - the standard sphere/sphere algorithm - the EPA and GJK algorithms for other kind of shape.

Info

  • Process on : Physic::Body, Physic::Particle, Physic::Ground
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Optional param

MaxPenetrationWithSurface (float, default:0.)
If you use this option, you can define a maximal penetration value. If the computed penetration value is higher that this value, the contact is ignored. This option is useful in case of contact with surfaces because in non-closed domains. In this case some bodies can avoid and 'go below' surfaces. This configuration generates large values of penetration that can be by-passed with this option.

Example

<...  NarrowPhase="WithShape" MaxPenetrationWithSurface="0.01" ... />

[Physic::Ground] : Box

  • id : Box
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPhysic/GroundT.cpp

Use it to build something with a Shape::Box shape

Sketch

     Class Box is a Volume with rectangular sections:
    
                                  ^ Y
                                  |
                                  |
                         ---------|-----------
                        /         |          /|
                  dimZ /          |         / |
                      /           .        /  |
                     /            .       /   |
                    /--------------------/    |
                    |             .      |    |
                    |             .......|...---------> X
                    |            .       |    |
               dimY |           .        |    /
                    |          /         |   /
                    |         /          |  /
                    |        /           | / 
                    |-------/------------|/
                           /   dimX
                          Z
    

Required param

DimX (float)
The length of the box along its local X axis
DimY (float)
The length of the box along its local Y axis
DimZ (float)
The length of the box along its local Z axis

Example

<..something... DimX="1." DimY="1." DimZ="1." />

[Physic::Ground] : Cone

  • id : Cone
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPhysic/GroundT.cpp

Use it to build something with a Shape::Cone shape.

Sketch

                             ^ Y
                              |
                              |
                  <---------------- Lenth -------------->
                    ------    |       
                 /  ^  \\-----|     
                /   R   \     \------
               /    a    \    .      \-----
              /     d     \   .              \------
              |     i     |   .G                    \-----
              |     u     |   ............................X-----------> X
              |     s     |  .                      /-----
              \     +     / .                /------
               \         / .           /-----
                \       / .   /------
                 \     -----
                  ------/
                       /
                      Z

Note that : - the gravity center 'G' is at 1/4 x length from its base - the symmetry axis is along its local X axis

Required param

Radius (float)
The radius of the cone
Length (float)
The length of the cone along its local X axis

Example

<..something... Radius=".1" Length="1." />

[Physic::Ground] : Cylinder

  • id : Cylinder
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPhysic/GroundT.cpp

Use it to build something with a Shape::Cylinder shape

Sketch

                                  ^ Y
                                  |
                                  |
                                  |
                                  |
                                Length
               -------------------------------------
              / R \               .               /   \
             /  a  \              -              /     \
             |  d  |              .              |     |
             |  i  |              ..................+--------> X
             |  u  |             .               |     |
             \  s  /            .                \     /
              \   /            .                  \   /
               -------------------------------------
                             /
                            /
                           /
                          Z

Note that the symmetry axis is along its local X axis

Required param

Radius (float)
The radius of the cylinder
Length (float)
The length of the cylinder along its local X axis

Example

<..something... Radius=".1" Length="1." />

[Physic::Ground] : Disk

  • id : Disk
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPhysic/GroundT.cpp

Use it to build something with a Shape::Disk shape. A disk shape is a surface shape.

Sketch

                    -
                 /  ^  \
                /   R   \
               /    a    \
              /     d     \
              |     i     |
              |     u - --------> X
              |     s     |
              \           /
               \         /
                \       /
                 \     -
                  ----

Note that the normal is oriented along its local X axis

Required param

Radius (float)
The radius of the disk

Example

<..something... Radius=".1" />

[Physic::Ground] : Plane

  • id : Plane
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPhysic/GroundT.cpp

Use it to build something with a Shape::Plane shape. A plane shape is an infinite surface shape.

Sketch

                 /+
               /- |
            /--   |
         /--      |
       /-         |
     --|          |
       |          |
       |          |
       |     ---------------> X
       |          |
       |          |
       |         -+
       |      --/
       |    -/
       | --/
       +/

Note that the normal is oriented along its local X axis

Example

<..something...  />

[Physic::Ground] : Polyhedron

  • id : Polyhedron
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPhysic/GroundT.cpp

Use it to build something with a Shape::Polyhedron shape. A polyhedron model any kind of shape

Required param

File (string)
Gives .off file that describes the polyhedron to load

Optional param

OffSetFile (string)
Gives an offset file that describes the boundaries of the off file. It may be useful to mark some surfaces of the polyhedron. You can get an example in the Tool/Script directory.
Scale (float, default=1)
Set a scale factor to enlarge or scale down the polyhedron

Example

<..something...  File="Bunny.off"/>

[Physic::Ground] : Rectangle

  • id : Rectangle
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPhysic/GroundT.cpp

Use it to build something with a Shape::Rectangle shape. Note that the Shape::Rectangle is a surface shape.

Sketch

             |Y  /+
             | /- |
            /+-   |
         /-- |    |
       /-    |    |
     --|     |    |
       |     |    |
       |     |    |
       |    -+--------------> X
       |  -/      |
       +-/        |
     -/|         -+
  Z-/  |      --/
       |    -/
       | --/
       +/

Note that the normal is oriented along its local X axis

Required param

DimY (float)
The length of the box along its local Y axis
DimZ (float)
The length of the box along its local Z axis

Example

<..something... DimY="1." DimZ="1." />

[Physic::Ground] : Sphere

  • id : Sphere
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPhysic/GroundT.cpp

Use it to build something with a Shape::Sphere shape.

Sketch

                                  ^ Y
                                  |
                                  |
                                  |
                             -----+-----
                         ---/     .     \---
                       -/         .         \-
                      /           .           \
                     /            -            \
                    /             . R a d i u s \
                    |             . ............|-----> X
                    \            .              /
                     \          .              /
                      \        .              /
                       -\     .             /-
                         ---\.          /---
                            /-----------
                           /
                          Z

Required param

Radius (float)
The radius of the sphere

Example

<..something... Radius=".1" />

[PlugIn] : _AddVoltageSource

  • id : _AddVoltageSource
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/AddVoltageSource.cpp

Creates a voltage source in a DEM::DiscreteElement domain between two discrete elements sets. This plugin must be used in conjunction with the InitElectricalProperties and ConductCurrent plugins.

Info

  • Process on : DEM::Element set that own a DEM::Electrical property
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

GroundSetOf (string)
The DE set Id which is grounded
PositiveSetOf (string)
The DE set Id at which the voltage is applied
DCVoltage (float)
Voltage magnitude applied between the GroundSetOf and the Positive SetOf Discrete Elements sets

Example

<PlugIn Id="_AddVoltageSource" GroundSetOf="Box-xMin" PositiveSetOf="Box-xMax" DCVoltage="1.0"/>

[PlugIn] : _ApplyBondLoad

  • id : _ApplyBondLoad
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ApplyBondLoad.cpp

Computes the loads (forces and/or torques) applied by DEM::Bond on the two bonded elements. The calculation is based on the positions and orientations newly computed for each discrete element. Depending on the type of bond, torques are computed or not.

Info

  • Process on : DEM::Bond set
  • Multithreaded : Yes
  • Recommended section: Processing

Optional param

BuildElementPair (boolean, default=True)
If set to true, the plugin build new element pair when a bond is destroyed.
Set (string, default=Global)
The DEM::Bond SetOf ID to apply the treatment

Example

<PlugIn Id="_ApplyBondLoad" DeleteDisableBond="Yes" />

[PlugIn] : _ApplyBrittleFracture

  • id : _ApplyBrittleFracture
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ApplyBrittleFracture.cpp

Use the virial stress description to compute brittle fracture. Note that this a work in progress. Not documented yet !

This plugin implement the virial stress failure criterion, for details about this model see 1.

Info

  • Process on : DEM::Element set that own a DEM::BrittleFracture property
  • Multithreaded : No
  • Recommended section: Processing

1 André, D., Jebahi, M., Iordanoff, I., Charles, J. L., & Néauport, J. (2013). Using the discrete element method to simulate brittle fracture in the indentation of a silica glass with a blunt indenter. Computer Methods in Applied Mechanics and Engineering, 265, 136-147.


[PlugIn] : _ApplyFELoad

  • id : _ApplyFELoad
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ApplyFELoad.cpp

Creates a voltage source in a DEM::DiscreteElement domain between two discrete elements sets. This plugin must be used in conjunction with the InitElectricalProperties and ConductCurrent plugins.

Info

  • Process on : DEM::Element set that own a DEM::Electrical property
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

GroundSetOf (string)
The DE set Id which is grounded
PositiveSetOf (string)
The DE set Id at which the voltage is applied
DCVoltage (float)
Voltage magnitude applied between the GroundSetOf and the Positive SetOf Discrete Elements sets

Example

<PlugIn Id="_ReadFEDomain" GroundSetOf="Box-xMin" PositiveSetOf="Box-xMax" DCVoltage="1.0"/>

[PlugIn] : _ApplyForce

  • id : _ApplyForce
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ApplyForce.cpp

Applies a force vector with components X, Y and Z to all the Physic::Particle of the associated SetOf. If Resultant option is set to True, the provided vector components are divided by the number of particle in the SetOf.

Info

  • Process on : Physic::Particle set
  • Multithreaded : No
  • Recommended section: Processing

Required param

X (float or mathematical expression)
The X value of the force vector.
Y (float or mathematical expression)
The Y value of the force vector
Z (float or mathematical expression)
The Z value of the force vector

Optional param

Resultant (bool, default=False)
If set to True the force value is divided by the number of discrete element.
Set (string, default=Global)
The Physic::Particle SetOf ID to apply the force

Example

<PlugIn Id="_ApplyForce" X="100." Y="-1.*sin(it)" Z="0." Set="xMax"/>

[PlugIn] : _ApplyGravity

  • id : _ApplyGravity
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ApplyGravity.cpp

Applies the gravity to all the Physic::Particle of the associated SetOf. The gravity is considered as a uniform vector field.

Info

  • Process on : Physic::Particle
  • Multithreaded : No
  • Recommended section: Processing

Required param

X (float)
The X value of the gravity vector.
Y (float)
The Y value of the gravity vector
Z (float)
The Z value of the gravity vector

Optional param

  • Set : (string, default=Global) The Physic::Particle SetOf ID to apply the gravity

Example

<PlugIn Id="_ApplyGravity" X="0." Y="-9.91" Z="0." Set="Global"/>

[PlugIn] : _ApplyTorque

  • id : _ApplyTorque
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ApplyTorque.cpp

Applies a torque vector with components X, Y and Z to all the Physic::Body of the associated SetOf. If Resultant option is set to True, the provided vector components are divided by the number of particle in the SetOf.

Info

  • Process on : Physic::Body set
  • Multithreaded : No
  • Recommended section: Processing

Required param

X (float or mathematical expression)
The X value of the torque vector.
Y (float or mathematical expression)
The Y value of the torque vector
Z (float or mathematical expression)
The Z value of the torque vector

Optional param

Resultant (boolean, default=False)
If set to True the torque value is divided by the number of discrete element.
Set (string, default=Global)
The Physic::Body SetOf ID to apply the torque

Example

<PlugIn Id="_ApplyTorque" X="100." Y="-1.*sin(it)" Z="0." Set="xMax"/>

[PlugIn] : _BuildDelaunayElementPair

  • id : _BuildDelaunayElementPair
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/BuildDelaunayElementPair.cpp

    Build DEM::ElementPair in the provided DEM::DiscreteElement set based on a Delaunay tessellation. The cutoff distance is given by the parameter BondLengthRatioCutoff, which is used to calculate maximum distance between two discrete elements to consider them as bonded. The maximum distance between two discrete elements is expressed in terms of the mean radius of the DEM::Element.

Info

+ Process on         : `DEM::ElementPair` set
+ Multithreaded      : No
+ Recommended section: PreProcessing, PostProcessing

Optional param

BondLengthRatioCutoff (float, default=2.0)
:   The maximal acceptable length of bonds.

Example

```
<PlugIn Id="_BuildDelaunayElementPair" BondLengthRatioCutoff="2.0" />
```

[PlugIn] : _BuildGridDomain

  • id : _BuildGridDomain
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/BuildGridDomain.cpp

Build a parallelepiped discrete elements domain, with dimensions DimX, DimY and DimZ, with number of DEM::DiscreteElement defined by ElementNumber. By default, a dispersion factor is be applied to each discrete element position and radius, using parameters Dispersion and RadiusDispersion, respectively. To generate a simple cubic crystalline domain, both dispersion parameters must be set to 0. Finally, the discrete elements belonging to faces of the parallelepiped will have their center perfectly adjusted on their respective plane, except if PerfectBoundaries is set to False. Note that you may use this PlugIn in addition to the BuildDelaunayBond to build a full DEM discrete domain.

Info

  • Process on : DEM::DiscreteElement
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

DimX (float)
Set the length along X of the parallelepiped
DimY (float)
Set the length along Y of the parallelepiped
DimZ (float)
Set the length along Z of the parallelepiped

Optional param

Dispersion (float, default=0.5)
Set the spatial dispersion. Tha value must be in the range [0., 1.]
RadiusDispersion (float, default=0.5)
Set the dispersion of discrete elements. Tha value must be in the range [0., 1.]
PerfectBoundaries (bool, default=True)
If True the discrete elements that belong to the boundaries are perfectly aligned.

Example

<PlugIn Id="_BuildGridDomain" DimX="0.01" DimY="0.01" DimZ="0.1" ElementNumber="2000"/>

[PlugIn] : _BuildNeighbourElementPair

  • id : _BuildNeighbourElementPair
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/BuildNeighbourElementPair.cpp

This plugin allows to build bonds between neighbouring DEM::DiscreteElement in the SetOf. Two discrete elements are considered as bonded when an interpenetration is detected. In this first case, the coordination number of the domain is an output.

It is also possible to force the coordination number by turning parameter ForceCardinality to True, and by setting the value of WantedCardinalityValue, which thus becomes an input. In this second case, you must specify a valid SetOf name to parameter BoundarySet. This set of discrete elements is used to increase the precision of the coordination number calculation.

Info

  • Process on : DEM::ElementPair set
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

WantedCardinalityValue (float)
This option is required only if the ForceCardinality is set

Optional param

ForceCardinality (float, default=false)
if true the the cardinality (coordination) value is forced to the value specified by the WantedCardinalityValue option
BoundarySet (string, default="")
if a boundary set and an inclusion set is specified, the computation of the coordination number is more precise
InclusionSet (string, default="")
See above

Example

<PlugIn Id="_BuildNeighbourElementPair" ForceCardinality="Yes" WantedCardinalityValue="8." BoundarySet="Boundary"/>

[PlugIn] : _Check

  • id : _Check
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/Check.cpp

This plugin checks the validity of numerical computation. If any NaN (Not a Numerical) value is found in data, the calculation is immediately stopped. It can be used at any place where you want to ensure numerical computation integrity.

Info

  • Process on : all Physic::Particle
  • Multithreaded : No
  • Recommended section: Processing

Example

<PlugIn Id="_Check"/>

[PlugIn] : _ClearLoad

  • id : _ClearLoad
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ClearLoad.cpp

Resets all the external loads (forces and torques) associated to the Physic::Particle and Physic::Body of the domain.

Info

  • Process on : Physic::Particle and Physic::Body set
  • Multithreaded : No
  • Recommended section: Processing

Optional param

Set (string, default=Global)
The Physic::Particle and Physic::Body SetOf ID to apply the treatment

Example

<PlugIn Id="_ClearLoad"/>

[PlugIn] : _ComputeOptimalTimeStep

  • id : _ComputeOptimalTimeStep
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ComputeOptimalTimeStep.cpp

Computes an indicator on the greatest time step value that ensures numerical integration stability. This value is related to 2piomega, where omega is the highest natural frequency of all the mass-stiffness resonators.

Info

  • Process on : All Physic::CriticalTime objects
  • Multithreaded : No
  • Recommended section: PreProcessing

Optional param

Ratio (float, default=0.147)
This coefficient is applied to the computed value of the time step
TimeStep (string, default=)
Give an alternative Physic::Time ID to use. This alternatrive time step may be created with the NewTimeStep plugin. By default the main time step is chosen.

Example

<PlugIn Id="_ComputeOptimalTimeStep" Ratio="0.1"/>

[PlugIn] : _ComputeStrainTensor

  • id : _ComputeStrainTensor
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ComputeStrainTensor.cpp

This PlugIn computes strain tensors based on a least square method.

Info

  • Process on : DEM::Element with DEM::StrainTensor property
  • Multithreaded : No
  • Recommended section: Processing

[PlugIn] : _ComputeVirialStress

  • id : _ComputeVirialStress
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ComputeVirialStress.cpp

This PlugIn computes the virial stress [1,2] for each specified DEM::Element The virial stress used here can be used as the classical cauchy stress tensor in continuum mechanics. Note that this plugin is quiet complex, you can use the simplest interface with the SetElasticProperty plugin.

Info

  • Process on : DEM::Element with DEM::VirialStress property
  • Multithreaded : No
  • Recommended section: Processing

Required param

FailureMode (string="BRITTLE" or "PLASTIC")
Choose here the failure mode. Note that the plastic mode is experimental

Optional param

NeighbourLevel(int, default=1)
Choose the level number of neighbour to compute the virial stress. The default value (one) is a good compromise between accuracy and speed of computation. You can choose the zero value to speed up the comutation. Therefore results are less accurate.
UpdatePrincipalStress (bool, default=True)
Tell here if you want to update the principal virial stress. It requires to compute the eigen values of the tensile stress tensor matrix. This step is very time consuming but it is necessary for failure computation.
AutoComputeVolumicFractionWithInterpenetration (bool, default=False)
Let it false.
IncludeVelocity (bool, default=True)
Include the velocity in the computatio of the equivalent virial stress tensor
VolumeFraction (float, default=auto)
By default, the volumic fraction is automatically computed. You can force it by setting a value here. Note that the volumic fraction is very important for the accuracy of the virial stress computation.
HydrostaticCriterion (float, default=0.)
If this criterion is set, the failure computation is based on a maximal hydrostatic stress value : 1/3 * (Sig_I + Sig_II + Sig_III)
VonMisesCriterion (float, default=0.)
If this criterion is set, the failure computation is based on a maximal von mises stress value
TrescaCriterion (float, default=0.)
If this criterion is set, the failure computation is based on a maximal Tresca stress value : (Sig_I - Sig_III)
MaxPrincipalCriterion (float, default=0.)
If this criterion is set, the failure computation is based on a maximal principal sress value : max(Sig_I, sig_II, Sig_III)
GriffithCriterion (float, default=0.)
If this criterion is set, the failure computation is based on a equivalent griffith sress value. This criterion is well suited for brittle materials. The equivalent stress is computed as : * Sig_I if (3Sig_I + Sig_III) >= 0 -pow(Sig_I - Sig_III, 2.)/(8.*(Sig_I + Sig_III)) else
CriterionLaw (a list of math expression, default=none, separator=';')
Instead of using MaxPrincipalCriterion, GriffithCriterion and so on, you can build your own expression. You can access to the principal stresses with the s1, s2 and s3 variables. Note that s1 > s2 > s3. For example, if you put s1 > 10e6, you set a max principal stress criterion equal to 10 MPa. You can use the syntax allowed by [3], to build complex criterion such as s1 > 10e6 or s3 < -100e6. In this case, a new criterion is added in compression.
CriterionVar (a list of variable and math expression, default=none, separator=';')
If you use the 'CriterionLaw', you are probably interested by this feature. For example, you can create variable here which can be re-used in the CriterionLaw. For example, if you set 'C1=UniRnd(8e6,12e6);C2=UniRnd(-120e6,-80e6)', you create two new variables with a uniform distribution applied on DEM::Element. Then you can reuse it inside the 'CriterionLaw'. Note that each value of your criterion is stored in a std::vector of DEM::VirialStress object.
ApplyCriterionOnSet (string, default="Global")
Set here the ID of the SetOf to apply the failure criterion
ApplyCriterionOnSet (string, default="Global")
Set here the ID of the SetOf to apply the failure criterion
AddElementToCrackSet(bool, default=True)
If set to true, the DEM::Element that reach the failure criterion are added to a particular SetOf named "crack"
ApplyCriterionOn(string, default="CLOSEST")
Only "ALL", "HALF_PLANE", "CLOSEST" values are allowed. * ALL : the failure criterion is applied on all DEM::Bond connected with the DEM::Element * HALF_PLANE : the failure criterion is applied on the half DEM::Bond connected with the DEM::Element * CLOSEST : the failure criterion is applied on only one DEM::Bond connected with the DEM::Element

Example

<PlugIn Id="_ComputeVirialStress" NeighbourLevel="1"  MaxPrincipalCriterion="65" 
        ApplyCriterionOn="CLOSEST" FailureMode="BRITTLE" IncludeVelocity ="True" />

<PlugIn Id="_ComputeVirialStress" FailureMode="BRITTLE" ApplyCriterionOnSet="Breakable"
        NeighbourLevel="0" IterLoop="5"
        CriterionLaw="s1>C1 or s3<C2"
            CriterionVar="C1=UniRnd(8e6,12e6);C2=UniRnd(-120e6,-80e6)"/>

[2]: Andre, D., Jebahi, M., Iordanoff, I., Charles, J. L., & Neauport, J. (2013). Using the discrete element method to simulate brittle fracture in the indentation of a silica glass with a blunt indenter. Computer Methods in Applied Mechanics and Engineering, 265, 136-147. [3]: https://github.com/ArashPartow/exprtk


[PlugIn] : _ComputeVolumeFraction

  • id : _ComputeVolumeFraction
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ComputeVolumeFraction.cpp

This plugin compute the volume fraction of arbitrary granular domains thanks to a voronoi tesselation.

Info

  • Process on : DEM::DiscreteElement
  • Multithreaded : No
  • Recommended section: PreProcessing

Example

<PlugIn Id="_ComputeVolumeFraction"/>

[PlugIn] : _ConductCurrent

  • id : _ConductCurrent
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ConductCurrent.cpp

Solves the electrical state related to the applied voltage source through the AddVoltageSource plugin. The domain is assumed as a large electrical resistances network, where a resistance exists when two discrete elements are in contact. The system assembly is performed using the Graphs method, and is solved in one time step using a Conjugate Gradient iterative (implicit) solver. This means that if there is no change in the domain geometry, this plugin can be called only once, for instance by setting Max to IterLoop.

At the end of the plugin processing, the electrical state of the discrete domain is fully known, i.e. the electrical potentials, electrical currents and domain equivalent resistance between the electrical pins defined by the AddVoltageSource plugin. The details of the implementation are given in 1.

Info

  • Process on : DEM::DiscreteElement set that own a DEM::Electrical property
  • Multithreaded : No
  • Recommended section: Processing

Optional param

Verbose (bool, default=false)
When activated, this options prints the system size and solving time, as well as the domain equivalent resistance to the standard output
Set (string, default=Global)
The DEM::DiscreteElement SetOf ID to apply the treatment

Example

<PlugIn Id="_ConductCurrent" Verbose="Yes" IterLoop="Max"/>

1 Hubert, C., André, D., Dubar, L., Iordanoff, I., & Charles, J. L. (2017). Simulation of continuum electrical conduction and Joule heating using DEM domains. International Journal for Numerical Methods in Engineering, 110(9), 862-877.


[PlugIn] : _ConductHeat

  • id : _ConductHeat
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ConductHeat.cpp

Computes the new thermal state of the discrete domain, related to the thermal boundary conditions applied through the ApplyThermalLoading plugin. The thermal solution is calculated explicitly, based on the mechanical stable time increment (calculated by the ComputeOptimalTimeStep plugin), or based on the global time increment defined in the Problem XML tag.

Info

  • Process on : DEM::DiscreteElement set that own a DEM::Thermal property
  • Multithreaded : No
  • Recommended section: Processing

Optional param

Set (string, default=Global)
The DEM::DiscreteElement SetOf ID to apply the treatment
TimeStep (string, default=)
Give an alternative Physic::Time ID to use. This alternatrive time step may be created with the NewTimeStep plugin. By default the main time step is chosen.

Example

<PlugIn Id="_ConductHeat"/>

[PlugIn] : _ConductHeatWithFS

  • id : _ConductHeatWithFS
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ConductHeatWithFS.cpp

Calculates the new thermal state of the discrete domain, related to the thermal boundary conditions applied through the ApplyThermalLoading plugin. The thermal solution is calculated explicitly, based on the mechanical stable time increment (calculated by the ComputeOptimalTimeStep plugin), or based on the global time increment defined by the _Problem XML tag.

This plugin works in the same way as its counterpart ConductHeat except that it takes into account the domain free surfaces, which are determined automatically based on the barycenter of the neighbors surrounding a given discrete element.

Info

  • Process on : DEM::DiscreteElement set that own a DEM::Thermal property
  • Multithreaded : No
  • Recommended section: Processing

Optional param

Set (string, default=Global)
The DEM::DiscreteElement SetOf ID to apply the treatment

Example

<PlugIn Id="_ConductHeatWithFS"/>

[PlugIn] : _Convert

  • id : _Convert
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/Convert.cpp

Replaces some items of a given type by other items of another type. In fact this PlugIn is a smart interface to all the ConvertTo PlugIn. Please refer to the documentation of each specific ConvertTo to get the complete list of the allowed parameters.

Info

  • Process on : DEM:Bond or Core::Pair<DEM::Element> set
  • Multithreaded : No
  • Recommended section: PreProcessing

Optional param

Set (string, default=Global)
The DEM::Bond SetOf ID to apply the treatment

Example

<PlugIn Id="_Convert"/>

[PlugIn] : _ConvertBondToElementPair

  • id : _ConvertBondToElementPair
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ConvertBondToElementPair.cpp

Replaces all the DEM::Bond instances by DEM::ElementPair instances.

Info

  • Process on : DEM:Bond set
  • Multithreaded : No
  • Recommended section: PreProcessing

Optional param

Set (string, default=Global)
The DEM::Bond SetOf ID to apply the treatment

Example

<PlugIn Id="_ConvertBondToElementPair"/>

[PlugIn] : _ConvertElementPairToBeam

  • id : _ConvertElementPairToBeam
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ConvertElementPairToBeam.cpp

Replaces all the element pair (Core::Pair<DEM::Element> class) by DEM::Beam. If you create an initial discrete domain with the cooker program, it contains only virtual bonds. You can use this plugin in the pre-processing section to replace all these virtual bonds by usable beam. Cohesive beam are especially designed to simulate continuous domains. For details see 1.

Note that you can use the _SetElasticParameter PlugIn to avoid fastidious calibration step and set directly the macroscopi elastic parameters of your domain.

Info

  • Process on : Core::Pair set
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param (set1)

YoungModulus (float)
Set the Young's modulus value of the beam
RadiusRatio (float)
Set the radius of the beam. The beam radius is computed with the RadiusRatio value. with the average value of discrete element radius

Required param (set2)

MacroYoungModulus (float)
Set the macroscopic Young's modulus value of your domain. It involves automatic calibration process. Note that this options is not allowed if you specify directly microscopic parameters such as the 'YoungModulus' and the 'RadiusRatio' options.
MacroPoissonRatio (float)
Set the macroscopic Poisson's ratio value of your domain. It involves automatic calibration process. Note that this options is not allowed if you specify directly microscopic parameters such as the 'YoungModulus' and the 'RadiusRatio' options.

Optional param

DampingFactor (float, default=0.)
Set the value of the damping factor
PoissonRatio (float, default=0.3)
Set the value of the Poisson's ratio (unuseful in most of case)
MaxStress (float, default=0.)
Set the maximal equivalent Rankine stress (for brittle material). If the beam reaches this value, the bond is broken. You can choose if the beam is disabled or deleted with the ApplyLoad PlugIn.
ComputeAverageRadiusOnSet (string, default=Global)
Choose the DEM::DiscreteElement SetOf to compute the average radius.
Set (string, default=Global)
The DEM:: SetOf ID to apply the treatment
Epsilon (float, default=1e-300)
In some cases the default value of epsilon is too aggressive. You can choose a lower value such as 1e-12 to avoid approximation errors.

Example

<PlugIn Id="_ConvertElementPairToBeam" YoungModulus="1.2e11" PoissonRatio="0.3" RadiusRatio="0.28" Set="xMax"/>

1 André, D., Iordanoff, I., Charles, J. L., & Néauport, J. (2012). Discrete element method to simulate continuous material by using the cohesive beam model. Computer Methods in Applied Mechanics and Engineering, 213, 113-125.


[PlugIn] : _ConvertElementPairToFlatBond

  • id : _ConvertElementPairToFlatBond
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ConvertElementPairToFlatBond.cpp

Replaces all the element pair (Core::Pair<DEM::Element> class) by DEM::FlatBond. If you create an initial discrete domain with the cooker program, The spring can be breakable by giving a strain threshold with FailureStrainLimit.

Info

  • Process on : Core::Pair<DEM::Element> set
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

YoungModulus (float)
Set the Young's modulus of the material
PoissonRatio (float)
Set the Poisson's ratio of the material

Optional param

MaxTensileStress (float, default=0., > 0.)
Set the normal tensile stress criterion of the bond
MaxCompressiveStress (float, default=0., >0.)
Set the normal compressive stress criterion of the bond

Example

<PlugIn Id="_ConvertElementPairToFlatBond" YoungModulus="72e9" PoissonRatio="0.17" MaxStress="50e6"/>

[PlugIn] : _ConvertElementPairToPlasticBeam

  • id : _ConvertElementPairToPlasticBeam
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ConvertElementPairToPlasticBeam.cpp

Replaces all the element pair (Core::Pair<DEM::Element> class) by DEM::PlasticBeam. The DEM::PlasticBeam class inherits from the DEM::Beam class. So, you can set also all the parameters of the _ConvertElementPairToBeam PlugIn.

BE AWARE, THIS IS AN EXPERIMENTAL WORK !!!

Info

  • Process on : Core::Pair set
  • Multithreaded : No
  • Recommended section: PreProcessing

Optional param

UltimateElongationTreshold (float, default=inf)
Set the value of the elongation threshold. This value is relative. For example, if you set 1.2, it means that the beam could get 20% max of elongation. If the beam reach this value, the beam is removed.
UltimateAngleTreshold (float, default=inf)
Set the value of the angle (distorsion) threshold. If the beam reach this value, the beam is removed.

Example

<PlugIn Id="_ConvertElementPairToPlasticBeam" YoungModulus="1.2e11" RadiusRatio="0.28" 
        UltimateElongationTreshold="1.2"/>

[PlugIn] : _ConvertElementPairToPlasticBeamIT

  • id : _ConvertElementPairToPlasticBeamIT
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ConvertElementPairToPlasticBeamIT.cpp

Replaces all the element pair (Core::Pair<DEM::Element> class) by DEM::PlasticBeamIT. The DEM::PlasticBeamIT class inherits from the DEM::Beam class. So, you can set also all the parameters of the _ConvertElementPairToBeam PlugIn.

BE AWARE, THIS IS AN EXPERIMENTAL WORK !!!

Info

  • Process on : Core::Pair set
  • Multithreaded : No
  • Recommended section: PreProcessing

Optional param

UltimateElongationTreshold (float, default=inf)
Set the value of the elongation threshold. This value is relative. For example, if you set 1.2, it means that the beam could get 20% max of elongation. If the beam reach this value, the beam is removed.
UltimateAngleTreshold (float, default=inf)
Set the value of the angle (distorsion) threshold. If the beam reach this value, the beam is removed.

Example

<PlugIn Id="_ConvertElementPairToPlasticBeamIT" YoungModulus="1.2e11" RadiusRatio="0.28" 
        UltimateElongationTreshold="1.2"/>

[PlugIn] : _ConvertElementPairToSpring

  • id : _ConvertElementPairToSpring
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ConvertElementPairToSpring.cpp

Replaces all the element pair (Core::Pair<DEM::Element> class) by DEM::Spring. If you create an initial discrete domain with the cooker program, The spring can be breakable by giving a strain threshold with FailureStrainLimit.

Info

  • Process on : Core::Pair<DEM::Element> set
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

Stiffness (float)
Set the stiffness of the spring

Optional param

RestitutionCoeff (float, default=-1)
Set the coefficient of restitution. Must be between in the range [0,1]. In fact a damping factor is computed from the RestitutionCoeff value thanks to the formula given in the Misc.hpp source file in libPhysic
DampingFactor (float, default=-1)
Set the damping factor. Note that you can set both RestitutionCoeff and DampingFactor options.
AttractiveCoeff (float, default;1),
Set the attractive coefficient
RepulsiveCoeff (float, default;1),
Set the repulsive coefficient
MaxElongation (float, default=inf),
Set the maximal elongation of the beam (old failure strain limit).
Set (string, default=Global)
The Core::Pair<DEM::Element> SetOf ID to apply the treatment

Example

<PlugIn Id="_ConvertElementPairToSpring" Stiffness="1.5e7" RestitutionCoeff="0.9"/>

[PlugIn] : _Delete

  • id : _Delete
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/Delete.cpp

This plugin delete the specified items.

Info

  • Process on : All
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

What (string)
The type of item to delete : Core::Base, DEM::Element, Physic::Body, Physic::Ground and so on...

Optional param

Set (string, default="Global")
The plugin removes only the particular items that belong to the specified set
ID (string, default="")
If ID is set, the plugin removes only item with the specified ID. It works only for classes that own ID such as Physic::Ground, DEM::Tool or DEM::SupportShape

Example

<PlugIn Id="_Delete" What="Physic::Ground"/>
<PlugIn Id="_Delete" What="DEM::SupportShape" ID="Boundary"/>

[PlugIn] : _DeleteUnbondedElement

  • id : _DeleteUnbondedElement
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/DeleteUnbondedElement.cpp

Delete all the unbonded DEM::Element. The related DEM::Element are said as alone and they may induce some problems in some simulations.

Info

  • Process on : DEM::Element and DEM::Bond set
  • Multithreaded : No
  • Recommended section: PreProcessing & Processing & PostProcessing

Optional param

Verbose (bool, default=False)
If set to true gives some information: number of deleted element, etc...
Set (string, default=Global)
The DEM::Element SetOf ID to apply the treatment

Example

<PlugIn Id="_DeleteUnbondedElement" Verbose="True"/>

[PlugIn] : _DisplayInfo

  • id : _DisplayInfo
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/DisplayInfo.cpp

A plugin that displays some information at screen. It is almost an example plugin that let you understand how to implement your own plugin thanks to copy/paste/modify some C++ source code. Also, it may be useful to print a specific message by triggering it when a bond is disabled using the TriggerOnSignal parameter.

Info

  • Process on : Nothing
  • Multithreaded : No
  • Recommended section: All

Optional param

Message (string, default="")
The message to display

Example

<PlugIn Id="_DisplayInfo" Message="Hello, GranOO User !!"/>
<PlugIn Id="_DisplayInfo" Message="A bond was disabled." TriggerOnSignal="DisableBond"/>

[PlugIn] : _EnergyBalance

  • id : _EnergyBalance
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/EnergyBalance.cpp

Trigger the energy balance recording. TODO: Need to be documented.


[PlugIn] : _ExportToPVD

  • id : _ExportToPVD
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ExportToPVD.cpp

Exports the domain data to ParaView Data format (.pvd file), for further post treatment in the free and open-source ParaView, developed by Kitware paraview. Most of the fields available in the GddViewer are available in ParaView, and are defined by the Field parameter.

To specify which data must be exported into the .pvd file, the starting point is to define the Field parameter, using values All or Nothing. Then, you can add or remove a specific magnitude from a specific classes. For example, if Field="Nothing", you will add the acceleration quantities related to the discrete elements using Element_add="Acceleration". Similarly, if you want to export all parameters but not the torsion stress from beams, you would use Beam_rm="CurrentTorsionStress".

Info

  • Process on : All objects
  • Multithreaded : No
  • Recommended section: All
  • Result : A .pvd file in the output directory

Required param

Field (string)
The attempted value must be "All" or "Nothing"

Optional param

class-name_add (string)
Used to add to the export list a specific field belonging to the specified class
class-name_rm (string)
Used to remove to the export list a specific field belonging to specified class

Example

<PlugIn Id="_ExportToPVD" Field="Nothing" Element_add="Acceleration" StepTime="1.0e-5"/>
<PlugIn Id="_ExportToPVD" Field="All" IterLoop="100"/>

[PlugIn] : _ImposeDisplacement

  • id : _ImposeDisplacement
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ImposeDisplacement.cpp

This plugin imposes a displacement on a specified Physic::Particle set. The imposed displacement is specified either by setting the imposed displacement vector components X, Y and Z, or by setting parameter Clamp to Yes (which corresponds to X="0.", Y="0." and Z="0.").

In addition to numeric values, the imposed displacement vector also accepts expression which can be set thought the Expression XML Tag (outline definition), or by direct typing of formula (inline definition).

The velocity and the acceleration are also affected by this plugin : - velocity is set as the first derivative of the imposed displacement - acceleration is set as the second derivative of the imposed displacement

Info

  • Process on : Physic::Particle set, Physic::Ground item
  • Multithreaded : No
  • Recommended section: Processing

Required param

X (float or expression)
The value on X. This option is NON required if Clamp is set to true.
Y (float or expression)
Same as above.
Z (float or expression)
Same as above.

Optional param

Clamp (bool, default=False)
If set to true the imposed displacement is null and the X, Y, Z options are non required
Set (string, default=Global)
The Physic::Particle SetOf ID to apply the treatment
GroundID (string, default="")
If GroundID is set, the displacement is applyed to a ground shape. Note that a ground is also a DEM::SupportShape

Example

<PlugIn Id="_ImposeDisplacement" X="0." Y="1.3*t" Z="0."/>
<PlugIn Id="_ImposeDisplacement" Clamp="Yes"/>
<PlugIn Id="_ImposeDisplacement" X="0." Y="1.3*t" Z="0." GroundID="ground-plane"/>

[PlugIn] : _ImposeFEDisplacement

  • id : _ImposeFEDisplacement
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ImposeFEDisplacement.cpp

This plugin imposes a displacement on a specified Physic::Particle set. The imposed displacement is specified either by setting the imposed displacement vector components X, Y and Z, or by setting parameter Clamp to Yes (which corresponds to X="0.", Y="0." and Z="0.").

In addition to numeric values, the imposed displacement vector also accepts expression which can be set thought the Expression XML Tag (outline definition), or by direct typing of formula (inline definition).

The velocity and the acceleration are also affected by this plugin : - velocity is set as the first derivative of the imposed displacement - acceleration is set as the second derivative of the imposed displacement

Info

  • Process on : Physic::Particle set, Physic::Ground item
  • Multithreaded : No
  • Recommended section: Processing

Required param

X (float or expression)
The value on X. This option is NON required if Clamp is set to true.
Y (float or expression)
Same as above.
Z (float or expression)
Same as above.

Optional param

Clamp (bool, default=False)
If set to true the imposed displacement is null and the X, Y, Z options are non required
Set (string, default=Global)
The Physic::Particle SetOf ID to apply the treatment
GroundID (string, default="")
If GroundID is set, the displacement is applyed to a ground shape. Note that a ground is also a DEM::SupportShape

Example

<PlugIn Id="_ImposeFEDisplacement" X="0." Y="1.3*t" Z="0."/>
<PlugIn Id="_ImposeFEDisplacement" Clamp="Yes"/>
<PlugIn Id="_ImposeFEDisplacement" X="0." Y="1.3*t" Z="0." GroundID="ground-plane"/>

[PlugIn] : _ImposeOrientation

  • id : _ImposeOrientation
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ImposeOrientation.cpp

This plugin imposes an orientation on a specified Physic::Body set. The imposed orientation is specified either by setting the imposed orientation quaternion components X, Y, Z, and R. or by setting parameter Clamp to Yes (which corresponds to X="0.", Y="0.", Z="0." and R="1.").

In addition to numeric values, the imposed displacement vector also accepts expression which can be set thought the Expression XML Tag (outline definition), or by direct typing of formula (inline definition).

The angular velocity and acceleration are also affected by this plugin.

Info

  • Process on : Physic::Body set
  • Multithreaded : No
  • Recommended section: Processing

Required param

X (float or expression)
The value on X. This option is NON required if Clamp is set to true.
Y (float or expression)
Same as above.
Z (float or expression)
Same as above.
R (float or expression)
Same as above.

Optional param

Clamp (bool, default=False)
If set to true the imposed displacement is null and the X, Y, Z, R options are non required
Set (string, default=Global)
The Physic::Body SetOf ID to apply the treatment

Example

<PlugIn Id="_ImposeOrientation" Clamp="Yes"/>

[PlugIn] : _ImposeRotation

  • id : _ImposeRotation
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ImposeRotation.cpp

This plugin imposes a rigid rotation on a specified Physic::Body set. Here, the process is different from the ImposeOrientation PlugIn because the set is considered as a rigid body that moves.

The imposed rotation is specified through an angle, an axis and center.

Info

  • Process on : Physic::Body set
  • Multithreaded : No
  • Recommended section: Processing

Required param

Axis (vector:triplet of floats or vector id)
The X,Y,Z values of the rotation axis.
angle (float or expression)
The rotation angle. To impose an angular velocity, you can use a depending time expression here,
Center (triplet of floats or vector id))
The X,Y,Z values of the rotation center. Note that, if you use the "Centroid" pattern, the point coordinates are automatic computed by taking the centroid value of the specified set.

Optional param

Set (string, default=Global)
The Physic::Body SetOf ID to apply the treatment

Example

<PlugIn Id="_ImposeRotation" Axis="( 1.,0.,0.)" Center="Centroid" Angle="angle" Set="Cylinder-xMax"/>

[PlugIn] : _ImposeTemperature

  • id : _ImposeTemperature
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ImposeTemperature.cpp

Applies the provided Temperature value to all DEM::Element in the SetOf defined by the ElementSet. This plugins requires to run the InitThermalProperties plugin in the PreProcessing section of the input file.

Info

  • Process on : DEM::Element
  • Multithreaded : No
  • Recommended section: Processing

Required param

Temperature (float or expression)
The temperature value the temperature to be applied to the DEM::Element

Optional param

Set (string, default=Global)
The DEM::Element SetOf ID to apply the temperature

Example

<PlugIn Id="_ImposeTemperature" Temperature="798." Set="Cylinder-xMin"/>

[PlugIn] : _InitElectricalProperties

  • id : _InitElectricalProperties
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/InitElectricalProperties.cpp

Initializes the electrical properties of the specified DEM::Element set. You can specify the name of the set.

Info

  • Process on : DEM::Element set that own a DEM::Electrical property
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

Resistivity (float)
The material electrical resistivity rho
Conductivity (float)
The material electrical conductivity calculated as 1/rho

Note that you MUST specify the material electrical resistivity OR conductivity. These two parameters are mutually exclusive.

Optional param

Set (string, default=Global)
The DEM::Element SetOf ID to apply the treatment

Example

<PlugIn Id="InitElectricalProperties" Resistivity="0.73e-6"/>

[PlugIn] : _InitThermalProperties

  • id : _InitThermalProperties
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/InitThermalProperties.cpp

Initializes the thermal properties of the specified DEM::Element set. You can specify the name of the set.

Info

  • Process on : DEM::Element set that own a DEM::Thermal property
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

Temperature (float)
Set the element temperature
Cp (float)
Set the heat capacity
Conductivity (float)
Set the thermal conductivity

Optional param

Set (string, default=Global)
The DEM::Element SetOf ID to apply the treatment

Example

<PlugIn Id="_InitThermalProperties" Temperature="0" Cp="500" Conductivity="15" />

[PlugIn] : _IntegrateAcceleration

  • id : _IntegrateAcceleration
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/IntegrateAcceleration.cpp

Computes the new positions and angular positions for all the Physic::Body and/or Physic::Particle. Performs a numerical integration of the linear (on Physic::Particle) and the angular acceleration (on Physic::Body) to compute the new position values.

The integration scheme is derived from Tchamwa–Wielgosz (TW) 1 scheme, with a damping coefficient. It produces some numerical damping when the time step is close to the critical value given by the plugin ComputeOptimalTimeStep. One can use beta = 1.3 to produce significant damping and beta = 0.5 produces no damping effect (default value).

Info

  • Process on : Physic::Particle and Physic::Body
  • Multithreaded : No
  • Recommended section: Processing

Required param

Linear (bool)
Set to true if you want to perform linear integration
Angular (bool)
Set to true if you want to perform angular integration

Optional param

BetaLinear (float, default=0.5)
The damping effect factor beta for linear integration. Default value corresponds to no damping effect
BetaAngular (float, default=0.5)
The damping effect factor beta for angular integration. Default value corresponds to no damping effect
Set (string, default=Global)
The SetOf ID (both Physic::Body and Physic::Particle) to apply the treatment
TimeStep (string, default=)
Give an alternative Physic::Time ID to use. This alternatrive time step may be created with the NewTimeStep plugin. By default the main time step is chosen.
SaveKinematic (bool, default=False)
Save in Physic::Particle and Physic::Body the previous kinematic : linear and angular position, velocity and acceleration. This feature can be used for different things such as energy balance computations.

Example

<PlugIn Id="_IntegrateAcceleration" Linear="Yes" Angular="No"/>

1 Mahéo, L., Grolleau, V., & Rio, G. (2009). Damping efficiency of the Tchamwa–Wielgosz explicit dissipative scheme under instantaneous loading conditions. Comptes Rendus Mécanique, 337(11-12), 722-732.


[PlugIn] : _InteractionHistogram

  • id : _InteractionHistogram
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/InteractionHistogram.cpp

This plugin creates a 3D histogram that displays bond interaction direction. It is usefull to check geometrical isotropy or anisotropy. Note that this plugin will erase completly the current domain from memory. The domain is replaced by polyhedron that represent the 3D chart. You can use directly this plugin in the 'granoo-viewer'.

Info

  • Process on : DEM::DiscreteElement
  • Multithreaded : No
  • Recommended section: Pre or PostProcessing

Optional param

ComputeOnSphere (bool, default=True)
If true, the interaction histogram will be computed on a spherical domain. This is required for correctly checking isotropy without geometrical effects.
SphereRatio (float, default=0.9)
With this param, the computed sphere is decreasing by this ratio. By default the radius is 90% of the maximal radius.

Example

<PlugIn Id="_InteractionHistogram"/>

[PlugIn] : _ManageCollision

  • id : _ManageCollision
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ManageCollision.cpp

Manages collision between two types. This PlugIn is the main interface to the collision detection algorithm. Note that this PlugIn instantiate the right Collision::Manager object (depending on the Between field).

A Collision::Manager object allows to plug different kind of collision detection algorithms such as : - a Collision::BroadPhase algorithm -> preliminary approach - a Collision::UpdateStrategy -> a strategy to avoid re-computation of contact pairs - a Collision::NarrowPhase algorithm -> closest approach - a Collision::CallBack function triggered when a collision is detected.

Info

  • Process on : All possible item that need collision
  • Multithreaded : No
  • Recommended section: Processing

Required param

Between (string)
Choose here the two kinds of item you want to manage. The allowed types are : body/body, body/ground, particle/ground, discreteElement/discreteElement, discreteElement/supportShape and discreteElement/tool.
BroadPhase (string)
The wanted Collision::BroadPhase Method. Note that you can list all the available BroadPhase by typing granoo -d -f BroadPhase. Please refer to the documentation of the chosen BroadPhase to get the list of available option.
CallBack (string)
The wanted Collision::CallBack Method. Note that you can list all the available CallBack by typing granoo -d -f CallBack. Please refer to the documentation of the chosen CallBack to get the list of available option.

Optional param

UpdateStrategy (string, default="")
The wanted Collision::UpdateStrategy Method. Note that this feature is optional. If you choose an update strategy method, the contact pairs detected by the broadphase method are recorded in an array. This array is used instead of on-the-fly contact detection to avoid useless computations. ote that you can list all the available BroadPhase by typing granoo -d -f UpdateStrategy. Please refer to the documentation of the chosen BroadPhase to get the list of available option.

Note that you can list all the available BroadPhase by typing granoo -d -f BroadPhase. Please refer to the documentation of the chosen BroadPhase to get the list of available option.

NarrowPhase (string, default="")
The wanted Collision::NarrowPhase Method. Note that you can list all the available NarrowPhase by typing granoo -d -f NarrowPhase Please refer to the documentation of the chosen NarrowPhase to get the list of available option. The NarrowPhase method is optional because some BroadPhase algorithm treat on-the-fly and embed the NarrowPhase collision step.
ExcludeInteraction(bool, default=False)
If set to true the interacted bonded bodies are not taken into account

Example

For discrete element (optimized for spherical shapes) :

<PlugIn Id="_ManageCollision" Between="DiscreteElement/DiscreteElement" 
    BroadPhase="LCM" Set="Global"
    CallBack="Standard" Stiffness="1e5" 
        RegularizationType="piecewise" DryFrictionSlope="1e5" StaticDryFrictionCoeff="0.1" DynamicDryFrictionCoeff="0.01" 
         RestitutionCoeff="0.9"/>

For body with various kind of shapes :

<PlugIn Id="_ManageCollision" Between="Body/Body" 
        BroadPhase="Lcm"
    NarrowPhase="WithShape"
        CallBack="Standard" Stiffness="1e5" RestitutionCoeff="0.1"
        RegularizationType="piecewise" DryFrictionSlope="1e5" 
    StaticDryFrictionCoeff="0.3" DynamicDryFrictionCoeff="0.2"/>

[PlugIn] : _MonitorItemNumber

  • id : _MonitorItemNumber
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/MonitorItemNumber.cpp

This plugin delete the specified items.

Info

  • Process on : All
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

What (string)
The type of item to delete : Core::Base, DEM::Element, Physic::Body, Physic::Ground and so on...

Optional param

Set (string, default="Global")
The plugin removes only the particular items that belong to the specified set
ID (string, default="")
If ID is set, the plugin removes only item with the specified ID. It works only for classes that own ID such as Physic::Ground, DEM::Tool or DEM::SupportShape

Example

<PlugIn Id="_MonitorItemNumber" What="Physic::Ground"/>
<PlugIn Id="_MonitorItemNumber" What="DEM::SupportShape" ID="Boundary"/>

[PlugIn] : _NewExpression

  • id : _NewExpression
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/NewExpression.cpp

Creates a new Math::Expression with a given ID

Info

  • Recommended section: PreProcessing

Required param

F (string)
Put here the mathematical formula related to your expression
ID (string)
The ID of the new Math::Expression. The new Math::Expression can be retrieved in C++ code with Math::Expression::Glob("ID")

Example

<PlugIn Id="_NewExpression" F="Sin(3*t)+4" ID="Sinus" />

[PlugIn] : _NewFrame

  • id : _NewFrame
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/NewFrame.cpp

Creates a new Geom::Frame with a given ID

Info

  • Recommended section: PreProcessing

Required param

Center (triplet of float or string)
Put here the coordinates of the frame center, for example (0., 0. ,1.5) Or, you can set a Center ID of a point already built with the NewPoint PlugIn.
ID (string)
The ID of the new Geom::Frame. The new Geom::Frame can be retrieved in C++ code with Geom::Frame::Glob("ID")

Optional param

Quat (quadruplet of float or string, default=(0,0,0,1))
Put here the coordinates of the frame quaternion, for example (0., 0. ,0. ,1.) Or, you can set a Quaternion ID of a quaternion already built with the NewQuaternion PlugIn. Note that this param is optional, if you set the nothing a default unit quaternion (0., 0., 0., 1.) is chosen.

Example

<PlugIn Id="_NewFrame" Center="Pt" Quat="Qt"                ID="F1" />
<PlugIn Id="_NewFrame" Center="Pt"                          ID="F2" />
<PlugIn Id="_NewFrame" Center="(0,0,1)"                     ID="F3" />
<PlugIn Id="_NewFrame" Center="(0,0,1)" Quat="(0,0,1)(90)"  ID="F4" />

[PlugIn] : _NewGround

  • id : _NewGround
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/NewGround.cpp

Creates a new Physic::Ground with a given ID

Info

  • Recommended section: PreProcessing

Required param

Type (string)
Set the type of the Ground. It must be Cylinder, Cone, etc...

To get the list of all the available attributes please refer to the specific documentation of each tool. To get this documentation, simply run granoo with the following argument granoo -d -f Ground

Optional param

ID (string)
The ID of the new Ground. The new Ground can be retrieved in C++ code with Physic::Ground::Glob("ID") or by its child class such as Physic::GroundT<Shape::Sphere>::Glob("ID").
Set (string, default="")
put the created tool in the specified set. If the set does not exist, a new one is created.

Example

<PlugIn Id="_NewGround" Type="Sphere" Radius="1.0" ID="Sphere"/>

[PlugIn] : _NewPoint

  • id : _NewPoint
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/NewPoint.cpp

Creates a new Geom::Point with a given ID

Info

  • Recommended section: PreProcessing

Required param

Val (triplet of float)
Put here the point value with the format (xxx, yyy, zzz)
ID (string)
The ID of the new Geom::Point. The new Geom::Point can be retrieved in C++ code with Geom::Point::Glob("ID")

Example

<PlugIn Id="_NewPoint" Val="(1.0, 0.3, 0.)" ID="hello"/>

[PlugIn] : _NewQuaternion

  • id : _NewQuaternion
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/NewQuaternion.cpp

Creates a new Geom::Quaternion with a given ID

Info

  • Recommended section: PreProcessing

Required param

Val (quadruplet of float)
Put here the quaternion value with the format (xxx, yyy, zzz, rrrr). Instead of the standard quadruplet quaternion, you can specify an axis-angle definition (more intuitive) as : (x,y,z)(a) where (x,y,z) is the axis and a is the angle in degree.
ID (string)
The ID of the new Geom::Quaternion. The new Geom::Quaternion can be retrieved in C++ code with `Geom::Quaternion::Glob("ID")``

Example

<PlugIn Id="_NewQuaternion" Val=(1.0, 0.3, 0.) ID="hello"/>

[PlugIn] : _NewSupportShape

  • id : _NewSupportShape
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/NewSupportShape.cpp

Creates a new DEM::SupportShape with a given ID. A DEM::SupportShape is a shape that contains a discrete domain. You can associate the DEM::SupportShape with this discrete domain. If you call UpdateSupportShape PlugIn the length of the support shape is recomputed from the state of its associated discrete elements.

Info

  • Recommended section: PreProcessing

Required param

Type (string)
Set the type of the DEM::SupportShape. It must be a Cylinder, a Cone, etc...

Optional param

ID (string)
The ID of the new Ground. The new Ground can be retrieved in C++ code with Physic::Ground::Glob("ID") or by its child class such as Physic::GroundT<Shape::Sphere>::Glob("ID").
Set (string, default="")
put the created tool in the specified set. If the set does not exist, a new one is created.

To get the list of all the available attributes please refer to the specific documentation of each tool. To get this documentation, simply run granoo with the following argument granoo -d -f SupportShape

Example

<PlugIn Id="_NewSupportShape" Type="Sphere" Radius="1.0" ID="SHShape"/>

[PlugIn] : _NewTimeStep

  • id : _NewTimeStep
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/NewTimeStep.cpp

Creates a new Physic::Time with a given ID. This feature may be used when multiple time steps are required. For example, a simulation may embed a mechanical time step and a thermal time step with different values.

Info

  • Recommended section: PreProcessing

Required param

Val (float)
The value of the time step
ID (string)
The ID of the new Physic::Time

Note that you can retrieve your time step in C++ code with the Physic::Time::Glob("ID") static method. In addition, new Math::Variable are dynamically created. You can retrieve them as t_ID, it_ID, dt_ID and use them to construct expression in your inp file.

Example

<PlugIn Id="_NewTimeStep" Val="1e-3" ID="Thermal"/>

[PlugIn] : _NewTool

  • id : _NewTool
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/NewTool.cpp

Creates a new DEM::Tool with a given ID. A DEM::Tool is a body that may interact and collide with DEM::DiscreteElement.

Info

  • Recommended section: PreProcessing

Required param

Type (string)
Set the type of the tool. It must be a Cylinder, a Cone, etc...

Optional param

ID (string)
The ID of the new tool. The new tool can be retrieved in C++ code with DEM::Tool::Glob("ID") or by its child class such as DEM::ToolT<Shape::Shere>::Glob("ID").
Density (float, default=1000)
set the density value used to compute mass and inertia tensor of the tool
Set (string, default="")
put the created tool in the specified set. If the set does not exist, a new one is created.

To get the list of all the available attributes please refer to the specific documentation of each tool. To get this documentation, simply run granoo with the following argument granoo -d -f Tool

Example

<PlugIn Id="_NewTool" Type="Sphere" Radius="1.0" ID="HelloSphere"/>

[PlugIn] : _NewVariable

  • id : _NewVariable
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/NewVariable.cpp

Creates a new Math::Variable with a given ID

Info

  • Recommended section: PreProcessing

Required param

Val (float)
Set the initial value of the variable
ID (string)
The ID of the new Math::Variable. The new Math::Variable can be retrieved in C++ code with Math::Variable::Glob("expression_id")

Required param

Description (string, default="")
Set a description of the variable.

Example

<PlugIn Id="_NewVariable" Val="6.28" ID="TWO_PI"/>

[PlugIn] : _NewVector

  • id : _NewVector
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/NewVector.cpp

Creates a new Geom::Vector with a given ID

Info

  • Recommended section: PreProcessing

Required param

Val (triplet of float)
Put here the vector value with the format (xxx, yyy, zzz)
ID (string)
The ID of the new Geom::Vector. The new Geom::Vector can be retrieved in C++ code with Geom::Vector;;Glob("ID")

Example

<PlugIn Id="_NewVector" Val=(1.0, 0.3, 0.) ID="hello"/>

[PlugIn] : _PutInContact

  • id : _PutInContact
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/PutInContact.cpp

Put a body with a given ID in contact with others. This plugin is useful when you create a Tool with the NewTool plugin. You can place your tool aproximately with the NewTool plugin and start the simulation with the tool very close from your domain. The algorithm implemented here is a kind of dichotomy algorithm. So, you need a - an initial step used to move the body, - a direction vector used to move the body and - a precision used to stop the calculation.

Info

  • Process on : Physic::Body
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

ID (string)
The ID of the body to put in contact
Direction (triplet of float)
The direction to move the body
InitialStep (float)
Value of the initial step for moving the body
Precision (float)
When the penetration is less than this value the calculation is stopped

Optional param

Set (string, default=Global)
The Physic::Body set used to compute contact

Example

<PlugIn Id="_PutInContact" ID="indentor" Direction="(0,-1,0)" InitialStep="0.000001" Precision="1e-10"/>

[PlugIn] : _ReadDomain

  • id : _ReadDomain
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ReadDomain.cpp

This plugin read a discrete domain file and load it in the current simulation.

Info

  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

FileName (string)
the domain file name to load in the simulation

Optional param

Suffix (string, default="")
Gives a suffix to all SetOf contained in the loaded domain
Prefix (string, default="")
Gives a prefix to all SetOf contained in the loaded domain
Set (string, default="")
Constructs a new SetOf and registers all the domain items inside this new set.
Freeze (bool, default=True)
If set to True, the loaded domain is frozen. It means that its velocity and acceleration (linear and angular) are set to null values and its initial parameters are updated to the current parameter.
DeleteSupportShape (bool, default=False)
If set to True, the SupportShapes related to the loaded domain are deleted.

Example

<PlugIn Id="_ReadDomain" FileName="Hello.agdd" Set="Hello"/>

[PlugIn] : _ReadFEDomain

  • id : _ReadFEDomain
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ReadFEDomain.cpp

Creates a voltage source in a DEM::DiscreteElement domain between two discrete elements sets. This plugin must be used in conjunction with the InitElectricalProperties and ConductCurrent plugins.

Info

  • Process on : DEM::Element set that own a DEM::Electrical property
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

GroundSetOf (string)
The DE set Id which is grounded
PositiveSetOf (string)
The DE set Id at which the voltage is applied
DCVoltage (float)
Voltage magnitude applied between the GroundSetOf and the Positive SetOf Discrete Elements sets

Example

<PlugIn Id="_ReadFEDomain" GroundSetOf="Box-xMin" PositiveSetOf="Box-xMax" DCVoltage="1.0"/>

[PlugIn] : _RecordExpression

  • id : _RecordExpression
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/RecordExpression.cpp

Record the value of a mathematical expression. The related expression must be inlined or outlined.

Info

  • Process on : Math::Expression
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

Expression (string)
Give a mathematical expression (inlined or outlined). For outlined expression they can be instantiated with the NewExpression PlugIn.
SensorLobal (string)
The label of the related column in the sensor file

Example

<PlugIn Id="_RecordExpression" Expression="sin(t)"   SensorLabel="Sine"/>
<PlugIn Id="_RecordExpression" Expression="SineRamp" SensorLabel="Sine"/>

[PlugIn] : _ReleaseElPowerAsHeat

  • id : _ReleaseElPowerAsHeat
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ReleaseElPowerAsHeat.cpp

Releases the electrical power, computed by the ConductCurrent plugin, as heat. The amount of released electrical power can be adjusted with the non-dimensional factor eta, where eta is in the range [0, 1]. When eta=0, no electrical power is released, while eta=1 means that 100% of the electrical power is released as heat.

Info

  • Process on : DEM::Element set that own a DEM::Electrical and DEM::Thermal properties
  • Multithreaded : No
  • Recommended section: Processing

Required parameters

Factor (float)
The eta factor, must be in the range [0, 1]

Optional param

Set (string, default=Global)
The DEM::DiscreteElement SetOf ID to apply the treatment

Example

<PlugIn Id="_ReleaseElPowerAsHeat" Factor="0.9" />

[PlugIn] : _Rotate

  • id : _Rotate
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/Rotate.cpp

Impose a rigid body rotation to a given Physic::Particle set and Physic::Ground set. If the specified set contains also Physic::Body, the bodies are also self-rotated. You must set : - a rotation center - a quaternion : directly or by given axis vector and an angle

Note that angular velocities and acceleration are not affected by the imposed movement.

Info

  • Process on : Physic::Particle, Physic::Body, Physic::Ground
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

Center (triplet of float or point ID)
Set the rotation center
Quat (quadruplet of float or quaternion ID)
Set the angular rotation

Because Quaternion are not intuitive, you can either enter the following Axis and Angle entry instead of the Quat entry.

Axis (triplet of float or vector ID)
Set the rotation axis
Angle (float)
Set the rotation angle in degree

Optional param

Set (string, default=Global)
The Physic::Particle SetOf ID and Physic::Body ID to apply the treatment

Example

<PlugIn Id="_Rotate" Center="(0.,0.,0.)" Angle="90" Axis="(1., 0., 0.)" Set="Global"/>

[PlugIn] : _SaveDomain

  • id : _SaveDomain
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SaveDomain.cpp

Writes the simulation state in a file. 3 file formats are available:

  • the .gdd format that store a complete copy of the simulation state. Be carefull, this format is not good for portability.

  • the .agdd format that store a simplified version of the state. This format is very simple and ensure portability. Note that this format is dedicated for DEM simulations.

  • the .lgdd format that store a simplified version of the state. This format ensure portability and may work with any kind of simulations.

Note that you can visualize these files with the gddViewer program. If you want to use paraview, you have to use the ExportToPVD PlugIn instead.

Info

  • Process on : All items
  • Multithreaded : No
  • Recommended section: All

Optional param

FileName (string, default="")
Set the name of the file to store. If you do not set this field the name of the file will take automatically the current iteration number.
Precision (integer, default=10)
The number of digits that take the automatic name (see above)
Type (string, default="gdd")
The type of the stored file, must be "gdd", "agdd" or "lgdd"

Example

<PlugIn Id="_SaveDomain" IterLoop="50"/>
<PlugIn Id="_SaveDomain" Expression="if ((t>=20 and t<=30), 1, 0)" Type="lgdd"/>
<PlugIn Id="_SaveDomain" FileName="DiscreteDomain1.gdd"/>

[PlugIn] : _SetContinuousDensity

  • id : _SetContinuousDensity
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SetContinuousDensity.cpp

Set the density of all the DEM::DiscreteElement associated with a DEM::SupportShape. The input density is corrected by the volumic fraction of the discrete domain associated with the perfect continuous DEM::SupportShape. The value of the volumic fraction is computed on-the-fly.

Info

  • Process on : DEM::DiscreteElement and DEM::SupportShape
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

Density (float)
The value of the continuous density
SupportShape (string)
The Id of the support shape

Example

<PlugIn Id="_SetContinuousDensity" Density="7000." DEM::SupportShape="Box"/>

[PlugIn] : _SetDensity

  • id : _SetDensity
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SetDensity.cpp

Set the density of a Physic::Body set

Info

  • Process on : Physic::Body set
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

Density (float)
The value of the density

Optional param

Set (string, default=Global)
The Physic::Body SetOf ID to apply the treatment

Example

<PlugIn Id="_SetDensity" Density="7000." Set="Box"/>

[PlugIn] : _SetElasticProperty

  • id : _SetElasticProperty
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SetElasticProperty.cpp

This PlugIn set the required parameters for simulating a continuous brittle elastic media. In fact, it is just a smart interface to the ConvertBondToBeam and ComputeVirialStress plugIn. You can see an example in Example/Continuous/TensileTest/inp/BrittleTension.inp Don't forget to activate the computation of beam with the ApplyBondLoad processing plugin.

Info

  • Process on : DEM::Element
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

YoungModulus (float)
The Young's modulus of the material (in Pascal)
PoissonRatio (float)
The Poisson's ratio of the material (must be in the [0., 0.5] range)

Optional param

MaxStress (float, default=0., EXPERIMENTAL)
The tensile failure strength of the material (in Pascal). The null default value corresponds to an infinite failure strength. If you set a value here, don't forget to activate the computation of the failure strength with the ComputeVirialStress processing plugin.
CoordNumber (float, default=auto)
By default the coordination is automatically computed. You can force it by setting a specific value here.
Set (string, default="Global")
You can specify a particular set for your continuum

Example

<PlugIn Id="_SetElasticProperty" YoungModulus="72e9" PoissonRatio="0.2" MaxStress="50e6"/> 

[PlugIn] : _SetFEMaterial

  • id : _SetFEMaterial
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SetFEMaterial.cpp

Creates a voltage source in a DEM::DiscreteElement domain between two discrete elements sets. This plugin must be used in conjunction with the InitElectricalProperties and ConductCurrent plugins.

Info

  • Process on : DEM::Element set that own a DEM::Electrical property
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

GroundSetOf (string)
The DE set Id which is grounded
PositiveSetOf (string)
The DE set Id at which the voltage is applied
DCVoltage (float)
Voltage magnitude applied between the GroundSetOf and the Positive SetOf Discrete Elements sets

Example

<PlugIn Id="_ReadFEDomain" GroundSetOf="Box-xMin" PositiveSetOf="Box-xMax" DCVoltage="1.0"/>

[PlugIn] : _SetLinearVelocity

  • id : _SetLinearVelocity
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SetLinearVelocity.cpp

Set the linear velocity of Physic::Particle set. Note that the linear acceleration and linear position are not affected.

Info

  • Process on : Physic::Particle set
  • Multithreaded : No
  • Recommended section: All

Required param

X (float or expression)
The X component value of the velocity
Y (float or expression)
The Y component value of the velocity
Z (float or expression)
The Z component value of the velocity

Optional param

Set (string, default=Global)
The Physic::Particle SetOf ID to apply the treatment

Example

<PlugIn Id="_SetLinearVelocity" X="0.1*t" Y="1." Z="0." Set="xMax"/>

[PlugIn] : _SetOfOperator

  • id : _SetOfOperator
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SetOfOperator.cpp

This plugin makes operations between two SetOf ; Union, Intersection or Difference

Info

  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

Set (string)
Gives the SetOf ID that stores the result of the operation. If the the SetOf ID does not exist a new SetOf is created.
Set1 (string)
Gives the first SetOf ID to perform the operation.
Set1 (string)
Gives the second SetOf ID to perform the operation.
Op (string)
Gives the wanted operator. Allowed values are "Union", "Intersection" and "Difference".

Example

<PlugIn Id="_SetOfOperator" Set="Result" Set1="Global" Op="Difference" Set2="xMin"/>

[PlugIn] : _SetOverallMass

  • id : _SetOverallMass
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SetOverallMass.cpp

Set the overall mass of a Physic::Body set. The total mass is divided by the number of Physic::Body.

Info

  • Process on : Physic::Body set
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

OverallMass (float)
The overall mass value

Optional param

Set (string, default=Global)
The Physic::Body SetOf ID to apply the treatment

Example

<PlugIn Id="_SetOverallMass" Mass="0.5"/>

[PlugIn] : _SolverCD

  • id : _SolverCD
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SolverCD.cpp

Creates a voltage source in a DEM::DiscreteElement domain between two discrete elements sets. This plugin must be used in conjunction with the InitElectricalProperties and ConductCurrent plugins.

Info

  • Process on : DEM::Element set that own a DEM::Electrical property
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

GroundSetOf (string)
The DE set Id which is grounded
PositiveSetOf (string)
The DE set Id at which the voltage is applied
DCVoltage (float)
Voltage magnitude applied between the GroundSetOf and the Positive SetOf Discrete Elements sets

Example

<PlugIn Id="_ReadFEDomain" GroundSetOf="Box-xMin" PositiveSetOf="Box-xMax" DCVoltage="1.0"/>

[PlugIn] : _SphApplyPressureForce

  • id : _SphApplyPressureForce
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SphApplyPressureForce.cpp

Compute and apply the pressure force on SPH::Particle

Info

  • Process on : SPH::Particle set
  • Multithreaded : No
  • Recommended section: Processing

Optional param

Set (string, default=Global)
The SPH::Particle SetOf ID to apply the treatment

Example

<PlugIn Id="_SphApplyPressureForce" />

[PlugIn] : _SphApplyViscousForce

  • id : _SphApplyViscousForce
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SphApplyViscousForce.cpp

Compute and apply the viscous force on SPH::Particle

Info

  • Process on : SPH::Particle set
  • Multithreaded : No
  • Recommended section: Processing

Optional param

Set (string, default=Global)
The SPH::Particle SetOf ID to apply the treatment

Example

<PlugIn Id="_SphApplyViscousForce" />

[PlugIn] : _SphClearInteraction

  • id : _SphClearInteraction
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SphClearInteraction.cpp

Clear the interactions on a SPH::Particle set

Info

  • Process on : SPH::Particle set
  • Multithreaded : No
  • Recommended section: Processing

Optional param

Set (string, default=Global)
The SPH::Particle SetOf ID to apply the treatment

Example

<PlugIn Id="_SphClearInteraction" />

[PlugIn] : _SphUpdateInteraction

  • id : _SphUpdateInteraction
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SphUpdateInteraction.cpp

Update the interaction between SPH::Particle

Info

  • Process on : SPH::Particle set
  • Multithreaded : No
  • Recommended section: Processing

Required param

Method (string)
Choose a detection method. To get the list of available method, type granoo -d -f BroadPhase_SPH. Please refer to the documentation of the chosen detection method to get the list of available option.

Example

<PlugIn Id="_SphUpdateInteraction" Method="Lcm"/>

[PlugIn] : _SphUpdateLocalDensity

  • id : _SphUpdateLocalDensity
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SphUpdateLocalDensity.cpp

Update the local density of a SPH::Particle set

Info

  • Process on : SPH::Particle set
  • Multithreaded : No
  • Recommended section: Processing

Optional param

Set (string, default=Global)
The SPH::Particle SetOf ID to apply the treatment

Example

<PlugIn Id="_SphUpdateLocalDensity" />

[PlugIn] : _SphUpdatePressure

  • id : _SphUpdatePressure
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/SphUpdatePressure.cpp

Update the local pressure of a SPH::Particle set

Info

  • Process on : SPH::Particle set
  • Multithreaded : No
  • Recommended section: Processing

Optional param

GazStiffness (float)
Global gaz stiffness
GazDensity (float)
Global gaz density

Optional param

Set (string, default=Global)
The SPH::Particle SetOf ID to apply the treatment

Example

<PlugIn Id="_SphUpdatePressure" GazStiffness="3" GazDensity="1000"/>

[PlugIn] : _ThermalExpansion

  • id : _ThermalExpansion
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/ThermalExpansion.cpp

This plugin imposes a thermal expansion on a DEM::Bond bond set. The thermal expansion is introduced by expanding the relaxed length of the DEM::Bond in relation with temperature. Note that you don't need to calibrate the value of the thermal expansion coefficient. The local value is equal to the global value 1.

Info

  • Process on : DEM::Bond set
  • Multithreaded : No
  • Recommended section: Processing

Required param

Alpha (float)
The value of the linear thermal expansion coefficient

Optional param

Set (string, default=Global)
The DEM::Bond SetOf ID to apply the treatment
Temperature (float or expression)
If this val is set, the temperature is considered as uniform in the whole domain. If not, the temperature is local and computed with DEM::Thermal properties. If you set an uniform temperature, you can retrieve it with Math::Expression::Glob("Temperature")
ID (string)
If you set an uniform temperature, you can retrieve it with Math::Expression::Glob(ID) in your C++ code.

Example

<PlugIn Id="_ThermalExpansion" Alpha="10e-6" Temperature="0.001*it"/>

1 Andre, D., Levraut, B., Tessier-Doyen, N., & Huger, M. (2017). A discrete element thermo-mechanical modelling of diffuse damage induced by thermal expansion mismatch of two-phase materials. Computer Methods in Applied Mechanics and Engineering, 318, 898-916.


[PlugIn] : _Translate

  • id : _Translate
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/Translate.cpp

Impose a translation to a given Physic::Particle and Physic::Ground set. Note that velocities and acceleration are not affected by the imposed movement.

Info

  • Process on : all Physic::Particle, Physic::Ground, DEM::SupportShape
  • Multithreaded : No
  • Recommended section: PreProcessing

Required param

Vector (triplet of float or vector ID)
Set the translation vector

Optional param

Set (string, default=Global)
The Physic::Particle SetOf ID to apply the treatment
Freeze (bool, default=True)
If set to True, the SetOf is frozen after transformation. It means that its velocity and acceleration (linear and angular) are set to null values and its initial parameters are updated to the current parameter.

Example

<PlugIn Id="_Translate" Vec=(1., 0., 0.)/>

[PlugIn] : _UpdateSupportShape

  • id : _UpdateSupportShape
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/UpdateSupportShape.cpp

Update DEM::SupportShape length from its associated moving DEM::DiscreteElement set.

Info

  • Process on : DEM::SupportShape set
  • Multithreaded : No
  • Recommended section: Processing

Optional param

Set (string, default=Global)
The DEM::SupportShape ID to apply the treatment

Example

<PlugIn Id="_UpdateSupportShape" />

[PlugIn] : _UpdateVoronoiDomain

  • id : _UpdateVoronoiDomain
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/UpdateVoronoiDomain.cpp

This plugin must be used with polyhedral DEM::Element given by voronoi tesselation. It allows to update automatically the shape of the polyhedral DEM::Element in order to keep domains continuous. In addition, this plugin computes and displays the total fracture surface.

Info

  • Process on : DEM::VoronoiBond and DEM::VoronoiElement set
  • Multithreaded : No
  • Recommended section: Processing

Optional param

UpdateElement (bool, default=True)
Tell if you want to update or not the shape of DEM::Element
ComputeTotalFractureSurface (bool, default=False)
Tell if you want to compute the total fracture surface value and display it in the terminal

Example

<PlugIn Id="_UpdateVoronoiDomain" IterLoop="1"/>

[PlugIn] : _VoronoiDomain

  • id : _VoronoiDomain
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/VoronoiDomain.cpp

This plugin creates a voronoi domain from discrete domain. All the
elements are replaced by polyhedral elements that completely covers a volume delimited by a DEM::SupportShape.

Info

  • Process on : DEM::DiscreteElement
  • Multithreaded : No
  • Recommended section: PreProcessing

Optional param

BuildDelaunayElementPair (bool, default=False)
Instantiate element pair from the Delaunay diagram given by the Voronoi tessellation. Note that all the previous element pairs are removed.

Example

<PlugIn Id="_VoronoiDomain" BuildDelaunayElementPair="True"/>

[PlugIn] : _WriteSensorData

  • id : _WriteSensorData
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libPlugIn/WriteSensorData.cpp

Writes the data acquired by the numerical sensors into a single ASCII delimited file.Use this plugin to generate automatically the ASCII output file. The file is ASCII delimited, with each sensor data in a column. The data can be plotted with a Python script, or any plotter (spreadSheet, Gnuplot, Python MatplotLib...).

You must initialize the sensors to record in specific plugin. You can browse the example directory to get some illustrations.

With the attribute HeaderShape, you can chose to format the header (giving the labels of the data columns) as rows or columns of sensors label.

Note that you can use the python script granoo-plot to post-treat your sensor file.

Info

  • Process on : libUtil::Sensor objects
  • Multithreaded : No
  • Recommended section: Processing

Optional param

HeaderShape (string, default="Column")
Choose the header shape, allowed values are "Column" or "Row"

Example

<PlugIn Id="_WriteSensorData" HeaderShape="Column"/>

[ShapeBase] : Box

  • id : Box
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libShape/Box.cpp

Use it to build something with a Shape::Box shape

Sketch

     Class Box is a Volume with rectangular sections:
    
                                  ^ Y
                                  |
                                  |
                         ---------|-----------
                        /         |          /|
                  dimZ /          |         / |
                      /           .        /  |
                     /            .       /   |
                    /--------------------/    |
                    |             .      |    |
                    |             .......|...---------> X
                    |            .       |    |
               dimY |           .        |    /
                    |          /         |   /
                    |         /          |  /
                    |        /           | / 
                    |-------/------------|/
                           /   dimX
                          Z
    

Required param

DimX (float)
The length of the box along its local X axis
DimY (float)
The length of the box along its local Y axis
DimZ (float)
The length of the box along its local Z axis

Example

<..something... DimX="1." DimY="1." DimZ="1." />

[ShapeBase] : Cone

  • id : Cone
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libShape/Cone.cpp

Use it to build something with a Shape::Cone shape.

Sketch

                             ^ Y
                              |
                              |
                  <---------------- Lenth -------------->
                    ------    |       
                 /  ^  \\-----|     
                /   R   \     \------
               /    a    \    .      \-----
              /     d     \   .              \------
              |     i     |   .G                    \-----
              |     u     |   ............................X-----------> X
              |     s     |  .                      /-----
              \     +     / .                /------
               \         / .           /-----
                \       / .   /------
                 \     -----
                  ------/
                       /
                      Z

Note that : - the gravity center 'G' is at 1/4 x length from its base - the symmetry axis is along its local X axis

Required param

Radius (float)
The radius of the cone
Length (float)
The length of the cone along its local X axis

Example

<..something... Radius=".1" Length="1." />

[ShapeBase] : Cylinder

  • id : Cylinder
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libShape/Cylinder.cpp

Use it to build something with a Shape::Cylinder shape

Sketch

                                  ^ Y
                                  |
                                  |
                                  |
                                  |
                                Length
               -------------------------------------
              / R \               .               /   \
             /  a  \              -              /     \
             |  d  |              .              |     |
             |  i  |              ..................+--------> X
             |  u  |             .               |     |
             \  s  /            .                \     /
              \   /            .                  \   /
               -------------------------------------
                             /
                            /
                           /
                          Z

Note that the symmetry axis is along its local X axis

Required param

Radius (float)
The radius of the cylinder
Length (float)
The length of the cylinder along its local X axis

Example

<..something... Radius=".1" Length="1." />

[ShapeBase] : Disk

  • id : Disk
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libShape/Disk.cpp

Use it to build something with a Shape::Disk shape. A disk shape is a surface shape.

Sketch

                    -
                 /  ^  \
                /   R   \
               /    a    \
              /     d     \
              |     i     |
              |     u - --------> X
              |     s     |
              \           /
               \         /
                \       /
                 \     -
                  ----

Note that the normal is oriented along its local X axis

Required param

Radius (float)
The radius of the disk

Example

<..something... Radius=".1" />

[ShapeBase] : Plane

  • id : Plane
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libShape/Plane.cpp

Use it to build something with a Shape::Plane shape. A plane shape is an infinite surface shape.

Sketch

                 /+
               /- |
            /--   |
         /--      |
       /-         |
     --|          |
       |          |
       |          |
       |     ---------------> X
       |          |
       |          |
       |         -+
       |      --/
       |    -/
       | --/
       +/

Note that the normal is oriented along its local X axis

Example

<..something...  />

[ShapeBase] : Polyhedron

  • id : Polyhedron
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libShape/Polyhedron.cpp

Use it to build something with a Shape::Polyhedron shape. A polyhedron model any kind of shape

Required param

File (string)
Gives .off file that describes the polyhedron to load

Optional param

OffSetFile (string)
Gives an offset file that describes the boundaries of the off file. It may be useful to mark some surfaces of the polyhedron. You can get an example in the Tool/Script directory.
Scale (float, default=1)
Set a scale factor to enlarge or scale down the polyhedron

Example

<..something...  File="Bunny.off"/>

[ShapeBase] : Rectangle

  • id : Rectangle
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libShape/Rectangle.cpp

Use it to build something with a Shape::Rectangle shape. Note that the Shape::Rectangle is a surface shape.

Sketch

             |Y  /+
             | /- |
            /+-   |
         /-- |    |
       /-    |    |
     --|     |    |
       |     |    |
       |     |    |
       |    -+--------------> X
       |  -/      |
       +-/        |
     -/|         -+
  Z-/  |      --/
       |    -/
       | --/
       +/

Note that the normal is oriented along its local X axis

Required param

DimY (float)
The length of the box along its local Y axis
DimZ (float)
The length of the box along its local Z axis

Example

<..something... DimY="1." DimZ="1." />

[ShapeBase] : Sphere

  • id : Sphere
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libShape/Sphere.cpp

Use it to build something with a Shape::Sphere shape.

Sketch

                                  ^ Y
                                  |
                                  |
                                  |
                             -----+-----
                         ---/     .     \---
                       -/         .         \-
                      /           .           \
                     /            -            \
                    /             . R a d i u s \
                    |             . ............|-----> X
                    \            .              /
                     \          .              /
                      \        .              /
                       -\     .             /-
                         ---\.          /---
                            /-----------
                           /
                          Z

Required param

Radius (float)
The radius of the sphere

Example

<..something... Radius=".1" />

[UpdateStrategy] : IterLoop

  • id : IterLoop
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/UpdateStrategy/IterLoop.cpp

The "IterLoop" is the most simple update strategy for collision detection. The collision is updated all the n times, where n is an iteration value.

Info

  • Process on : ALL colliding type Physic::Body, Physic::Particle, Physic::Ground, DEM::DiscreteElement...
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Required param

IterLoopVal
The iteration value to trigger the updating of collision detection pairs.

Example

<...  UpdateStrategy="IterLoop" IterLoopVal="10"... />

[UpdateStrategy] : IterLoop

  • id : IterLoop
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/UpdateStrategy/IterLoop.cpp

The "IterLoop" is the most simple update strategy for collision detection. The collision is updated all the n times, where n is an iteration value.

Info

  • Process on : ALL colliding type Physic::Body, Physic::Particle, Physic::Ground, DEM::DiscreteElement...
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Required param

IterLoopVal
The iteration value to trigger the updating of collision detection pairs.

Example

<...  UpdateStrategy="IterLoop" IterLoopVal="10"... />

[UpdateStrategy] : IterLoop

  • id : IterLoop
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/UpdateStrategy/IterLoop.cpp

The "IterLoop" is the most simple update strategy for collision detection. The collision is updated all the n times, where n is an iteration value.

Info

  • Process on : ALL colliding type Physic::Body, Physic::Particle, Physic::Ground, DEM::DiscreteElement...
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Required param

IterLoopVal
The iteration value to trigger the updating of collision detection pairs.

Example

<...  UpdateStrategy="IterLoop" IterLoopVal="10"... />

[UpdateStrategy] : IterLoop

  • id : IterLoop
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/UpdateStrategy/IterLoop.cpp

The "IterLoop" is the most simple update strategy for collision detection. The collision is updated all the n times, where n is an iteration value.

Info

  • Process on : ALL colliding type Physic::Body, Physic::Particle, Physic::Ground, DEM::DiscreteElement...
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Required param

IterLoopVal
The iteration value to trigger the updating of collision detection pairs.

Example

<...  UpdateStrategy="IterLoop" IterLoopVal="10"... />

[UpdateStrategy] : IterLoop

  • id : IterLoop
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/UpdateStrategy/IterLoop.cpp

The "IterLoop" is the most simple update strategy for collision detection. The collision is updated all the n times, where n is an iteration value.

Info

  • Process on : ALL colliding type Physic::Body, Physic::Particle, Physic::Ground, DEM::DiscreteElement...
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Required param

IterLoopVal
The iteration value to trigger the updating of collision detection pairs.

Example

<...  UpdateStrategy="IterLoop" IterLoopVal="10"... />

[UpdateStrategy] : IterLoop

  • id : IterLoop
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libCollision/UpdateStrategy/IterLoop.cpp

The "IterLoop" is the most simple update strategy for collision detection. The collision is updated all the n times, where n is an iteration value.

Info

  • Process on : ALL colliding type Physic::Body, Physic::Particle, Physic::Ground, DEM::DiscreteElement...
  • Multithreaded : No
  • Recommended section: Processing
  • Perf Critical : YES

Required param

IterLoopVal
The iteration value to trigger the updating of collision detection pairs.

Example

<...  UpdateStrategy="IterLoop" IterLoopVal="10"... />

[Variable] : dt

  • id : dt
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libMath/Variable.cpp

Current time step


[Variable] : it

  • id : it
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libMath/Variable.cpp

Current iteration step


[Variable] : t

  • id : t
  • source file : /home/dada/work/dev/granoo/tags/2.0/Lib/GranOO/libMath/Variable.cpp

Current time